X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=miscutil.c;h=a9718668c42b31087fe6bc73795f768ce35f0adb;hb=ab8191f4f21e17fc69c798badee29a9fa40df88e;hp=bea387eee1f8ffa3db56a1dbb819ff7e5444763f;hpb=605576ce35e16c57567f79dd9086bb9ae001753b;p=privoxy.git diff --git a/miscutil.c b/miscutil.c index bea387ee..a9718668 100644 --- a/miscutil.c +++ b/miscutil.c @@ -1,10 +1,10 @@ -const char miscutil_rcs[] = "$Id: miscutil.c,v 1.24 2001/11/05 21:41:43 steudten Exp $"; +const char miscutil_rcs[] = "$Id: miscutil.c,v 1.26 2001/12/30 14:07:32 steudten Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/miscutil.c,v $ * * Purpose : zalloc, hash_string, safe_strerror, strcmpic, - * strncmpic, strsav, chomp, and MinGW32 strdup + * strncmpic, chomp, and MinGW32 strdup * functions. * These are each too small to deserve their own file * but don't really fit in any other file. @@ -36,6 +36,18 @@ const char miscutil_rcs[] = "$Id: miscutil.c,v 1.24 2001/11/05 21:41:43 steudten * * Revisions : * $Log: miscutil.c,v $ + * Revision 1.26 2001/12/30 14:07:32 steudten + * - Add signal handling (unix) + * - Add SIGHUP handler (unix) + * - Add creation of pidfile (unix) + * - Add action 'top' in rc file (RH) + * - Add entry 'SIGNALS' to manpage + * - Add exit message to logfile (unix) + * + * Revision 1.25 2001/11/13 00:16:38 jongfoster + * Replacing references to malloc.h with the standard stdlib.h + * (See ANSI or K&R 2nd Ed) + * * Revision 1.24 2001/11/05 21:41:43 steudten * Add changes to be a real daemon just for unix os. * (change cwd to /, detach from controlling tty, set @@ -158,7 +170,11 @@ const char miscutil_rcs[] = "$Id: miscutil.c,v 1.24 2001/11/05 21:41:43 steudten #include "config.h" #include +#include #include +#if !defined(_WIN32) && !defined(__OS2__) +#include +#endif /* #if !defined(_WIN32) && !defined(__OS2__) */ #include #include #include @@ -193,7 +209,52 @@ void *zalloc(int size) return(ret); } +#if defined(unix) +/********************************************************************* + * + * Function : deletePidFile + * + * Description : deletes the pid file with the pid of the main process + * + * Parameters : - + * + * Returns : - + * + *********************************************************************/ +void deletePidFile( void ) +{ + char pidfile[ 64 ]; + snprintf( pidfile, sizeof(pidfile), "%s/%s", PID_FILE_PATH, PID_FILE_NAME); + unlink( pidfile ); +} +/********************************************************************* + * + * Function : writePidFile + * + * Description : writes the pid file with the pid of the main process + * + * Parameters : - + * + * Returns : - + * + *********************************************************************/ +void writePidFile( void ) +{ + FILE *fp; + char pidfile[64]; + + snprintf( pidfile, sizeof(pidfile), "%s/%s", PID_FILE_PATH, PID_FILE_NAME); + if ((fp = fopen( pidfile,"w")) == NULL ) + { + log_error(LOG_LEVEL_INFO, "can't open pidfile '%s': %E", pidfile); + return; + } + + fprintf( fp,"%u\n", (unsigned int) getpid()); + fclose ( fp ); +} +#endif /* unix */ /********************************************************************* * @@ -465,8 +526,8 @@ char *strsav(char *old, const char *text_to_append) * * Description : Reallocate target_string and append text to it. * This makes it easier to append to malloc'd strings. - * This is similar to strsav(), but running out of - * memory isn't catastrophic. + * This is similar to the (removed) strsav(), but + * running out of memory isn't catastrophic. * * Programming style: * @@ -543,6 +604,59 @@ jb_err string_append(char **target_string, const char *text_to_append) } +/********************************************************************* + * + * Function : string_join + * + * Description : Join two strings together. Frees BOTH the original + * strings. If either or both input strings are NULL, + * fails as if it had run out of memory. + * + * For comparison, string_append requires that the + * second string is non-NULL, and doesn't free it. + * + * Rationale: Too often, we want to do + * string_append(s, html_encode(s2)). That assert()s + * if s2 is NULL or if html_encode() runs out of memory. + * It also leaks memory. Proper checking is cumbersome. + * The solution: string_join(s, html_encode(s2)) is safe, + * and will free the memory allocated by html_encode(). + * + * Parameters : + * 1 : target_string = Pointer to old text that is to be + * extended. *target_string will be free()d by this + * routine. target_string must be non-NULL. + * 2 : text_to_append = Text to be appended to old. + * + * Returns : JB_ERR_OK on success, and sets *target_string + * to newly malloc'ed appended string. Caller + * must free(*target_string). + * JB_ERR_MEMORY on out-of-memory, or if + * *target_string or text_to_append is NULL. (In + * this case, frees *target_string and text_to_append, + * sets *target_string to NULL). + * + *********************************************************************/ +jb_err string_join(char **target_string, char *text_to_append) +{ + jb_err err; + + assert(target_string); + + if (text_to_append == NULL) + { + freez(*target_string); + return JB_ERR_MEMORY; + } + + err = string_append(target_string, text_to_append); + + free(text_to_append); + + return err; +} + + /********************************************************************* * * Function : simplematch