|
|
| version 1.7, 2004/04/07 13:33:23 | version 1.8, 2004/04/09 10:52:20 |
|---|---|
| Line 401 BOOL profile_write(const char *app, cons | Line 401 BOOL profile_write(const char *app, cons |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if (!pfp.apphit) { | if (!pfp.apphit) { |
| newsize = pfp.applen + 2 + 2; | newsize = pfp.applen + 2; |
| #if defined(OSLINEBREAK_CR) || defined(OSLINEBREAK_CRLF) | |
| newsize++; | |
| #endif | |
| #if defined(OSLINEBREAK_LF) || defined(OSLINEBREAK_CRLF) | |
| newsize++; | |
| #endif | |
| if (replace(hdl, pfp.pos, 0, newsize) != SUCCESS) { | if (replace(hdl, pfp.pos, 0, newsize) != SUCCESS) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| Line 409 BOOL profile_write(const char *app, cons | Line 415 BOOL profile_write(const char *app, cons |
| *buf++ = '['; | *buf++ = '['; |
| CopyMemory(buf, app, pfp.applen); | CopyMemory(buf, app, pfp.applen); |
| buf += pfp.applen; | buf += pfp.applen; |
| buf[0] = ']'; | *buf++ = ']'; |
| buf[1] = '\r'; | #if defined(OSLINEBREAK_CR) || defined(OSLINEBREAK_CRLF) |
| buf[2] = '\n'; | *buf++ = '\r'; |
| #endif | |
| #if defined(OSLINEBREAK_LF) || defined(OSLINEBREAK_CRLF) | |
| *buf++ = '\n'; | |
| #endif | |
| pfp.pos += newsize; | pfp.pos += newsize; |
| } | } |
| datalen = strlen(data); | datalen = strlen(data); |
| newsize = pfp.keylen + 1 + datalen + 2; | newsize = pfp.keylen + 1 + datalen; |
| #if defined(OSLINEBREAK_CR) || defined(OSLINEBREAK_CRLF) | |
| newsize++; | |
| #endif | |
| #if defined(OSLINEBREAK_LF) || defined(OSLINEBREAK_CRLF) | |
| newsize++; | |
| #endif | |
| if (replace(hdl, pfp.pos, pfp.size, newsize) != SUCCESS) { | if (replace(hdl, pfp.pos, pfp.size, newsize) != SUCCESS) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| Line 425 BOOL profile_write(const char *app, cons | Line 441 BOOL profile_write(const char *app, cons |
| *buf++ = '='; | *buf++ = '='; |
| CopyMemory(buf, data, datalen); | CopyMemory(buf, data, datalen); |
| buf += datalen; | buf += datalen; |
| buf[0] = '\r'; | #if defined(OSLINEBREAK_CR) || defined(OSLINEBREAK_CRLF) |
| buf[1] = '\n'; | *buf++ = '\r'; |
| #endif | |
| #if defined(OSLINEBREAK_LF) || defined(OSLINEBREAK_CRLF) | |
| *buf++ = '\n'; | |
| #endif | |
| return(SUCCESS); | return(SUCCESS); |
| } | } |
| // ---- | // ---- |
| static void bitmapset(BYTE *ptr, UINT pos, BOOL set) { | |
| UINT8 bit; | |
| ptr += (pos >> 3); | |
| bit = 1 << (pos & 7); | |
| if (set) { | |
| *ptr |= bit; | |
| } | |
| else { | |
| *ptr &= ~bit; | |
| } | |
| } | |
| static BOOL bitmapget(const BYTE *ptr, UINT pos) { | |
| return((ptr[pos >> 3] >> (pos & 7)) & 1); | |
| } | |
| static void binset(BYTE *bin, UINT binlen, const char *src) { | |
| UINT i; | |
| BYTE val; | |
| BOOL set; | |
| char c; | |
| for (i=0; i<binlen; i++) { | |
| val = 0; | |
| set = FALSE; | |
| while(*src == ' ') { | |
| src++; | |
| } | |
| while(1) { | |
| c = *src; | |
| if ((c == '\0') || (c == ' ')) { | |
| break; | |
| } | |
| else if ((c >= '0') && (c <= '9')) { | |
| val <<= 4; | |
| val += c - '0'; | |
| set = TRUE; | |
| } | |
| else { | |
| c |= 0x20; | |
| if ((c >= 'a') && (c <= 'f')) { | |
| val <<= 4; | |
| val += c - 'a' + 10; | |
| set = TRUE; | |
| } | |
| } | |
| src++; | |
| } | |
| if (set == FALSE) { | |
| break; | |
| } | |
| bin[i] = val; | |
| } | |
| } | |
| static void binget(char *work, int size, const BYTE *bin, UINT binlen) { | |
| UINT i; | |
| char tmp[8]; | |
| if (binlen) { | |
| SPRINTF(tmp, "%.2x", bin[0]); | |
| milstr_ncpy(work, tmp, size); | |
| } | |
| for (i=1; i<binlen; i++) { | |
| SPRINTF(tmp, " %.2x", bin[i]); | |
| milstr_ncat(work, tmp, size); | |
| } | |
| } | |
| void profile_iniread(const char *path, const char *app, | void profile_iniread(const char *path, const char *app, |
| const PFTBL *tbl, UINT count, PFREAD cb) { | const PFTBL *tbl, UINT count, PFREAD cb) { |
| Line 459 const PFTBL *pterm; | Line 554 const PFTBL *pterm; |
| *((UINT8 *)p->value) = (!milstr_cmp(work, str_true))?1:0; | *((UINT8 *)p->value) = (!milstr_cmp(work, str_true))?1:0; |
| break; | break; |
| case PFTYPE_BITMAP: // Todo | case PFTYPE_BITMAP: |
| bitmapset((BYTE *)p->value, p->arg, | |
| (!milstr_cmp(work, str_true))?TRUE:FALSE); | |
| break; | |
| case PFTYPE_BIN: | case PFTYPE_BIN: |
| binset((BYTE *)p->value, p->arg, work); | |
| break; | break; |
| case PFTYPE_SINT8: | case PFTYPE_SINT8: |
| Line 530 const char *set; | Line 630 const char *set; |
| set = (*((UINT8 *)p->value))?str_true:str_false; | set = (*((UINT8 *)p->value))?str_true:str_false; |
| break; | break; |
| case PFTYPE_BITMAP: // Todo | case PFTYPE_BITMAP: |
| set = (bitmapget((BYTE *)p->value, p->arg))? | |
| str_true:str_false; | |
| break; | |
| case PFTYPE_BIN: | case PFTYPE_BIN: |
| set = NULL; | binget(work, sizeof(work), (BYTE *)p->value, p->arg); |
| break; | break; |
| case PFTYPE_SINT8: | case PFTYPE_SINT8: |