diff options
Diffstat (limited to 'net/gaim/files/patch-src::util.c')
-rw-r--r-- | net/gaim/files/patch-src::util.c | 288 |
1 files changed, 105 insertions, 183 deletions
diff --git a/net/gaim/files/patch-src::util.c b/net/gaim/files/patch-src::util.c index 79a71a97de84..7beb3f6c76af 100644 --- a/net/gaim/files/patch-src::util.c +++ b/net/gaim/files/patch-src::util.c @@ -1,183 +1,105 @@ -*** src/util.c.orig Fri Jan 9 22:04:56 2004 ---- src/util.c Thu Jan 22 08:26:14 2004 -*************** -*** 247,270 **** - /************************************************************************** - * Quoted Printable Functions - **************************************************************************/ -! void -! gaim_quotedp_decode(const char *str, char **ret_str, int *ret_len) - { -! char *p, *n, *new; - -! n = new = g_malloc(strlen (str) + 1); - -! for (p = (char *)str; *p; p++, n++) { - if (*p == '=') { -! sscanf(p + 1, "%2x\n", (int *)n); -! p += 2; -! } -! else if (*p == '_') - *n = ' '; - else - *n = *p; - } -- - *n = '\0'; - - if (ret_len) ---- 247,317 ---- - /************************************************************************** - * Quoted Printable Functions - **************************************************************************/ -! static void hex(const char **p, const char *end, unsigned char *n) - { -! int i, c; - -! for (i = 0, c = 0; i < 2 && *p < end; ++i, ++*p) { -! c <<= 4; -! switch (**p) { -! case '0': break; -! case '1': c += 1; break; -! case '2': c += 2; break; -! case '3': c += 3; break; -! case '4': c += 4; break; -! case '5': c += 5; break; -! case '6': c += 6; break; -! case '7': c += 7; break; -! case '8': c += 8; break; -! case '9': c += 9; break; -! case 'a': c += 10; break; -! case 'b': c += 11; break; -! case 'c': c += 12; break; -! case 'd': c += 13; break; -! case 'e': c += 14; break; -! case 'f': c += 15; break; -! case 'A': c += 10; break; -! case 'B': c += 11; break; -! case 'C': c += 12; break; -! case 'D': c += 13; break; -! case 'E': c += 14; break; -! case 'F': c += 15; break; -! default: -! if (i == 0) { -! *n = **p; -! ++*p; -! return; -! } -! c >>= 4; -! goto done; -! } -! } -! done: -! *n = (c > UCHAR_MAX) ? '?' : c; -! return; -! } - -! void -! gaim_quotedp_decode(const char *str, char **ret_str, int *ret_len) -! { -! const char *p, *end; -! unsigned char *n, *new; -! size_t len; -! -! len = strlen (str); -! n = new = g_malloc(len + 1); -! p = str; -! end = &p[len]; -! while (p < end) { - if (*p == '=') { -! ++p; -! hex(&p, end, n); -! } else if (*p == '_') - *n = ' '; - else - *n = *p; -+ ++n; - } - *n = '\0'; - - if (ret_len) -*************** -*** 1962,1968 **** - char **ret_path) - { - char scan_info[255]; -! char port_str[5]; - int f; - const char *turl; - char host[256], path[256]; ---- 2009,2015 ---- - char **ret_path) - { - char scan_info[255]; -! char port_str[6]; - int f; - const char *turl; - char host[256], path[256]; -*************** -*** 1982,1997 **** - } - - g_snprintf(scan_info, sizeof(scan_info), -! "%%[%s]:%%[%s]/%%[%s]", addr_ctrl, port_ctrl, page_ctrl); - - f = sscanf(url, scan_info, host, port_str, path); - - if (f == 1) - { - g_snprintf(scan_info, sizeof(scan_info), -! "%%[%s]/%%[%s]", - addr_ctrl, page_ctrl); - f = sscanf(url, scan_info, host, path); - g_snprintf(port_str, sizeof(port_str), "80"); - } - ---- 2029,2049 ---- - } - - g_snprintf(scan_info, sizeof(scan_info), -! "%%255[%s]:%%5[%s]/%%255[%s]", addr_ctrl, port_ctrl, page_ctrl); -! addr_ctrl[sizeof(addr_ctrl)-1] = '\0'; -! port_ctrl[sizeof(port_ctrl)-1] = '\0'; -! page_ctrl[sizeof(page_ctrl)-1] = '\0'; - - f = sscanf(url, scan_info, host, port_str, path); - - if (f == 1) - { - g_snprintf(scan_info, sizeof(scan_info), -! "%%255[%s]/%%255[%s]", - addr_ctrl, page_ctrl); - f = sscanf(url, scan_info, host, path); -+ addr_ctrl[sizeof(addr_ctrl)-1] = '\0'; -+ page_ctrl[sizeof(page_ctrl)-1] = '\0'; - g_snprintf(port_str, sizeof(port_str), "80"); - } - -*************** -*** 2081,2089 **** - static size_t - parse_content_len(const char *data, size_t data_len) - { -! size_t content_len = 0; - -! sscanf(data, "Content-Length: %d", (int *)&content_len); - - return content_len; - } ---- 2133,2146 ---- - static size_t - parse_content_len(const char *data, size_t data_len) - { -! int content_len = 0; -! char *tmp; - -! tmp = g_malloc(data_len + 1); -! memcpy(tmp, data, data_len); -! tmp[data_len] = '\0'; -! sscanf(tmp, "Content-Length: %d", &content_len); -! g_free(tmp); - - return content_len; - } +--- src/util.c.orig Wed Mar 31 17:56:09 2004 ++++ src/util.c Sat Apr 3 00:18:30 2004 +@@ -247,26 +247,71 @@ + /************************************************************************** + * Quoted Printable Functions + **************************************************************************/ ++static void hex(const char **p, const char *end, unsigned char *n) ++{ ++ int i, c; ++ ++ for (i = 0, c = 0; i < 2 && *p < end; ++i, ++*p) { ++ c <<= 4; ++ switch (**p) { ++ case '0': break; ++ case '1': c += 1; break; ++ case '2': c += 2; break; ++ case '3': c += 3; break; ++ case '4': c += 4; break; ++ case '5': c += 5; break; ++ case '6': c += 6; break; ++ case '7': c += 7; break; ++ case '8': c += 8; break; ++ case '9': c += 9; break; ++ case 'a': c += 10; break; ++ case 'b': c += 11; break; ++ case 'c': c += 12; break; ++ case 'd': c += 13; break; ++ case 'e': c += 14; break; ++ case 'f': c += 15; break; ++ case 'A': c += 10; break; ++ case 'B': c += 11; break; ++ case 'C': c += 12; break; ++ case 'D': c += 13; break; ++ case 'E': c += 14; break; ++ case 'F': c += 15; break; ++ default: ++ if (i == 0) { ++ *n = **p; ++ ++*p; ++ return; ++ } ++ c >>= 4; ++ goto done; ++ } ++ } ++done: ++ *n = (c > UCHAR_MAX) ? '?' : c; ++ return; ++} ++ + void + gaim_quotedp_decode(const char *str, char **ret_str, int *ret_len) + { +- char *n, *new; +- const char *end, *p; +- int i; +- +- n = new = g_malloc(strlen (str) + 1); +- end = str + strlen(str); ++ const char *p, *end; ++ unsigned char *n, *new; ++ size_t len; ++ ++ len = strlen (str); ++ n = new = g_malloc(len + 1); ++ p = str; ++ end = &p[len]; + +- for (p = str; p < end; p++, n++) { ++ while (p < end) { + if (*p == '=') { +- sscanf(p + 1, "%2x\n", &i); +- *n = i; +- p += 2; ++ ++p; ++ hex(&p, end, n); ++ } else { ++ *n = *p == '_' ? ' ' : *p; ++ ++p; + } +- else if (*p == '_') +- *n = ' '; +- else +- *n = *p; ++ ++n; + } + + *n = '\0'; +@@ -2119,9 +2164,14 @@ + static size_t + parse_content_len(const char *data, size_t data_len) + { +- size_t content_len = 0; ++ int content_len = 0; ++ char *tmp; + +- sscanf(data, "Content-Length: %d", (int *)&content_len); ++ tmp = g_malloc(data_len + 1); ++ memcpy(tmp, data, data_len); ++ tmp[data_len] = '\0'; ++ sscanf(tmp, "Content-Length: %d", &content_len); ++ g_free(tmp); + + return content_len; + } |