X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=miscutil.c;h=61ef5831b7d278b8996e94affb48f22bb0198660;hb=3b9357f0f104bae9c6b8d317c31853bd3284fa55;hp=1a614c11c05c96c84e2d037628e70425fcb075b1;hpb=5e758f724e63e91c6aa7ff346dc74812e19c24aa;p=privoxy.git diff --git a/miscutil.c b/miscutil.c index 1a614c11..61ef5831 100644 --- a/miscutil.c +++ b/miscutil.c @@ -1,4 +1,4 @@ -const char miscutil_rcs[] = "$Id: miscutil.c,v 1.71 2012/03/04 11:48:54 fabiankeil Exp $"; +const char miscutil_rcs[] = "$Id: miscutil.c,v 1.75 2012/03/09 16:24:36 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/miscutil.c,v $ @@ -93,6 +93,42 @@ void *zalloc(size_t size) } +/********************************************************************* + * + * Function : strdup_or_die + * + * Description : strdup wrapper that either succeeds or causes + * program termination. + * + * Useful in situations were the string length is + * "small" and strdup() failures couldn't be handled + * better anyway. In case of debug builds, failures + * trigger an assert(). + * + * Parameters : + * 1 : str = String to duplicate + * + * Returns : Pointer to newly strdup'd copy of the string. + * + *********************************************************************/ +char *strdup_or_die(const char *str) +{ + char *new_str; + + new_str = strdup(str); + + if (new_str == NULL) + { + assert(new_str != NULL); + log_error(LOG_LEVEL_FATAL, "Out of memory in strdup_or_die()."); + exit(1); + } + + return(new_str); + +} + + #if defined(unix) /********************************************************************* * @@ -143,11 +179,11 @@ void write_pid_file(void) * Returns : The string's hash * *********************************************************************/ -unsigned int hash_string( const char* s ) +unsigned int hash_string(const char* s) { unsigned int h = 0; - for ( ; *s; ++s ) + for (; *s; ++s) { h = 5 * h + (unsigned int)*s; } @@ -177,7 +213,7 @@ int strcmpic(const char *s1, const char *s2) while (*s1 && *s2) { - if ( ( *s1 != *s2 ) && ( privoxy_tolower(*s1) != privoxy_tolower(*s2) ) ) + if ((*s1 != *s2) && (privoxy_tolower(*s1) != privoxy_tolower(*s2))) { break; } @@ -210,7 +246,7 @@ int strncmpic(const char *s1, const char *s2, size_t n) while (*s1 && *s2) { - if ( ( *s1 != *s2 ) && ( privoxy_tolower(*s1) != privoxy_tolower(*s2) ) ) + if ((*s1 != *s2) && (privoxy_tolower(*s1) != privoxy_tolower(*s2))) { break; } @@ -506,11 +542,11 @@ char * make_path(const char * dir, const char * file) #ifdef AMIGA char path[512]; - if(dir) + if (dir) { - if(dir[0] == '.') + if (dir[0] == '.') { - if(dir[1] == '/') + if (dir[1] == '/') { strncpy(path,dir+2,512); } @@ -529,7 +565,7 @@ char * make_path(const char * dir, const char * file) { path[0]=0; } - if(AddPart(path,file,512)) + if (AddPart(path,file,512)) { return strdup(path); } @@ -560,14 +596,14 @@ char * make_path(const char * dir, const char * file) size_t path_size = strlen(dir) + strlen(file) + 2; /* +2 for trailing (back)slash and \0 */ #if defined(unix) - if ( *dir != '/' && basedir && *basedir ) + if (*dir != '/' && basedir && *basedir) { /* * Relative path, so start with the base directory. */ path_size += strlen(basedir) + 1; /* +1 for the slash */ path = malloc(path_size); - if (!path ) log_error(LOG_LEVEL_FATAL, "malloc failed!"); + if (!path) log_error(LOG_LEVEL_FATAL, "malloc failed!"); strlcpy(path, basedir, path_size); strlcat(path, "/", path_size); strlcat(path, dir, path_size); @@ -576,18 +612,18 @@ char * make_path(const char * dir, const char * file) #endif /* defined unix */ { path = malloc(path_size); - if (!path ) log_error(LOG_LEVEL_FATAL, "malloc failed!"); + if (!path) log_error(LOG_LEVEL_FATAL, "malloc failed!"); strlcpy(path, dir, path_size); } assert(NULL != path); #if defined(_WIN32) || defined(__OS2__) - if(path[strlen(path)-1] != '\\') + if (path[strlen(path)-1] != '\\') { strlcat(path, "\\", path_size); } #else /* ifndef _WIN32 || __OS2__ */ - if(path[strlen(path)-1] != '/') + if (path[strlen(path)-1] != '/') { strlcat(path, "/", path_size); }