--------------------- PatchSet 10248 Date: 2007/12/15 10:43:26 Author: adri Branch: s27_adri Tag: (none) Log: Extend another library function to take a length and not expect a NUL-terminated string; reduce strBuf() calls. Members: include/util.h:1.17.20.2->1.17.20.3 lib/rfc1738.c:1.7.12.1->1.7.12.2 src/HttpHdrCc.c:1.7.16.3->1.7.16.4 src/http.c:1.63.2.3.4.8->1.63.2.3.4.9 Index: squid/include/util.h =================================================================== RCS file: /cvsroot/squid-sf//squid/include/util.h,v retrieving revision 1.17.20.2 retrieving revision 1.17.20.3 diff -u -r1.17.20.2 -r1.17.20.3 --- squid/include/util.h 15 Dec 2007 05:17:57 -0000 1.17.20.2 +++ squid/include/util.h 15 Dec 2007 10:43:26 -0000 1.17.20.3 @@ -1,5 +1,5 @@ /* - * $Id: util.h,v 1.17.20.2 2007/12/15 05:17:57 adri Exp $ + * $Id: util.h,v 1.17.20.3 2007/12/15 10:43:26 adri Exp $ * * AUTHOR: Harvest Derived * @@ -81,6 +81,7 @@ extern char * rfc1738_escape_str(const char *url, int len); extern char *rfc1738_escape_unescaped(const char *); extern char *rfc1738_escape_part(const char *); +extern char *rfc1738_escape_part_str(const char *, int len); extern void rfc1738_unescape(char *); /* html.c */ Index: squid/lib/rfc1738.c =================================================================== RCS file: /cvsroot/squid-sf//squid/lib/rfc1738.c,v retrieving revision 1.7.12.1 retrieving revision 1.7.12.2 diff -u -r1.7.12.1 -r1.7.12.2 --- squid/lib/rfc1738.c 14 Dec 2007 13:07:10 -0000 1.7.12.1 +++ squid/lib/rfc1738.c 15 Dec 2007 10:43:27 -0000 1.7.12.2 @@ -1,5 +1,5 @@ /* - * $Id: rfc1738.c,v 1.7.12.1 2007/12/14 13:07:10 adri Exp $ + * $Id: rfc1738.c,v 1.7.12.2 2007/12/15 10:43:27 adri Exp $ * * DEBUG: * AUTHOR: Harvest Derived @@ -182,6 +182,12 @@ return rfc1738_do_escape(url, strlen(url), 1); } +char * +rfc1738_escape_part_str(const char *url, int len) +{ + return rfc1738_do_escape(url, len, 1); +} + /* * rfc1738_unescape() - Converts escaped characters (%xy numbers) in * given the string. %% is a %. %ab is the 8-bit hexadecimal number "ab" Index: squid/src/HttpHdrCc.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/HttpHdrCc.c,v retrieving revision 1.7.16.3 retrieving revision 1.7.16.4 diff -u -r1.7.16.3 -r1.7.16.4 --- squid/src/HttpHdrCc.c 12 Dec 2007 16:18:52 -0000 1.7.16.3 +++ squid/src/HttpHdrCc.c 15 Dec 2007 10:43:27 -0000 1.7.16.4 @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrCc.c,v 1.7.16.3 2007/12/12 16:18:52 adri Exp $ + * $Id: HttpHdrCc.c,v 1.7.16.4 2007/12/15 10:43:27 adri Exp $ * * DEBUG: section 65 HTTP Cache Control Header * AUTHOR: Alex Rousskov @@ -271,8 +271,10 @@ extern const HttpHeaderStat *dump_stat; /* argh! */ const int id = (int) val; const int valid_id = id >= 0 && id < CC_ENUM_END; - const char *name = valid_id ? strBuf(CcFieldsInfo[id].name) : "INVALID"; if (count || valid_id) - storeAppendPrintf(sentry, "%2d\t %-20s\t %5d\t %6.2f\n", - id, name, count, xdiv(count, dump_stat->ccParsedCount)); + storeAppendPrintf(sentry, "%2d\t %-20.*s\t %5d\t %6.2f\n", + id, + valid_id ? strLen2(CcFieldsInfo[id].name) : 7, + valid_id ? strBuf2(CcFieldsInfo[id].name) : "INVALID", + count, xdiv(count, dump_stat->ccParsedCount)); } Index: squid/src/http.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/http.c,v retrieving revision 1.63.2.3.4.8 retrieving revision 1.63.2.3.4.9 diff -u -r1.63.2.3.4.8 -r1.63.2.3.4.9 --- squid/src/http.c 14 Dec 2007 13:07:15 -0000 1.63.2.3.4.8 +++ squid/src/http.c 15 Dec 2007 10:43:27 -0000 1.63.2.3.4.9 @@ -1,6 +1,6 @@ /* - * $Id: http.c,v 1.63.2.3.4.8 2007/12/14 13:07:15 adri Exp $ + * $Id: http.c,v 1.63.2.3.4.9 2007/12/15 10:43:27 adri Exp $ * * DEBUG: section 11 Hypertext Transfer Protocol (HTTP) * AUTHOR: Harvest Derived @@ -390,13 +390,12 @@ strListAdd(&vstr, name, strlen(name), ','); hdr = httpHeaderGetByName(&request->header, name); safe_free(name); - value = strBuf(hdr); - if (value) { - value = rfc1738_escape_part(value); + if (strIsNotNull(hdr)) { + value = rfc1738_escape_part_str(strBuf2(hdr), strLen2(hdr)); stringAppend(&vstr, "=\"", 2); stringAppend(&vstr, value, strlen(value)); stringAppend(&vstr, "\"", 1); - } + } stringClean(&hdr); } stringClean(&request->vary_hdr);