From: jongfoster Date: Tue, 22 Jan 2002 23:28:07 +0000 (+0000) Subject: Adding convenience function html_encode_and_free_original() X-Git-Tag: v_2_9_11~19 X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=commitdiff_plain;h=b4ea52fdcc19fa05b98ccf962d15da59086e06a3 Adding convenience function html_encode_and_free_original() Making all functions accept NULL paramaters - in this case, they simply return NULL. This allows error-checking to be deferred. --- diff --git a/encode.c b/encode.c index 2ca9fad9..bf300169 100644 --- a/encode.c +++ b/encode.c @@ -1,4 +1,4 @@ -const char encode_rcs[] = "$Id: encode.c,v 1.2 2001/05/17 22:52:35 oes Exp $"; +const char encode_rcs[] = "$Id: encode.c,v 1.3 2001/11/13 00:16:40 jongfoster Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/encode.c,v $ @@ -33,6 +33,10 @@ const char encode_rcs[] = "$Id: encode.c,v 1.2 2001/05/17 22:52:35 oes Exp $"; * * Revisions : * $Log: encode.c,v $ + * Revision 1.3 2001/11/13 00:16:40 jongfoster + * Replacing references to malloc.h with the standard stdlib.h + * (See ANSI or K&R 2nd Ed) + * * Revision 1.2 2001/05/17 22:52:35 oes * - Cleaned CRLF's from the sources and related files * @@ -158,12 +162,20 @@ static const char * const cookie_code_map[256] = { * * Returns : Encoded string, newly allocated on the heap. * Caller is responsible for freeing it with free(). + * If s is NULL, or on out-of memory, returns NULL. * *********************************************************************/ char * html_encode(const char *s) { + char * buf; + + if (s == NULL) + { + return NULL; + } + /* each input char can expand to at most 6 chars */ - char * buf = (char *) malloc((strlen(s) * 6) + 1); + buf = (char *) malloc((strlen(s) * 6) + 1); if (buf) { @@ -189,6 +201,41 @@ char * html_encode(const char *s) return(buf); } + +/********************************************************************* + * + * Function : html_encode_and_free_original + * + * Description : Encodes a string so it's not interpreted as + * containing HTML tags or entities. + * Replaces <, >, &, and " with the appropriate HTML + * entities. Free()s original string. + * If original string is NULL, simply returns NULL. + * + * Parameters : + * 1 : s = String to encode. Null-terminated. + * + * Returns : Encoded string, newly allocated on the heap. + * Caller is responsible for freeing it with free(). + * If s is NULL, or on out-of memory, returns NULL. + * + *********************************************************************/ +char * html_encode_and_free_original(char *s) +{ + char * result; + + if (s == NULL) + { + return NULL; + } + + result = html_encode(s); + free(s); + + return result; +} + + /********************************************************************* * * Function : cookie_encode @@ -202,12 +249,20 @@ char * html_encode(const char *s) * * Returns : Encoded string, newly allocated on the heap. * Caller is responsible for freeing it with free(). + * If s is NULL, or on out-of memory, returns NULL. * *********************************************************************/ char * cookie_encode(const char *s) { + char * buf; + + if (s == NULL) + { + return NULL; + } + /* each input char can expand to at most 3 chars */ - char * buf = (char *) malloc((strlen(s) * 3) + 1); + buf = (char *) malloc((strlen(s) * 3) + 1); if (buf) { @@ -246,12 +301,20 @@ char * cookie_encode(const char *s) * * Returns : Encoded string, newly allocated on the heap. * Caller is responsible for freeing it with free(). + * If s is NULL, or on out-of memory, returns NULL. * *********************************************************************/ char * url_encode(const char *s) { + char * buf; + + if (s == NULL) + { + return NULL; + } + /* each input char can expand to at most 3 chars */ - char * buf = (char *) malloc((strlen(s) * 3) + 1); + buf = (char *) malloc((strlen(s) * 3) + 1); if (buf) { diff --git a/encode.h b/encode.h index 60594d14..d9a49171 100644 --- a/encode.h +++ b/encode.h @@ -1,6 +1,6 @@ #ifndef ENCODE_H_INCLUDED #define ENCODE_H_INCLUDED -#define ENCODE_H_VERSION "$Id: encode.h,v 1.1.1.1 2001/05/15 13:58:51 oes Exp $" +#define ENCODE_H_VERSION "$Id: encode.h,v 1.2 2001/07/29 18:43:08 jongfoster Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/encode.h,v $ @@ -35,6 +35,10 @@ * * Revisions : * $Log: encode.h,v $ + * Revision 1.2 2001/07/29 18:43:08 jongfoster + * Changing #ifdef _FILENAME_H to FILENAME_H_INCLUDED, to conform to + * ANSI C rules. + * * Revision 1.1.1.1 2001/05/15 13:58:51 oes * Initial import of version 2.9.3 source tree * @@ -51,6 +55,8 @@ extern char * cookie_encode(const char *s); extern char * url_encode(const char *s); extern char * url_decode(const char *str); +extern char * html_encode_and_free_original(char *s); + /* Revision control strings from this header and associated .c file */ extern const char encode_rcs[]; extern const char encode_h_rcs[];