X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=common%2Futils.c;h=d7ae7520fc131d232748ad2253a6408f19e6d75f;hb=c092b5eac52bcdaa42b2889dd6f848fbc289d0bf;hp=bf3516ff90f06da9b951a29cfe43dd84c6afdaa7;hpb=4dffb2516761d9be6bf811b7fa6b06fae4208d8a;p=doldaconnect.git diff --git a/common/utils.c b/common/utils.c index bf3516f..d7ae752 100644 --- a/common/utils.c +++ b/common/utils.c @@ -82,16 +82,16 @@ char *vsprintf2(char *format, va_list al) va_list al2; va_copy(al2, al); - ret = vsnprintf(NULL, 0, format, al); - va_end_(al2); + ret = vsnprintf(NULL, 0, format, al2); + va_end(al2); if((buf = malloc(ret + 1)) == NULL) { LOGOOM(ret + 1); return(NULL); } va_copy(al2, al); - vsnprintf(buf, ret + 1, format, al); - va_end_(al2); + vsnprintf(buf, ret + 1, format, al2); + va_end(al2); return(buf); } @@ -118,7 +118,7 @@ wchar_t *vswprintf2(wchar_t *format, va_list al) { va_copy(al2, al); ret = vswprintf(buf, bufsize, format, al2); - va_end_(al2); + va_end(al2); if(ret >= 0) break; buf = srealloc(buf, sizeof(wchar_t) * (bufsize *= 2)); @@ -441,11 +441,7 @@ int wcsexists(wchar_t *h, wchar_t *n) #ifndef HAVE_WCSCASECMP int wcscasecmp(const wchar_t *s1, const wchar_t *s2) { - while(towlower(*s1) == towlower(*s2)) - { - if(*s1 == L'\0') - return(0); - } + for(; (towlower(*s1) == towlower(*s2)) && (*s1 != L'\0'); s1++, s2++); return(towlower(*s1) - towlower(*s2)); } #endif @@ -479,41 +475,39 @@ char *hexencode(char *data, size_t datalen) char *hexdecode(char *data, size_t *len) { - char *buf, this; + char *buf, this, bit; size_t bufsize, bufdata; buf = NULL; bufsize = bufdata = 0; - for(; *data; data++) + for(bit = 4, this = 0; *data; data++) { if((*data >= 'A') && (*data <= 'F')) { - this = (this & 0x0F) | ((*data - 'A' + 10) << 4); + this |= (this & 0x0F) | ((*data - 'A' + 10) << bit); + } else if((*data >= 'a') && (*data <= 'f')) { + this |= (this & 0x0F) | ((*data - 'a' + 10) << bit); } else if((*data >= '0') && (*data <= '9')) { - this = (this & 0x0F) | ((*data - '0') << 4); + this |= (this & 0x0F) | ((*data - '0') << bit); + } else if(*data == '\n') { + continue; } else { if(buf != NULL) free(buf); return(NULL); } - data++; - if(!*data) - { - if(buf != NULL) - free(buf); - return(NULL); - } - if((*data >= 'A') && (*data <= 'F')) - { - this = (this & 0xF0) | (*data - 'A' + 10); - } else if((*data >= '0') && (*data <= '9')) { - this = (this & 0xF0) | (*data - '0'); + if(bit == 4) { + bit = 0; } else { - if(buf != NULL) - free(buf); - return(NULL); + bit = 4; + addtobuf(buf, this); + this = 0; } - addtobuf(buf, this); + } + if(bit != 4) { + if(buf != NULL) + free(buf); + return(NULL); } addtobuf(buf, 0); if(len != NULL)