From: DINH V. Ho? <ho...@us...> - 2002-09-26 03:18:07
|
Update of /cvsroot/libetpan/libetpan/imf In directory usw-pr-cvs1:/tmp/cvs-serv6863 Modified Files: mailimf.c mailimf_write.c mailimf_write.h Log Message: removes quotes from string values Index: mailimf.c =================================================================== RCS file: /cvsroot/libetpan/libetpan/imf/mailimf.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- mailimf.c 1 Aug 2002 00:41:54 -0000 1.27 +++ mailimf.c 26 Sep 2002 03:18:04 -0000 1.28 @@ -1361,10 +1361,12 @@ goto err; } +#if 0 if (mmap_string_append_c(gstr, '\"') == NULL) { res = MAILIMF_ERROR_MEMORY; goto free_gstr; } +#endif while (1) { r = mailimf_fws_parse(message, length, &cur_token); @@ -1400,10 +1402,12 @@ goto free_gstr; } +#if 0 if (mmap_string_append_c(gstr, '\"') == NULL) { res = MAILIMF_ERROR_MEMORY; goto free_gstr; } +#endif str = strdup(gstr->str); if (str == NULL) { @@ -1453,10 +1457,12 @@ goto err; } +#if 0 if (mmap_string_append_c(gstr, '\"') == NULL) { res = MAILIMF_ERROR_MEMORY; goto free_gstr; } +#endif while (1) { r = mailimf_fws_parse(message, length, &cur_token); @@ -1492,10 +1498,12 @@ goto free_gstr; } +#if 0 if (mmap_string_append_c(gstr, '\"') == NULL) { res = MAILIMF_ERROR_MEMORY; goto free_gstr; } +#endif str = strdup(gstr->str); if (str == NULL) { Index: mailimf_write.c =================================================================== RCS file: /cvsroot/libetpan/libetpan/imf/mailimf_write.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- mailimf_write.c 13 Sep 2002 22:56:40 -0000 1.8 +++ mailimf_write.c 26 Sep 2002 03:18:04 -0000 1.9 @@ -750,6 +750,40 @@ } +int mailimf_quoted_string_write(FILE * f, int * col, + char * string, size_t len) +{ + int r; + size_t i; + + fputc('\"', f); + for(i = 0 ; i < len ; i ++) { + switch (string[i]) { + case '\\': + case '\"': + r = fputc('\\', f); + if (r < 0) + return MAILIMF_ERROR_FILE; + r = fputc(string[i], f); + if (r < 0) + return MAILIMF_ERROR_FILE; + (* col) += 2; + break; + + default: + r = fputc(string[i], f); + if (r < 0) + return MAILIMF_ERROR_FILE; + (* col) ++; + break; + } + } + fputc('\"', f); + + return MAILIMF_NO_ERROR; +} + + static int mailimf_mailbox_write(FILE * f, int * col, struct mailimf_mailbox * mb) { @@ -766,8 +800,8 @@ } if (mb->display_name) { - r = mailimf_string_write(f, col, mb->display_name, - strlen(mb->display_name)); + r = mailimf_quoted_string_write(f, col, mb->display_name, + strlen(mb->display_name)); if (r != MAILIMF_NO_ERROR) return r; Index: mailimf_write.h =================================================================== RCS file: /cvsroot/libetpan/libetpan/imf/mailimf_write.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- mailimf_write.h 13 Sep 2002 22:56:40 -0000 1.4 +++ mailimf_write.h 26 Sep 2002 03:18:04 -0000 1.5 @@ -52,4 +52,7 @@ int mailimf_field_write(FILE * f, int * col, struct mailimf_field * field); +int mailimf_quoted_string_write(FILE * f, int * col, + char * string, size_t len); + #endif |