X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=misc.c;h=f54b1c90b45c5cc3bdc7efdf1db2f264c39345f8;hb=35c85955699b227956e399a76b4a78ab48aa0c18;hp=4bf1f60e6635638fb3474e57c65e2c5a5ed02cb2;hpb=4f7637954591ecfb575642709bd12a069ee90aab;p=pkg%2Fabook.git diff --git a/misc.c b/misc.c index 4bf1f60..f54b1c9 100644 --- a/misc.c +++ b/misc.c @@ -16,6 +16,9 @@ #include #include #include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif #include "misc.h" #ifdef ABOOK_SRC # include "abook.h" @@ -29,39 +32,13 @@ #include -char * -revstr(char *str) -{ - char *s, *s2; - - s = s2 = strdup(str); - - while( *str ) - str++; - - while( *s ) - *--str = *s++; - - free(s2); - return str; -} - -char * -strupper(char *str) -{ - char *tmp = str; - - while( ( *str = toupper( *str ) ) ) - str++; - - return tmp; -} - char * strlower(char *str) { char *tmp = str; + assert(str != NULL); + while( ( *str = tolower ( *str ) ) ) str++; @@ -108,7 +85,7 @@ char * mkstr (const char *format, ... ) { MY_VA_LOCAL_DECL; - int size = 100; + size_t size = 100; char *buffer = #ifdef ABOOK_SRC (char *) abook_malloc (size); @@ -116,6 +93,8 @@ mkstr (const char *format, ... ) (char *) malloc (size); #endif + assert(format != NULL); + for(;;) { int n; MY_VA_START(format); @@ -144,12 +123,11 @@ mkstr (const char *format, ... ) char* strconcat (const char *str, ...) { - int l; + unsigned long l; MY_VA_LOCAL_DECL; char *s, *concat; - if(str == NULL) - return NULL; + assert(str != NULL); l = 1 + strlen (str); MY_VA_START(str); @@ -166,6 +144,8 @@ strconcat (const char *str, ...) #else malloc(l); #endif + if(concat == NULL) + return NULL; strcpy (concat, str); MY_VA_START(str); @@ -181,7 +161,7 @@ strconcat (const char *str, ...) int -safe_strcmp(const char *s1, const char * s2) +safe_strcmp(const char *s1, const char *s2) { if (s1 == NULL && s2 == NULL) return 0; if (s1 == NULL) return -1; @@ -190,16 +170,34 @@ safe_strcmp(const char *s1, const char * s2) return strcmp(s1, s2); } +int +safe_strcoll(const char *s1, const char *s2) +{ +#ifdef HAVE_STRCOLL + if (s1 == NULL && s2 == NULL) return 0; + if (s1 == NULL) return -1; + if (s2 == NULL) return 1; + + return strcoll(s1, s2); +#else /* fall back to strcmp */ + return safe_strcmp(s1, s2); +#endif +} + char * my_getcwd() { char *dir = NULL; - int size = 100; + size_t size = 100; + + if( (dir = (char *)malloc(size)) == NULL) + return NULL; - dir = malloc(size); + *dir = 0; while( getcwd(dir, size) == NULL && errno == ERANGE ) - dir = realloc(dir, size *=2); + if( (dir = (char *)realloc(dir, size *=2)) == NULL) + return NULL; return dir; } @@ -240,7 +238,8 @@ getaline(FILE *f) break; /* the whole line has been read */ for (inc = size, p = NULL; inc > mininc; inc /= 2) - if ((p = abook_realloc(buf, size + inc)) != NULL) + if ((p = (char *)abook_realloc(buf, size + inc)) != + NULL) break; size += inc; @@ -256,7 +255,7 @@ getaline(FILE *f) buf[--len] = '\0'; if (size - len > mucho) { /* a plenitude of unused memory? */ - p = abook_realloc(buf, len+1); + p = (char *)abook_realloc(buf, len+1); if (p != NULL) { buf = p; size = len+1;