Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:Test
squid-beta
10834.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 10834.patch of Package squid-beta
--------------------- PatchSet 10834 Date: 2007/05/29 13:31:36 Author: amosjeffries Branch: HEAD Tag: (none) Log: Rollback String API changes. Delayed to 3.1. Members: ChangeLog:1.555->1.556 src/ACLExtUser.cc:1.10->1.11 src/ACLHTTPHeaderData.cc:1.4->1.5 src/ACLHTTPHeaderData.h:1.3->1.4 src/ACLUrlPath.cc:1.3->1.4 src/AuthUser.cc:1.8->1.9 src/CommonPool.h:1.4->1.5 src/CompositePoolNode.h:1.7->1.8 src/ConfigParser.h:1.7->1.8 src/DelayBucket.cc:1.6->1.7 src/DelayTagged.cc:1.6->1.7 src/DelayTagged.h:1.5->1.6 src/ESI.cc:1.24->1.25 src/ESIAssign.cc:1.5->1.6 src/ESIAssign.h:1.4->1.5 src/ESICustomParser.cc:1.9->1.10 src/ESICustomParser.h:1.7->1.8 src/ESISegment.cc:1.5->1.6 src/ESIVarState.cc:1.9->1.10 src/ESIVarState.h:1.3->1.4 src/ExternalACLEntry.h:1.7->1.8 src/HttpHdrCc.cc:1.30->1.31 src/HttpHdrRange.cc:1.43->1.44 src/HttpHdrSc.cc:1.5->1.6 src/HttpHdrSc.h:1.2->1.3 src/HttpHdrScTarget.cc:1.3->1.4 src/HttpHdrScTarget.h:1.2->1.3 src/HttpHeader.cc:1.132->1.133 src/HttpHeader.h:1.20->1.21 src/HttpHeaderRange.h:1.9->1.10 src/HttpHeaderTools.cc:1.60->1.61 src/HttpReply.cc:1.94->1.95 src/HttpReply.h:1.19->1.20 src/HttpRequest.cc:1.75->1.76 src/HttpRequest.h:1.28->1.29 src/HttpStatusLine.cc:1.33->1.34 src/HttpStatusLine.h:1.3->1.4 src/Makefile.am:1.181->1.182 src/MemObject.cc:1.27->1.28 src/PeerDigest.h:1.2->1.3 src/SqString.cc:1.7->1.8(DEAD) src/SqString.cci:1.2->1.3(DEAD) src/SqString.h:1.3->1.4(DEAD) src/SquidString.h:1.9->1.10 src/Store.h:1.34->1.35 src/StoreHashIndex.h:1.3->1.4 src/String.cc:1.25->1.26 src/String.cci:1.8->1.9 src/SwapDir.cc:1.12->1.13 src/SwapDir.h:1.12->1.13 src/access_log.cc:1.125->1.126 src/cache_cf.cc:1.511->1.512 src/client_db.cc:1.69->1.70 src/client_side.cc:1.755->1.756 src/client_side_reply.cc:1.128->1.129 src/client_side_request.cc:1.88->1.89 src/client_side_request.h:1.29->1.30 src/dns_internal.cc:1.99->1.100 src/errorpage.cc:1.226->1.227 src/external_acl.cc:1.79->1.80 src/fqdncache.cc:1.172->1.173 src/ftp.cc:1.423->1.424 src/gopher.cc:1.208->1.209 src/http.cc:1.522->1.523 src/ident.cc:1.76->1.77 src/internal.cc:1.46->1.47 src/ipcache.cc:1.260->1.261 src/net_db.cc:1.195->1.196 src/pconn.cc:1.52->1.53 src/peer_digest.cc:1.124->1.125 src/protos.h:1.546->1.547 src/redirect.cc:1.119->1.120 src/stat.cc:1.406->1.407 src/store.cc:1.614->1.615 src/store_dir.cc:1.160->1.161 src/store_log.cc:1.33->1.34 src/structs.h:1.557->1.558 src/url.cc:1.161->1.162 src/urn.cc:1.106->1.107 src/whois.cc:1.44->1.45 src/DiskIO/AIO/AIODiskFile.cc:1.5->1.6 src/DiskIO/AIO/AIODiskFile.h:1.3->1.4 src/ICAP/ICAPConfig.cc:1.15->1.16 src/ICAP/ICAPConfig.h:1.12->1.13 src/ICAP/ICAPModXact.cc:1.32->1.33 src/ICAP/ICAPOptXact.cc:1.7->1.8 src/ICAP/ICAPOptions.cc:1.11->1.12 src/ICAP/ICAPOptions.h:1.10->1.11 src/ICAP/ICAPServiceRep.cc:1.13->1.14 src/ICAP/ICAPServiceRep.h:1.8->1.9 src/ICAP/ICAPXaction.cc:1.18->1.19 src/auth/digest/auth_digest.cc:1.56->1.57 src/auth/negotiate/auth_negotiate.cc:1.19->1.20 src/auth/ntlm/auth_ntlm.cc:1.69->1.70 src/fs/coss/CossSwapDir.h:1.7->1.8 src/fs/coss/store_dir_coss.cc:1.74->1.75 src/fs/null/store_null.cc:1.13->1.14 src/fs/null/store_null.h:1.4->1.5 src/fs/ufs/store_dir_ufs.cc:1.83->1.84 src/fs/ufs/ufscommon.h:1.10->1.11 src/tests/CapturingStoreEntry.h:1.2->1.3 src/tests/TestSwapDir.cc:1.4->1.5 src/tests/TestSwapDir.h:1.5->1.6 src/tests/testCacheManager.cc:1.3->1.4 src/tests/testEvent.cc:1.5->1.6 src/tests/testHttpRequest.cc:1.3->1.4 src/tests/testHttpRequestMethod.cc:1.3->1.4 src/tests/testStore.cc:1.5->1.6 src/tests/testStore.h:1.3->1.4 src/tests/testStoreController.cc:1.6->1.7 src/tests/testStoreEntryStream.cc:1.4->1.5 src/tests/testStoreHashIndex.cc:1.5->1.6 src/tests/testString.cc:1.5->1.6 src/tests/testString.h:1.4->1.5 src/tests/testURLScheme.cc:1.3->1.4 src/tests/test_http_range.cc:1.2->1.3 Index: squid3/ChangeLog =================================================================== RCS file: /cvsroot/squid/squid3/ChangeLog,v retrieving revision 1.555 retrieving revision 1.556 diff -u -r1.555 -r1.556 --- squid3/ChangeLog 18 May 2007 06:41:21 -0000 1.555 +++ squid3/ChangeLog 29 May 2007 13:31:36 -0000 1.556 @@ -28,7 +28,6 @@ - Improved high-resolution profiling - Windows overlapped-IO and thread support added to the Async IO disk code - Improvements for handling large DNS replies - - Adds standard API for string handling Changes to squid-2.5 (): Index: squid3/src/ACLExtUser.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ACLExtUser.cc,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- squid3/src/ACLExtUser.cc 18 May 2007 06:41:21 -0000 1.10 +++ squid3/src/ACLExtUser.cc 29 May 2007 13:31:36 -0000 1.11 @@ -1,5 +1,5 @@ /* - * $Id: ACLExtUser.cc,v 1.10 2007/05/18 06:41:21 amosjeffries Exp $ + * $Id: ACLExtUser.cc,v 1.11 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -79,7 +79,7 @@ ACLExtUser::match(ACLChecklist *checklist) { if (checklist->request->extacl_user.size()) { - return data->match(checklist->request->extacl_user.c_str()); + return data->match(checklist->request->extacl_user.buf()); } else { return -1; } Index: squid3/src/ACLHTTPHeaderData.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ACLHTTPHeaderData.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- squid3/src/ACLHTTPHeaderData.cc 18 May 2007 06:41:21 -0000 1.4 +++ squid3/src/ACLHTTPHeaderData.cc 29 May 2007 13:31:36 -0000 1.5 @@ -1,5 +1,5 @@ /* - * $Id: ACLHTTPHeaderData.cc,v 1.4 2007/05/18 06:41:21 amosjeffries Exp $ + * $Id: ACLHTTPHeaderData.cc,v 1.5 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -63,18 +63,18 @@ if (hdr == NULL) return false; - debugs(28, 3, "aclHeaderData::match: checking '" << hdrName << "'"); + debugs(28, 3, "aclHeaderData::match: checking '" << hdrName.buf() << "'"); - string value = hdrId != HDR_BAD_HDR ? hdr->getStrOrList(hdrId) : hdr->getByName(hdrName.c_str()); + String value = hdrId != HDR_BAD_HDR ? hdr->getStrOrList(hdrId) : hdr->getByName(hdrName.buf()); - return regex_rule->match(value.c_str()); + return regex_rule->match(value.buf()); } wordlist * ACLHTTPHeaderData::dump() { wordlist *W = NULL; - wordlistAdd(&W, hdrName.c_str()); + wordlistAdd(&W, hdrName.buf()); wordlist * regex_dump = regex_rule->dump(); wordlistAddWl(&W, regex_dump); wordlistDestroy(®ex_dump); @@ -87,14 +87,14 @@ char* t = strtokFile(); assert (t != NULL); hdrName = t; - hdrId = httpHeaderIdByNameDef(hdrName.c_str(), hdrName.size()); + hdrId = httpHeaderIdByNameDef(hdrName.buf(), strlen(hdrName.buf())); regex_rule->parse(); } bool ACLHTTPHeaderData::empty() const { - return (hdrId == HDR_BAD_HDR && !hdrName.c_str()) || regex_rule->empty(); + return (hdrId == HDR_BAD_HDR && !hdrName.buf()) || regex_rule->empty(); } ACLData<HttpHeader*> * Index: squid3/src/ACLHTTPHeaderData.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ACLHTTPHeaderData.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/ACLHTTPHeaderData.h 18 May 2007 06:41:21 -0000 1.3 +++ squid3/src/ACLHTTPHeaderData.h 29 May 2007 13:31:36 -0000 1.4 @@ -1,6 +1,6 @@ /* - * $Id: ACLHTTPHeaderData.h,v 1.3 2007/05/18 06:41:21 amosjeffries Exp $ + * $Id: ACLHTTPHeaderData.h,v 1.4 2007/05/29 13:31:36 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -53,7 +53,7 @@ private: http_hdr_type hdrId; // set if header is known - string hdrName; // always set + String hdrName; // always set ACLData<char const *> * regex_rule; }; Index: squid3/src/ACLUrlPath.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ACLUrlPath.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/ACLUrlPath.cc 18 May 2007 06:41:21 -0000 1.3 +++ squid3/src/ACLUrlPath.cc 29 May 2007 13:31:36 -0000 1.4 @@ -1,5 +1,5 @@ /* - * $Id: ACLUrlPath.cc,v 1.3 2007/05/18 06:41:21 amosjeffries Exp $ + * $Id: ACLUrlPath.cc,v 1.4 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -47,7 +47,7 @@ int ACLUrlPathStrategy::match (ACLData<char const *> * &data, ACLChecklist *checklist) { - char *esc_buf = xstrdup(checklist->request->urlpath.c_str()); + char *esc_buf = xstrdup(checklist->request->urlpath.buf()); rfc1738_unescape(esc_buf); int result = data->match(esc_buf); safe_free(esc_buf); Index: squid3/src/AuthUser.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/AuthUser.cc,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- squid3/src/AuthUser.cc 18 May 2007 06:41:21 -0000 1.8 +++ squid3/src/AuthUser.cc 29 May 2007 13:31:36 -0000 1.9 @@ -1,6 +1,6 @@ /* - * $Id: AuthUser.cc,v 1.8 2007/05/18 06:41:21 amosjeffries Exp $ + * $Id: AuthUser.cc,v 1.9 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 29 Authenticator * AUTHOR: Robert Collins @@ -143,7 +143,7 @@ if (!proxy_auth_username_cache) { /* First time around, 7921 should be big enough */ proxy_auth_username_cache = - hash_create((HASHCMP *) std::strcmp, 7921, hash_string); + hash_create((HASHCMP *) strcmp, 7921, hash_string); assert(proxy_auth_username_cache); eventAdd("User Cache Maintenance", cacheCleanup, NULL, Config.authenticateGCInterval, 1); } Index: squid3/src/CommonPool.h =================================================================== RCS file: /cvsroot/squid/squid3/src/CommonPool.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- squid3/src/CommonPool.h 18 May 2007 06:41:22 -0000 1.4 +++ squid3/src/CommonPool.h 29 May 2007 13:31:36 -0000 1.5 @@ -1,6 +1,6 @@ /* - * $Id: CommonPool.h,v 1.4 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: CommonPool.h,v 1.5 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 77 Delay Pools * AUTHOR: Robert Collins <robertc@squid-cache.org> @@ -58,11 +58,11 @@ void *operator new(size_t); void operator delete (void *); static CommonPool *Factory (unsigned char _class, CompositePoolNode::Pointer&); - char const* theClassTypeLabel() const { return typeLabel.c_str(); } + char const* theClassTypeLabel() const {return typeLabel.buf();} protected: CommonPool(); - string typeLabel; + String typeLabel; }; #endif Index: squid3/src/CompositePoolNode.h =================================================================== RCS file: /cvsroot/squid/squid3/src/CompositePoolNode.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- squid3/src/CompositePoolNode.h 18 May 2007 06:41:22 -0000 1.7 +++ squid3/src/CompositePoolNode.h 29 May 2007 13:31:36 -0000 1.8 @@ -1,6 +1,6 @@ /* - * $Id: CompositePoolNode.h,v 1.7 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: CompositePoolNode.h,v 1.8 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 77 Delay Pools * AUTHOR: Robert Collins <robertc@squid-cache.org> @@ -78,7 +78,7 @@ struct IN_ADDR src_addr; AuthUserRequest *user; - string tag; + String tag; }; protected: Index: squid3/src/ConfigParser.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ConfigParser.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- squid3/src/ConfigParser.h 18 May 2007 06:41:22 -0000 1.7 +++ squid3/src/ConfigParser.h 29 May 2007 13:31:36 -0000 1.8 @@ -1,6 +1,6 @@ /* - * $Id: ConfigParser.h,v 1.7 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ConfigParser.h,v 1.8 2007/05/29 13:31:36 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -61,7 +61,7 @@ static void ParseUShort(u_short *var); static void ParseBool(bool *var); static void ParseString(char **var); - static void ParseString(string &var); + static void ParseString(String *var); static void ParseWordList(wordlist **list); static char * strtokFile(); }; Index: squid3/src/DelayBucket.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/DelayBucket.cc,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- squid3/src/DelayBucket.cc 18 May 2007 06:41:22 -0000 1.6 +++ squid3/src/DelayBucket.cc 29 May 2007 13:31:36 -0000 1.7 @@ -1,6 +1,6 @@ /* - * $Id: DelayBucket.cc,v 1.6 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: DelayBucket.cc,v 1.7 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 77 Delay Pools * AUTHOR: Robert Collins <robertc@squid-cache.org> @@ -54,7 +54,7 @@ #include "ConfigParser.h" #include "DelayId.h" #include "Array.h" -#include "SquidString.h" +#include "String.h" #include "CommonPool.h" #include "CompositePoolNode.h" #include "DelayPool.h" Index: squid3/src/DelayTagged.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/DelayTagged.cc,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- squid3/src/DelayTagged.cc 18 May 2007 06:41:22 -0000 1.6 +++ squid3/src/DelayTagged.cc 29 May 2007 13:31:36 -0000 1.7 @@ -1,6 +1,6 @@ /* - * $Id: DelayTagged.cc,v 1.6 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: DelayTagged.cc,v 1.7 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 77 Delay Pools * AUTHOR: Robert Collins <robertc@squid-cache.org> @@ -77,7 +77,7 @@ DelayTaggedCmp(DelayTaggedBucket::Pointer const &left, DelayTaggedBucket::Pointer const &right) { /* for rate limiting, case insensitive */ - return strcasecmp(left->tag, right->tag); + return left->tag.caseCmp(right->tag.buf()); } void @@ -183,7 +183,7 @@ ::operator delete (address); } -DelayTaggedBucket::DelayTaggedBucket(string &aTag) : tag (aTag) +DelayTaggedBucket::DelayTaggedBucket(String &aTag) : tag (aTag) { debugs(77, 3, "DelayTaggedBucket::DelayTaggedBucket"); } @@ -196,11 +196,11 @@ void DelayTaggedBucket::stats (StoreEntry *entry) const { - storeAppendPrintf(entry, " %s:", tag.c_str()); + storeAppendPrintf(entry, " %s:", tag.buf()); theBucket.stats (entry); } -DelayTagged::Id::Id(DelayTagged::Pointer aDelayTagged, string &aTag) : theTagged(aDelayTagged) +DelayTagged::Id::Id(DelayTagged::Pointer aDelayTagged, String &aTag) : theTagged(aDelayTagged) { theBucket = new DelayTaggedBucket(aTag); DelayTaggedBucket::Pointer const *existing = theTagged->buckets.find(theBucket, DelayTaggedCmp); Index: squid3/src/DelayTagged.h =================================================================== RCS file: /cvsroot/squid/squid3/src/DelayTagged.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/DelayTagged.h 18 May 2007 06:41:22 -0000 1.5 +++ squid3/src/DelayTagged.h 29 May 2007 13:31:36 -0000 1.6 @@ -1,6 +1,6 @@ /* - * $Id: DelayTagged.h,v 1.5 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: DelayTagged.h,v 1.6 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 77 Delay Pools * AUTHOR: Robert Collins <robertc@squid-cache.org> @@ -58,10 +58,10 @@ void operator delete (void *); void stats(StoreEntry *)const; - DelayTaggedBucket(string &aTag); + DelayTaggedBucket(String &aTag); ~DelayTaggedBucket(); DelayBucket theBucket; - string tag; + String tag; }; class DelayTagged : public CompositePoolNode @@ -88,7 +88,7 @@ public: void *operator new(size_t); void operator delete (void *); - Id (RefCount<DelayTagged>, string &); + Id (RefCount<DelayTagged>, String &); ~Id(); virtual int bytesWanted (int min, int max) const; virtual void bytesIn(int qty); Index: squid3/src/ESI.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ESI.cc,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- squid3/src/ESI.cc 18 May 2007 06:41:22 -0000 1.24 +++ squid3/src/ESI.cc 29 May 2007 13:31:36 -0000 1.25 @@ -1,6 +1,6 @@ /* - * $Id: ESI.cc,v 1.24 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ESI.cc,v 1.25 2007/05/29 13:31:36 amosjeffries Exp $ * * DEBUG: section 86 ESI processing * AUTHOR: Robert Collins @@ -2450,7 +2450,7 @@ */ return 0; - if (strstr (sctusable->content, "ESI/1.0")) + if (strstr (sctusable->content.buf(), "ESI/1.0")) rv = 1; httpHdrScTargetDestroy (sctusable); Index: squid3/src/ESIAssign.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ESIAssign.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/ESIAssign.cc 18 May 2007 06:41:22 -0000 1.5 +++ squid3/src/ESIAssign.cc 29 May 2007 13:31:37 -0000 1.6 @@ -1,6 +1,6 @@ /* - * $Id: ESIAssign.cc,v 1.5 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ESIAssign.cc,v 1.6 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 86 ESI processing * AUTHOR: Robert Collins @@ -83,7 +83,7 @@ variable = NULL; if (unevaluatedVariable.size()) { - varState->feedData(unevaluatedVariable.c_str(), unevaluatedVariable.size()); + varState->feedData(unevaluatedVariable.buf(), unevaluatedVariable.size()); char const *result = varState->extractChar (); /* Consider activating this, when we want to evaluate variables to a @@ -117,7 +117,7 @@ if (!value) return ESI_PROCESS_COMPLETE; - varState->addVariable (name.c_str(), name.size(), value); + varState->addVariable (name.buf(), name.size(), value); value = NULL; @@ -181,12 +181,12 @@ ESIVariableExpression::~ESIVariableExpression() {} -ESIVariableExpression::ESIVariableExpression (string const &aString) : expression (aString) +ESIVariableExpression::ESIVariableExpression (String const &aString) : expression (aString) {} void ESIVariableExpression::eval (ESIVarState &state, char const *subref, char const *defaultOnEmpty) const { /* XXX: Implement evaluation of the expression */ - ESISegment::ListAppend (state.getOutput(), expression.c_str(), expression.size()); + ESISegment::ListAppend (state.getOutput(), expression.buf(), expression.size()); } Index: squid3/src/ESIAssign.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ESIAssign.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- squid3/src/ESIAssign.h 18 May 2007 06:41:22 -0000 1.4 +++ squid3/src/ESIAssign.h 29 May 2007 13:31:37 -0000 1.5 @@ -1,5 +1,5 @@ /* - * $Id: ESIAssign.h,v 1.4 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ESIAssign.h,v 1.5 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 86 ESI processing * AUTHOR: Robert Collins @@ -49,11 +49,11 @@ public: ~ESIVariableExpression(); - ESIVariableExpression (string const &value); + ESIVariableExpression (String const &value); virtual void eval (ESIVarState &state, char const *, char const *) const; private: - string expression; + String expression; }; /* ESIAssign */ @@ -81,10 +81,10 @@ void evaluateVariable(); esiTreeParentPtr parent; ESIVarState *varState; - string name; + String name; ESIVariableExpression * value; ESIElement::Pointer variable; - string unevaluatedVariable; + String unevaluatedVariable; }; MEMPROXY_CLASS_INLINE(ESIAssign) Index: squid3/src/ESICustomParser.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ESICustomParser.cc,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- squid3/src/ESICustomParser.cc 18 May 2007 06:41:22 -0000 1.9 +++ squid3/src/ESICustomParser.cc 29 May 2007 13:31:37 -0000 1.10 @@ -1,6 +1,6 @@ /* - * $Id: ESICustomParser.cc,v 1.9 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ESICustomParser.cc,v 1.10 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 86 ESI processing * AUTHOR: Robert Collins @@ -109,7 +109,7 @@ } size_t openESITags (0); - char const *currentPos = content.c_str(); + char const *currentPos = content.buf(); size_t remainingCount = content.size(); char const *tag = NULL; @@ -302,7 +302,7 @@ ESICustomParser::errorString() const { if (error.size()) - return error.c_str(); + return error.buf(); else return "Parsing error strings not implemented"; } Index: squid3/src/ESICustomParser.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ESICustomParser.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- squid3/src/ESICustomParser.h 18 May 2007 06:41:22 -0000 1.7 +++ squid3/src/ESICustomParser.h 29 May 2007 13:31:37 -0000 1.8 @@ -1,5 +1,5 @@ /* - * $Id: ESICustomParser.h,v 1.7 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ESICustomParser.h,v 1.8 2007/05/29 13:31:37 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -60,9 +60,9 @@ char const *findTag(char const *a, size_t b); ESIParserClient *theClient; - string error; + String error; /* cheap n dirty - buffer it all */ - string content; + String content; /* TODO: make a class of this type code */ ESITAG_t lastTag; }; Index: squid3/src/ESISegment.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ESISegment.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/ESISegment.cc 18 May 2007 06:41:22 -0000 1.5 +++ squid3/src/ESISegment.cc 29 May 2007 13:31:37 -0000 1.6 @@ -1,6 +1,6 @@ /* - * $Id: ESISegment.cc,v 1.5 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ESISegment.cc,v 1.6 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 86 ESI processing * AUTHOR: Robert Collins @@ -234,7 +234,7 @@ void ESISegment::dumpOne() const { - string temp; + String temp; temp.limitInit(buf, len); - debugs(86, 9, "ESISegment::dumpOne: \"" << temp << "\""); + debugs(86, 9, "ESISegment::dumpOne: \"" << temp.buf() << "\""); } Index: squid3/src/ESIVarState.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ESIVarState.cc,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- squid3/src/ESIVarState.cc 18 May 2007 06:41:22 -0000 1.9 +++ squid3/src/ESIVarState.cc 29 May 2007 13:31:37 -0000 1.10 @@ -1,6 +1,6 @@ /* - * $Id: ESIVarState.cc,v 1.9 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ESIVarState.cc,v 1.10 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 86 ESI processing * AUTHOR: Robert Collins @@ -318,9 +318,9 @@ } void -ESIVarState::removeVariable (string const &name) +ESIVarState::removeVariable (String const &name) { - Variable *candidate = static_cast <Variable *>(variables.find (name.c_str(), name.size())); + Variable *candidate = static_cast <Variable *>(variables.find (name.buf(), name.size())); if (candidate) { /* XXX: remove me */ @@ -335,7 +335,7 @@ void ESIVarState::addVariable(char const *name, size_t len, Variable *aVariable) { - string temp; + String temp; temp.limitInit (name, len); removeVariable (temp); variables.add(name, len, aVariable); @@ -434,10 +434,10 @@ if (!subref) s = state.header().getStr (HDR_COOKIE); else { - string S = state.header().getListMember (HDR_COOKIE, subref, ';'); + String S = state.header().getListMember (HDR_COOKIE, subref, ';'); if (S.size()) - ESISegment::ListAppend (state.getOutput(), S.c_str(), S.size()); + ESISegment::ListAppend (state.getOutput(), S.buf(), S.size()); else if (found_default) ESISegment::ListAppend (state.getOutput(), found_default, strlen (found_default)); } @@ -470,8 +470,8 @@ if (state.header().has(HDR_ACCEPT_LANGUAGE)) { if (!subref) { - string S (state.header().getList (HDR_ACCEPT_LANGUAGE)); - ESISegment::ListAppend (state.getOutput(), S.c_str(), S.size()); + String S (state.header().getList (HDR_ACCEPT_LANGUAGE)); + ESISegment::ListAppend (state.getOutput(), S.buf(), S.size()); } else { if (state.header().hasListMember (HDR_ACCEPT_LANGUAGE, subref, ',')) { s = "true"; @@ -885,9 +885,10 @@ if (!tempstr[0]) return; - string strVary (rep->header.getList (HDR_VARY)); + String strVary (rep->header.getList (HDR_VARY)); - if (!strVary.size() || strVary[0] != '*') { + if (!strVary.size() || strVary.buf()[0] != '*') { rep->header.putStr (HDR_VARY, tempstr); } } + Index: squid3/src/ESIVarState.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ESIVarState.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/ESIVarState.h 18 May 2007 06:41:22 -0000 1.3 +++ squid3/src/ESIVarState.h 29 May 2007 13:31:37 -0000 1.4 @@ -1,6 +1,6 @@ /* - * $Id: ESIVarState.h,v 1.3 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ESIVarState.h,v 1.4 2007/05/29 13:31:37 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -64,7 +64,7 @@ class Variable; void addVariable (char const *, size_t, Variable *); - void removeVariable (string const &); + void removeVariable (String const &); void *operator new (size_t byteCount); void operator delete (void *address); Index: squid3/src/ExternalACLEntry.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ExternalACLEntry.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- squid3/src/ExternalACLEntry.h 18 May 2007 06:41:22 -0000 1.7 +++ squid3/src/ExternalACLEntry.h 29 May 2007 13:31:37 -0000 1.8 @@ -1,6 +1,6 @@ /* - * $Id: ExternalACLEntry.h,v 1.7 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: ExternalACLEntry.h,v 1.8 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 82 External ACL * AUTHOR: Henrik Nordstrom, MARA Systems AB @@ -61,11 +61,11 @@ ExternalACLEntryData() : result (-1) {} int result; - string user; - string password; - string message; - string tag; - string log; + String user; + String password; + String message; + String tag; + String log; }; @@ -88,11 +88,11 @@ dlink_node lru; int result; time_t date; - string user; - string password; - string message; - string tag; - string log; + String user; + String password; + String message; + String tag; + String log; external_acl *def; private: Index: squid3/src/HttpHdrCc.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHdrCc.cc,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- squid3/src/HttpHdrCc.cc 18 May 2007 06:41:22 -0000 1.30 +++ squid3/src/HttpHdrCc.cc 29 May 2007 13:31:37 -0000 1.31 @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrCc.cc,v 1.30 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHdrCc.cc,v 1.31 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 65 HTTP Cache Control Header * AUTHOR: Alex Rousskov @@ -66,7 +66,7 @@ /* local prototypes */ -static int httpHdrCcParseInit(HttpHdrCc * cc, const string * str); +static int httpHdrCcParseInit(HttpHdrCc * cc, const String * str); /* module initialization */ @@ -96,7 +96,7 @@ /* creates an cc object from a 0-terminating string */ HttpHdrCc * -httpHdrCcParseCreate(const string * str) +httpHdrCcParseCreate(const String * str) { HttpHdrCc *cc = httpHdrCcCreate(); @@ -110,7 +110,7 @@ /* parses a 0-terminating string and inits cc */ static int -httpHdrCcParseInit(HttpHdrCc * cc, const string * str) +httpHdrCcParseInit(HttpHdrCc * cc, const String * str) { const char *item; const char *p; /* '=' parameter */ @@ -131,16 +131,17 @@ nlen = ilen; /* find type */ - type = (http_hdr_cc_type ) httpHeaderIdByName(item, nlen, CcFieldsInfo, CC_ENUM_END); + type = (http_hdr_cc_type ) httpHeaderIdByName(item, nlen, + CcFieldsInfo, CC_ENUM_END); if (type < 0) { - debugs(65, 2, "hdr cc: unknown cache-directive: near '" << item << "' in '" << *str << "'"); + debugs(65, 2, "hdr cc: unknown cache-directive: near '" << item << "' in '" << str->buf() << "'"); type = CC_OTHER; } if (EBIT_TEST(cc->mask, type)) { if (type != CC_OTHER) - debugs(65, 2, "hdr cc: ignoring duplicate cache-directive: near '" << item << "' in '" << *str << "'"); + debugs(65, 2, "hdr cc: ignoring duplicate cache-directive: near '" << item << "' in '" << str->buf() << "'"); CcFieldsInfo[type].stat.repCount++; @@ -205,8 +206,8 @@ { assert(cc); - if (cc->other.c_str()) - cc->other.clear(); + if (cc->other.buf()) + cc->other.clean(); memFree(cc, MEM_HTTP_HDR_CC); } @@ -235,7 +236,7 @@ if (EBIT_TEST(cc->mask, flag) && flag != CC_OTHER) { /* print option name */ - packerPrintf(p, (pcount ? ", %s" : "%s"), CcFieldsInfo[flag].name.c_str()); + packerPrintf(p, (pcount ? ", %s" : "%s"), CcFieldsInfo[flag].name.buf()); /* handle options with values */ @@ -253,7 +254,7 @@ } if (cc->other.size()) - packerPrintf(p, (pcount ? ", %s" : "%s"), cc->other.c_str()); + packerPrintf(p, (pcount ? ", %s" : "%s"), cc->other.buf()); } /* negative max_age will clean old max_Age setting */ @@ -299,7 +300,7 @@ 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 ? CcFieldsInfo[id].name.c_str() : "INVALID"; + const char *name = valid_id ? CcFieldsInfo[id].name.buf() : "INVALID"; if (count || valid_id) storeAppendPrintf(sentry, "%2d\t %-20s\t %5d\t %6.2f\n", Index: squid3/src/HttpHdrRange.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHdrRange.cc,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- squid3/src/HttpHdrRange.cc 18 May 2007 06:41:22 -0000 1.43 +++ squid3/src/HttpHdrRange.cc 29 May 2007 13:31:37 -0000 1.44 @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrRange.cc,v 1.43 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHdrRange.cc,v 1.44 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 64 HTTP Range Header * AUTHOR: Alex Rousskov @@ -231,7 +231,7 @@ {} HttpHdrRange * -HttpHdrRange::ParseCreate(const string * range_spec) +HttpHdrRange::ParseCreate(const String * range_spec) { HttpHdrRange *r = new HttpHdrRange; @@ -245,7 +245,7 @@ /* returns true if ranges are valid; inits HttpHdrRange */ bool -HttpHdrRange::parseInit(const string * range_spec) +HttpHdrRange::parseInit(const String * range_spec) { const char *item; const char *pos = NULL; @@ -253,14 +253,14 @@ int count = 0; assert(this && range_spec); ++ParsedCount; - debugs(64, 8, "parsing range field: '" << *range_spec << "'"); + debugs(64, 8, "parsing range field: '" << range_spec->buf() << "'"); /* check range type */ - if (strncasecmp(*range_spec,"bytes=", 6)) + if (range_spec->caseCmp("bytes=", 6)) return 0; /* skip "bytes="; hack! */ - pos = range_spec->c_str() + 5; + pos = range_spec->buf() + 5; /* iterate through comma separated list */ while (strListGetItem(range_spec, ',', &item, &ilen, &pos)) { @@ -276,7 +276,8 @@ ++count; } - debugs(64, 8, "parsed range range count: " << count << ", kept " << specs.size()); + debugs(64, 8, "parsed range range count: " << count << ", kept " << + specs.size()); return specs.count != 0; } Index: squid3/src/HttpHdrSc.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHdrSc.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/HttpHdrSc.cc 18 May 2007 06:41:22 -0000 1.5 +++ squid3/src/HttpHdrSc.cc 29 May 2007 13:31:37 -0000 1.6 @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrSc.cc,v 1.5 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHdrSc.cc,v 1.6 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 90 HTTP Cache Control Header * AUTHOR: Alex Rousskov @@ -67,7 +67,7 @@ /* local prototypes */ -static int httpHdrScParseInit(HttpHdrSc * sc, const string * str); +static int httpHdrScParseInit(HttpHdrSc * sc, const String * str); /* module initialization */ @@ -94,7 +94,7 @@ /* creates an sc object from a 0-terminating string */ HttpHdrSc * -httpHdrScParseCreate(const string * str) +httpHdrScParseCreate(const String * str) { HttpHdrSc *sc = httpHdrScCreate(); @@ -108,7 +108,7 @@ /* parses a 0-terminating string and inits sc */ static int -httpHdrScParseInit(HttpHdrSc * sc, const string * str) +httpHdrScParseInit(HttpHdrSc * sc, const String * str) { const char *item; const char *p; /* '=' parameter */ @@ -135,10 +135,11 @@ ilen = p++ - item; /* find type */ - type = httpHeaderIdByName(item, ilen, ScFieldsInfo, SC_ENUM_END); + type = httpHeaderIdByName(item, ilen, + ScFieldsInfo, SC_ENUM_END); if (type < 0) { - debugs(90, 2, "hdr sc: unknown control-directive: near '" << item << "' in '" << *str << "'"); + debugs(90, 2, "hdr sc: unknown control-directive: near '" << item << "' in '" << str->buf() << "'"); type = SC_OTHER; } @@ -162,7 +163,7 @@ if (EBIT_TEST(sct->mask, type)) { if (type != SC_OTHER) - debugs(90, 2, "hdr sc: ignoring duplicate control-directive: near '" << item << "' in '" << *str << "'"); + debugs(90, 2, "hdr sc: ignoring duplicate control-directive: near '" << item << "' in '" << str->buf() << "'"); ScFieldsInfo[type].stat.repCount++; @@ -196,7 +197,7 @@ if (!p || !httpHeaderParseQuotedString(p, &sct->content)) { debugs(90, 2, "sc: invalid content= quoted string near '" << item << "'"); - sct->content.clear(); + sct->content.clean(); EBIT_CLR(sct->mask, type); } @@ -257,7 +258,7 @@ if (EBIT_TEST(sc->mask, flag) && flag != SC_OTHER) { /* print option name */ - packerPrintf(p, (pcount ? ", %s" : "%s"), ScFieldsInfo[flag].name.c_str()); + packerPrintf(p, (pcount ? ", %s" : "%s"), ScFieldsInfo[flag].name.buf()); /* handle options with values */ @@ -265,14 +266,14 @@ packerPrintf(p, "=%d", (int) sc->max_age); if (flag == SC_CONTENT) - packerPrintf(p, "=\"%s\"", sc->content.c_str()); + packerPrintf(p, "=\"%s\"", sc->content.buf()); pcount++; } } if (sc->target.size()) - packerPrintf (p, ";%s", sc->target.c_str()); + packerPrintf (p, ";%s", sc->target.buf()); } void @@ -339,7 +340,7 @@ extern const HttpHeaderStat *dump_stat; /* argh! */ const int id = (int) val; const int valid_id = id >= 0 && id < SC_ENUM_END; - const char *name = valid_id ? ScFieldsInfo[id].name.c_str() : "INVALID"; + const char *name = valid_id ? ScFieldsInfo[id].name.buf() : "INVALID"; if (count || valid_id) storeAppendPrintf(sentry, "%2d\t %-20s\t %5d\t %6.2f\n", @@ -352,7 +353,7 @@ extern const HttpHeaderStat *dump_stat; /* argh! */ const int id = (int) val; const int valid_id = id >= 0 && id < SC_ENUM_END; - const char *name = valid_id ? ScFieldsInfo[id].name.c_str() : "INVALID"; + const char *name = valid_id ? ScFieldsInfo[id].name.buf() : "INVALID"; if (count || valid_id) storeAppendPrintf(sentry, "%2d\t %-20s\t %5d\t %6.2f\n", @@ -369,9 +370,9 @@ while (node) { HttpHdrScTarget *sct = (HttpHdrScTarget *)node->data; - if (target && !sct->target.empty() && !strcmp(target, sct->target) ) + if (target && sct->target.buf() && !strcmp (target, sct->target.buf())) return sct; - else if (!target && sct->target.empty()) + else if (!target && !sct->target.buf()) return sct; node = node->next; Index: squid3/src/HttpHdrSc.h =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHdrSc.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- squid3/src/HttpHdrSc.h 18 May 2007 06:41:22 -0000 1.2 +++ squid3/src/HttpHdrSc.h 29 May 2007 13:31:37 -0000 1.3 @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrSc.h,v 1.2 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHdrSc.h,v 1.3 2007/05/29 13:31:37 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -54,7 +54,7 @@ extern void httpHdrScInitModule (void); extern void httpHdrScCleanModule (void); extern HttpHdrSc *httpHdrScCreate(void); -extern HttpHdrSc *httpHdrScParseCreate(string const *); +extern HttpHdrSc *httpHdrScParseCreate(String const *); extern void httpHdrScDestroy(HttpHdrSc * sc); extern HttpHdrSc *httpHdrScDup(const HttpHdrSc * sc); extern void httpHdrScPackInto(const HttpHdrSc * sc, Packer * p); Index: squid3/src/HttpHdrScTarget.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHdrScTarget.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/HttpHdrScTarget.cc 18 May 2007 06:41:22 -0000 1.3 +++ squid3/src/HttpHdrScTarget.cc 29 May 2007 13:31:37 -0000 1.4 @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrScTarget.cc,v 1.3 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHdrScTarget.cc,v 1.4 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 90 HTTP Cache Control Header * AUTHOR: Alex Rousskov @@ -58,6 +58,8 @@ httpHdrScTargetDestroy(HttpHdrScTarget * sc) { assert(sc); + sc->target.clean(); + sc->content.clean(); delete sc; } @@ -66,7 +68,7 @@ { HttpHdrScTarget *dup; assert(sc); - dup = httpHdrScTargetCreate(sc->target.c_str()); + dup = httpHdrScTargetCreate(sc->target.buf()); dup->mask = sc->mask; dup->max_age = sc->max_age; dup->content = sc->content; Index: squid3/src/HttpHdrScTarget.h =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHdrScTarget.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- squid3/src/HttpHdrScTarget.h 18 May 2007 06:41:22 -0000 1.2 +++ squid3/src/HttpHdrScTarget.h 29 May 2007 13:31:37 -0000 1.3 @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrScTarget.h,v 1.2 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHdrScTarget.h,v 1.3 2007/05/29 13:31:37 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -47,8 +47,8 @@ int mask; int max_age; int max_stale; - string content; - string target; + String content; + String target; }; MEMPROXY_CLASS_INLINE(HttpHdrScTarget); Index: squid3/src/HttpHeader.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHeader.cc,v retrieving revision 1.132 retrieving revision 1.133 diff -u -r1.132 -r1.133 --- squid3/src/HttpHeader.cc 18 May 2007 06:41:22 -0000 1.132 +++ squid3/src/HttpHeader.cc 29 May 2007 13:31:37 -0000 1.133 @@ -1,6 +1,6 @@ /* - * $Id: HttpHeader.cc,v 1.132 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHeader.cc,v 1.133 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 55 HTTP Header * AUTHOR: Alex Rousskov @@ -256,7 +256,7 @@ #define assert_eid(id) assert((id) >= 0 && (id) < HDR_ENUM_END) -static void httpHeaderNoteParsedEntry(http_hdr_type id, string const &value, int error); +static void httpHeaderNoteParsedEntry(http_hdr_type id, String const &value, int error); static void httpHeaderStatInit(HttpHeaderStat * hs, const char *label); static void httpHeaderStatDump(const HttpHeaderStat * hs, StoreEntry * e); @@ -458,7 +458,7 @@ if (e->id != HDR_OTHER) delById(e->id); else - delByName(e->name.c_str()); + delByName(e->name.buf()); addEntry(e->clone()); } @@ -565,7 +565,7 @@ } if (e->id == HDR_CONTENT_LENGTH && (e2 = findEntry(e->id)) != NULL) { - if (e->value.compare(e2->value) != 0) { + if (e->value.cmp(e2->value.buf()) != 0) { ssize_t l1, l2; debugs(55, Config.onoff.relaxed_header_parser <= 0 ? 1 : 2, "WARNING: found two conflicting content-length headers in {" << getStringPrefix(header_start, header_end) << "}"); @@ -575,12 +575,12 @@ goto reset; } - if (!httpHeaderParseSize(e->value.c_str(), &l1)) { - debugs(55, 1, "WARNING: Unparseable content-length '" << e->value << "'"); + if (!httpHeaderParseSize(e->value.buf(), &l1)) { + debugs(55, 1, "WARNING: Unparseable content-length '" << e->value.buf() << "'"); delete e; continue; - } else if (!httpHeaderParseSize(e2->value.c_str(), &l2)) { - debugs(55, 1, "WARNING: Unparseable content-length '" << e2->value << "'"); + } else if (!httpHeaderParseSize(e2->value.buf(), &l2)) { + debugs(55, 1, "WARNING: Unparseable content-length '" << e2->value.buf() << "'"); delById(e2->id); } else if (l1 > l2) { delById(e2->id); @@ -602,7 +602,7 @@ } } - if (e->id == HDR_OTHER && strpbrk(e->name, w_space) != NULL) { + if (e->id == HDR_OTHER && stringHasWhitespace(e->name.buf())) { debugs(55, Config.onoff.relaxed_header_parser <= 0 ? 1 : 2, "WARNING: found whitespace in HTTP header name {" << getStringPrefix(field_start, field_end) << "}"); @@ -725,7 +725,7 @@ debugs(55, 9, "deleting '" << name << "' fields in hdr " << this); while ((e = getEntry(&pos))) { - if (!strcasecmp(e->name,name)) + if (!e->name.caseCmp(name)) delAt(pos, count); else CBIT_SET(mask, e->id); @@ -840,7 +840,7 @@ } bool -HttpHeader::getList(http_hdr_type id, string *s) const +HttpHeader::getList(http_hdr_type id, String *s) const { HttpHeaderEntry *e; HttpHeaderPos pos = HttpHeaderInitPos; @@ -853,7 +853,7 @@ while ((e = getEntry(&pos))) { if (e->id == id) - strListAdd(s, e->value.c_str(), ','); + strListAdd(s, e->value.buf(), ','); } /* @@ -871,7 +871,7 @@ } /* return a list of entries with the same id separated by ',' and ws */ -string +String HttpHeader::getList(http_hdr_type id) const { HttpHeaderEntry *e; @@ -881,13 +881,13 @@ assert(CBIT_TEST(ListHeadersMask, id)); if (!CBIT_TEST(mask, id)) - return ""; + return String(); - string s; + String s; while ((e = getEntry(&pos))) { if (e->id == id) - strListAdd(&s, e->value.c_str(), ','); + strListAdd(&s, e->value.buf(), ','); } /* @@ -905,7 +905,7 @@ } /* return a string or list of entries with the same id separated by ',' and ws */ -string +String HttpHeader::getStrOrList(http_hdr_type id) const { HttpHeaderEntry *e; @@ -916,13 +916,13 @@ if ((e = findEntry(id))) return e->value; - return ""; + return String(); } /* * Returns the value of the specified header. */ -string +String HttpHeader::getByName(const char *name) const { http_hdr_type id; @@ -937,12 +937,12 @@ if (id != -1) return getStrOrList(id); - string result; + String result; /* Sorry, an unknown header name. Do linear search */ while ((e = getEntry(&pos))) { - if (e->id == HDR_OTHER && strcasecmp(e->name,name) == 0) { - strListAdd(&result, e->value.c_str(), ','); + if (e->id == HDR_OTHER && e->name.caseCmp(name) == 0) { + strListAdd(&result, e->value.buf(), ','); } } @@ -952,10 +952,10 @@ /* * Returns a the value of the specified list member, if any. */ -string +String HttpHeader::getByNameListMember(const char *name, const char *member, const char separator) const { - string header; + String header; const char *pos = NULL; const char *item; int ilen; @@ -965,7 +965,7 @@ header = getByName(name); - string result; + String result; while (strListGetItem(&header, separator, &item, &ilen, &pos)) { if (strncmp(item, member, mlen) == 0 && item[mlen] == '=') { @@ -980,10 +980,10 @@ /* * returns a the value of the specified list member, if any. */ -string +String HttpHeader::getListMember(http_hdr_type id, const char *member, const char separator) const { - string header; + String header; const char *pos = NULL; const char *item; int ilen; @@ -992,7 +992,7 @@ assert(id >= 0); header = getStrOrList(id); - string result; + String result; while (strListGetItem(&header, separator, &item, &ilen, &pos)) { if (strncmp(item, member, mlen) == 0 && item[mlen] == '=') { @@ -1001,6 +1001,7 @@ } } + header.clean(); return result; } @@ -1164,7 +1165,7 @@ assert(Headers[id].type == ftDate_1123); /* must be of an appropriate type */ if ((e = findEntry(id))) { - value = parse_rfc1123(e->value.c_str()); + value = parse_rfc1123(e->value.buf()); httpHeaderNoteParsedEntry(e->id, e->value, value < 0); } @@ -1181,7 +1182,7 @@ if ((e = findEntry(id))) { httpHeaderNoteParsedEntry(e->id, e->value, 0); /* no errors are possible */ - return e->value.c_str(); + return e->value.buf(); } return NULL; @@ -1197,7 +1198,7 @@ if ((e = findLastEntry(id))) { httpHeaderNoteParsedEntry(e->id, e->value, 0); /* no errors are possible */ - return e->value.c_str(); + return e->value.buf(); } return NULL; @@ -1207,7 +1208,7 @@ HttpHeader::getCc() const { HttpHdrCc *cc; - string s; + String s; if (!CBIT_TEST(mask, HDR_CACHE_CONTROL)) return NULL; @@ -1254,7 +1255,7 @@ if (!CBIT_TEST(mask, HDR_SURROGATE_CONTROL)) return NULL; - string s; + String s; (void) getList(HDR_SURROGATE_CONTROL, &s); @@ -1277,7 +1278,7 @@ HttpHeaderEntry *e; if ((e = findEntry(HDR_CONTENT_RANGE))) { - cr = httpHdrContRangeParseCreate(e->value.c_str()); + cr = httpHdrContRangeParseCreate(e->value.buf()); httpHeaderNoteParsedEntry(e->id, e->value, !cr); } @@ -1323,7 +1324,7 @@ assert(Headers[id].type == ftETag); /* must be of an appropriate type */ if ((e = findEntry(id))) - etagParseInit(&etag, e->value.c_str()); + etagParseInit(&etag, e->value.buf()); return etag; } @@ -1337,7 +1338,7 @@ memset(&tot, 0, sizeof(tot)); if ((e = findEntry(id))) { - const char *str = e->value.c_str(); + const char *str = e->value.buf(); /* try as an ETag */ if (etagParseInit(&tot.tag, str)) { @@ -1373,13 +1374,19 @@ Headers[id].stat.aliveCount++; - debugs(55, 9, "created HttpHeaderEntry " << this << ": '" << name << " : " << value); + debugs(55, 9, "created HttpHeaderEntry " << this << ": '" << name.buf() << " : " << value.buf()); } HttpHeaderEntry::~HttpHeaderEntry() { assert_eid(id); - debugs(55, 9, "destroying entry " << this << ": '" << name << ": " << value << "'"); + debugs(55, 9, "destroying entry " << this << ": '" << name.buf() << ": " << value.buf() << "'"); + /* clean name if needed */ + + if (id == HDR_OTHER) + name.clean(); + + value.clean(); assert(Headers[id].stat.aliveCount); @@ -1429,9 +1436,9 @@ /* is it a "known" field? */ http_hdr_type id = httpHeaderIdByName(field_start, name_len, Headers, HDR_ENUM_END); - string name; + String name; - string value; + String value; if (id < 0) id = HDR_OTHER; @@ -1453,10 +1460,10 @@ if (field_end - value_start > 65534) { /* String must be LESS THAN 64K and it adds a terminating NULL */ - debugs(55, 1, "WARNING: ignoring '" << name << "' header of " << (field_end - value_start) << " bytes"); + debugs(55, 1, "WARNING: ignoring '" << name.buf() << "' header of " << (field_end - value_start) << " bytes"); if (id == HDR_OTHER) - name.clear(); + name.clean(); return NULL; } @@ -1468,24 +1475,24 @@ Headers[id].stat.aliveCount++; - debugs(55, 9, "parsed HttpHeaderEntry: '" << name << ": " << value << "'"); + debugs(55, 9, "parsed HttpHeaderEntry: '" << name.buf() << ": " << value.buf() << "'"); - return new HttpHeaderEntry(id, name.c_str(), value.c_str()); + return new HttpHeaderEntry(id, name.buf(), value.buf()); } HttpHeaderEntry * HttpHeaderEntry::clone() const { - return new HttpHeaderEntry(id, name.c_str(), value.c_str()); + return new HttpHeaderEntry(id, name.buf(), value.buf()); } void HttpHeaderEntry::packInto(Packer * p) const { assert(p); - packerAppend(p, name.c_str(), name.size()); + packerAppend(p, name.buf(), name.size()); packerAppend(p, ": ", 2); - packerAppend(p, value.c_str(), value.size()); + packerAppend(p, value.buf(), value.size()); packerAppend(p, "\r\n", 2); } @@ -1495,7 +1502,7 @@ assert_eid (id); assert (Headers[id].type == ftInt); int val = -1; - int ok = httpHeaderParseInt(value.c_str(), &val); + int ok = httpHeaderParseInt(value.buf(), &val); httpHeaderNoteParsedEntry(id, value, !ok); /* XXX: Should we check ok - ie * return ok ? -1 : value; @@ -1504,13 +1511,13 @@ } static void -httpHeaderNoteParsedEntry(http_hdr_type id, string const &context, int error) +httpHeaderNoteParsedEntry(http_hdr_type id, String const &context, int error) { Headers[id].stat.parsCount++; if (error) { Headers[id].stat.errCount++; - debugs(55, 2, "cannot parse hdr field: '" << Headers[id].name << ": " << context << "'"); + debugs(55, 2, "cannot parse hdr field: '" << Headers[id].name.buf() << ": " << context.buf() << "'"); } } @@ -1527,7 +1534,7 @@ { const int id = (int) val; const int valid_id = id >= 0 && id < HDR_ENUM_END; - const char *name = valid_id ? Headers[id].name.c_str() : "INVALID"; + const char *name = valid_id ? Headers[id].name.buf() : "INVALID"; int visible = count > 0; /* for entries with zero count, list only those that belong to current type of message */ @@ -1605,7 +1612,7 @@ for (ht = (http_hdr_type)0; ht < HDR_ENUM_END; ++ht) { HttpHeaderFieldInfo *f = Headers + ht; storeAppendPrintf(e, "%2d\t %-20s\t %5d\t %6.3f\t %6.3f\n", - f->id, f->name.c_str(), f->stat.aliveCount, + f->id, f->name.buf(), f->stat.aliveCount, xpercent(f->stat.errCount, f->stat.parsCount), xpercent(f->stat.repCount, f->stat.seenCount)); } @@ -1618,15 +1625,15 @@ } http_hdr_type -httpHeaderIdByName(const char *name, unsigned int name_len, const HttpHeaderFieldInfo * info, int end) +httpHeaderIdByName(const char *name, int name_len, const HttpHeaderFieldInfo * info, int end) { int i; for (i = 0; i < end; ++i) { - if (name_len >= 0 && name_len != (unsigned int)info[i].name.size()) + if (name_len >= 0 && name_len != info[i].name.size()) continue; - if (!strncasecmp(name, info[i].name, + if (!strncasecmp(name, info[i].name.buf(), name_len < 0 ? info[i].name.size() + 1 : name_len)) return info[i].id; } @@ -1651,7 +1658,7 @@ assert(id >= 0 && id < HDR_ENUM_END); - return Headers[id].name.c_str(); + return Headers[id].name.buf(); } int @@ -1665,7 +1672,7 @@ assert(id >= 0); - string header (getStrOrList(id)); + String header (getStrOrList(id)); while (strListGetItem(&header, separator, &item, &ilen, &pos)) { if (strncmp(item, member, mlen) == 0 @@ -1689,7 +1696,7 @@ assert(name); - string header (getByName(name)); + String header (getByName(name)); while (strListGetItem(&header, separator, &item, &ilen, &pos)) { if (strncmp(item, member, mlen) == 0 @@ -1707,9 +1714,9 @@ { if (has(HDR_CONNECTION)) { /* anything that matches Connection list member will be deleted */ - string strConnection; - - (void) getList(HDR_CONNECTION, &strConnection); + String strConnection; + + (void) getList(HDR_CONNECTION, &strConnection); const HttpHeaderEntry *e; HttpHeaderPos pos = HttpHeaderInitPos; /* @@ -1723,7 +1730,7 @@ int headers_deleted = 0; while ((e = getEntry(&pos))) { - if (strListIsMember(&strConnection, e->name.c_str(), ',')) + if (strListIsMember(&strConnection, e->name.buf(), ',')) delAt(pos, headers_deleted); } if (headers_deleted) Index: squid3/src/HttpHeader.h =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHeader.h,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- squid3/src/HttpHeader.h 18 May 2007 06:41:22 -0000 1.20 +++ squid3/src/HttpHeader.h 29 May 2007 13:31:37 -0000 1.21 @@ -1,6 +1,6 @@ /* - * $Id: HttpHeader.h,v 1.20 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHeader.h,v 1.21 2007/05/29 13:31:37 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -183,8 +183,8 @@ int getInt() const; MEMPROXY_CLASS(HttpHeaderEntry); http_hdr_type id; - string name; - string value; + String name; + String value; }; MEMPROXY_CLASS_INLINE(HttpHeaderEntry) @@ -211,12 +211,12 @@ void refreshMask(); void addEntry(HttpHeaderEntry * e); void insertEntry(HttpHeaderEntry * e); - string getList(http_hdr_type id) const; - bool getList(http_hdr_type id, string *s) const; - string getStrOrList(http_hdr_type id) const; - string getByName(const char *name) const; - string getByNameListMember(const char *name, const char *member, const char separator) const; - string getListMember(http_hdr_type id, const char *member, const char separator) const; + String getList(http_hdr_type id) const; + bool getList(http_hdr_type id, String *s) const; + String getStrOrList(http_hdr_type id) const; + String getByName(const char *name) const; + String getByNameListMember(const char *name, const char *member, const char separator) const; + String getListMember(http_hdr_type id, const char *member, const char separator) const; int has(http_hdr_type id) const; void putInt(http_hdr_type id, int number); void putTime(http_hdr_type id, time_t htime); @@ -258,7 +258,7 @@ extern void httpHeaderRegisterWithCacheManager(CacheManager & manager); -extern int httpHeaderParseQuotedString (const char *start, string *val); +extern int httpHeaderParseQuotedString (const char *start, String *val); SQUIDCEXTERN int httpHeaderHasByNameListMember(const HttpHeader * hdr, const char *name, const char *member, const char separator); SQUIDCEXTERN void httpHeaderUpdate(HttpHeader * old, const HttpHeader * fresh, const HttpHeaderMask * denied_mask); int httpMsgIsPersistent(HttpVersion const &http_ver, const HttpHeader * hdr); Index: squid3/src/HttpHeaderRange.h =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHeaderRange.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- squid3/src/HttpHeaderRange.h 18 May 2007 06:41:22 -0000 1.9 +++ squid3/src/HttpHeaderRange.h 29 May 2007 13:31:37 -0000 1.10 @@ -1,6 +1,6 @@ /* - * $Id: HttpHeaderRange.h,v 1.9 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHeaderRange.h,v 1.10 2007/05/29 13:31:37 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -78,7 +78,7 @@ static size_t ParsedCount; /* Http Range Header Field */ - static HttpHdrRange *ParseCreate(const string * range_spec); + static HttpHdrRange *ParseCreate(const String * range_spec); HttpHdrRange(); HttpHdrRange(HttpHdrRange const &); @@ -96,7 +96,7 @@ int canonize(size_t); int canonize(HttpReply *rep); /* returns true if ranges are valid; inits HttpHdrRange */ - bool parseInit(const string * range_spec); + bool parseInit(const String * range_spec); void packInto(Packer * p) const; /* other */ bool isComplex() const; @@ -127,7 +127,7 @@ ssize_t debt() const; void debt(ssize_t); ssize_t debt_size; /* bytes left to send from the current spec */ - string boundary; /* boundary for multipart responses */ + String boundary; /* boundary for multipart responses */ bool valid; }; Index: squid3/src/HttpHeaderTools.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpHeaderTools.cc,v retrieving revision 1.60 retrieving revision 1.61 diff -u -r1.60 -r1.61 --- squid3/src/HttpHeaderTools.cc 18 May 2007 06:41:22 -0000 1.60 +++ squid3/src/HttpHeaderTools.cc 29 May 2007 13:31:37 -0000 1.61 @@ -1,6 +1,6 @@ /* - * $Id: HttpHeaderTools.cc,v 1.60 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpHeaderTools.cc,v 1.61 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 66 HTTP Header Tools * AUTHOR: Alex Rousskov @@ -75,7 +75,7 @@ int i; for (i = 0; i < count; ++i) - table[i].name.clear(); + table[i].name.clean(); delete [] table; } @@ -161,7 +161,7 @@ int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive) { - string list; + String list; http_hdr_type ht; int res; /* what type of header do we have? */ @@ -177,12 +177,14 @@ res = strListIsMember(&list, directive, ','); + list.clean(); + return res; } /* returns true iff "m" is a member of the list */ int -strListIsMember(const string * list, const char *m, char del) +strListIsMember(const String * list, const char *m, char del) { const char *pos = NULL; const char *item; @@ -201,7 +203,7 @@ /* returns true iff "s" is a substring of a member of the list */ int -strListIsSubstr(const string * list, const char *s, char del) +strListIsSubstr(const String * list, const char *s, char del) { assert(list && del); return list->pos(s) != 0; @@ -217,7 +219,7 @@ /* appends an item to the list */ void -strListAdd(string * str, const char *item, char del) +strListAdd(String * str, const char *item, char del) { assert(str && item); @@ -241,7 +243,7 @@ * init pos with NULL to start iteration. */ int -strListGetItem(const string * str, char del, const char **item, int *ilen, const char **pos) +strListGetItem(const String * str, char del, const char **item, int *ilen, const char **pos) { size_t len; static char delim[2][3] = { @@ -258,7 +260,7 @@ else (*pos)++; } else { - *pos = str->c_str(); + *pos = str->buf(); if (!*pos) return 0; @@ -347,10 +349,10 @@ * RC TODO: This is too looose. We should honour the BNF and exclude CTL's */ int -httpHeaderParseQuotedString (const char *start, string *val) +httpHeaderParseQuotedString (const char *start, String *val) { const char *end, *pos; - val->clear(); + val->clean(); assert (*start == '"'); pos = start + 1; Index: squid3/src/HttpReply.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpReply.cc,v retrieving revision 1.94 retrieving revision 1.95 diff -u -r1.94 -r1.95 --- squid3/src/HttpReply.cc 22 May 2007 16:37:26 -0000 1.94 +++ squid3/src/HttpReply.cc 29 May 2007 13:31:37 -0000 1.95 @@ -1,6 +1,6 @@ /* - * $Id: HttpReply.cc,v 1.94 2007/05/22 16:37:26 rousskov Exp $ + * $Id: HttpReply.cc,v 1.95 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 58 HTTP Reply (Response) * AUTHOR: Alex Rousskov @@ -105,7 +105,7 @@ // virtual function instead, but it is not clear whether virtual methods // are allowed with MEMPROXY_CLASS() and whether some cbdata void* // conversions are not going to kill virtual tables - const string pfx = protoPrefix; + const String pfx = protoPrefix; clean(); init(); protoPrefix = pfx; @@ -220,7 +220,7 @@ hdr->putStr(HDR_CONTENT_TYPE, ctype); content_type = ctype; } else - content_type.clear(); + content_type = String(); if (clen >= 0) hdr->putInt(HDR_CONTENT_LENGTH, clen); @@ -262,7 +262,7 @@ int HttpReply::validatorsMatch(HttpReply const * otherRep) const { - string one,two; + String one,two; assert (otherRep); /* Numbers first - easiest to check */ /* Content-Length */ @@ -278,7 +278,9 @@ two = otherRep->header.getStrOrList(HDR_ETAG); - if (one.empty() || two.empty() || strcasecmp (one, two)) { + if (!one.buf() || !two.buf() || strcasecmp (one.buf(), two.buf())) { + one.clean(); + two.clean(); return 0; } @@ -290,9 +292,9 @@ two = otherRep->header.getStrOrList(HDR_CONTENT_MD5); - if (one.empty() || two.empty() || strcasecmp (one, two)) { - one.clear(); - two.clear(); + if (!one.buf() || !two.buf() || strcasecmp (one.buf(), two.buf())) { + one.clean(); + two.clean(); return 0; } @@ -381,7 +383,7 @@ if (str) content_type.limitInit(str, strcspn(str, ";\t ")); else - content_type = ""; + content_type = String(); /* be sure to set expires after date and cache-control */ expires = hdrExpirationTime(); @@ -391,7 +393,7 @@ void HttpReply::hdrCacheClean() { - content_type.clear(); + content_type.clean(); if (cache_control) { httpHdrCcDestroy(cache_control); @@ -433,8 +435,8 @@ bool HttpReply::sanityCheckStartLine(MemBuf *buf, http_status *error) { - if (buf->contentSize() >= protoPrefix.size() && protoPrefix.compare(buf->content(), protoPrefix.size()) != 0) { - debugs(58, 3, "HttpReply::sanityCheckStartLine: missing protocol prefix (" << protoPrefix << ") in '" << buf->content() << "'"); + if (buf->contentSize() >= protoPrefix.size() && protoPrefix.cmp(buf->content(), protoPrefix.size()) != 0) { + debugs(58, 3, "HttpReply::sanityCheckStartLine: missing protocol prefix (" << protoPrefix.buf() << ") in '" << buf->content() << "'"); *error = HTTP_INVALID_HEADER; return false; } Index: squid3/src/HttpReply.h =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpReply.h,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- squid3/src/HttpReply.h 18 May 2007 06:41:22 -0000 1.19 +++ squid3/src/HttpReply.h 29 May 2007 13:31:37 -0000 1.20 @@ -1,6 +1,6 @@ /* - * $Id: HttpReply.h,v 1.19 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpReply.h,v 1.20 2007/05/29 13:31:37 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -77,7 +77,7 @@ time_t expires; - string content_type; + String content_type; HttpHdrSc *surrogate_control; @@ -90,7 +90,7 @@ HttpBody body; /* for small constant memory-resident text bodies only */ - string protoPrefix; // e.g., "HTTP/" + String protoPrefix; // e.g., "HTTP/" bool do_clean; Index: squid3/src/HttpRequest.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpRequest.cc,v retrieving revision 1.75 retrieving revision 1.76 diff -u -r1.75 -r1.76 --- squid3/src/HttpRequest.cc 18 May 2007 06:41:22 -0000 1.75 +++ squid3/src/HttpRequest.cc 29 May 2007 13:31:37 -0000 1.76 @@ -1,6 +1,6 @@ /* - * $Id: HttpRequest.cc,v 1.75 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpRequest.cc,v 1.76 2007/05/29 13:31:37 amosjeffries Exp $ * * DEBUG: section 73 HTTP Request * AUTHOR: Duane Wessels @@ -70,7 +70,7 @@ { method = METHOD_NONE; protocol = PROTO_NONE; - urlpath.clear(); + urlpath = NULL; login[0] = '\0'; host[0] = '\0'; auth_user_request = NULL; @@ -112,7 +112,7 @@ safe_free(vary_headers); - urlpath.clear(); + urlpath.clean(); header.clean(); @@ -126,13 +126,13 @@ range = NULL; } - tag.clear(); + tag.clean(); - extacl_user.clear(); + extacl_user.clean(); - extacl_passwd.clear(); + extacl_passwd.clean(); - extacl_log.clear(); + extacl_log.clean(); } void @@ -240,7 +240,7 @@ assert(p); /* pack request-line */ packerPrintf(p, "%s %s HTTP/1.0\r\n", - RequestMethodStr[method], urlpath.c_str()); + RequestMethodStr[method], urlpath.buf()); /* headers */ header.packInto(p); /* trailer */ @@ -272,12 +272,12 @@ * check anonymizer (aka header_access) configuration. */ int -httpRequestHdrAllowed(const HttpHeaderEntry * e, string * strConn) +httpRequestHdrAllowed(const HttpHeaderEntry * e, String * strConn) { assert(e); /* check connection header */ - if (strConn && strListIsMember(strConn, e->name.c_str(), ',')) + if (strConn && strListIsMember(strConn, e->name.buf(), ',')) return 0; return 1; @@ -351,7 +351,7 @@ return urlCanonical((HttpRequest*)this); if (urlpath.size()) - return urlpath.c_str(); + return urlpath.buf(); return "/"; } Index: squid3/src/HttpRequest.h =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpRequest.h,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- squid3/src/HttpRequest.h 18 May 2007 06:41:22 -0000 1.28 +++ squid3/src/HttpRequest.h 29 May 2007 13:31:38 -0000 1.29 @@ -1,6 +1,6 @@ /* - * $Id: HttpRequest.h,v 1.28 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpRequest.h,v 1.29 2007/05/29 13:31:38 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -40,7 +40,7 @@ #include "HttpRequestMethod.h" /* Http Request */ -extern int httpRequestHdrAllowed(const HttpHeaderEntry * e, string * strConnection); +extern int httpRequestHdrAllowed(const HttpHeaderEntry * e, String * strConnection); extern int httpRequestHdrAllowedByName(http_hdr_type id); extern void httpRequestPack(void *obj, Packer *p); @@ -84,7 +84,7 @@ u_short port; - string urlpath; + String urlpath; char *canonical; @@ -120,13 +120,13 @@ char *peer_domain; /* Configured peer forceddomain */ - string tag; /* Internal tag for this request */ + String tag; /* Internal tag for this request */ - string extacl_user; /* User name returned by extacl lookup */ + String extacl_user; /* User name returned by extacl lookup */ - string extacl_passwd; /* Password returned by extacl lookup */ + String extacl_passwd; /* Password returned by extacl lookup */ - string extacl_log; /* String to be used for access.log purposes */ + String extacl_log; /* String to be used for access.log purposes */ public: bool multipartRangeRequest() const; Index: squid3/src/HttpStatusLine.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpStatusLine.cc,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- squid3/src/HttpStatusLine.cc 18 May 2007 06:41:22 -0000 1.33 +++ squid3/src/HttpStatusLine.cc 29 May 2007 13:31:38 -0000 1.34 @@ -1,6 +1,6 @@ /* - * $Id: HttpStatusLine.cc,v 1.33 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpStatusLine.cc,v 1.34 2007/05/29 13:31:38 amosjeffries Exp $ * * DEBUG: section 57 HTTP Status-line * AUTHOR: Alex Rousskov @@ -82,7 +82,7 @@ * so NULL-termination assumed. */ int -httpStatusLineParse(HttpStatusLine * sline, const string &protoPrefix, const char *start, const char *end) +httpStatusLineParse(HttpStatusLine * sline, const String &protoPrefix, const char *start, const char *end) { assert(sline); sline->status = HTTP_INVALID_HEADER; /* Squid header parsing error */ @@ -90,7 +90,7 @@ // XXX: HttpMsg::parse() has a similar check but is using // casesensitive comparison (which is required by HTTP errata?) - if (strncasecmp(protoPrefix,start, protoPrefix.size()) != 0) + if (protoPrefix.caseCmp(start, protoPrefix.size()) != 0) return 0; start += protoPrefix.size(); Index: squid3/src/HttpStatusLine.h =================================================================== RCS file: /cvsroot/squid/squid3/src/HttpStatusLine.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/HttpStatusLine.h 18 May 2007 06:41:22 -0000 1.3 +++ squid3/src/HttpStatusLine.h 29 May 2007 13:31:38 -0000 1.4 @@ -1,6 +1,6 @@ /* - * $Id: HttpStatusLine.h,v 1.3 2007/05/18 06:41:22 amosjeffries Exp $ + * $Id: HttpStatusLine.h,v 1.4 2007/05/29 13:31:38 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -56,7 +56,7 @@ SQUIDCEXTERN const char *httpStatusLineReason(const HttpStatusLine * sline); /* parse/pack */ /* parse a 0-terminating buffer and fill internal structires; returns true on success */ -SQUIDCEXTERN int httpStatusLineParse(HttpStatusLine * sline, const string &protoPrefix, +SQUIDCEXTERN int httpStatusLineParse(HttpStatusLine * sline, const String &protoPrefix, const char *start, const char *end); /* pack fields using Packer */ SQUIDCEXTERN void httpStatusLinePackInto(const HttpStatusLine * sline, Packer * p); Index: squid3/src/Makefile.am =================================================================== RCS file: /cvsroot/squid/squid3/src/Makefile.am,v retrieving revision 1.181 retrieving revision 1.182 diff -u -r1.181 -r1.182 --- squid3/src/Makefile.am 18 May 2007 06:41:22 -0000 1.181 +++ squid3/src/Makefile.am 29 May 2007 13:31:38 -0000 1.182 @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.181 2007/05/18 06:41:22 amosjeffries Exp $ +# $Id: Makefile.am,v 1.182 2007/05/29 13:31:38 amosjeffries Exp $ # # Uncomment and customize the following to suit your needs: # @@ -556,7 +556,7 @@ $(SSL_SOURCE) \ stat.cc \ StatHist.cc \ - SqString.cc \ + String.cc \ stmem.cc \ stmem.h \ store.cc \ @@ -626,8 +626,7 @@ MemBuf.h \ Store.cci \ StoreEntryStream.h \ - SqString.cci \ - SqString.h \ + String.cci \ SquidString.h \ SquidTime.h @@ -734,7 +733,7 @@ StoreMetaUnpacker.cc \ StoreMetaURL.cc \ StoreMetaVary.cc \ - SqString.cc \ + String.cc \ time.cc \ ufsdump.cc \ url.cc \ @@ -1096,7 +1095,6 @@ globals.cc check_PROGRAMS+= \ - tests/testString \ tests/testAuth \ tests/testACLMaxUserIP \ tests/testBoilerplate \ @@ -1108,6 +1106,7 @@ tests/test_http_range \ tests/testHttpRequest \ tests/testStore \ + tests/testString \ tests/testURL \ @STORE_TESTS@ @@ -1115,7 +1114,7 @@ authenticate.cc \ ConfigParser.cc \ tests/stub_acl.cc tests/stub_cache_cf.cc \ - tests/stub_helper.cc cbdata.cc SqString.cc \ + tests/stub_helper.cc cbdata.cc String.cc \ tests/stub_store.cc HttpHeaderTools.cc HttpHeader.cc acl.cc event.cc mem.cc \ MemBuf.cc HttpHdrContRange.cc Packer.cc ACLChecklist.cc HttpHdrCc.cc HttpHdrSc.cc \ HttpHdrScTarget.cc url.cc ACLProxyAuth.cc ACLRegexData.cc ACLUserData.cc \ @@ -1133,7 +1132,7 @@ URLScheme.cc \ wordlist.cc ## acl.cc cache_cf.cc tools.cc \ -## helper.cc SqString.cc cbdata.cc HttpHeaderTools.cc store.cc cache_manager.cc \ +## helper.cc String.cc cbdata.cc HttpHeaderTools.cc store.cc cache_manager.cc \ ## HttpHeader.cc url.cc mem.cc HttpRequest.cc Packer.cc access_log.cc \ ## MemBuf.cc StatHist.cc logfile.cc @@ -1169,7 +1168,7 @@ ## HttpHdrScTarget.cc \ ## Packer.cc \ ## StatHist.cc \ -## SqString.cc \ +## String.cc \ tests_testACLMaxUserIP_SOURCES= \ acl.cc \ ACLChecklist.cc \ @@ -1194,7 +1193,7 @@ Parsing.cc \ StatHist.cc \ stmem.cc \ - SqString.cc \ + String.cc \ tests/stub_cache_cf.cc \ tests/stub_comm.cc \ tests/stub_DelayId.cc \ @@ -1242,7 +1241,7 @@ HttpRequest.cc \ HttpRequestMethod.cc \ mem.cc \ - SqString.cc \ + String.cc \ tests/testCacheManager.cc \ tests/testCacheManager.h \ tests/testMain.cc \ @@ -1406,7 +1405,7 @@ HttpRequestMethod.cc \ mem.cc \ RemovalPolicy.cc \ - SqString.cc \ + String.cc \ tests/CapturingStoreEntry.h \ tests/testEvent.cc \ tests/testEvent.h \ @@ -1558,7 +1557,7 @@ HttpRequestMethod.cc \ mem.cc \ RemovalPolicy.cc \ - SqString.cc \ + String.cc \ tests/testEventLoop.cc \ tests/testEventLoop.h \ tests/testMain.cc \ @@ -1846,7 +1845,7 @@ StoreMetaURL.cc \ StoreMetaVary.cc \ StoreSwapLogData.cc \ - SqString.cc \ + String.cc \ SwapDir.cc \ time.cc \ tools.cc \ @@ -1888,7 +1887,7 @@ HttpRequest.cc \ HttpRequestMethod.cc \ mem.cc \ - SqString.cc \ + String.cc \ tests/testHttpRequest.h \ tests/testHttpRequest.cc \ tests/testHttpRequestMethod.h \ @@ -2055,7 +2054,7 @@ SwapDir.cc \ authenticate.cc \ tests/stub_acl.cc tests/stub_cache_cf.cc \ - tests/stub_helper.cc cbdata.cc SqString.cc \ + tests/stub_helper.cc cbdata.cc String.cc \ tests/stub_comm.cc \ tests/stub_client_side_request.cc \ tests/stub_http.cc \ @@ -2108,10 +2107,11 @@ tests_testStore_LDFLAGS = $(LIBADD_DL) tests_testStore_DEPENDENCIES = $(top_builddir)/lib/libmiscutil.a \ @SQUID_CPPUNIT_LA@ + # string needs mem.cc. tests_testString_SOURCES= \ mem.cc \ - SqString.cc \ + String.cc \ tests/testMain.cc \ tests/testString.cc \ tests/testString.h \ @@ -2223,7 +2223,7 @@ HttpRequestMethod.cc \ mem.cc \ RemovalPolicy.cc \ - SqString.cc \ + String.cc \ tests/testURL.cc \ tests/testURL.h \ tests/testURLScheme.cc \ Index: squid3/src/MemObject.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/MemObject.cc,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- squid3/src/MemObject.cc 18 May 2007 06:41:23 -0000 1.27 +++ squid3/src/MemObject.cc 29 May 2007 13:31:38 -0000 1.28 @@ -1,6 +1,6 @@ /* - * $Id: MemObject.cc,v 1.27 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: MemObject.cc,v 1.28 2007/05/29 13:31:38 amosjeffries Exp $ * * DEBUG: section 19 Store Memory Primitives * AUTHOR: Robert Collins @@ -168,7 +168,7 @@ debugs(20, 1, "MemObject->nclients: " << nclients); debugs(20, 1, "MemObject->reply: " << _reply); debugs(20, 1, "MemObject->request: " << request); - debugs(20, 1, "MemObject->log_url: " << (log_url ? log_url : "(NULL)") ); + debugs(20, 1, "MemObject->log_url: " << log_url << " " << checkNullString(log_url)); } HttpReply const * Index: squid3/src/PeerDigest.h =================================================================== RCS file: /cvsroot/squid/squid3/src/PeerDigest.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- squid3/src/PeerDigest.h 18 May 2007 06:41:23 -0000 1.2 +++ squid3/src/PeerDigest.h 29 May 2007 13:31:38 -0000 1.3 @@ -1,6 +1,6 @@ /* - * $Id: PeerDigest.h,v 1.2 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: PeerDigest.h,v 1.3 2007/05/29 13:31:38 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -97,7 +97,7 @@ struct _peer *peer; /* pointer back to peer structure, argh */ CacheDigest *cd; /* actual digest structure */ - string host; /* copy of peer->host */ + String host; /* copy of peer->host */ const char *req_result; /* text status of the last request */ struct --- squid3/src/SqString.cc Tue May 29 13:53:29 2007 +++ /dev/null Tue May 29 13:53:29 2007 @@ -1,404 +0,0 @@ - -/* - * $Id: SqString.cc,v 1.7 2007/05/22 01:15:55 hno Exp $ - * - * DEBUG: section 67 String - * AUTHOR: Duane Wessels - * - * SQUID Web Proxy Cache http://www.squid-cache.org/ - * ---------------------------------------------------------- - * - * Squid is the result of efforts by numerous individuals from - * the Internet community; see the CONTRIBUTORS file for full - * details. Many organizations have provided support for Squid's - * development; see the SPONSORS file for full details. Squid is - * Copyrighted (C) 2001 by the Regents of the University of - * California; see the COPYRIGHT file for full details. Squid - * incorporates software developed and/or copyrighted by other - * sources; see the CREDITS file for full details. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. - * - */ - -#include "squid.h" -#include "SqString.h" -#include "Store.h" - -void -SqString::initBuf(size_t sz) -{ - size_t bsz; - PROF_start(StringInitBuf); - clear(); - assert(sz < 65536); - buf_ = (char *)memAllocString(sz, &bsz); - assert(bsz < 65536); - assert(bsz >= sz); - size_ = bsz; - PROF_stop(StringInitBuf); -} - -void -SqString::limitInit(const char *str, unsigned int len) -{ - PROF_start(StringLimitInit); - assert(this && str); - initBuf(len + 1); - len_ = len; - xmemcpy(buf_, str, len); - buf_[len] = '\0'; - PROF_stop(StringLimitInit); -} - -void -SqString::init(char const *str) -{ - assert(this); - - PROF_start(StringInit); - - if (str) - limitInit(str, strlen(str)); - else - clear(); - PROF_stop(StringInit); -} - -void -SqString::clear() -{ - PROF_start(StringClean); - assert(this); - - if (buf_) - memFreeString(size_, buf_); - - len_ = 0; - size_ = 0; - buf_ = NULL; - PROF_stop(StringClean); -} - -SqString::~SqString() -{ - clear(); -#if DEBUGSTRINGS - - SqStringRegistry::Instance().remove(this); -#endif -} - -SqString::SqString (char const *aString) -{ - memset(this, 0, sizeof(SqString)); - - init(aString); -#if DEBUGSTRINGS - - SqStringRegistry::Instance().add(this); -#endif -} - -SqString & -SqString::operator =(char const *aString) -{ - assert(this); - init(aString); - return *this; -} - -SqString & -SqString::operator = (SqString const &old) -{ - if (old.size()) - limitInit(old.c_str(), old.size()); - else - clear(); - - return *this; -} - -bool -SqString::operator == (SqString const &that) const -{ - return (this->compare(that) == 0); -} - -bool -SqString::operator != (SqString const &that) const -{ - return (this->compare(that) != 0); -} - -bool -SqString::operator >= (SqString const &that) const -{ - return (this->compare(that) >= 0); -} - -bool -SqString::operator <= (SqString const &that) const -{ - return (this->compare(that) <= 0); -} - -bool -SqString::operator > (SqString const &that) const -{ - return (this->compare(that) > 0); -} - -bool -SqString::operator < (SqString const &that) const -{ - return (this->compare(that) < 0); -} - -SqString::SqString (SqString const &old) -{ - memset(this, 0, sizeof(SqString)); - - operator=(old); -#if DEBUGSTRINGS - - SqStringRegistry::Instance().add(this); -#endif -} - -void -SqString::append(const char *str, int len) -{ - assert(this); - - PROF_start(StringAppend); - - if(len < 1 || str == NULL) - return; - - if ( (len_ + len +1) < size_) { - operator[](len_+len) = '\0'; - xmemcpy(buf_+len_, str, len); - len_ += len; - } else { - size_t ssz = len_ + len; - size_t bsz = len_ + len + 1; - char* tmp = (char *)memAllocString(bsz, &bsz); - assert(bsz < 65536); - assert(bsz > ssz); - - if (buf_) - xmemcpy(tmp, buf_, len_); - - if (len) - xmemcpy(tmp + len_, str, len); - - tmp[ssz] = '\0'; - - clear(); - - size_ = bsz; - len_ = ssz; - buf_ = tmp; - tmp = NULL; - } - PROF_stop(StringAppend); -} - -void -SqString::append(char const *str) -{ - if(!str) return; - append (str, strlen(str)); -} - -void -SqString::append (char chr) -{ - char myString[2]; - myString[0]=chr; - myString[1]='\0'; - append (myString, 1); -} - -void -SqString::append(SqString const &old) -{ - append (old.c_str(), old.size()); -} - -const char& -SqString::operator [](unsigned int pos) const -{ - assert(pos < size_ ); - - return buf_[pos]; -} - -char& -SqString::operator [](unsigned int pos) -{ - assert(pos < size_ ); - - return buf_[pos]; -} - -#if DEBUGSTRINGS -void -SqString::stat(StoreEntry *entry) const -{ - storeAppendPrintf(entry, "%p : %d/%d \"%s\"\n",this,len_, size_, c_str()); -} - -SqStringRegistry & -SqStringRegistry::Instance() -{ - return Instance_; -} - -template <class C> -int -ptrcmp(C const &lhs, C const &rhs) -{ - return lhs - rhs; -} - -void -SqStringRegistry::registerWithCacheManager(CacheManager & manager) -{ - manager.registerAction("strings", - "Strings in use in squid", Stat, 0, 1); -} - -void -SqStringRegistry::add(SqString const *entry) -{ - entries.insert(entry, ptrcmp); -} - -void -SqStringRegistry::remove(SqString const *entry) -{ - entries.remove(entry, ptrcmp); -} - -SqStringRegistry SqStringRegistry::Instance_; - -extern size_t memStringCount(); - -void -SqStringRegistry::Stat(StoreEntry *entry) -{ - storeAppendPrintf(entry, "%lu entries, %lu reported from MemPool\n", (unsigned long) Instance().entries.elements, (unsigned long) memStringCount()); - Instance().entries.head->walk(Stater, entry); -} - -void -SqStringRegistry::Stater(SqString const * const & nodedata, void *state) -{ - StoreEntry *entry = (StoreEntry *) state; - nodedata->stat(entry); -} - -#endif - -/* - * Similar to strtok, but has some rudimentary knowledge - * of quoting - */ -char * -strwordtok(char *buf, char **t) -{ - unsigned char *word = NULL; - unsigned char *p = (unsigned char *) buf; - unsigned char *d; - unsigned char ch; - int quoted = 0; - - if (!p) - p = (unsigned char *) *t; - - if (!p) - goto error; - - while (*p && xisspace(*p)) - p++; - - if (!*p) - goto error; - - word = d = p; - - while ((ch = *p)) { - switch (ch) { - - case '\\': - p++; - - switch (*p) { - - case 'n': - ch = '\n'; - - break; - - case 'r': - ch = '\r'; - - break; - - default: - ch = *p; - - break; - - } - - *d++ = ch; - - if (ch) - p++; - - break; - - case '"': - quoted = !quoted; - - p++; - - break; - - default: - if (!quoted && xisspace(*p)) { - p++; - goto done; - } - - *d++ = *p++; - break; - } - } - -done: - *d++ = '\0'; - -error: - *t = (char *) p; - return (char *) word; -} - -#ifndef _USE_INLINE_ -#include "SqString.cci" -#endif --- squid3/src/SqString.cci Tue May 29 13:53:29 2007 +++ /dev/null Tue May 29 13:53:29 2007 @@ -1,163 +0,0 @@ - -/* - * $Id: SqString.cci,v 1.2 2007/05/19 06:49:12 amosjeffries Exp $ - * - * DEBUG: section 67 String - * AUTHOR: Duane Wessels - * - * SQUID Web Proxy Cache http://www.squid-cache.org/ - * ---------------------------------------------------------- - * - * Squid is the result of efforts by numerous individuals from - * the Internet community; see the CONTRIBUTORS file for full - * details. Many organizations have provided support for Squid's - * development; see the SPONSORS file for full details. Squid is - * Copyrighted (C) 2001 by the Regents of the University of - * California; see the COPYRIGHT file for full details. Squid - * incorporates software developed and/or copyrighted by other - * sources; see the CREDITS file for full details. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. - * - */ - -SqString::SqString() : size_(0), len_(0), buf_ (NULL) -{ -#if DEBUGSTRINGS - SqStringRegistry::Instance().add(this); -#endif -} - -void -SqString::absorb(SqString &old) -{ - clear(); - size_ = old.size_; - buf_ = old.buf_; - len_ = old.len_; - old.size_ = 0; - old.buf_ = NULL; - old.len_ = 0; -} - -int -SqString::size() const -{ - return len_; -} - -char const * -SqString::c_str() const -{ - return buf_; -} - -const char * -SqString::pos(char const *aString) const -{ - return strstr(c_str(), aString); -} - -const char * -SqString::pos(char const ch) const -{ - return strchr(c_str(), ch); -} - -const char * -SqString::rpos(char const ch) const -{ - return strrchr(c_str(), ch); -} - -bool -SqString::empty() const -{ - return (buf_ == NULL || len_ == 0); -} - -int -SqString::compare(char const *aString) const -{ - /* strcmp fails on NULLS */ - - if (size() == 0 && (aString == NULL || aString[0] == '\0')) - return 0; - - if (size() == 0) - return -1; - - if (aString == NULL || aString[0] == '\0') - return 1; - - return strcmp(c_str(), aString); -} - -int -SqString::compare(char const *aString, size_t count) const -{ - /* always the same at length 0 */ - - if (count == 0) - return 0; - - if (size() == 0 && (aString == NULL || aString[0] == '\0')) - return 0; - - if (size() == 0) - return -1; - - if (aString == NULL || aString[0] == '\0') - return 1; - - return strncmp(c_str(), aString, count); -} - -int -SqString::compare(SqString const &aString) const -{ - /* strcmp fails on NULLS */ - - if (size() == 0 && aString.size() == 0) - return 0; - - if (size() == 0) - return -1; - - if (aString.size() == 0) - return 1; - - return strcmp(c_str(), aString.c_str()); -} - -void -SqString::set (char const *loc, char const ch) -{ - operator[](loc-buf_) = ch; -} - -void -SqString::cut (size_t newLength) -{ - operator[](newLength) = '\0'; - len_ = newLength; -} - -void -SqString::cutPointer (char const *loc) -{ - operator[](loc-buf_) = '\0'; - len_ = loc-buf_; -} --- squid3/src/SqString.h Tue May 29 13:53:29 2007 +++ /dev/null Tue May 29 13:53:29 2007 @@ -1,156 +0,0 @@ - -/* - * $Id: SqString.h,v 1.3 2007/05/20 08:29:44 amosjeffries Exp $ - * - * DEBUG: section 67 String - * AUTHOR: Duane Wessels - * - * SQUID Web Proxy Cache http://www.squid-cache.org/ - * ---------------------------------------------------------- - * - * Squid is the result of efforts by numerous individuals from - * the Internet community; see the CONTRIBUTORS file for full - * details. Many organizations have provided support for Squid's - * development; see the SPONSORS file for full details. Squid is - * Copyrighted (C) 2001 by the Regents of the University of - * California; see the COPYRIGHT file for full details. Squid - * incorporates software developed and/or copyrighted by other - * sources; see the CREDITS file for full details. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. - * - */ - -#ifndef SQSTRING_H -#define SQSTRING_H - -/* forward decls */ - -class CacheManager; - -#define DEBUGSTRINGS 0 -#if DEBUGSTRINGS -#include "splay.h" - -class SqString; - -class SqStringRegistry -{ - -public: - static StringRegistry &Instance(); - - void add - (SqString const *); - - void registerWithCacheManager(CacheManager & manager); - - void remove - (SqString const *); - -private: - static OBJH Stat; - - static StringRegistry Instance_; - - static SplayNode<SqString const *>::SPLAYWALKEE Stater; - - Splay<SqString const *> entries; - - bool registered; - -}; - -class StoreEntry; -#endif - -class SqString -{ - -public: - - /* std::string API available */ - _SQUID_INLINE_ SqString(); - SqString (char const *); - SqString (SqString const &); - ~SqString(); - - SqString &operator =(char const *); - SqString &operator =(SqString const &); - bool operator ==(SqString const &) const; - bool operator !=(SqString const &) const; - bool operator >=(SqString const &) const; - bool operator <=(SqString const &) const; - bool operator >(SqString const &) const; - bool operator <(SqString const &) const; - - _SQUID_INLINE_ int size() const; - _SQUID_INLINE_ char const * c_str() const; - - const char& operator [](unsigned int) const; - char& operator [](unsigned int); - - void clear(); - - void append(char const *buf, int len); - void append(char const *buf); - void append(char const); - void append(SqString const &); - - _SQUID_INLINE_ bool empty() const; - _SQUID_INLINE_ int compare(char const *) const; - _SQUID_INLINE_ int compare(char const *, size_t count) const; - _SQUID_INLINE_ int compare(SqString const &) const; - -/* Custom Squid Operations available */ - /// Super-efficient string assignment. Moves internal content from one object to another. - /// then resets the initial pobject to empty. - _SQUID_INLINE_ void absorb(SqString &old); - _SQUID_INLINE_ const char * pos(char const *) const; - _SQUID_INLINE_ const char * pos(char const ch) const; - _SQUID_INLINE_ const char * rpos(char const ch) const; - - _SQUID_INLINE_ void set - (char const *loc, char const ch); - - _SQUID_INLINE_ void cut (size_t newLength); - - _SQUID_INLINE_ void cutPointer (char const *loc); - -#if DEBUGSTRINGS - - void stat (StoreEntry *) const; - -#endif - - void limitInit(const char *str, unsigned int len); -private: - void initBuf(size_t sz); - void init (char const *); - - /* never reference these directly! */ - unsigned short int size_; /* buffer size; 64K limit */ - - unsigned short int len_; /* current length */ - - char *buf_; -}; - -#ifdef _USE_INLINE_ -#include "SqString.cci" -#endif - -#endif /* SQSTRING_H */ - Index: squid3/src/SquidString.h =================================================================== RCS file: /cvsroot/squid/squid3/src/SquidString.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- squid3/src/SquidString.h 18 May 2007 06:41:23 -0000 1.9 +++ squid3/src/SquidString.h 29 May 2007 13:31:38 -0000 1.10 @@ -1,9 +1,9 @@ /* - * $Id: SquidString.h,v 1.9 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: SquidString.h,v 1.10 2007/05/29 13:31:38 amosjeffries Exp $ * * DEBUG: section 67 String - * AUTHOR: Duane Wessels, Amos Jeffries + * AUTHOR: Duane Wessels * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- @@ -33,68 +33,113 @@ * */ -/** - * - * To allow for easy future updates to the string handling within squid - * We adopt the std::string API as the basis for string operations. - * Then we typedef string (due to namespacing actually ::Squid::string) - * as the preferred string handling class. - * For Release 3.0 it is intended that the old String (no SquidString) - * Will be the default string type. - * For Release 3.1 it is expected that either std::string of another - * custom managed type will be defined as default. - * - * NP: checkout http://johnpanzer.com/tsc_cuj/ToolboxOfStrings.html - * for possibly better and faster strings. - * - * This has been done for several reasons: - * - * The initial String implementation was incomplete and non-standard - * std::string provides a better known API for string handling - * std::string or a derivative may be used in future within squid - * String is a defined alternative to std::string in some systems - * - * These changes: - * - move the old String class to SquidString making the - * internal definition explicit. - * - provide the well-known type of 'string' for general use - * - migrate custom functions to well-known API: - * buf() -> c_str() - * clean() -> clear() - * - remove redundant functions: - * buf(char*) -> operator=(char*) - * initBuf(char*) -> operator=(char*) - * reset(char*) -> operator=(char*) - * - make init(char*) private for use by various assignment/costructor - * - define standard string operators - * - define debugs stream operator - * - */ - #ifndef SQUID_STRING_H #define SQUID_STRING_H - /* Provide standard 'string' type */ - /* class defined by the #include file MUST present the basic std::string API */ - /* at least partially as not all operatios are used by squid. */ - /* API Ref: http://www.sgi.com/tech/stl/basic_string.html */ +/* forward decls */ + +class CacheManager; + +#define DEBUGSTRINGS 0 +#if DEBUGSTRINGS +#include "splay.h" + +class String; + +class StringRegistry +{ + +public: + static StringRegistry &Instance(); + + void add + (String const *); + + void registerWithCacheManager(CacheManager & manager); + + void remove + (String const *); + +private: + static OBJH Stat; -#include "SqString.h" -typedef SqString string; + static StringRegistry Instance_; + static SplayNode<String const *>::SPLAYWALKEE Stater; - /* Overload standard C functions using the basic string API */ + Splay<String const *> entries; -inline int strncasecmp(const string &lhs, const string &rhs, size_t len) { return strncasecmp(lhs.c_str(), rhs.c_str(), len); } -inline int strcasecmp(const string &lhs, const string &rhs) { return strcasecmp(lhs.c_str(), rhs.c_str()); } + bool registered; -inline int strncmp(const string &lhs, const string &rhs, size_t len) { return strncmp(lhs.c_str(), rhs.c_str(), len); } -inline int strcmp(const string &lhs, const string &rhs) { return strcmp(lhs.c_str(), rhs.c_str()); } +}; -inline const char * strpbrk(const string &lhs, const string &rhs) { return strpbrk(lhs.c_str(), rhs.c_str()); } +class StoreEntry; +#endif -inline const char * strstr(const string &lhs, const string &rhs) { return strstr(lhs.c_str(), rhs.c_str()); } +class String +{ -inline std::ostream& operator <<(std::ostream &os, const string &s) { os << s.c_str(); return os; } +public: + _SQUID_INLINE_ String(); + String (char const *); + String (String const &); + ~String(); + + String &operator =(char const *); + String &operator =(String const &); + bool operator ==(String const &) const; + bool operator !=(String const &) const; + + _SQUID_INLINE_ int size() const; + _SQUID_INLINE_ char const * buf() const; + void buf(char *); + void init (char const *); + void initBuf(size_t sz); + void limitInit(const char *str, int len); + void clean(); + void reset(char const *str); + void append(char const *buf, int len); + void append(char const *buf); + void append(char const); + void append (String const &); + void absorb(String &old); + _SQUID_INLINE_ const char * pos(char const *) const; + _SQUID_INLINE_ const char * pos(char const ch) const; + _SQUID_INLINE_ const char * rpos(char const ch) const; + _SQUID_INLINE_ int cmp (char const *) const; + _SQUID_INLINE_ int cmp (char const *, size_t count) const; + _SQUID_INLINE_ int cmp (String const &) const; + _SQUID_INLINE_ int caseCmp (char const *) const; + _SQUID_INLINE_ int caseCmp (char const *, size_t count) const; + + _SQUID_INLINE_ void set + (char const *loc, char const ch); + + _SQUID_INLINE_ void cut (size_t newLength); + + _SQUID_INLINE_ void cutPointer (char const *loc); + +#if DEBUGSTRINGS + + void stat (StoreEntry *) const; + +#endif + +private: + /* never reference these directly! */ + unsigned short int size_; /* buffer size; 64K limit */ + + unsigned short int len_; /* current length */ + + char *buf_; +}; + +_SQUID_INLINE_ std::ostream & operator<<(std::ostream& os, String const &aString); + +#ifdef _USE_INLINE_ +#include "String.cci" +#endif #endif /* SQUID_STRING_H */ + + Index: squid3/src/Store.h =================================================================== RCS file: /cvsroot/squid/squid3/src/Store.h,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- squid3/src/Store.h 18 May 2007 06:41:23 -0000 1.34 +++ squid3/src/Store.h 29 May 2007 13:31:38 -0000 1.35 @@ -1,6 +1,6 @@ /* - * $Id: Store.h,v 1.34 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: Store.h,v 1.35 2007/05/29 13:31:38 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -258,7 +258,7 @@ /* TODO: imeplement the async version */ virtual void get - (string const key , STOREGETCLIENT callback, void *cbdata) = 0; + (String const key , STOREGETCLIENT callback, void *cbdata) = 0; /* prepare the store for use. The store need not be usable immediately, * it should respond to readable() and writable() with true as soon @@ -282,7 +282,7 @@ virtual void unlink (StoreEntry &); /* search in the store */ - virtual StoreSearch *search(string const url, HttpRequest *) = 0; + virtual StoreSearch *search(String const url, HttpRequest *) = 0; /* pulled up from SwapDir for migration.... probably do not belong here */ virtual void reference(StoreEntry &) = 0; /* Reference this object */ Index: squid3/src/StoreHashIndex.h =================================================================== RCS file: /cvsroot/squid/squid3/src/StoreHashIndex.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/StoreHashIndex.h 18 May 2007 06:41:23 -0000 1.3 +++ squid3/src/StoreHashIndex.h 29 May 2007 13:31:38 -0000 1.4 @@ -1,6 +1,6 @@ /* - * $Id: StoreHashIndex.h,v 1.3 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: StoreHashIndex.h,v 1.4 2007/05/29 13:31:38 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -57,7 +57,7 @@ (const cache_key *); virtual void get - (string const, STOREGETCLIENT, void * cbdata); + (String const, STOREGETCLIENT, void * cbdata); virtual void init(); @@ -77,7 +77,7 @@ virtual void updateSize(size_t, int); - virtual StoreSearch *search(string const url, HttpRequest *); + virtual StoreSearch *search(String const url, HttpRequest *); private: /* migration logic */ --- /dev/null Tue May 29 13:53:29 2007 +++ squid3/src/String.cc Tue May 29 13:53:29 2007 @@ -0,0 +1,413 @@ + +/* + * $Id: String.cc,v 1.26 2007/05/29 13:31:38 amosjeffries Exp $ + * + * DEBUG: section 67 String + * AUTHOR: Duane Wessels + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#include "squid.h" +#include "Store.h" + +void +String::initBuf(size_t sz) +{ + PROF_start(StringInitBuf); + buf((char *)memAllocString(sz, &sz)); + assert(sz < 65536); + size_ = sz; + PROF_stop(StringInitBuf); +} + +void +String::init(char const *str) +{ + assert(this); + + PROF_start(StringInit); + if (str) + limitInit(str, strlen(str)); + else + clean(); + PROF_stop(StringInit); +} + +String::String (char const *aString) : size_(0), len_(0), buf_(NULL) +{ + init (aString); +#if DEBUGSTRINGS + + StringRegistry::Instance().add(this); +#endif +} + +String & +String::operator =(char const *aString) +{ + clean(); + init (aString); + return *this; +} + +String & +String::operator = (String const &old) +{ + clean (); + + if (old.len_) + limitInit (old.buf(), old.len_); + + return *this; +} + +bool +String::operator == (String const &that) const +{ + if (0 == this->cmp(that)) + return true; + + return false; +} + +bool +String::operator != (String const &that) const +{ + if (0 == this->cmp(that)) + return false; + + return true; +} + +void +String::limitInit(const char *str, int len) +{ + PROF_start(StringLimitInit); + assert(this && str); + initBuf(len + 1); + len_ = len; + xmemcpy(buf_, str, len); + buf_[len] = '\0'; + PROF_stop(StringLimitInit); +} + +String::String (String const &old) : size_(0), len_(0), buf_(NULL) +{ + init (old.buf()); +#if DEBUGSTRINGS + + StringRegistry::Instance().add(this); +#endif +} + +void +String::clean() +{ + PROF_start(StringClean); + assert(this); + + if (buf()) + memFreeString(size_, buf_); + + len_ = 0; + + size_ = 0; + + buf_ = NULL; + PROF_stop(StringClean); +} + +String::~String() +{ + clean(); +#if DEBUGSTRINGS + + StringRegistry::Instance().remove(this); +#endif +} + +void +String::reset(const char *str) +{ + PROF_start(StringReset); + clean(); + init(str); + PROF_stop(StringReset); +} + +void +String::append(const char *str, int len) +{ + assert(this); + assert(str && len >= 0); + + PROF_start(StringAppend); + if (len_ + len < size_) { + strncat(buf_, str, len); + len_ += len; + } else { + String snew; + snew.len_ = len_ + len; + snew.initBuf(snew.len_ + 1); + + if (buf_) + xmemcpy(snew.buf_, buf(), len_); + + if (len) + xmemcpy(snew.buf_ + len_, str, len); + + snew.buf_[snew.len_] = '\0'; + + absorb(snew); + } + PROF_stop(StringAppend); +} + +void +String::append(char const *str) +{ + assert (str); + append (str, strlen(str)); +} + +void +String::append (char chr) +{ + char myString[2]; + myString[0]=chr; + myString[1]='\0'; + append (myString, 1); +} + +void +String::append(String const &old) +{ + append (old.buf(), old.len_); +} + +void +String::absorb(String &old) +{ + clean(); + size_ = old.size_; + buf (old.buf_); + len_ = old.len_; + old.size_ = 0; + old.buf_ = NULL; + old.len_ = 0; +} + +void +String::buf(char *newBuf) +{ + assert (buf_ == NULL); + buf_ = newBuf; +} + +#if DEBUGSTRINGS +void +String::stat(StoreEntry *entry) const +{ + storeAppendPrintf(entry, "%p : %d/%d \"%s\"\n",this,len_, size_, buf()); +} + +StringRegistry & +StringRegistry::Instance() +{ + return Instance_; +} + +template <class C> +int +ptrcmp(C const &lhs, C const &rhs) +{ + return lhs - rhs; +} + +void +StringRegistry::registerWithCacheManager(CacheManager & manager) +{ + manager.registerAction("strings", + "Strings in use in squid", Stat, 0, 1); +} + +void + +StringRegistry::add + (String const *entry) +{ + entries.insert(entry, ptrcmp); +} + +void + +StringRegistry::remove + (String const *entry) +{ + entries.remove(entry, ptrcmp); +} + +StringRegistry StringRegistry::Instance_; + +extern size_t memStringCount(); + +void +StringRegistry::Stat(StoreEntry *entry) +{ + storeAppendPrintf(entry, "%lu entries, %lu reported from MemPool\n", (unsigned long) Instance().entries.elements, (unsigned long) memStringCount()); + Instance().entries.head->walk(Stater, entry); +} + +void +StringRegistry::Stater(String const * const & nodedata, void *state) +{ + StoreEntry *entry = (StoreEntry *) state; + nodedata->stat(entry); +} + +#endif + +/* TODO: move onto String */ +int +stringHasWhitespace(const char *s) +{ + return strpbrk(s, w_space) != NULL; +} + +/* TODO: move onto String */ +int +stringHasCntl(const char *s) +{ + unsigned char c; + + while ((c = (unsigned char) *s++) != '\0') { + if (c <= 0x1f) + return 1; + + if (c >= 0x7f && c <= 0x9f) + return 1; + } + + return 0; +} + +/* + * Similar to strtok, but has some rudimentary knowledge + * of quoting + */ +char * +strwordtok(char *buf, char **t) +{ + unsigned char *word = NULL; + unsigned char *p = (unsigned char *) buf; + unsigned char *d; + unsigned char ch; + int quoted = 0; + + if (!p) + p = (unsigned char *) *t; + + if (!p) + goto error; + + while (*p && xisspace(*p)) + p++; + + if (!*p) + goto error; + + word = d = p; + + while ((ch = *p)) { + switch (ch) { + + case '\\': + p++; + + switch (*p) { + + case 'n': + ch = '\n'; + + break; + + case 'r': + ch = '\r'; + + break; + + default: + ch = *p; + + break; + + } + + *d++ = ch; + + if (ch) + p++; + + break; + + case '"': + quoted = !quoted; + + p++; + + break; + + default: + if (!quoted && xisspace(*p)) { + p++; + goto done; + } + + *d++ = *p++; + break; + } + } + +done: + *d++ = '\0'; + +error: + *t = (char *) p; + return (char *) word; +} + +const char * +checkNullString(const char *p) +{ + return p ? p : "(NULL)"; +} + +#ifndef _USE_INLINE_ +#include "String.cci" +#endif --- /dev/null Tue May 29 13:53:29 2007 +++ squid3/src/String.cci Tue May 29 13:53:29 2007 @@ -0,0 +1,169 @@ + +/* + * $Id: String.cci,v 1.9 2007/05/29 13:31:38 amosjeffries Exp $ + * + * DEBUG: section 67 String + * AUTHOR: Duane Wessels + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +String::String() : size_(0), len_(0), buf_ (NULL) +{ +#if DEBUGSTRINGS + StringRegistry::Instance().add(this); +#endif +} + +int +String::size() const +{ + return len_; +} + +char const * +String::buf() const +{ + return buf_; +} + +const char * +String::pos(char const *aString) const +{ + return strstr(buf(), aString); +} + +const char * +String::pos(char const ch) const +{ + return strchr(buf(), ch); +} + +const char * +String::rpos(char const ch) const +{ + return strrchr(buf(), (ch)); +} + +int +String::cmp (char const *aString) const +{ + /* strcmp fails on NULLS */ + + if (size() == 0 && (aString == NULL || aString[0] == '\0')) + return 0; + + if (size() == 0) + return -1; + + if (aString == NULL || aString[0] == '\0') + return 1; + + return strcmp(buf(), aString); +} + +int +String::cmp (char const *aString, size_t count) const +{ + /* always the same at length 0 */ + + if (count == 0) + return 0; + + if (size() == 0 && (aString == NULL || aString[0] == '\0')) + return 0; + + if (size() == 0) + return -1; + + if (aString == NULL || aString[0] == '\0') + return 1; + + return strncmp(buf(), aString, count); +} + +int +String::cmp (String const &aString) const +{ + /* strcmp fails on NULLS */ + + if (size() == 0 && aString.size() == 0) + return 0; + + if (size() == 0) + return -1; + + if (aString.size() == 0) + return 1; + + return strcmp(buf(), aString.buf()); +} + +int +String::caseCmp (char const *aString) const +{ + return strcasecmp(buf(), aString); +} + +int +String::caseCmp (char const *aString, size_t count) const +{ + return strncasecmp(buf(), aString, count); +} + +/* FIXME: this is can perform buffer overflows and underflows! */ +void +String::set (char const *loc, char const ch) +{ + buf_[loc-buf_] = ch; +} + +/* FIXME: this is can perform buffer overflows and underflows! */ +void +String::cut (size_t newLength) +{ + len_ = newLength; + buf_[newLength] = '\0'; +} + +/* FIXME: this is can perform buffer overflows and underflows! */ +void +String::cutPointer (char const *loc) +{ + len_ = loc-buf_; + buf_[len_] = '\0'; +} + +std::ostream & +operator<<(std::ostream& os, String const &aString) +{ + os << aString.buf(); + return os; +} + + Index: squid3/src/SwapDir.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/SwapDir.cc,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- squid3/src/SwapDir.cc 18 May 2007 06:41:23 -0000 1.12 +++ squid3/src/SwapDir.cc 29 May 2007 13:31:38 -0000 1.13 @@ -1,6 +1,6 @@ /* - * $Id: SwapDir.cc,v 1.12 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: SwapDir.cc,v 1.13 2007/05/29 13:31:38 amosjeffries Exp $ * * DEBUG: section 20 Swap Dir base object * AUTHOR: Robert Collins @@ -276,7 +276,7 @@ void SwapDir::get - (string const key, STOREGETCLIENT callback, void *cbdata) + (String const key, STOREGETCLIENT callback, void *cbdata) { fatal("not implemented"); } Index: squid3/src/SwapDir.h =================================================================== RCS file: /cvsroot/squid/squid3/src/SwapDir.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- squid3/src/SwapDir.h 18 May 2007 06:41:23 -0000 1.12 +++ squid3/src/SwapDir.h 29 May 2007 13:31:38 -0000 1.13 @@ -1,6 +1,6 @@ /* - * $Id: SwapDir.h,v 1.12 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: SwapDir.h,v 1.13 2007/05/29 13:31:38 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -60,7 +60,7 @@ (const cache_key *); virtual void get - (string const, STOREGETCLIENT, void * cbdata); + (String const, STOREGETCLIENT, void * cbdata); virtual void init(); @@ -74,7 +74,7 @@ virtual void sync(); /* Sync the store prior to shutdown */ - virtual StoreSearch *search(string const url, HttpRequest *); + virtual StoreSearch *search(String const url, HttpRequest *); virtual void reference(StoreEntry &); /* Reference this object */ @@ -134,13 +134,13 @@ (const cache_key *); virtual void get - (string const, STOREGETCLIENT, void * cbdata); + (String const, STOREGETCLIENT, void * cbdata); virtual size_t maxSize() const { return max_size;} virtual size_t minSize() const; virtual void stat (StoreEntry &anEntry) const; - virtual StoreSearch *search(string const url, HttpRequest *) = 0; + virtual StoreSearch *search(String const url, HttpRequest *) = 0; virtual void updateSize(size_t size, int sign); Index: squid3/src/access_log.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/access_log.cc,v retrieving revision 1.125 retrieving revision 1.126 diff -u -r1.125 -r1.126 --- squid3/src/access_log.cc 18 May 2007 06:41:23 -0000 1.125 +++ squid3/src/access_log.cc 29 May 2007 13:31:38 -0000 1.126 @@ -1,6 +1,6 @@ /* - * $Id: access_log.cc,v 1.125 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: access_log.cc,v 1.126 2007/05/29 13:31:38 amosjeffries Exp $ * * DEBUG: section 46 Access Log * AUTHOR: Duane Wessels @@ -518,7 +518,7 @@ logformat_token *fmt; static MemBuf mb; char tmp[1024]; - string sb; + String sb; mb.reset(); @@ -628,7 +628,7 @@ if (al->request) sb = al->request->header.getByName(fmt->data.header.header); - out = sb.c_str(); + out = sb.buf(); quote = 1; @@ -638,7 +638,7 @@ if (al->reply) sb = al->reply->header.getByName(fmt->data.header.header); - out = sb.c_str(); + out = sb.buf(); quote = 1; @@ -648,7 +648,7 @@ if (al->request) sb = al->request->header.getByNameListMember(fmt->data.header.header, fmt->data.header.element, fmt->data.header.separator); - out = sb.c_str(); + out = sb.buf(); quote = 1; @@ -658,7 +658,7 @@ if (al->reply) sb = al->reply->header.getByNameListMember(fmt->data.header.header, fmt->data.header.element, fmt->data.header.separator); - out = sb.c_str(); + out = sb.buf(); quote = 1; @@ -767,7 +767,7 @@ case LFT_REQUEST_URLPATH: if (al->request) { - out = al->request->urlpath.c_str(); + out = al->request->urlpath.buf(); quote = 1; } break; @@ -813,7 +813,7 @@ case LFT_TAG: if (al->request) - out = al->request->tag.c_str(); + out = al->request->tag.buf(); quote = 1; @@ -821,7 +821,7 @@ case LFT_EXT_LOG: if (al->request) - out = al->request->extacl_log.c_str(); + out = al->request->extacl_log.buf(); quote = 1; @@ -891,7 +891,7 @@ if (fmt->space) mb.append(" ", 1); - sb.clear(); + sb.clean(); if (dofree) safe_free(out); @@ -1631,8 +1631,8 @@ static void fvdbInit(void) { - via_table = hash_create((HASHCMP *) std::strcmp, 977, hash4); - forw_table = hash_create((HASHCMP *) std::strcmp, 977, hash4); + via_table = hash_create((HASHCMP *) strcmp, 977, hash4); + forw_table = hash_create((HASHCMP *) strcmp, 977, hash4); } static void @@ -1717,10 +1717,10 @@ { hashFreeItems(via_table, fvdbFreeEntry); hashFreeMemory(via_table); - via_table = hash_create((HASHCMP *) std::strcmp, 977, hash4); + via_table = hash_create((HASHCMP *) strcmp, 977, hash4); hashFreeItems(forw_table, fvdbFreeEntry); hashFreeMemory(forw_table); - forw_table = hash_create((HASHCMP *) std::strcmp, 977, hash4); + forw_table = hash_create((HASHCMP *) strcmp, 977, hash4); } #endif Index: squid3/src/cache_cf.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/cache_cf.cc,v retrieving revision 1.511 retrieving revision 1.512 diff -u -r1.511 -r1.512 --- squid3/src/cache_cf.cc 18 May 2007 06:41:23 -0000 1.511 +++ squid3/src/cache_cf.cc 29 May 2007 13:31:38 -0000 1.512 @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.cc,v 1.511 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: cache_cf.cc,v 1.512 2007/05/29 13:31:38 amosjeffries Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -2201,14 +2201,14 @@ } void -ConfigParser::ParseString(string &var) +ConfigParser::ParseString(String *var) { char *token = strtok(NULL, w_space); if (token == NULL) self_destruct(); - var = token; + var->reset(token); } static void Index: squid3/src/client_db.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/client_db.cc,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- squid3/src/client_db.cc 18 May 2007 06:41:23 -0000 1.69 +++ squid3/src/client_db.cc 29 May 2007 13:31:39 -0000 1.70 @@ -1,6 +1,6 @@ /* - * $Id: client_db.cc,v 1.69 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: client_db.cc,v 1.70 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 0 Client Database * AUTHOR: Duane Wessels @@ -80,7 +80,7 @@ if (client_table) return; - client_table = hash_create((HASHCMP *) std::strcmp, CLIENT_DB_HASH_SIZE, hash_string); + client_table = hash_create((HASHCMP *) strcmp, CLIENT_DB_HASH_SIZE, hash_string); } void Index: squid3/src/client_side.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/client_side.cc,v retrieving revision 1.755 retrieving revision 1.756 diff -u -r1.755 -r1.756 --- squid3/src/client_side.cc 18 May 2007 18:30:41 -0000 1.755 +++ squid3/src/client_side.cc 29 May 2007 13:31:39 -0000 1.756 @@ -1,6 +1,6 @@ /* - * $Id: client_side.cc,v 1.755 2007/05/18 18:30:41 wessels Exp $ + * $Id: client_side.cc,v 1.756 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 33 Client-side Routines * AUTHOR: Duane Wessels @@ -459,7 +459,7 @@ aLogEntry->http.version = request->http_ver; aLogEntry->hier = request->hier; - aLogEntry->cache.extuser = request->extacl_user.c_str(); + aLogEntry->cache.extuser = request->extacl_user.buf(); if (request->auth_user_request) { @@ -481,10 +481,10 @@ if (al.reply) { al.http.code = al.reply->sline.status; - al.http.content_type = al.reply->content_type.c_str(); + al.http.content_type = al.reply->content_type.buf(); } else if (loggingEntry() && loggingEntry()->mem_obj) { al.http.code = loggingEntry()->mem_obj->getReply()->sline.status; - al.http.content_type = loggingEntry()->mem_obj->getReply()->content_type.c_str(); + al.http.content_type = loggingEntry()->mem_obj->getReply()->content_type.buf(); } debugs(33, 9, "clientLogRequest: http.code='" << al.http.code << "'"); @@ -541,7 +541,7 @@ safe_free(uri); safe_free(log_uri); safe_free(redirect.location); - range_iter.boundary.clear(); + range_iter.boundary.clean(); HTTPMSGUNLOCK(request); if (client_stream.tail) @@ -823,15 +823,15 @@ /* put terminating boundary for multiparts */ static void -clientPackTermBound(string boundary, MemBuf * mb) +clientPackTermBound(String boundary, MemBuf * mb) { - mb->Printf("\r\n--%s--\r\n", boundary.c_str()); + mb->Printf("\r\n--%s--\r\n", boundary.buf()); debugs(33, 6, "clientPackTermBound: buf offset: " << mb->size); } /* appends a "part" HTTP header (as in a multi-part/range reply) to the buffer */ static void -clientPackRangeHdr(const HttpReply * rep, const HttpHdrRangeSpec * spec, string boundary, MemBuf * mb) +clientPackRangeHdr(const HttpReply * rep, const HttpHdrRangeSpec * spec, String boundary, MemBuf * mb) { HttpHeader hdr(hoReply); Packer p; @@ -839,9 +839,10 @@ assert(spec); /* put boundary */ - debugs(33, 5, "clientPackRangeHdr: appending boundary: " << boundary); + debugs(33, 5, "clientPackRangeHdr: appending boundary: " << + boundary.buf()); /* rfc2046 requires to _prepend_ boundary with <crlf>! */ - mb->Printf("\r\n--%s\r\n", boundary.c_str()); + mb->Printf("\r\n--%s\r\n", boundary.buf()); /* stuff the header with required entries and pack it */ @@ -1033,12 +1034,12 @@ /* generates a "unique" boundary string for multipart responses * the caller is responsible for cleaning the string */ -string +String ClientHttpRequest::rangeBoundaryStr() const { assert(this); const char *key; - string b (full_appname_string); + String b (full_appname_string); b.append (":",1); key = storeEntry()->getMD5Text(); b.append(key, strlen(key)); @@ -1150,7 +1151,7 @@ hdr->delById(HDR_CONTENT_TYPE); httpHeaderPutStrf(hdr, HDR_CONTENT_TYPE, "multipart/byteranges; boundary=\"%s\"", - http->range_iter.boundary.c_str()); + http->range_iter.boundary.buf()); /* Content-Length is not required in multipart responses * but it is always nice to have one */ actual_clen = http->mRangeCLen(); @@ -2183,11 +2184,11 @@ request->flags.tproxy = conn->port->tproxy; #endif - if (internalCheck(request->urlpath.c_str())) { + if (internalCheck(request->urlpath.buf())) { if (internalHostnameIs(request->host) && request->port == getMyPort()) { http->flags.internal = 1; - } else if (Config.onoff.global_internal_static && internalStaticCheck(request->urlpath.c_str())) { + } else if (Config.onoff.global_internal_static && internalStaticCheck(request->urlpath.buf())) { xstrncpy(request->host, internalHostname(), SQUIDHOSTNAMELEN); request->port = getMyPort(); Index: squid3/src/client_side_reply.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/client_side_reply.cc,v retrieving revision 1.128 retrieving revision 1.129 diff -u -r1.128 -r1.129 --- squid3/src/client_side_reply.cc 18 May 2007 18:30:41 -0000 1.128 +++ squid3/src/client_side_reply.cc 29 May 2007 13:31:39 -0000 1.129 @@ -1,6 +1,6 @@ /* - * $Id: client_side_reply.cc,v 1.128 2007/05/18 18:30:41 wessels Exp $ + * $Id: client_side_reply.cc,v 1.129 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 88 Client-side Reply Routines * AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c) @@ -1262,7 +1262,7 @@ int headers_deleted = 0; while ((e = hdr->getEntry(&pos))) { if (e->id == HDR_WWW_AUTHENTICATE || e->id == HDR_PROXY_AUTHENTICATE) { - const char *value = e->value.c_str(); + const char *value = e->value.buf(); if ((strncasecmp(value, "NTLM", 4) == 0 && (value[4] == '\0' || value[4] == ' ')) @@ -1314,7 +1314,7 @@ /* Append VIA */ { LOCAL_ARRAY(char, bbuf, MAX_URL + 32); - string strVia; + String strVia; hdr->getList(HDR_VIA, &strVia); snprintf(bbuf, sizeof(bbuf), "%d.%d %s", reply->sline.version.major, @@ -1322,7 +1322,7 @@ ThisCache); strListAdd(&strVia, bbuf, ','); hdr->delById(HDR_VIA); - hdr->putStr(HDR_VIA, strVia.c_str()); + hdr->putStr(HDR_VIA, strVia.buf()); } /* Signal keep-alive if needed */ hdr->putStr(http->flags.accel ? HDR_CONNECTION : HDR_PROXY_CONNECTION, Index: squid3/src/client_side_request.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/client_side_request.cc,v retrieving revision 1.88 retrieving revision 1.89 diff -u -r1.88 -r1.89 --- squid3/src/client_side_request.cc 26 May 2007 06:38:04 -0000 1.88 +++ squid3/src/client_side_request.cc 29 May 2007 13:31:39 -0000 1.89 @@ -1,6 +1,6 @@ /* - * $Id: client_side_request.cc,v 1.88 2007/05/26 06:38:04 wessels Exp $ + * $Id: client_side_request.cc,v 1.89 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 85 Client-side Request Routines * AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c) @@ -628,10 +628,12 @@ #else if (req_hdr->has(HDR_PRAGMA)) { - string s = req_hdr->getList(HDR_PRAGMA); + String s = req_hdr->getList(HDR_PRAGMA); if (strListIsMember(&s, "no-cache", ',')) no_cache++; + + s.clean(); } if (request->cache_control) @@ -710,7 +712,7 @@ request->flags.auth = 1; if (req_hdr->has(HDR_VIA)) { - string s = req_hdr->getList(HDR_VIA); + String s = req_hdr->getList(HDR_VIA); /* * ThisCache cannot be a member of Via header, "1.0 ThisCache" can. * Note ThisCache2 has a space prepended to the hostname so we don't @@ -724,11 +726,11 @@ } #if FORW_VIA_DB - fvdbCountVia(s.c_str()); + fvdbCountVia(s.buf()); #endif - s.clear(); + s.clean(); } #if USE_USERAGENT_LOG @@ -745,9 +747,9 @@ #if FORW_VIA_DB if (req_hdr->has(HDR_X_FORWARDED_FOR)) { - string s = req_hdr->getList(HDR_X_FORWARDED_FOR); - fvdbCountForw(s.c_str()); - s.clear(); + String s = req_hdr->getList(HDR_X_FORWARDED_FOR); + fvdbCountForw(s.buf()); + s.clean(); } #endif Index: squid3/src/client_side_request.h =================================================================== RCS file: /cvsroot/squid/squid3/src/client_side_request.h,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- squid3/src/client_side_request.h 18 May 2007 06:41:23 -0000 1.29 +++ squid3/src/client_side_request.h 29 May 2007 13:31:39 -0000 1.30 @@ -1,6 +1,6 @@ /* - * $Id: client_side_request.h,v 1.29 2007/05/18 06:41:23 amosjeffries Exp $ + * $Id: client_side_request.h,v 1.30 2007/05/29 13:31:39 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -75,7 +75,7 @@ ClientHttpRequest(ClientHttpRequest const &); ClientHttpRequest& operator=(ClientHttpRequest const &); - string rangeBoundaryStr() const; + String rangeBoundaryStr() const; void freeResources(); void updateCounters(); void logRequest(); Index: squid3/src/dns_internal.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/dns_internal.cc,v retrieving revision 1.99 retrieving revision 1.100 diff -u -r1.99 -r1.100 --- squid3/src/dns_internal.cc 18 May 2007 06:41:24 -0000 1.99 +++ squid3/src/dns_internal.cc 29 May 2007 13:31:39 -0000 1.100 @@ -1,6 +1,6 @@ /* - * $Id: dns_internal.cc,v 1.99 2007/05/18 06:41:24 amosjeffries Exp $ + * $Id: dns_internal.cc,v 1.100 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 78 DNS lookups; interacts with lib/rfc1035.c * AUTHOR: Duane Wessels @@ -1238,7 +1238,7 @@ if (!init) { memDataInit(MEM_IDNS_QUERY, "idns_query", sizeof(idns_query), 0); memset(RcodeMatrix, '\0', sizeof(RcodeMatrix)); - idns_lookup_hash = hash_create((HASHCMP *) std::strcmp, 103, hash_string); + idns_lookup_hash = hash_create((HASHCMP *) strcmp, 103, hash_string); init++; } } Index: squid3/src/errorpage.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/errorpage.cc,v retrieving revision 1.226 retrieving revision 1.227 diff -u -r1.226 -r1.227 --- squid3/src/errorpage.cc 18 May 2007 06:41:24 -0000 1.226 +++ squid3/src/errorpage.cc 29 May 2007 13:31:39 -0000 1.227 @@ -1,6 +1,6 @@ /* - * $Id: errorpage.cc,v 1.226 2007/05/18 06:41:24 amosjeffries Exp $ + * $Id: errorpage.cc,v 1.227 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 4 Error Generation * AUTHOR: Duane Wessels @@ -534,7 +534,7 @@ Packer p; str.Printf("%s %s HTTP/%d.%d\n", RequestMethodStr[r->method], - r->urlpath.size() ? r->urlpath.c_str() : "/", + r->urlpath.size() ? r->urlpath.buf() : "/", r->http_ver.major, r->http_ver.minor); packerToMemInit(&p, &str); r->header.packInto(&p); @@ -739,7 +739,7 @@ Packer p; mb.Printf("%s %s HTTP/%d.%d\n", RequestMethodStr[r->method], - r->urlpath.size() ? r->urlpath.c_str() : "/", + r->urlpath.size() ? r->urlpath.buf() : "/", r->http_ver.major, r->http_ver.minor); packerToMemInit(&p, &mb); r->header.packInto(&p); Index: squid3/src/external_acl.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/external_acl.cc,v retrieving revision 1.79 retrieving revision 1.80 diff -u -r1.79 -r1.80 --- squid3/src/external_acl.cc 22 May 2007 01:16:40 -0000 1.79 +++ squid3/src/external_acl.cc 29 May 2007 13:31:39 -0000 1.80 @@ -1,6 +1,6 @@ /* - * $Id: external_acl.cc,v 1.79 2007/05/22 01:16:40 hno Exp $ + * $Id: external_acl.cc,v 1.80 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 82 External ACL * AUTHOR: Henrik Nordstrom, MARA Systems AB @@ -693,7 +693,7 @@ external_acl_cache_touch(acl->def, entry); result = entry->result; - external_acl_message = entry->message.c_str(); + external_acl_message = entry->message.buf(); debugs(82, 2, "aclMatchExternal: " << acl->def->name << " = " << result); @@ -763,7 +763,7 @@ for (format = acl_data->def->format; format; format = format->next) { const char *str = NULL; - string sb; + String sb; switch (format->type) { @@ -820,7 +820,7 @@ break; case _external_acl_format::EXT_ACL_PATH: - str = request->urlpath.c_str(); + str = request->urlpath.buf(); break; case _external_acl_format::EXT_ACL_METHOD: @@ -829,22 +829,22 @@ case _external_acl_format::EXT_ACL_HEADER: sb = request->header.getByName(format->header); - str = sb.c_str(); + str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_ID: sb = request->header.getStrOrList(format->header_id); - str = sb.c_str(); + str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_MEMBER: sb = request->header.getByNameListMember(format->header, format->member, format->separator); - str = sb.c_str(); + str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_ID_MEMBER: sb = request->header.getListMember(format->header_id, format->member, format->separator); - str = sb.c_str(); + str = sb.buf(); break; #if USE_SSL @@ -894,7 +894,7 @@ #endif case _external_acl_format::EXT_ACL_EXT_USER: - str = request->extacl_user.c_str(); + str = request->extacl_user.buf(); break; case _external_acl_format::EXT_ACL_UNKNOWN: @@ -921,7 +921,7 @@ strwordquote(&mb, str); } - sb.clear(); + sb.clean(); first = 0; } @@ -1244,8 +1244,8 @@ if (entry != NULL) { debugs(82, 4, "externalAclLookup: entry = { date=" << (long unsigned int) entry->date << ", result=" << - entry->result << ", user=" << entry->user << " tag=" << - entry->tag << " log=" << entry->log << " }"); + entry->result << ", user=" << entry->user.buf() << " tag=" << + entry->tag.buf() << " log=" << entry->log.buf() << " }"); } @@ -1278,7 +1278,7 @@ for (p = Config.externalAclHelperList; p; p = p->next) { if (!p->cache) - p->cache = hash_create((HASHCMP *) std::strcmp, hashPrime(1024), hash4); + p->cache = hash_create((HASHCMP *) strcmp, hashPrime(1024), hash4); if (!p->theHelper) p->theHelper = helperCreate(p->name); Index: squid3/src/fqdncache.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/fqdncache.cc,v retrieving revision 1.172 retrieving revision 1.173 diff -u -r1.172 -r1.173 --- squid3/src/fqdncache.cc 18 May 2007 06:41:24 -0000 1.172 +++ squid3/src/fqdncache.cc 29 May 2007 13:31:39 -0000 1.173 @@ -1,6 +1,6 @@ /* - * $Id: fqdncache.cc,v 1.172 2007/05/18 06:41:24 amosjeffries Exp $ + * $Id: fqdncache.cc,v 1.173 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 35 FQDN Cache * AUTHOR: Harvest Derived @@ -527,7 +527,7 @@ n = hashPrime(fqdncache_high / 4); - fqdn_table = hash_create((HASHCMP *) std::strcmp, n, hash4); + fqdn_table = hash_create((HASHCMP *) strcmp, n, hash4); memDataInit(MEM_FQDNCACHE_ENTRY, "fqdncache_entry", sizeof(fqdncache_entry), 0); Index: squid3/src/ftp.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ftp.cc,v retrieving revision 1.423 retrieving revision 1.424 diff -u -r1.423 -r1.424 --- squid3/src/ftp.cc 18 May 2007 06:41:24 -0000 1.423 +++ squid3/src/ftp.cc 29 May 2007 13:31:39 -0000 1.424 @@ -1,6 +1,6 @@ /* - * $Id: ftp.cc,v 1.423 2007/05/18 06:41:24 amosjeffries Exp $ + * $Id: ftp.cc,v 1.424 2007/05/29 13:31:39 amosjeffries Exp $ * * DEBUG: section 9 File Transfer Protocol (FTP) * AUTHOR: Harvest Derived @@ -126,9 +126,9 @@ int password_url; char *reply_hdr; int reply_hdr_state; - string clean_url; - string title_url; - string base_href; + String clean_url; + String title_url; + String base_href; int conn_att; int login_att; ftp_state_t state; @@ -441,9 +441,9 @@ safe_free(old_filepath); - title_url.clear(); + title_url.clean(); - base_href.clear(); + base_href.clean(); safe_free(filepath); @@ -507,7 +507,7 @@ wordlist *w; char *dirup; int i, j, k; - const char *title = title_url.c_str(); + const char *title = title_url.buf(); flags.listing_started = true; printfReplyBody("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"); printfReplyBody("<!-- HTML listing generated by Squid %s -->\n", @@ -526,7 +526,7 @@ if (flags.need_base_href) printfReplyBody("<BASE HREF=\"%s\">\n", - html_quote(base_href.c_str())); + html_quote(base_href.buf())); printfReplyBody("</HEAD><BODY>\n"); @@ -955,7 +955,7 @@ if (flags.dir_slash) { url = xstrdup("./"); } else { - const char *title = title_url.c_str(); + const char *title = title_url.buf(); int k = 6 + strcspn(&title[6], "/"); char *t; url = xstrdup(title + k); @@ -1436,11 +1436,11 @@ flags.isdir = 1; flags.root_dir = 1; flags.need_base_href = 1; /* Work around broken browsers */ - } else if (!request->urlpath.compare("/%2f/")) { + } else if (!request->urlpath.cmp("/%2f/")) { /* UNIX root directory */ flags.isdir = 1; flags.root_dir = 1; - } else if ((l >= 1) && (*(request->urlpath.c_str() + l - 1) == '/')) { + } else if ((l >= 1) && (*(request->urlpath.buf() + l - 1) == '/')) { /* Directory URL, ending in / */ flags.isdir = 1; @@ -1528,7 +1528,7 @@ checkUrlpath(); buildTitleUrl(); debugs(9, 5, "ftpStart: host=" << request->host << ", path=" << - request->urlpath << ", user=" << user << ", passwd=" << + request->urlpath.buf() << ", user=" << user << ", passwd=" << password); state = BEGIN; @@ -1953,7 +1953,7 @@ mode = 'A'; } else { t = ftpState->request->urlpath.rpos('/'); - filename = t ? t + 1 : ftpState->request->urlpath.c_str(); + filename = t ? t + 1 : ftpState->request->urlpath.buf(); mode = mimeGetTransferMode(filename); } @@ -1981,7 +1981,7 @@ debugs(9, 3, "This is ftpReadType"); if (code == 200) { - p = path = xstrdup(ftpState->request->urlpath.c_str()); + p = path = xstrdup(ftpState->request->urlpath.buf()); if (*p == '/') p++; @@ -2202,7 +2202,7 @@ if (ftpState->size == 0) { debugs(9, 2, "ftpReadSize: SIZE reported " << ftpState->ctrl.last_reply << " on " << - ftpState->title_url); + ftpState->title_url.buf()); ftpState->size = -1; } @@ -2908,7 +2908,7 @@ safe_free(ftpState->filepath); /* Build the new path (urlpath begins with /) */ - path = xstrdup(ftpState->request->urlpath.c_str()); + path = xstrdup(ftpState->request->urlpath.buf()); rfc1738_unescape(path); @@ -2959,7 +2959,7 @@ if (!ftpState->flags.isdir && /* Not a directory */ !ftpState->flags.try_slash_hack && /* Not in slash hack */ ftpState->mdtm <= 0 && ftpState->size < 0 && /* Not known as a file */ - strncasecmp(ftpState->request->urlpath, "/%2f", 4) != 0) { /* No slash encoded */ + ftpState->request->urlpath.caseCmp("/%2f", 4) != 0) { /* No slash encoded */ switch (ftpState->state) { @@ -3118,7 +3118,7 @@ { const char *mime_type = NULL; const char *mime_enc = NULL; - string urlpath = request->urlpath; + String urlpath = request->urlpath; const char *filename = NULL; const char *t = NULL; StoreEntry *e = entry; @@ -3139,7 +3139,7 @@ e->buffer(); /* released when done processing current data payload */ - filename = (t = urlpath.rpos('/')) ? t + 1 : urlpath.c_str(); + filename = (t = urlpath.rpos('/')) ? t + 1 : urlpath.buf(); if (flags.isdir) { mime_type = "text/html"; @@ -3272,7 +3272,7 @@ request->host, portbuf, "/%2f", - request->urlpath.c_str()); + request->urlpath.buf()); if ((t = strchr(buf, '?'))) *t = '\0'; Index: squid3/src/gopher.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/gopher.cc,v retrieving revision 1.208 retrieving revision 1.209 diff -u -r1.208 -r1.209 --- squid3/src/gopher.cc 23 May 2007 21:10:06 -0000 1.208 +++ squid3/src/gopher.cc 29 May 2007 13:31:40 -0000 1.209 @@ -1,6 +1,6 @@ /* - * $Id: gopher.cc,v 1.208 2007/05/23 21:10:06 hno Exp $ + * $Id: gopher.cc,v 1.209 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 10 Gopher * AUTHOR: Harvest Derived @@ -230,7 +230,7 @@ static void gopher_request_parse(const HttpRequest * req, char *type_id, char *request) { - const char *path = req->urlpath.c_str(); + const char *path = req->urlpath.buf(); if (request) request[0] = '\0'; @@ -377,7 +377,7 @@ } inbuf[len] = '\0'; - string outbuf; + String outbuf; if (!gopherState->HTML_header_added) { if (gopherState->conversion == gopher_ds::HTML_CSO_RESULT) @@ -691,12 +691,12 @@ } /* while loop */ if (outbuf.size() > 0) { - entry->append(outbuf.c_str(), outbuf.size()); + entry->append(outbuf.buf(), outbuf.size()); /* now let start sending stuff to client */ entry->flush(); } - outbuf.clear(); + outbuf.clean(); return; } Index: squid3/src/http.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/http.cc,v retrieving revision 1.522 retrieving revision 1.523 diff -u -r1.522 -r1.523 --- squid3/src/http.cc 18 May 2007 06:41:24 -0000 1.522 +++ squid3/src/http.cc 29 May 2007 13:31:40 -0000 1.523 @@ -1,6 +1,6 @@ /* - * $Id: http.cc,v 1.522 2007/05/18 06:41:24 amosjeffries Exp $ + * $Id: http.cc,v 1.523 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 11 Hypertext Transfer Protocol (HTTP) * AUTHOR: Harvest Derived @@ -68,7 +68,7 @@ static PF httpStateFree; static PF httpTimeout; static void httpMaybeRemovePublic(StoreEntry *, http_status); -static void copyOneHeaderFromClientsideRequestToUpstreamRequest(const HttpHeaderEntry *e, string strConnection, HttpRequest * request, HttpRequest * orig_request, +static void copyOneHeaderFromClientsideRequestToUpstreamRequest(const HttpHeaderEntry *e, String strConnection, HttpRequest * request, HttpRequest * orig_request, HttpHeader * hdr_out, int we_do_ranges, http_state_flags); #if ICAP_CLIENT static void icapAclCheckDoneWrapper(ICAPServiceRep::Pointer service, void *data); @@ -92,7 +92,7 @@ const char *url; if (_peer->options.originserver) - url = orig_request->urlpath.c_str(); + url = orig_request->urlpath.buf(); else url = entry->url(); @@ -430,9 +430,9 @@ /* Pragma: no-cache in _replies_ is not documented in HTTP, * but servers like "Active Imaging Webcast/2.0" sure do use it */ if (hdr->has(HDR_PRAGMA)) { - string s = hdr->getList(HDR_PRAGMA); + String s = hdr->getList(HDR_PRAGMA); const int no_cache = strListIsMember(&s, "no-cache", ','); - s.clear(); + s.clean(); if (no_cache) { if (!REFRESH_OVERRIDE(ignore_no_cache)) @@ -584,14 +584,14 @@ const char * httpMakeVaryMark(HttpRequest * request, HttpReply const * reply) { - string vary, hdr; + String vary, hdr; const char *pos = NULL; const char *item; const char *value; int ilen; - static string vstr; + static String vstr; - vstr.clear(); + vstr.clean(); vary = reply->header.getList(HDR_VARY); while (strListGetItem(&vary, ',', &item, &ilen, &pos)) { @@ -602,14 +602,14 @@ if (strcmp(name, "*") == 0) { /* Can not handle "Vary: *" withtout ETag support */ safe_free(name); - vstr.clear(); + vstr.clean(); break; } strListAdd(&vstr, name, ','); hdr = request->header.getByName(name); safe_free(name); - value = hdr.c_str(); + value = hdr.buf(); if (value) { value = rfc1738_escape_part(value); @@ -618,10 +618,10 @@ vstr.append("\"", 1); } - hdr.clear(); + hdr.clean(); } - vary.clear(); + vary.clean(); #if X_ACCELERATOR_VARY pos = NULL; @@ -634,7 +634,7 @@ strListAdd(&vstr, name, ','); hdr = request->header.getByName(name); safe_free(name); - value = hdr.c_str(); + value = hdr.buf(); if (value) { value = rfc1738_escape_part(value); @@ -643,14 +643,14 @@ vstr.append("\"", 1); } - hdr.clear(); + hdr.clean(); } - vary.clear(); + vary.clean(); #endif - debugs(11, 3, "httpMakeVaryMark: " << vstr); - return vstr.c_str(); + debugs(11, 3, "httpMakeVaryMark: " << vstr.buf()); + return vstr.buf(); } void @@ -1361,7 +1361,7 @@ LOCAL_ARRAY(char, bbuf, BBUF_SZ); const HttpHeader *hdr_in = &orig_request->header; const HttpHeaderEntry *e; - string strFwd; + String strFwd; HttpHeaderPos pos = HttpHeaderInitPos; assert (hdr_out->owner == hoRequest); /* append our IMS header */ @@ -1371,7 +1371,7 @@ bool we_do_ranges = decideIfWeDoRanges (orig_request); - string strConnection (hdr_in->getList(HDR_CONNECTION)); + String strConnection (hdr_in->getList(HDR_CONNECTION)); while ((e = hdr_in->getEntry(&pos))) copyOneHeaderFromClientsideRequestToUpstreamRequest(e, strConnection, request, orig_request, hdr_out, we_do_ranges, flags); @@ -1390,24 +1390,24 @@ /* append Via */ if (Config.onoff.via) { - string strVia; + String strVia; strVia = hdr_in->getList(HDR_VIA); snprintf(bbuf, BBUF_SZ, "%d.%d %s", orig_request->http_ver.major, orig_request->http_ver.minor, ThisCache); strListAdd(&strVia, bbuf, ','); - hdr_out->putStr(HDR_VIA, strVia.c_str()); - strVia.clear(); + hdr_out->putStr(HDR_VIA, strVia.buf()); + strVia.clean(); } #if ESI { /* Append Surrogate-Capabilities */ - string strSurrogate (hdr_in->getList(HDR_SURROGATE_CAPABILITY)); + String strSurrogate (hdr_in->getList(HDR_SURROGATE_CAPABILITY)); snprintf(bbuf, BBUF_SZ, "%s=\"Surrogate/1.0 ESI/1.0\"", Config.Accel.surrogate_id); strListAdd(&strSurrogate, bbuf, ','); - hdr_out->putStr(HDR_SURROGATE_CAPABILITY, strSurrogate.c_str()); + hdr_out->putStr(HDR_SURROGATE_CAPABILITY, strSurrogate.buf()); } #endif @@ -1419,9 +1419,9 @@ else strListAdd(&strFwd, "unknown", ','); - hdr_out->putStr(HDR_X_FORWARDED_FOR, strFwd.c_str()); + hdr_out->putStr(HDR_X_FORWARDED_FOR, strFwd.buf()); - strFwd.clear(); + strFwd.clean(); /* append Host if not there already */ if (!hdr_out->has(HDR_HOST)) { @@ -1455,7 +1455,7 @@ if (orig_request->auth_user_request) username = orig_request->auth_user_request->username(); else if (orig_request->extacl_user.size()) - username = orig_request->extacl_user.c_str(); + username = orig_request->extacl_user.buf(); snprintf(loginbuf, sizeof(loginbuf), "%s%s", username, orig_request->peer_login + 1); @@ -1464,7 +1464,7 @@ } else if (strcmp(orig_request->peer_login, "PASS") == 0) { if (orig_request->extacl_user.size() && orig_request->extacl_passwd.size()) { char loginbuf[256]; - snprintf(loginbuf, sizeof(loginbuf), "%s:%s", orig_request->extacl_user.c_str(), orig_request->extacl_passwd.c_str()); + snprintf(loginbuf, sizeof(loginbuf), "%s:%s", orig_request->extacl_user.buf(), orig_request->extacl_passwd.buf()); httpHeaderPutStrf(hdr_out, HDR_PROXY_AUTHORIZATION, "Basic %s", base64_encode(loginbuf)); } @@ -1491,7 +1491,7 @@ hdr_out->putStr(HDR_AUTHORIZATION, auth); } else if (orig_request->extacl_user.size() && orig_request->extacl_passwd.size()) { char loginbuf[256]; - snprintf(loginbuf, sizeof(loginbuf), "%s:%s", orig_request->extacl_user.c_str(), orig_request->extacl_passwd.c_str()); + snprintf(loginbuf, sizeof(loginbuf), "%s:%s", orig_request->extacl_user.buf(), orig_request->extacl_passwd.buf()); httpHeaderPutStrf(hdr_out, HDR_AUTHORIZATION, "Basic %s", base64_encode(loginbuf)); } @@ -1503,7 +1503,7 @@ if (orig_request->auth_user_request) username = orig_request->auth_user_request->username(); else if (orig_request->extacl_user.size()) - username = orig_request->extacl_user.c_str(); + username = orig_request->extacl_user.buf(); snprintf(loginbuf, sizeof(loginbuf), "%s%s", username, orig_request->peer_login + 1); @@ -1528,7 +1528,7 @@ httpHdrCcSetMaxAge(cc, getMaxAge(url)); if (request->urlpath.size()) - assert(strstr(url, request->urlpath.c_str())); + assert(strstr(url, request->urlpath.buf())); } /* Set no-cache if determined needed but not found */ @@ -1563,16 +1563,16 @@ if (Config2.onoff.mangle_request_headers) httpHdrMangleList(hdr_out, request, ROR_REQUEST); - strConnection.clear(); + strConnection.clean(); } void -copyOneHeaderFromClientsideRequestToUpstreamRequest(const HttpHeaderEntry *e, string strConnection, HttpRequest * request, HttpRequest * orig_request, HttpHeader * hdr_out, int we_do_ranges, http_state_flags flags) +copyOneHeaderFromClientsideRequestToUpstreamRequest(const HttpHeaderEntry *e, String strConnection, HttpRequest * request, HttpRequest * orig_request, HttpHeader * hdr_out, int we_do_ranges, http_state_flags flags) { - debugs(11, 5, "httpBuildRequestHeader: " << e->name << ": " << e->value); + debugs(11, 5, "httpBuildRequestHeader: " << e->name.buf() << ": " << e->value.buf()); if (!httpRequestHdrAllowed(e, &strConnection)) { - debugs(11, 2, "'" << e->name << "' header denied by anonymize_headers configuration"); + debugs(11, 2, "'" << e->name.buf() << "' header denied by anonymize_headers configuration"); return; } @@ -1731,7 +1731,7 @@ HttpVersion httpver(1, 0); mb->Printf("%s %s HTTP/%d.%d\r\n", RequestMethodStr[request->method], - request->urlpath.size() ? request->urlpath.c_str() : "/", + request->urlpath.size() ? request->urlpath.buf() : "/", httpver.major,httpver.minor); /* build and pack headers */ { Index: squid3/src/ident.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ident.cc,v retrieving revision 1.76 retrieving revision 1.77 diff -u -r1.76 -r1.77 --- squid3/src/ident.cc 18 May 2007 06:41:24 -0000 1.76 +++ squid3/src/ident.cc 29 May 2007 13:31:40 -0000 1.77 @@ -1,6 +1,6 @@ /* - * $Id: ident.cc,v 1.76 2007/05/18 06:41:24 amosjeffries Exp $ + * $Id: ident.cc,v 1.77 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 30 Ident (RFC 931) * AUTHOR: Duane Wessels @@ -270,7 +270,7 @@ void identInit(void) { - ident_hash = hash_create((HASHCMP *) std::strcmp, + ident_hash = hash_create((HASHCMP *) strcmp, hashPrime(Squid_MaxFD / 8), hash4); } Index: squid3/src/internal.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/internal.cc,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- squid3/src/internal.cc 18 May 2007 06:41:24 -0000 1.46 +++ squid3/src/internal.cc 29 May 2007 13:31:40 -0000 1.47 @@ -1,6 +1,6 @@ /* - * $Id: internal.cc,v 1.46 2007/05/18 06:41:24 amosjeffries Exp $ + * $Id: internal.cc,v 1.47 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 76 Internal Squid Object handling * AUTHOR: Duane, Alex, Henrik @@ -50,7 +50,7 @@ internalStart(HttpRequest * request, StoreEntry * entry) { ErrorState *err; - const char *upath = request->urlpath.c_str(); + const char *upath = request->urlpath.buf(); debugs(76, 3, "internalStart: " << inet_ntoa(request->client_addr) << " requesting '" << upath << "'"); if (0 == strcmp(upath, "/squid-internal-dynamic/netdb")) { Index: squid3/src/ipcache.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ipcache.cc,v retrieving revision 1.260 retrieving revision 1.261 diff -u -r1.260 -r1.261 --- squid3/src/ipcache.cc 18 May 2007 06:41:24 -0000 1.260 +++ squid3/src/ipcache.cc 29 May 2007 13:31:40 -0000 1.261 @@ -1,6 +1,6 @@ /* - * $Id: ipcache.cc,v 1.260 2007/05/18 06:41:24 amosjeffries Exp $ + * $Id: ipcache.cc,v 1.261 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 14 IP Cache * AUTHOR: Harvest Derived @@ -586,7 +586,7 @@ ipcache_low = (long) (((float) Config.ipcache.size * (float) Config.ipcache.low) / (float) 100); n = hashPrime(ipcache_high / 4); - ip_table = hash_create((HASHCMP *) std::strcmp, n, hash4); + ip_table = hash_create((HASHCMP *) strcmp, n, hash4); memDataInit(MEM_IPCACHE_ENTRY, "ipcache_entry", sizeof(ipcache_entry), 0); } Index: squid3/src/net_db.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/net_db.cc,v retrieving revision 1.195 retrieving revision 1.196 diff -u -r1.195 -r1.196 --- squid3/src/net_db.cc 18 May 2007 06:41:25 -0000 1.195 +++ squid3/src/net_db.cc 29 May 2007 13:31:40 -0000 1.196 @@ -1,6 +1,6 @@ /* - * $Id: net_db.cc,v 1.195 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: net_db.cc,v 1.196 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 38 Network Measurement Database * AUTHOR: Duane Wessels @@ -892,11 +892,11 @@ n = hashPrime(Config.Netdb.high / 4); - addr_table = hash_create((HASHCMP *) std::strcmp, n, hash_string); + addr_table = hash_create((HASHCMP *) strcmp, n, hash_string); n = hashPrime(3 * Config.Netdb.high / 4); - host_table = hash_create((HASHCMP *) std::strcmp, n, hash_string); + host_table = hash_create((HASHCMP *) strcmp, n, hash_string); eventAddIsh("netdbSaveState", netdbSaveState, NULL, 3600.0, 1); Index: squid3/src/pconn.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/pconn.cc,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- squid3/src/pconn.cc 18 May 2007 06:41:25 -0000 1.52 +++ squid3/src/pconn.cc 29 May 2007 13:31:40 -0000 1.53 @@ -1,6 +1,6 @@ /* - * $Id: pconn.cc,v 1.52 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: pconn.cc,v 1.53 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 48 Persistent Connections * AUTHOR: Duane Wessels @@ -217,7 +217,7 @@ PconnPool::PconnPool(const char *aDescr) : table(NULL), descr(aDescr) { int i; - table = hash_create((HASHCMP *) std::strcmp, 229, hash_string); + table = hash_create((HASHCMP *) strcmp, 229, hash_string); for (i = 0; i < PCONN_HIST_SZ; i++) hist[i] = 0; Index: squid3/src/peer_digest.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/peer_digest.cc,v retrieving revision 1.124 retrieving revision 1.125 diff -u -r1.124 -r1.125 --- squid3/src/peer_digest.cc 18 May 2007 06:41:25 -0000 1.124 +++ squid3/src/peer_digest.cc 29 May 2007 13:31:40 -0000 1.125 @@ -1,6 +1,6 @@ /* - * $Id: peer_digest.cc,v 1.124 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: peer_digest.cc,v 1.125 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 72 Peer Digest Routines * AUTHOR: Alex Rousskov @@ -112,7 +112,7 @@ if (pd->cd) cacheDigestDestroy(pd->cd); - pd->host.clear(); + pd->host.clean(); } CBDATA_CLASS_INIT(PeerDigest); @@ -231,7 +231,7 @@ { eventAdd("peerDigestCheck", peerDigestCheck, pd, (double) delay, 1); pd->times.next_check = squid_curtime + delay; - debugs(72, 3, "peerDigestSetCheck: will check peer " << pd->host << " in " << delay << " secs"); + debugs(72, 3, "peerDigestSetCheck: will check peer " << pd->host.buf() << " in " << delay << " secs"); } /* @@ -241,10 +241,10 @@ peerDigestNotePeerGone(PeerDigest * pd) { if (pd->flags.requested) { - debugs(72, 2, "peerDigest: peer " << pd->host << " gone, will destroy after fetch."); + debugs(72, 2, "peerDigest: peer " << pd->host.buf() << " gone, will destroy after fetch."); /* do nothing now, the fetching chain will notice and take action */ } else { - debugs(72, 2, "peerDigest: peer " << pd->host << " is gone, destroying now."); + debugs(72, 2, "peerDigest: peer " << pd->host.buf() << " is gone, destroying now."); peerDigestDestroy(pd); } } @@ -279,7 +279,7 @@ /* per-peer limit */ if (req_time - pd->times.received < PeerDigestReqMinGap) { - debugs(72, 2, "peerDigestCheck: " << pd->host << + debugs(72, 2, "peerDigestCheck: " << pd->host.buf() << ", avoiding close peer requests (" << (int) (req_time - pd->times.received) << " < " << (int) PeerDigestReqMinGap << " secs)."); @@ -289,7 +289,7 @@ /* global limit */ if (req_time - pd_last_req_time < GlobDigestReqMinGap) { - debugs(72, 2, "peerDigestCheck: " << pd->host << + debugs(72, 2, "peerDigestCheck: " << pd->host.buf() << ", avoiding close requests (" << (int) (req_time - pd_last_req_time) << " < " << (int) GlobDigestReqMinGap << " secs)."); @@ -546,7 +546,7 @@ assert(reply); assert (reply->sline.status != 0); status = reply->sline.status; - debugs(72, 3, "peerDigestFetchReply: " << pd->host << " status: " << status << + debugs(72, 3, "peerDigestFetchReply: " << pd->host.buf() << " status: " << status << ", expires: " << (long int) reply->expires << " (" << std::showpos << (int) (reply->expires - squid_curtime) << ")"); @@ -636,7 +636,7 @@ assert (fetch->entry->getReply()->sline.status != 0); if (fetch->entry->getReply()->sline.status != HTTP_OK) { - debugs(72, 1, "peerDigestSwapInHeaders: " << fetch->pd->host << + debugs(72, 1, "peerDigestSwapInHeaders: " << fetch->pd->host.buf() << " status " << fetch->entry->getReply()->sline.status << " got cached!"); @@ -764,7 +764,7 @@ #endif else - host = pd->host.c_str(); + host = pd->host.buf(); } debugs(72, 6, step_name << ": peer " << host << ", offset: " << @@ -815,7 +815,7 @@ peerDigestFetchStop(DigestFetchState * fetch, char *buf, const char *reason) { assert(reason); - debugs(72, 2, "peerDigestFetchStop: peer " << fetch->pd->host << ", reason: " << reason); + debugs(72, 2, "peerDigestFetchStop: peer " << fetch->pd->host.buf() << ", reason: " << reason); peerDigestReqFinish(fetch, buf, 1, 1, 1, reason, 0); } @@ -824,7 +824,7 @@ peerDigestFetchAbort(DigestFetchState * fetch, char *buf, const char *reason) { assert(reason); - debugs(72, 2, "peerDigestFetchAbort: peer " << fetch->pd->host << ", reason: " << reason); + debugs(72, 2, "peerDigestFetchAbort: peer " << fetch->pd->host.buf() << ", reason: " << reason); peerDigestReqFinish(fetch, buf, 1, 1, 1, reason, 1); } @@ -874,7 +874,7 @@ peerDigestPDFinish(DigestFetchState * fetch, int pcb_valid, int err) { PeerDigest *pd = fetch->pd; - const char *host = pd->host.c_str(); + const char *host = pd->host.buf(); pd->times.received = squid_curtime; pd->times.req_delay = fetch->resp_time; @@ -988,7 +988,7 @@ { StoreDigestCBlock cblock; int freed_size = 0; - const char *host = pd->host.c_str(); + const char *host = pd->host.buf(); xmemcpy(&cblock, buf, sizeof(cblock)); /* network -> host conversions */ @@ -1082,7 +1082,7 @@ const int bit_util = cacheDigestBitUtil(pd->cd); if (bit_util > 65) { - debugs(72, 0, "Warning: " << pd->host << + debugs(72, 0, "Warning: " << pd->host.buf() << " peer digest has too many bits on (" << bit_util << "%%)."); return 0; @@ -1108,7 +1108,7 @@ assert(pd); - const char *host = pd->host.c_str(); + const char *host = pd->host.buf(); storeAppendPrintf(e, "\npeer digest from %s\n", host); cacheDigestGuessStatsReport(&pd->stats.guess, e, host); Index: squid3/src/protos.h =================================================================== RCS file: /cvsroot/squid/squid3/src/protos.h,v retrieving revision 1.546 retrieving revision 1.547 diff -u -r1.546 -r1.547 --- squid3/src/protos.h 23 May 2007 21:10:07 -0000 1.546 +++ squid3/src/protos.h 29 May 2007 13:31:40 -0000 1.547 @@ -1,6 +1,6 @@ /* - * $Id: protos.h,v 1.546 2007/05/23 21:10:07 hno Exp $ + * $Id: protos.h,v 1.547 2007/05/29 13:31:40 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -222,7 +222,7 @@ SQUIDCEXTERN void httpHdrCcInitModule(void); SQUIDCEXTERN void httpHdrCcCleanModule(void); SQUIDCEXTERN HttpHdrCc *httpHdrCcCreate(void); -SQUIDCEXTERN HttpHdrCc *httpHdrCcParseCreate(const string * str); +SQUIDCEXTERN HttpHdrCc *httpHdrCcParseCreate(const String * str); SQUIDCEXTERN void httpHdrCcDestroy(HttpHdrCc * cc); SQUIDCEXTERN HttpHdrCc *httpHdrCcDup(const HttpHdrCc * cc); SQUIDCEXTERN void httpHdrCcPackInto(const HttpHdrCc * cc, Packer * p); @@ -234,14 +234,14 @@ /* Http Header Tools */ SQUIDCEXTERN HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count); SQUIDCEXTERN void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count); -SQUIDCEXTERN http_hdr_type httpHeaderIdByName(const char *name, unsigned int name_len, const HttpHeaderFieldInfo * attrs, int end); +SQUIDCEXTERN http_hdr_type httpHeaderIdByName(const char *name, int name_len, const HttpHeaderFieldInfo * attrs, int end); SQUIDCEXTERN http_hdr_type httpHeaderIdByNameDef(const char *name, int name_len); SQUIDCEXTERN const char *httpHeaderNameById(int id); SQUIDCEXTERN int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive); -SQUIDCEXTERN void strListAdd(string * str, const char *item, char del); -SQUIDCEXTERN int strListIsMember(const string * str, const char *item, char del); -SQUIDCEXTERN int strListIsSubstr(const string * list, const char *s, char del); -SQUIDCEXTERN int strListGetItem(const string * str, char del, const char **item, int *ilen, const char **pos); +SQUIDCEXTERN void strListAdd(String * str, const char *item, char del); +SQUIDCEXTERN int strListIsMember(const String * str, const char *item, char del); +SQUIDCEXTERN int strListIsSubstr(const String * list, const char *s, char del); +SQUIDCEXTERN int strListGetItem(const String * str, char del, const char **item, int *ilen, const char **pos); SQUIDCEXTERN const char *getStringPrefix(const char *str, const char *end); SQUIDCEXTERN int httpHeaderParseInt(const char *start, int *val); SQUIDCEXTERN int httpHeaderParseSize(const char *start, ssize_t * sz); Index: squid3/src/redirect.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/redirect.cc,v retrieving revision 1.119 retrieving revision 1.120 diff -u -r1.119 -r1.120 --- squid3/src/redirect.cc 18 May 2007 06:41:25 -0000 1.119 +++ squid3/src/redirect.cc 29 May 2007 13:31:40 -0000 1.120 @@ -1,6 +1,6 @@ /* - * $Id: redirect.cc,v 1.119 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: redirect.cc,v 1.120 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 61 Redirector * AUTHOR: Duane Wessels @@ -135,8 +135,8 @@ if (http->request->auth_user_request) r->client_ident = http->request->auth_user_request->username(); - else if (!http->request->extacl_user.empty()) { - r->client_ident = http->request->extacl_user.c_str(); + else if (http->request->extacl_user.buf() != NULL) { + r->client_ident = http->request->extacl_user.buf(); } if (!r->client_ident && (conn != NULL && conn->rfc931[0])) Index: squid3/src/stat.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/stat.cc,v retrieving revision 1.406 retrieving revision 1.407 diff -u -r1.406 -r1.407 --- squid3/src/stat.cc 18 May 2007 06:41:25 -0000 1.406 +++ squid3/src/stat.cc 29 May 2007 13:31:40 -0000 1.407 @@ -1,5 +1,5 @@ /* - * $Id: stat.cc,v 1.406 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: stat.cc,v 1.407 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 18 Cache Manager Statistics * AUTHOR: Harvest Derived @@ -1692,8 +1692,8 @@ if (http->request->auth_user_request) p = http->request->auth_user_request->username(); - else if (!http->request->extacl_user.empty()) { - p = http->request->extacl_user.c_str(); + else if (http->request->extacl_user.buf() != NULL) { + p = http->request->extacl_user.buf(); } if (!p && (conn != NULL && conn->rfc931[0])) Index: squid3/src/store.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/store.cc,v retrieving revision 1.614 retrieving revision 1.615 diff -u -r1.614 -r1.615 --- squid3/src/store.cc 18 May 2007 06:41:25 -0000 1.614 +++ squid3/src/store.cc 29 May 2007 13:31:40 -0000 1.615 @@ -1,6 +1,6 @@ /* - * $Id: store.cc,v 1.614 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: store.cc,v 1.615 2007/05/29 13:31:40 amosjeffries Exp $ * * DEBUG: section 20 Storage Manager * AUTHOR: Harvest Derived @@ -685,7 +685,7 @@ if (mem_obj->vary_headers && !storeGetPublic(mem_obj->url, mem_obj->method)) { /* Create "vary" base object */ - string vary; + String vary; StoreEntry *pe = storeCreateEntry(mem_obj->url, mem_obj->log_url, request->flags, request->method); HttpVersion version(1, 0); /* We are allowed to do this typecast */ @@ -693,19 +693,19 @@ rep->setHeaders(version, HTTP_OK, "Internal marker object", "x-squid-internal/vary", -1, -1, squid_curtime + 100000); vary = mem_obj->getReply()->header.getList(HDR_VARY); - if (!vary.empty()) { + if (vary.size()) { /* Again, we own this structure layout */ - rep->header.putStr(HDR_VARY, vary.c_str()); - vary.clear(); + rep->header.putStr(HDR_VARY, vary.buf()); + vary.clean(); } #if X_ACCELERATOR_VARY vary = mem_obj->getReply()->header.getList(HDR_X_ACCELERATOR_VARY); - if (!vary.empty()) { + if (vary.buf()) { /* Again, we own this structure layout */ - rep->header.putStr(HDR_X_ACCELERATOR_VARY, vary.c_str()); - vary.clear(); + rep->header.putStr(HDR_X_ACCELERATOR_VARY, vary.buf()); + vary.clean(); } #endif Index: squid3/src/store_dir.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/store_dir.cc,v retrieving revision 1.160 retrieving revision 1.161 diff -u -r1.160 -r1.161 --- squid3/src/store_dir.cc 18 May 2007 06:41:25 -0000 1.160 +++ squid3/src/store_dir.cc 29 May 2007 13:31:41 -0000 1.161 @@ -1,6 +1,6 @@ /* - * $Id: store_dir.cc,v 1.160 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: store_dir.cc,v 1.161 2007/05/29 13:31:41 amosjeffries Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -502,7 +502,7 @@ } StoreSearch * -StoreController::search(string const url, HttpRequest *request) +StoreController::search(String const url, HttpRequest *request) { /* cheat, for now you can't search the memory hot cache */ return swapDir->search(url, request); @@ -700,7 +700,7 @@ void StoreController::get - (string const key, STOREGETCLIENT callback, void *cbdata) + (String const key, STOREGETCLIENT callback, void *cbdata) { fatal("not implemented"); } @@ -775,7 +775,7 @@ void StoreHashIndex::get - (string const key, STOREGETCLIENT callback, void *cbdata) + (String const key, STOREGETCLIENT callback, void *cbdata) { fatal("not implemented"); } @@ -891,7 +891,7 @@ } StoreSearch * -StoreHashIndex::search(string const url, HttpRequest *) +StoreHashIndex::search(String const url, HttpRequest *) { if (url.size()) fatal ("Cannot search by url yet\n"); Index: squid3/src/store_log.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/store_log.cc,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- squid3/src/store_log.cc 18 May 2007 06:41:25 -0000 1.33 +++ squid3/src/store_log.cc 29 May 2007 13:31:41 -0000 1.34 @@ -1,6 +1,6 @@ /* - * $Id: store_log.cc,v 1.33 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: store_log.cc,v 1.34 2007/05/29 13:31:41 amosjeffries Exp $ * * DEBUG: section 20 Storage Manager Logging Functions * AUTHOR: Duane Wessels @@ -87,7 +87,7 @@ (int) reply->date, (int) reply->last_modified, (int) reply->expires, - !reply->content_type.empty() ? reply->content_type.c_str() : "unknown", + reply->content_type.size() ? reply->content_type.buf() : "unknown", reply->content_length, e->contentLen(), RequestMethodStr[mem->method], Index: squid3/src/structs.h =================================================================== RCS file: /cvsroot/squid/squid3/src/structs.h,v retrieving revision 1.557 retrieving revision 1.558 diff -u -r1.557 -r1.558 --- squid3/src/structs.h 26 May 2007 06:38:05 -0000 1.557 +++ squid3/src/structs.h 29 May 2007 13:31:41 -0000 1.558 @@ -1,6 +1,6 @@ /* - * $Id: structs.h,v 1.557 2007/05/26 06:38:05 wessels Exp $ + * $Id: structs.h,v 1.558 2007/05/29 13:31:41 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -843,8 +843,8 @@ class HttpHdrExtField { - string name; /* field-name from HTTP/1.1 (no column after name) */ - string value; /* field-value from HTTP/1.1 */ + String name; /* field-name from HTTP/1.1 (no column after name) */ + String value; /* field-value from HTTP/1.1 */ }; /* http cache control header field */ @@ -857,7 +857,7 @@ int max_age; int s_maxage; int max_stale; - string other; + String other; }; /* some fields can hold either time or etag specs (e.g. If-Range) */ @@ -893,7 +893,7 @@ HttpHeaderFieldInfo() : id (HDR_ACCEPT), type (ftInvalid){} http_hdr_type id; - string name; + String name; field_type type; HttpHeaderFieldStat stat; }; Index: squid3/src/url.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/url.cc,v retrieving revision 1.161 retrieving revision 1.162 diff -u -r1.161 -r1.162 --- squid3/src/url.cc 23 May 2007 21:10:07 -0000 1.161 +++ squid3/src/url.cc 29 May 2007 13:31:41 -0000 1.162 @@ -1,6 +1,6 @@ /* - * $Id: url.cc,v 1.161 2007/05/23 21:10:07 hno Exp $ + * $Id: url.cc,v 1.162 2007/05/29 13:31:41 amosjeffries Exp $ * * DEBUG: section 23 URL Parsing * AUTHOR: Duane Wessels @@ -236,7 +236,7 @@ for (t = host; *t; t++) *t = xtolower(*t); - if (strpbrk(host, w_space) != NULL) { + if (stringHasWhitespace(host)) { if (URI_WHITESPACE_STRIP == Config.uri_whitespace) { t = q = host; @@ -284,7 +284,7 @@ } #endif - if (strpbrk(urlpath, w_space) != NULL) { + if (stringHasWhitespace(urlpath)) { debugs(23, 2, "urlParse: URI has whitespace: {" << url << "}"); switch (Config.uri_whitespace) { @@ -349,7 +349,7 @@ return request->canonical; if (request->protocol == PROTO_URN) { - snprintf(urlbuf, MAX_URL, "urn:%s", request->urlpath.c_str()); + snprintf(urlbuf, MAX_URL, "urn:%s", request->urlpath.buf()); } else { switch (request->method) { @@ -369,7 +369,7 @@ *request->login ? "@" : null_string, request->host, portbuf, - request->urlpath.c_str()); + request->urlpath.buf()); break; } @@ -378,22 +378,6 @@ return (request->canonical = xstrdup(urlbuf)); } -int -stringHasCntl(const char *s) -{ - unsigned char c; - - while ((c = (unsigned char) *s++) != '\0') { - if (c <= 0x1f) - return 1; - - if (c >= 0x7f && c <= 0x9f) - return 1; - } - - return 0; -} - char * urlCanonicalClean(const HttpRequest * request) { @@ -403,7 +387,7 @@ char *t; if (request->protocol == PROTO_URN) { - snprintf(buf, MAX_URL, "urn:%s", request->urlpath.c_str()); + snprintf(buf, MAX_URL, "urn:%s", request->urlpath.buf()); } else { switch (request->method) { @@ -433,7 +417,7 @@ loginbuf, request->host, portbuf, - request->urlpath.c_str()); + request->urlpath.buf()); /* * strip arguments AFTER a question-mark */ Index: squid3/src/urn.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/urn.cc,v retrieving revision 1.106 retrieving revision 1.107 diff -u -r1.106 -r1.107 --- squid3/src/urn.cc 18 May 2007 06:41:26 -0000 1.106 +++ squid3/src/urn.cc 29 May 2007 13:31:41 -0000 1.107 @@ -1,6 +1,6 @@ /* - * $Id: urn.cc,v 1.106 2007/05/18 06:41:26 amosjeffries Exp $ + * $Id: urn.cc,v 1.107 2007/05/29 13:31:41 amosjeffries Exp $ * * DEBUG: section 52 URN Parsing * AUTHOR: Kostas Anagnostakis @@ -53,11 +53,11 @@ void *operator new (size_t byteCount); void operator delete (void *address); void start (HttpRequest *, StoreEntry *); - char *getHost (string &urlpath); + char *getHost (String &urlpath); void setUriResFromRequest(HttpRequest *); bool RequestNeedsMenu(HttpRequest *r); void updateRequestURL(HttpRequest *r, char const *newPath); - void createUriResRequest (string &uri); + void createUriResRequest (String &uri); virtual ~UrnState(); @@ -174,17 +174,17 @@ } char * -UrnState::getHost (string &urlpath) +UrnState::getHost (String &urlpath) { char * result; char const *t; if ((t = urlpath.pos(':')) != NULL) { urlpath.set(t, '\0'); - result = xstrdup(urlpath.c_str()); + result = xstrdup(urlpath.buf()); urlpath.set(t, ':'); } else { - result = xstrdup(urlpath.c_str()); + result = xstrdup(urlpath.buf()); } return result; @@ -193,7 +193,7 @@ bool UrnState::RequestNeedsMenu(HttpRequest *r) { - return strncasecmp(r->urlpath, "menu.", 5) == 0; + return strncasecmp(r->urlpath.buf(), "menu.", 5) == 0; } void @@ -205,11 +205,11 @@ } void -UrnState::createUriResRequest (string &uri) +UrnState::createUriResRequest (String &uri) { LOCAL_ARRAY(char, local_urlres, 4096); char *host = getHost (uri); - snprintf(local_urlres, 4096, "http://%s/uri-res/N2L?urn:%s", host, uri.c_str()); + snprintf(local_urlres, 4096, "http://%s/uri-res/N2L?urn:%s", host, uri.buf()); safe_free (host); safe_free (urlres); urlres = xstrdup (local_urlres); @@ -220,7 +220,7 @@ UrnState::setUriResFromRequest(HttpRequest *r) { if (RequestNeedsMenu(r)) { - updateRequestURL(r, r->urlpath.c_str() + 5); + updateRequestURL(r, r->urlpath.buf() + 5); flags.force_menu = 1; } Index: squid3/src/whois.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/whois.cc,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- squid3/src/whois.cc 18 May 2007 06:41:26 -0000 1.44 +++ squid3/src/whois.cc 29 May 2007 13:31:41 -0000 1.45 @@ -1,6 +1,6 @@ /* - * $Id: whois.cc,v 1.44 2007/05/18 06:41:26 amosjeffries Exp $ + * $Id: whois.cc,v 1.45 2007/05/29 13:31:41 amosjeffries Exp $ * * DEBUG: section 75 WHOIS protocol * AUTHOR: Duane Wessels, Kostas Anagnostakis @@ -100,7 +100,7 @@ buf = (char *)xmalloc(l); - snprintf(buf, l, "%s\r\n", p->request->urlpath.c_str() + 1); + snprintf(buf, l, "%s\r\n", p->request->urlpath.buf() + 1); comm_write(fd, buf, strlen(buf), whoisWriteComplete, p, NULL); comm_read(fd, p->buf, BUFSIZ, whoisReadReply, p); Index: squid3/src/DiskIO/AIO/AIODiskFile.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/DiskIO/AIO/AIODiskFile.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/DiskIO/AIO/AIODiskFile.cc 19 May 2007 05:03:48 -0000 1.5 +++ squid3/src/DiskIO/AIO/AIODiskFile.cc 29 May 2007 13:31:43 -0000 1.6 @@ -1,6 +1,6 @@ /* - * $Id: AIODiskFile.cc,v 1.5 2007/05/19 05:03:48 amosjeffries Exp $ + * $Id: AIODiskFile.cc,v 1.6 2007/05/29 13:31:43 amosjeffries Exp $ * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- @@ -85,10 +85,10 @@ { /* Simulate async calls */ #ifdef _SQUID_WIN32_ - fd = aio_open(path.c_str(), flags); + fd = aio_open(path.buf(), flags); #else - fd = file_open(path.c_str() , flags); + fd = file_open(path.buf() , flags); #endif ioRequestor = callback; Index: squid3/src/DiskIO/AIO/AIODiskFile.h =================================================================== RCS file: /cvsroot/squid/squid3/src/DiskIO/AIO/AIODiskFile.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/DiskIO/AIO/AIODiskFile.h 18 May 2007 06:41:27 -0000 1.3 +++ squid3/src/DiskIO/AIO/AIODiskFile.h 29 May 2007 13:31:43 -0000 1.4 @@ -1,6 +1,6 @@ /* - * $Id: AIODiskFile.h,v 1.3 2007/05/18 06:41:27 amosjeffries Exp $ + * $Id: AIODiskFile.h,v 1.4 2007/05/29 13:31:43 amosjeffries Exp $ * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- @@ -70,7 +70,7 @@ CBDATA_CLASS(AIODiskFile); void error(bool const &); int fd; - string path; + String path; AIODiskIOStrategy *strategy; RefCount<IORequestor> ioRequestor; bool closed; Index: squid3/src/ICAP/ICAPConfig.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPConfig.cc,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- squid3/src/ICAP/ICAPConfig.cc 18 May 2007 06:41:29 -0000 1.15 +++ squid3/src/ICAP/ICAPConfig.cc 29 May 2007 13:31:43 -0000 1.16 @@ -1,6 +1,6 @@ /* - * $Id: ICAPConfig.cc,v 1.15 2007/05/18 06:41:29 amosjeffries Exp $ + * $Id: ICAPConfig.cc,v 1.16 2007/05/29 13:31:43 amosjeffries Exp $ * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- @@ -48,7 +48,7 @@ ICAPConfig TheICAPConfig; ICAPServiceRep::Pointer -ICAPConfig::findService(const string& key) +ICAPConfig::findService(const String& key) { Vector<ICAPServiceRep::Pointer>::iterator iter = services.begin(); @@ -63,7 +63,7 @@ } ICAPClass * -ICAPConfig::findClass(const string& key) +ICAPConfig::findClass(const String& key) { if (!key.size()) return NULL; @@ -87,7 +87,7 @@ wordlist *service_names = NULL; wordlist *iter; - ConfigParser::ParseString(key); + ConfigParser::ParseString(&key); ConfigParser::ParseWordList(&service_names); for (iter = service_names; iter; iter = iter->next) { @@ -125,7 +125,7 @@ candidateClasses.clean(); - matchedClass.clear(); + matchedClass.clean(); acl_checklist = NULL; @@ -159,7 +159,7 @@ ICAPClass *c = *ci; ICAPServiceRep::Pointer service = findBestService(c, false); if (service != NULL) { - debugs(93, 3, "ICAPAccessCheck::check: class '" << c->key << "' has candidate service '" << service->key << "'"); + debugs(93, 3, "ICAPAccessCheck::check: class '" << c->key.buf() << "' has candidate service '" << service->key.buf() << "'"); candidateClasses += c->key; } } @@ -193,7 +193,7 @@ */ debugs(93, 3, "ICAPAccessCheck::check: NO candidates or matches found"); - matchedClass.clear(); + matchedClass.clean(); ICAPAccessCheckCallbackWrapper(1, this); @@ -207,7 +207,7 @@ ICAPAccessCheck *ac = (ICAPAccessCheck*)data; if (ac->matchedClass.size()) { - debugs(93, 5, "ICAPAccessCheckCallbackWrapper matchedClass = " << ac->matchedClass); + debugs(93, 5, "ICAPAccessCheckCallbackWrapper matchedClass = " << ac->matchedClass.buf()); } if (!answer) { @@ -241,7 +241,7 @@ debugs(93, 3, "ICAPAccessCheck::do_callback"); if (matchedClass.size()) { - debugs(93, 3, "ICAPAccessCheck::do_callback matchedClass = " << matchedClass); + debugs(93, 3, "ICAPAccessCheck::do_callback matchedClass = " << matchedClass.buf()); } void *validated_cbdata; @@ -351,8 +351,8 @@ for (VI i = services.begin(); i != services.end(); ++i) { const ICAPServiceRep::Pointer &r = *i; - storeAppendPrintf(entry, "%s %s_%s %s %d %s\n", name, r->key.c_str(), - r->methodStr(), r->vectPointStr(), r->bypass, r->uri.c_str()); + storeAppendPrintf(entry, "%s %s_%s %s %d %s\n", name, r->key.buf(), + r->methodStr(), r->vectPointStr(), r->bypass, r->uri.buf()); } }; @@ -380,7 +380,7 @@ Vector<ICAPClass*>::iterator i = classes.begin(); while (i != classes.end()) { - storeAppendPrintf(entry, "%s %s\n", name, (*i)->key.c_str()); + storeAppendPrintf(entry, "%s %s\n", name, (*i)->key.buf()); ++i; } }; @@ -388,13 +388,13 @@ void ICAPConfig::parseICAPAccess(ConfigParser &parser) { - string aKey; - ConfigParser::ParseString(aKey); + String aKey; + ConfigParser::ParseString(&aKey); ICAPClass *theClass = TheICAPConfig.findClass(aKey); if (theClass == NULL) fatalf("Did not find ICAP class '%s' referenced on line %d\n", - aKey.c_str(), config_lineno); + aKey.buf(), config_lineno); aclParseAccessLine(parser, &theClass->accessList); }; @@ -413,7 +413,7 @@ Vector<ICAPClass*>::iterator i = classes.begin(); while (i != classes.end()) { - snprintf(nom, 64, "%s %s", name, (*i)->key.c_str()); + snprintf(nom, 64, "%s %s", name, (*i)->key.buf()); dump_acl_access(entry, nom, (*i)->accessList); ++i; } Index: squid3/src/ICAP/ICAPConfig.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPConfig.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- squid3/src/ICAP/ICAPConfig.h 18 May 2007 06:41:29 -0000 1.12 +++ squid3/src/ICAP/ICAPConfig.h 29 May 2007 13:31:44 -0000 1.13 @@ -1,6 +1,6 @@ /* - * $Id: ICAPConfig.h,v 1.12 2007/05/18 06:41:29 amosjeffries Exp $ + * $Id: ICAPConfig.h,v 1.13 2007/05/29 13:31:44 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -47,7 +47,7 @@ { public: - string key; + String key; acl_access *accessList; Vector<ICAPServiceRep::Pointer> services; @@ -73,8 +73,8 @@ ICAPAccessCheckCallback *callback; void *callback_data; ACLChecklist *acl_checklist; - Vector<string> candidateClasses; - string matchedClass; + Vector<String> candidateClasses; + String matchedClass; void do_callback(); ICAPServiceRep::Pointer findBestService(ICAPClass *c, bool preferUp); @@ -115,8 +115,8 @@ void parseICAPService(void); void freeICAPService(void); void dumpICAPService(StoreEntry *, const char *); - ICAPServiceRep::Pointer findService(const string&); - ICAPClass * findClass(const string& key); + ICAPServiceRep::Pointer findService(const String&); + ICAPClass * findClass(const String& key); void parseICAPClass(void); void freeICAPClass(void); Index: squid3/src/ICAP/ICAPModXact.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPModXact.cc,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- squid3/src/ICAP/ICAPModXact.cc 18 May 2007 06:41:29 -0000 1.32 +++ squid3/src/ICAP/ICAPModXact.cc 29 May 2007 13:31:44 -0000 1.33 @@ -973,8 +973,8 @@ * XXX These should use HttpHdr interfaces instead of Printfs */ const ICAPServiceRep &s = service(); - buf.Printf("%s %s ICAP/1.0\r\n", s.methodStr(), s.uri.c_str()); - buf.Printf("Host: %s:%d\r\n", s.host.c_str(), s.port); + buf.Printf("%s %s ICAP/1.0\r\n", s.methodStr(), s.uri.buf()); + buf.Printf("Host: %s:%d\r\n", s.host.buf(), s.port); buf.Printf("Date: %s\r\n", mkrfc1123(squid_curtime)); if (!TheICAPConfig.reuse_connections) @@ -995,7 +995,7 @@ // to simplify, we could assume that request is always available - string urlPath; + String urlPath; if (request) { urlPath = request->urlpath; if (ICAP::methodRespmod == m) @@ -1091,7 +1091,7 @@ const HttpRequest *request = virgin.cause ? virgin.cause : dynamic_cast<const HttpRequest*>(virgin.header); - const string urlPath = request ? request->urlpath : ""; + const String urlPath = request ? request->urlpath : String(); size_t wantedSize; if (!service().wantsPreview(urlPath, wantedSize)) { debugs(93, 5, "ICAPModXact should not offer preview for " << urlPath); Index: squid3/src/ICAP/ICAPOptXact.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPOptXact.cc,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- squid3/src/ICAP/ICAPOptXact.cc 18 May 2007 06:41:29 -0000 1.7 +++ squid3/src/ICAP/ICAPOptXact.cc 29 May 2007 13:31:44 -0000 1.8 @@ -42,8 +42,8 @@ void ICAPOptXact::makeRequest(MemBuf &buf) { const ICAPServiceRep &s = service(); - buf.Printf("OPTIONS %s ICAP/1.0\r\n", s.uri.c_str()); - buf.Printf("Host: %s:%d\r\n", s.host.c_str(), s.port); + buf.Printf("OPTIONS %s ICAP/1.0\r\n", s.uri.buf()); + buf.Printf("Host: %s:%d\r\n", s.host.buf(), s.port); buf.append(ICAP::crlf, 2); } Index: squid3/src/ICAP/ICAPOptions.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPOptions.cc,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- squid3/src/ICAP/ICAPOptions.cc 18 May 2007 06:41:29 -0000 1.11 +++ squid3/src/ICAP/ICAPOptions.cc 29 May 2007 13:31:44 -0000 1.12 @@ -31,7 +31,7 @@ // future optimization note: this method is called by ICAP ACL code at least // twice for each HTTP message to see if the message should be ignored. For any // non-ignored HTTP message, ICAP calls to check whether a preview is needed. -ICAPOptions::TransferKind ICAPOptions::transferKind(const string &urlPath) const +ICAPOptions::TransferKind ICAPOptions::transferKind(const String &urlPath) const { if (theTransfers.preview.matches(urlPath)) return xferPreview; @@ -122,10 +122,10 @@ // TODO: HttpHeader should provide a general method for this type of conversion void ICAPOptions::cfgIntHeader(const HttpHeader *h, const char *fname, int &value) { - const string s = h->getByName(fname); + const String s = h->getByName(fname); - if (!s.empty() && xisdigit(s[0])) - value = atoi(s.c_str()); + if (s.size() && xisdigit(*s.buf())) + value = atoi(s.buf()); else value = -1; @@ -134,7 +134,7 @@ void ICAPOptions::cfgTransferList(const HttpHeader *h, TransferList &list) { - const string buf = h->getByName(list.name); + const String buf = h->getByName(list.name); bool foundStar = false; list.parse(buf, foundStar); @@ -162,7 +162,7 @@ wordlistAdd(&extensions, extension); }; -bool ICAPOptions::TransferList::matches(const string &urlPath) const { +bool ICAPOptions::TransferList::matches(const String &urlPath) const { const int urlLen = urlPath.size(); for (wordlist *e = extensions; e; e = e->next) { // optimize: store extension lengths @@ -172,8 +172,8 @@ if (eLen < urlLen) { const int eOff = urlLen - eLen; // RFC 3507 examples imply that extensions come without leading '.' - if (urlPath[eOff-1] == '.' && - strcmp(&urlPath[eOff], e->key) == 0) { + if (urlPath.buf()[eOff-1] == '.' && + strcmp(urlPath.buf() + eOff, e->key) == 0) { debugs(93,7, "ICAPOptions url " << urlPath << " matches " << name << " extension " << e->key); return true; @@ -184,7 +184,7 @@ return false; } -void ICAPOptions::TransferList::parse(const string &buf, bool &foundStar) { +void ICAPOptions::TransferList::parse(const String &buf, bool &foundStar) { foundStar = false; const char *item; Index: squid3/src/ICAP/ICAPOptions.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPOptions.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- squid3/src/ICAP/ICAPOptions.h 18 May 2007 06:41:29 -0000 1.10 +++ squid3/src/ICAP/ICAPOptions.h 29 May 2007 13:31:44 -0000 1.11 @@ -1,6 +1,6 @@ /* - * $Id: ICAPOptions.h,v 1.10 2007/05/18 06:41:29 amosjeffries Exp $ + * $Id: ICAPOptions.h,v 1.11 2007/05/29 13:31:44 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -62,18 +62,18 @@ time_t timestamp() const { return theTimestamp; }; typedef enum { xferNone, xferPreview, xferIgnore, xferComplete } TransferKind; - TransferKind transferKind(const string &urlPath) const; + TransferKind transferKind(const String &urlPath) const; public: const char *error; // human-readable information; set iff !valid() // ICAP server MUST supply this info Vector<ICAP::Method> methods; - string istag; + String istag; // ICAP server MAY supply this info. If not, Squid supplies defaults. - string service; - string serviceId; + String service; + String serviceId; int max_connections; bool allow204; int preview; @@ -86,9 +86,9 @@ TransferList(); ~TransferList(); - bool matches(const string &urlPath) const; + bool matches(const String &urlPath) const; - void parse(const string &buf, bool &foundStar); + void parse(const String &buf, bool &foundStar); void add(const char *extension); void report(int level, const char *prefix) const; Index: squid3/src/ICAP/ICAPServiceRep.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPServiceRep.cc,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- squid3/src/ICAP/ICAPServiceRep.cc 18 May 2007 06:41:29 -0000 1.13 +++ squid3/src/ICAP/ICAPServiceRep.cc 29 May 2007 13:31:44 -0000 1.14 @@ -80,24 +80,24 @@ char *service_type = NULL; - ConfigParser::ParseString(key); + ConfigParser::ParseString(&key); ConfigParser::ParseString(&service_type); ConfigParser::ParseBool(&bypass); - ConfigParser::ParseString(uri); + ConfigParser::ParseString(&uri); - debugs(3, 5, "ICAPService::parseConfigLine (line " << config_lineno << "): " << key << " " << service_type << " " << bypass); + debugs(3, 5, "ICAPService::parseConfigLine (line " << config_lineno << "): " << key.buf() << " " << service_type << " " << bypass); method = parseMethod(service_type); point = parseVectPoint(service_type); debugs(3, 5, "ICAPService::parseConfigLine (line " << config_lineno << "): service is " << methodStr() << "_" << vectPointStr()); - if (strncmp(uri, "icap://", 7) != 0) { - debugs(3, 0, "ICAPService::parseConfigLine (line " << config_lineno << "): wrong uri: " << uri); + if (uri.cmp("icap://", 7) != 0) { + debugs(3, 0, "ICAPService::parseConfigLine (line " << config_lineno << "): wrong uri: " << uri.buf()); return false; } - const char *s = &uri[7]; + const char *s = uri.buf() + 7; const char *e; @@ -217,13 +217,13 @@ return probed() && !up(); } -bool ICAPServiceRep::wantsUrl(const string &urlPath) const +bool ICAPServiceRep::wantsUrl(const String &urlPath) const { Must(hasOptions()); return theOptions->transferKind(urlPath) != ICAPOptions::xferIgnore; } -bool ICAPServiceRep::wantsPreview(const string &urlPath, size_t &wantedSize) const +bool ICAPServiceRep::wantsPreview(const String &urlPath, size_t &wantedSize) const { Must(hasOptions()); @@ -361,7 +361,7 @@ if (!theOptions->methods.empty()) { bool method_found = false; - string method_list; + String method_list; Vector <ICAP::Method>::iterator iter = theOptions->methods.begin(); while (iter != theOptions->methods.end()) { @@ -379,8 +379,8 @@ if (!method_found) { debugs(93,1, "WARNING: Squid is configured to use ICAP method " << ICAP::methodStr(method) << - " for service " << uri << - " but OPTIONS response declares the methods are " << method_list); + " for service " << uri.buf() << + " but OPTIONS response declares the methods are " << method_list.buf()); } } @@ -393,7 +393,7 @@ // TODO: If skew is negative, the option will be considered down // because of stale options. We should probably change this. debugs(93, 1, "ICAP service's clock is skewed by " << skew << - " seconds: " << uri); + " seconds: " << uri.buf()); } } Index: squid3/src/ICAP/ICAPServiceRep.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPServiceRep.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- squid3/src/ICAP/ICAPServiceRep.h 18 May 2007 06:41:30 -0000 1.8 +++ squid3/src/ICAP/ICAPServiceRep.h 29 May 2007 13:31:44 -0000 1.9 @@ -1,6 +1,6 @@ /* - * $Id: ICAPServiceRep.h,v 1.8 2007/05/18 06:41:30 amosjeffries Exp $ + * $Id: ICAPServiceRep.h,v 1.9 2007/05/29 13:31:44 amosjeffries Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -91,22 +91,22 @@ void callWhenReady(Callback *cb, void *data); // the methods below can only be called on an up() service - bool wantsUrl(const string &urlPath) const; - bool wantsPreview(const string &urlPath, size_t &wantedSize) const; + bool wantsUrl(const String &urlPath) const; + bool wantsPreview(const String &urlPath, size_t &wantedSize) const; bool allows204() const; void noteFailure(); // called by transactions to report service failure public: - string key; + String key; ICAP::Method method; ICAP::VectPoint point; - string uri; // service URI + String uri; // service URI // URI components - string host; + String host; int port; - string resource; + String resource; // XXX: use it when selecting a service and handling ICAP errors! bool bypass; Index: squid3/src/ICAP/ICAPXaction.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/ICAP/ICAPXaction.cc,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- squid3/src/ICAP/ICAPXaction.cc 22 May 2007 17:43:40 -0000 1.18 +++ squid3/src/ICAP/ICAPXaction.cc 29 May 2007 13:31:44 -0000 1.19 @@ -107,7 +107,7 @@ disableRetries(); // this will also safely drain pconn pool // TODO: check whether NULL domain is appropriate here - connection = icapPconnPool->pop(s.host.c_str(), s.port, NULL, NULL, isRetriable); + connection = icapPconnPool->pop(s.host.buf(), s.port, NULL, NULL, isRetriable); if (connection >= 0) { debugs(93,3, HERE << "reused pconn FD " << connection); connector = &ICAPXaction_noteCommConnected; // make doneAll() false @@ -123,12 +123,12 @@ disableRetries(); // we only retry pconn failures connection = comm_open(SOCK_STREAM, 0, getOutgoingAddr(NULL), 0, - COMM_NONBLOCKING, s.uri.c_str()); + COMM_NONBLOCKING, s.uri.buf()); if (connection < 0) dieOnConnectionFailure(); // throws - debugs(93,3, typeName << " opens connection to " << s.host << ":" << s.port); + debugs(93,3, typeName << " opens connection to " << s.host.buf() << ":" << s.port); commSetTimeout(connection, Config.Timeout.connect, &ICAPXaction_noteCommTimedout, this); @@ -137,7 +137,7 @@ comm_add_close_handler(connection, closer, this); connector = &ICAPXaction_noteCommConnected; - commConnectStart(connection, s.host.c_str(), s.port, connector, this); + commConnectStart(connection, s.host.buf(), s.port, connector, this); } /* @@ -171,7 +171,7 @@ if (reuseConnection) { debugs(93,3, HERE << "pushing pconn" << status()); commSetTimeout(connection, -1, NULL, NULL); - icapPconnPool->push(connection, theService->host.c_str(), theService->port, NULL, NULL); + icapPconnPool->push(connection, theService->host.buf(), theService->port, NULL, NULL); disableRetries(); } else { debugs(93,3, HERE << "closing pconn" << status()); @@ -247,7 +247,7 @@ void ICAPXaction::handleCommTimedout() { - debugs(93, 0, HERE << "ICAP FD " << connection << " timeout to " << theService->methodStr() << " " << theService->uri); + debugs(93, 0, HERE << "ICAP FD " << connection << " timeout to " << theService->methodStr() << " " << theService->uri.buf()); reuseConnection = false; MemBuf mb; mb.init(); Index: squid3/src/auth/digest/auth_digest.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/auth/digest/auth_digest.cc,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- squid3/src/auth/digest/auth_digest.cc 18 May 2007 06:41:31 -0000 1.56 +++ squid3/src/auth/digest/auth_digest.cc 29 May 2007 13:31:46 -0000 1.57 @@ -1,6 +1,6 @@ /* - * $Id: auth_digest.cc,v 1.56 2007/05/18 06:41:31 amosjeffries Exp $ + * $Id: auth_digest.cc,v 1.57 2007/05/29 13:31:46 amosjeffries Exp $ * * DEBUG: section 29 Authenticator * AUTHOR: Robert Collins @@ -204,7 +204,7 @@ digest_nonce_pool = memPoolCreate("Digest Scheme nonce's", sizeof(digest_nonce_h)); if (!digest_nonce_cache) { - digest_nonce_cache = hash_create((HASHCMP *) std::strcmp, 7921, hash_string); + digest_nonce_cache = hash_create((HASHCMP *) strcmp, 7921, hash_string); assert(digest_nonce_cache); eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, digestConfig.nonceGCInterval, 1); } @@ -1089,7 +1089,7 @@ while (xisspace(*proxy_auth)) proxy_auth++; - string temp(proxy_auth); + String temp(proxy_auth); while (strListGetItem(&temp, ',', &item, &ilen, &pos)) { if ((p = strchr(item, '=')) && (p - item < ilen)) @@ -1205,7 +1205,7 @@ } } - temp.clear(); + temp.clean(); /* now we validate the data given to us */ Index: squid3/src/auth/negotiate/auth_negotiate.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/auth/negotiate/auth_negotiate.cc,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- squid3/src/auth/negotiate/auth_negotiate.cc 18 May 2007 06:41:31 -0000 1.19 +++ squid3/src/auth/negotiate/auth_negotiate.cc 29 May 2007 13:31:46 -0000 1.20 @@ -1,6 +1,6 @@ /* - * $Id: auth_negotiate.cc,v 1.19 2007/05/18 06:41:31 amosjeffries Exp $ + * $Id: auth_negotiate.cc,v 1.20 2007/05/29 13:31:46 amosjeffries Exp $ * * DEBUG: section 29 Negotiate Authenticator * AUTHOR: Robert Collins, Henrik Nordstrom, Francesco Chemolli @@ -180,7 +180,7 @@ negotiateauthenticators = helperStatefulCreate("negotiateauthenticator"); if (!proxy_auth_cache) - proxy_auth_cache = hash_create((HASHCMP *) std::strcmp, 7921, hash_string); + proxy_auth_cache = hash_create((HASHCMP *) strcmp, 7921, hash_string); assert(proxy_auth_cache); Index: squid3/src/auth/ntlm/auth_ntlm.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/auth/ntlm/auth_ntlm.cc,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- squid3/src/auth/ntlm/auth_ntlm.cc 18 May 2007 06:41:32 -0000 1.69 +++ squid3/src/auth/ntlm/auth_ntlm.cc 29 May 2007 13:31:46 -0000 1.70 @@ -1,6 +1,6 @@ /* - * $Id: auth_ntlm.cc,v 1.69 2007/05/18 06:41:32 amosjeffries Exp $ + * $Id: auth_ntlm.cc,v 1.70 2007/05/29 13:31:46 amosjeffries Exp $ * * DEBUG: section 29 NTLM Authenticator * AUTHOR: Robert Collins, Henrik Nordstrom, Francesco Chemolli @@ -181,7 +181,7 @@ ntlmauthenticators = helperStatefulCreate("ntlmauthenticator"); if (!proxy_auth_cache) - proxy_auth_cache = hash_create((HASHCMP *) std::strcmp, 7921, hash_string); + proxy_auth_cache = hash_create((HASHCMP *) strcmp, 7921, hash_string); assert(proxy_auth_cache); Index: squid3/src/fs/coss/CossSwapDir.h =================================================================== RCS file: /cvsroot/squid/squid3/src/fs/coss/CossSwapDir.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- squid3/src/fs/coss/CossSwapDir.h 18 May 2007 06:41:32 -0000 1.7 +++ squid3/src/fs/coss/CossSwapDir.h 29 May 2007 13:31:47 -0000 1.8 @@ -36,7 +36,7 @@ virtual void create(); virtual void dump(StoreEntry &)const; ~CossSwapDir(); - virtual StoreSearch *search(string const url, HttpRequest *); + virtual StoreSearch *search(String const url, HttpRequest *); virtual void unlink (StoreEntry &); virtual void statfs (StoreEntry &)const; virtual int canStore(StoreEntry const &)const; Index: squid3/src/fs/coss/store_dir_coss.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/fs/coss/store_dir_coss.cc,v retrieving revision 1.74 retrieving revision 1.75 diff -u -r1.74 -r1.75 --- squid3/src/fs/coss/store_dir_coss.cc 18 May 2007 06:41:32 -0000 1.74 +++ squid3/src/fs/coss/store_dir_coss.cc 29 May 2007 13:31:47 -0000 1.75 @@ -1,6 +1,6 @@ /* - * $Id: store_dir_coss.cc,v 1.74 2007/05/18 06:41:32 amosjeffries Exp $ + * $Id: store_dir_coss.cc,v 1.75 2007/05/29 13:31:47 amosjeffries Exp $ * vim: set et : * * DEBUG: section 47 Store COSS Directory Routines @@ -1170,7 +1170,7 @@ } StoreSearch * -CossSwapDir::search(string const url, HttpRequest *) +CossSwapDir::search(String const url, HttpRequest *) { if (url.size()) fatal ("Cannot search by url yet\n"); @@ -1182,9 +1182,9 @@ CossSwapDir::stripePath() const { if (!stripe_path) { - string result = path; + String result = path; result.append("/stripe"); - const_cast<CossSwapDir *>(this)->stripe_path = xstrdup(result.c_str()); + const_cast<CossSwapDir *>(this)->stripe_path = xstrdup(result.buf()); } return stripe_path; Index: squid3/src/fs/null/store_null.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/fs/null/store_null.cc,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- squid3/src/fs/null/store_null.cc 18 May 2007 06:41:32 -0000 1.13 +++ squid3/src/fs/null/store_null.cc 29 May 2007 13:31:47 -0000 1.14 @@ -1,6 +1,6 @@ /* - * $Id: store_null.cc,v 1.13 2007/05/18 06:41:32 amosjeffries Exp $ + * $Id: store_null.cc,v 1.14 2007/05/29 13:31:47 amosjeffries Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -103,7 +103,7 @@ } StoreSearch * -NullSwapDir::search(string const url, HttpRequest *) +NullSwapDir::search(String const url, HttpRequest *) { if (url.size()) fatal ("Cannot search by url yet\n"); Index: squid3/src/fs/null/store_null.h =================================================================== RCS file: /cvsroot/squid/squid3/src/fs/null/store_null.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- squid3/src/fs/null/store_null.h 18 May 2007 06:41:33 -0000 1.4 +++ squid3/src/fs/null/store_null.h 29 May 2007 13:31:47 -0000 1.5 @@ -1,6 +1,6 @@ /* - * $Id: store_null.h,v 1.4 2007/05/18 06:41:33 amosjeffries Exp $ + * $Id: store_null.h,v 1.5 2007/05/29 13:31:47 amosjeffries Exp $ * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- @@ -49,7 +49,7 @@ virtual StoreIOState::Pointer openStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *); virtual void parse(int, char*); virtual void reconfigure (int, char *); - virtual StoreSearch *search(string const url, HttpRequest *); + virtual StoreSearch *search(String const url, HttpRequest *); }; class StoreSearchNull : public StoreSearch Index: squid3/src/fs/ufs/store_dir_ufs.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/fs/ufs/store_dir_ufs.cc,v retrieving revision 1.83 retrieving revision 1.84 diff -u -r1.83 -r1.84 --- squid3/src/fs/ufs/store_dir_ufs.cc 18 May 2007 06:41:33 -0000 1.83 +++ squid3/src/fs/ufs/store_dir_ufs.cc 29 May 2007 13:31:47 -0000 1.84 @@ -1,6 +1,6 @@ /* - * $Id: store_dir_ufs.cc,v 1.83 2007/05/18 06:41:33 amosjeffries Exp $ + * $Id: store_dir_ufs.cc,v 1.84 2007/05/29 13:31:47 amosjeffries Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -1348,7 +1348,7 @@ } StoreSearch * -UFSSwapDir::search(string const url, HttpRequest *request) +UFSSwapDir::search(String const url, HttpRequest *request) { if (url.size()) fatal ("Cannot search by url yet\n"); Index: squid3/src/fs/ufs/ufscommon.h =================================================================== RCS file: /cvsroot/squid/squid3/src/fs/ufs/ufscommon.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- squid3/src/fs/ufs/ufscommon.h 18 May 2007 06:41:33 -0000 1.10 +++ squid3/src/fs/ufs/ufscommon.h 29 May 2007 13:31:47 -0000 1.11 @@ -1,6 +1,6 @@ /* - * $Id: ufscommon.h,v 1.10 2007/05/18 06:41:33 amosjeffries Exp $ + * $Id: ufscommon.h,v 1.11 2007/05/29 13:31:47 amosjeffries Exp $ * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- @@ -63,7 +63,7 @@ virtual void create(); virtual void dump(StoreEntry &) const; ~UFSSwapDir(); - virtual StoreSearch *search(string const url, HttpRequest *); + virtual StoreSearch *search(String const url, HttpRequest *); virtual bool doubleCheck(StoreEntry &); virtual void unlink(StoreEntry &); virtual void statfs(StoreEntry &)const; Index: squid3/src/tests/CapturingStoreEntry.h =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/CapturingStoreEntry.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- squid3/src/tests/CapturingStoreEntry.h 18 May 2007 06:41:33 -0000 1.2 +++ squid3/src/tests/CapturingStoreEntry.h 29 May 2007 13:31:48 -0000 1.3 @@ -14,7 +14,7 @@ CapturingStoreEntry() : _buffer_calls(0), _flush_calls(0) {} - string _appended_text; + String _appended_text; int _buffer_calls; int _flush_calls; Index: squid3/src/tests/TestSwapDir.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/TestSwapDir.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- squid3/src/tests/TestSwapDir.cc 18 May 2007 06:41:33 -0000 1.4 +++ squid3/src/tests/TestSwapDir.cc 29 May 2007 13:31:48 -0000 1.5 @@ -46,7 +46,7 @@ {} StoreSearch * -TestSwapDir::search(string, HttpRequest *) +TestSwapDir::search(String, HttpRequest *) { return NULL; } Index: squid3/src/tests/TestSwapDir.h =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/TestSwapDir.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/tests/TestSwapDir.h 18 May 2007 06:41:33 -0000 1.5 +++ squid3/src/tests/TestSwapDir.h 29 May 2007 13:31:48 -0000 1.6 @@ -21,7 +21,7 @@ virtual StoreIOState::Pointer createStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *); virtual StoreIOState::Pointer openStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *); virtual void parse(int, char*); - virtual StoreSearch *search(string, HttpRequest *); + virtual StoreSearch *search(String, HttpRequest *); }; typedef RefCount<TestSwapDir> TestSwapDirPointer; Index: squid3/src/tests/testCacheManager.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testCacheManager.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/tests/testCacheManager.cc 23 May 2007 20:59:15 -0000 1.3 +++ squid3/src/tests/testCacheManager.cc 29 May 2007 13:31:48 -0000 1.4 @@ -45,8 +45,8 @@ CacheManager manager; manager.registerAction("sample", "my sample", &dummy_action, false, false); CacheManagerAction *anAction = manager.findAction("sample"); - CPPUNIT_ASSERT_EQUAL( (string)"sample", (string)anAction->action ); - CPPUNIT_ASSERT_EQUAL( (string)"my sample", (string)anAction->desc ); + CPPUNIT_ASSERT_EQUAL(String("sample"), String(anAction->action)); + CPPUNIT_ASSERT_EQUAL(String("my sample"), String(anAction->desc)); CPPUNIT_ASSERT_EQUAL(&dummy_action, anAction->handler); CPPUNIT_ASSERT_EQUAL(0, (int)anAction->flags.pw_req); CPPUNIT_ASSERT_EQUAL(0, (int)anAction->flags.atomic); Index: squid3/src/tests/testEvent.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testEvent.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/tests/testEvent.cc 23 May 2007 20:59:15 -0000 1.5 +++ squid3/src/tests/testEvent.cc 29 May 2007 13:31:48 -0000 1.6 @@ -100,12 +100,13 @@ scheduler.schedule("test event", CalledEvent::Handler, &event, 0, 0, false); scheduler.schedule("test event2", CalledEvent::Handler, &event2, 0, 0, false); scheduler.dump(anEntry); - string expect = "Last event to run: last event\n" + CPPUNIT_ASSERT_EQUAL(String( + "Last event to run: last event\n" "\n" "Operation\tNext Execution\tWeight\tCallback Valid?\n" "test event\t0.000000 seconds\t0\tN/A\n" - "test event2\t0.000000 seconds\t0\tN/A\n"; - CPPUNIT_ASSERT_EQUAL( expect, anEntry->_appended_text); + "test event2\t0.000000 seconds\t0\tN/A\n" + ), anEntry->_appended_text); delete anEntry; } Index: squid3/src/tests/testHttpRequest.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testHttpRequest.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/tests/testHttpRequest.cc 23 May 2007 20:59:16 -0000 1.3 +++ squid3/src/tests/testHttpRequest.cc 29 May 2007 13:31:48 -0000 1.4 @@ -37,10 +37,10 @@ HttpRequest *nullRequest = NULL; CPPUNIT_ASSERT_EQUAL(expected_port, aRequest->port); CPPUNIT_ASSERT_EQUAL(METHOD_GET, aRequest->method); - CPPUNIT_ASSERT_EQUAL((string)"foo", (string)aRequest->host); - CPPUNIT_ASSERT_EQUAL((string)"/bar", aRequest->urlpath); + CPPUNIT_ASSERT_EQUAL(String("foo"), String(aRequest->host)); + CPPUNIT_ASSERT_EQUAL(String("/bar"), aRequest->urlpath); CPPUNIT_ASSERT_EQUAL(PROTO_HTTP, aRequest->protocol); - CPPUNIT_ASSERT_EQUAL((string)"http://foo:90/bar", (string)url); + CPPUNIT_ASSERT_EQUAL(String("http://foo:90/bar"), String(url)); xfree(url); /* vanilla url, different method */ url = xstrdup("http://foo/bar"); @@ -48,10 +48,10 @@ expected_port = 80; CPPUNIT_ASSERT_EQUAL(expected_port, aRequest->port); CPPUNIT_ASSERT_EQUAL(METHOD_PUT, aRequest->method); - CPPUNIT_ASSERT_EQUAL((string)"foo", (string)aRequest->host); - CPPUNIT_ASSERT_EQUAL((string)"/bar", aRequest->urlpath); + CPPUNIT_ASSERT_EQUAL(String("foo"), String(aRequest->host)); + CPPUNIT_ASSERT_EQUAL(String("/bar"), aRequest->urlpath); CPPUNIT_ASSERT_EQUAL(PROTO_HTTP, aRequest->protocol); - CPPUNIT_ASSERT_EQUAL((string)"http://foo/bar", (string)url); + CPPUNIT_ASSERT_EQUAL(String("http://foo/bar"), String(url)); /* a connect url with non-CONNECT data */ url = xstrdup(":foo/bar"); aRequest = HttpRequest::CreateFromUrlAndMethod(url, METHOD_CONNECT); @@ -63,10 +63,10 @@ expected_port = 45; CPPUNIT_ASSERT_EQUAL(expected_port, aRequest->port); CPPUNIT_ASSERT_EQUAL(METHOD_CONNECT, aRequest->method); - CPPUNIT_ASSERT_EQUAL((string)"foo", (string)aRequest->host); - CPPUNIT_ASSERT_EQUAL((string)"", aRequest->urlpath); + CPPUNIT_ASSERT_EQUAL(String("foo"), String(aRequest->host)); + CPPUNIT_ASSERT_EQUAL(String(""), aRequest->urlpath); CPPUNIT_ASSERT_EQUAL(PROTO_NONE, aRequest->protocol); - CPPUNIT_ASSERT_EQUAL((string)"foo:45", (string)url); + CPPUNIT_ASSERT_EQUAL(String("foo:45"), String(url)); xfree(url); } @@ -83,9 +83,9 @@ expected_port = 90; CPPUNIT_ASSERT_EQUAL(expected_port, aRequest->port); CPPUNIT_ASSERT_EQUAL(METHOD_GET, aRequest->method); - CPPUNIT_ASSERT_EQUAL((string)"foo", (string)aRequest->host); - CPPUNIT_ASSERT_EQUAL((string)"/bar", aRequest->urlpath); + CPPUNIT_ASSERT_EQUAL(String("foo"), String(aRequest->host)); + CPPUNIT_ASSERT_EQUAL(String("/bar"), aRequest->urlpath); CPPUNIT_ASSERT_EQUAL(PROTO_HTTP, aRequest->protocol); - CPPUNIT_ASSERT_EQUAL((string)"http://foo:90/bar", (string)url); + CPPUNIT_ASSERT_EQUAL(String("http://foo:90/bar"), String(url)); xfree(url); } Index: squid3/src/tests/testHttpRequestMethod.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testHttpRequestMethod.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/tests/testHttpRequestMethod.cc 18 May 2007 06:41:33 -0000 1.3 +++ squid3/src/tests/testHttpRequestMethod.cc 29 May 2007 13:31:48 -0000 1.4 @@ -79,7 +79,7 @@ void testHttpRequestMethod::testConst_str() { - CPPUNIT_ASSERT_EQUAL((string)"POST", (string)HttpRequestMethod("post").const_str()); + CPPUNIT_ASSERT_EQUAL(String("POST"), String(HttpRequestMethod("post").const_str())); } /* @@ -115,5 +115,5 @@ { std::ostringstream buffer; buffer << HttpRequestMethod("get"); - CPPUNIT_ASSERT_EQUAL((string)"GET", (string)buffer.str().c_str() ); + CPPUNIT_ASSERT_EQUAL(String("GET"), String(buffer.str().c_str())); } Index: squid3/src/tests/testStore.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testStore.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/tests/testStore.cc 18 May 2007 06:41:33 -0000 1.5 +++ squid3/src/tests/testStore.cc 29 May 2007 13:31:48 -0000 1.6 @@ -21,7 +21,7 @@ void TestStore::get - (string, void (*)(StoreEntry*, void*), void*) + (String, void (*)(StoreEntry*, void*), void*) {} void @@ -48,7 +48,7 @@ } StoreSearch * -TestStore::search(string const url, HttpRequest *) +TestStore::search(String const url, HttpRequest *) { return NULL; } Index: squid3/src/tests/testStore.h =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testStore.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/tests/testStore.h 18 May 2007 06:41:33 -0000 1.3 +++ squid3/src/tests/testStore.h 29 May 2007 13:31:48 -0000 1.4 @@ -49,7 +49,7 @@ (const cache_key*); virtual void get - (string, void (*)(StoreEntry*, void*), void*); + (String, void (*)(StoreEntry*, void*), void*); virtual void init(); @@ -67,7 +67,7 @@ virtual void updateSize(size_t size, int sign) {} - virtual StoreSearch *search(string const url, HttpRequest *); + virtual StoreSearch *search(String const url, HttpRequest *); }; typedef RefCount<TestStore> TestStorePointer; Index: squid3/src/tests/testStoreController.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testStoreController.cc,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- squid3/src/tests/testStoreController.cc 18 May 2007 06:41:33 -0000 1.6 +++ squid3/src/tests/testStoreController.cc 29 May 2007 13:31:48 -0000 1.7 @@ -78,9 +78,10 @@ static StoreEntry * addedEntry(StorePointer hashStore, StorePointer aStore, - string name, - string varySpec, - string varyKey + String name, + String varySpec, + String varyKey + ) { StoreEntry *e = new StoreEntry(); @@ -108,7 +109,7 @@ EBIT_CLR(e->flags, KEY_PRIVATE); e->ping_status = PING_NONE; EBIT_CLR(e->flags, ENTRY_VALIDATED); - e->hashInsert((const cache_key *)name.c_str()); /* do it after we clear KEY_PRIVATE */ + e->hashInsert((const cache_key *)name.buf()); /* do it after we clear KEY_PRIVATE */ return e; } Index: squid3/src/tests/testStoreEntryStream.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testStoreEntryStream.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- squid3/src/tests/testStoreEntryStream.cc 23 May 2007 20:59:16 -0000 1.4 +++ squid3/src/tests/testStoreEntryStream.cc 29 May 2007 13:31:48 -0000 1.5 @@ -37,7 +37,7 @@ stream.flush(); CPPUNIT_ASSERT_EQUAL(1, anEntry->_buffer_calls); CPPUNIT_ASSERT_EQUAL(1, anEntry->_flush_calls); - CPPUNIT_ASSERT_EQUAL((string)"some text !", (string)anEntry->_appended_text); + CPPUNIT_ASSERT_EQUAL(String("some text !"), anEntry->_appended_text); } delete anEntry; Index: squid3/src/tests/testStoreHashIndex.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testStoreHashIndex.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/tests/testStoreHashIndex.cc 18 May 2007 06:41:33 -0000 1.5 +++ squid3/src/tests/testStoreHashIndex.cc 29 May 2007 13:31:48 -0000 1.6 @@ -59,9 +59,9 @@ StoreEntry * addedEntry(StorePointer hashStore, StorePointer aStore, - string name, - string varySpec, - string varyKey + String name, + String varySpec, + String varyKey ) { @@ -90,7 +90,7 @@ EBIT_CLR(e->flags, KEY_PRIVATE); e->ping_status = PING_NONE; EBIT_CLR(e->flags, ENTRY_VALIDATED); - e->hashInsert((const cache_key *)name.c_str()); /* do it after we clear KEY_PRIVATE */ + e->hashInsert((const cache_key *)name.buf()); /* do it after we clear KEY_PRIVATE */ return e; } Index: squid3/src/tests/testString.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testString.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- squid3/src/tests/testString.cc 23 May 2007 20:59:16 -0000 1.5 +++ squid3/src/tests/testString.cc 29 May 2007 13:31:48 -0000 1.6 @@ -20,216 +20,41 @@ } void -testString::testDefaults() -{ - string aStr; - - /* check this reports as empty */ - CPPUNIT_ASSERT( aStr.empty() ); - CPPUNIT_ASSERT_EQUAL( (const char*)NULL, aStr.c_str() ); - CPPUNIT_ASSERT_EQUAL( 0, aStr.size() ); - - string bStr("foo bar"); - - /* check copy constructor */ - CPPUNIT_ASSERT( !bStr.empty() ); - CPPUNIT_ASSERT_EQUAL( 7, bStr.size() ); - CPPUNIT_ASSERT( NULL != bStr.c_str() ); - CPPUNIT_ASSERT( memcmp(bStr.c_str(), "foo bar", 8) == 0 ); -} - -void -testString::testBooleans() -{ - const string smStr("bar"); - const string bgStr("foo"); - const string eqStr("foo"); - const string nqStr("food"); - - /* mathematical boolean operators */ - CPPUNIT_ASSERT(!(bgStr == smStr )); - CPPUNIT_ASSERT( bgStr != smStr ); - CPPUNIT_ASSERT( bgStr > smStr ); - CPPUNIT_ASSERT(!(bgStr < smStr )); - CPPUNIT_ASSERT( bgStr >= smStr ); - CPPUNIT_ASSERT(!(bgStr <= smStr )); - - /* reverse order to catch corners */ - CPPUNIT_ASSERT(!(smStr == bgStr )); - CPPUNIT_ASSERT( smStr != bgStr ); - CPPUNIT_ASSERT(!(smStr > bgStr )); - CPPUNIT_ASSERT( smStr < bgStr ); - CPPUNIT_ASSERT(!(smStr >= bgStr )); - CPPUNIT_ASSERT( smStr <= bgStr ); - - /* check identical to catch corners */ - CPPUNIT_ASSERT( bgStr == eqStr ); - CPPUNIT_ASSERT(!(bgStr != eqStr )); - CPPUNIT_ASSERT(!(bgStr > eqStr )); - CPPUNIT_ASSERT(!(bgStr < eqStr )); - CPPUNIT_ASSERT( bgStr >= eqStr ); - CPPUNIT_ASSERT( bgStr <= eqStr ); - - /* check _almost_ identical to catch corners */ - CPPUNIT_ASSERT(!(bgStr == nqStr )); - CPPUNIT_ASSERT( bgStr != nqStr ); - CPPUNIT_ASSERT(!(bgStr > nqStr )); - CPPUNIT_ASSERT( bgStr < nqStr ); - CPPUNIT_ASSERT(!(bgStr >= nqStr )); - CPPUNIT_ASSERT( bgStr <= nqStr ); -} - -void -testString::testAppend() -{ - // FIXME: make tests for this. - string aStr("hello"); - - aStr.append(" world"); - CPPUNIT_ASSERT_EQUAL( (string)"hello world", aStr ); - aStr.append(" howsit", 7); - CPPUNIT_ASSERT_EQUAL( (string)"hello world howsit", aStr ); - - string bStr; - string cStr("hello"); - - /* corner cases */ - bStr.append(NULL, 2); - CPPUNIT_ASSERT( bStr.empty() ); - CPPUNIT_ASSERT_EQUAL( 0, bStr.size() ); - CPPUNIT_ASSERT_EQUAL( (string)"", bStr ); - - bStr.append("hello", 5); - CPPUNIT_ASSERT( !bStr.empty() ); - CPPUNIT_ASSERT_EQUAL( 5, bStr.size() ); - CPPUNIT_ASSERT_EQUAL( (string)"hello", bStr ); - - bStr.append(NULL, 2); - CPPUNIT_ASSERT( !bStr.empty() ); - CPPUNIT_ASSERT_EQUAL( 5, bStr.size() ); - CPPUNIT_ASSERT_EQUAL( (string)"hello", bStr ); - - bStr.append(" world untroubled by things such as null termination", 6); - CPPUNIT_ASSERT( !bStr.empty() ); - CPPUNIT_ASSERT_EQUAL( 11, bStr.size() ); - CPPUNIT_ASSERT_EQUAL( (string)"hello world", bStr ); - - cStr.append(" wo"); - CPPUNIT_ASSERT( !cStr.empty() ); - CPPUNIT_ASSERT_EQUAL( 8, cStr.size() ); - CPPUNIT_ASSERT_EQUAL( (string)"hello wo", cStr ); - - cStr.append("rld\0 untroubled by things such as null termination", 10); - CPPUNIT_ASSERT( !cStr.empty() ); - CPPUNIT_ASSERT_EQUAL( 18, cStr.size() ); - CPPUNIT_ASSERT( memcmp("hello world", cStr.c_str(), 11) == 0 ); - CPPUNIT_ASSERT( memcmp("hello world\0", cStr.c_str(), 12) == 0 ); - CPPUNIT_ASSERT( memcmp("hello world\0 untro", cStr.c_str(), 18) == 0 ); - CPPUNIT_ASSERT( memcmp("hello world\0 untro\0", cStr.c_str(), 19) == 0 ); -} - -void -testString::testAccess() -{ - string test; - test = "123456789a"; // to get a predictable length buffer. - - CPPUNIT_ASSERT_EQUAL( test.size(), 10 ); - -/* FIXME: flow checks do not seem to catch assert() sent from within code. */ - /* underflow handling test: _should_ fail with core dump. */ - /* this SHOULD be impossible due to unsigned type of parameter. */ -// CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT( test[-1] ) ); - - /* overflow handling test: _should_ fail with core dump. */ -// CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT( test[test.size()+10] ) ); - - /* [] access method (read and write) */ - CPPUNIT_ASSERT( test[0] == '1' ); - CPPUNIT_ASSERT( test[9] == 'a' ); - CPPUNIT_ASSERT( test[10] == '\0' ); - - test.append('T'); - CPPUNIT_ASSERT( test[10] == 'T' ); - CPPUNIT_ASSERT( test[11] == '\0' ); - CPPUNIT_ASSERT_EQUAL((string)"123456789aT", test); - - /* Random access inside buffer. */ - test[5] = 't'; - CPPUNIT_ASSERT( test[5] == 't' ); - CPPUNIT_ASSERT( test[11] == '\0' ); - CPPUNIT_ASSERT_EQUAL((string)"12345t789aT", test); - - /* border case at last position of string */ - test[9] = 'E'; - CPPUNIT_ASSERT( test[9] == 'E' ); - CPPUNIT_ASSERT( test[11] == '\0' ); - CPPUNIT_ASSERT_EQUAL((string)"12345t789ET", test); - - /* border case at EOS position */ - test[11] = 'F'; - CPPUNIT_ASSERT( test[11] == 'F' ); - CPPUNIT_ASSERT( test[12] == '\0' ); - CPPUNIT_ASSERT_EQUAL((string)"12345t789ETF", test); -} - -void -testString::testAssignments() -{ - // FIXME: make tests for this. -} - -void -testString::testCstrMethods() -{ - // FIXME: make tests for this. - // strcmp, strncmp, etc.... -} - -void -testString::testSearch() -{ - // FIXME: make tests for this. - -// pos, rpos, find, rfind, etc... -} - -void testString::testCmpDefault() { - string left, right; + String left, right; /* two default strings are equal */ - CPPUNIT_ASSERT(!left.compare(right)); - CPPUNIT_ASSERT(!left.compare(NULL)); - CPPUNIT_ASSERT(!left.compare(NULL, 1)); + CPPUNIT_ASSERT(!left.cmp(right)); + CPPUNIT_ASSERT(!left.cmp(NULL)); + CPPUNIT_ASSERT(!left.cmp(NULL, 1)); } void testString::testCmpEmptyString() { - string left(""); - string right; + String left(""); + String right; /* an empty string ("") is equal to a default string */ - CPPUNIT_ASSERT(!left.compare(right)); - CPPUNIT_ASSERT(!left.compare(NULL)); - CPPUNIT_ASSERT(!left.compare(NULL, 1)); + CPPUNIT_ASSERT(!left.cmp(right)); + CPPUNIT_ASSERT(!left.cmp(NULL)); + CPPUNIT_ASSERT(!left.cmp(NULL, 1)); /* reverse the order to catch corners */ - CPPUNIT_ASSERT(!right.compare(left)); - CPPUNIT_ASSERT(!right.compare("")); - CPPUNIT_ASSERT(!right.compare("", 1)); + CPPUNIT_ASSERT(!right.cmp(left)); + CPPUNIT_ASSERT(!right.cmp("")); + CPPUNIT_ASSERT(!right.cmp("", 1)); } void testString::testCmpNotEmptyDefault() { - string left("foo"); - string right; + String left("foo"); + String right; /* empty string sorts before everything */ - CPPUNIT_ASSERT(left.compare(right) > 0); - CPPUNIT_ASSERT(left.compare(NULL) > 0); - CPPUNIT_ASSERT(left.compare(NULL, 1) > 0); + CPPUNIT_ASSERT(left.cmp(right) > 0); + CPPUNIT_ASSERT(left.cmp(NULL) > 0); + CPPUNIT_ASSERT(left.cmp(NULL, 1) > 0); /* reverse for symmetry tests */ - CPPUNIT_ASSERT(right.compare(left) < 0); - CPPUNIT_ASSERT(right.compare("foo") < 0); - CPPUNIT_ASSERT(right.compare("foo", 1) < 0); + CPPUNIT_ASSERT(right.cmp(left) < 0); + CPPUNIT_ASSERT(right.cmp("foo") < 0); + CPPUNIT_ASSERT(right.cmp("foo", 1) < 0); } Index: squid3/src/tests/testString.h =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testString.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- squid3/src/tests/testString.h 23 May 2007 20:59:16 -0000 1.4 +++ squid3/src/tests/testString.h 29 May 2007 13:31:48 -0000 1.5 @@ -11,36 +11,19 @@ class testString : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE( testString ); - CPPUNIT_TEST( testDefaults ); - /* boolean helper tests */ CPPUNIT_TEST( testCmpDefault ); CPPUNIT_TEST( testCmpEmptyString ); CPPUNIT_TEST( testCmpNotEmptyDefault ); - - CPPUNIT_TEST( testBooleans ); - CPPUNIT_TEST( testAppend ); - CPPUNIT_TEST( testAssignments ); - CPPUNIT_TEST( testAccess ); - CPPUNIT_TEST( testCstrMethods ); - CPPUNIT_TEST( testSearch ); CPPUNIT_TEST_SUITE_END(); public: void setUp(); protected: - - /* std::string API */ - void testDefaults(); void testCmpDefault(); void testCmpEmptyString(); void testCmpNotEmptyDefault(); - void testBooleans(); - void testAppend(); - void testAssignments(); - void testAccess(); - void testCstrMethods(); - void testSearch(); }; #endif + Index: squid3/src/tests/testURLScheme.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/testURLScheme.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/tests/testURLScheme.cc 18 May 2007 06:41:33 -0000 1.3 +++ squid3/src/tests/testURLScheme.cc 29 May 2007 13:31:48 -0000 1.4 @@ -104,9 +104,9 @@ void testURLScheme::testConst_str() { - string lhs("wais"); + String lhs("wais"); URLScheme wais(PROTO_WAIS); - string rhs(wais.const_str()); + String rhs(wais.const_str()); CPPUNIT_ASSERT_EQUAL(lhs, rhs); } @@ -143,7 +143,7 @@ { std::ostringstream buffer; buffer << URLScheme(PROTO_HTTP); - string http_str("http"); - string from_buf(buffer.str().c_str()); + String http_str("http"); + String from_buf(buffer.str().c_str()); CPPUNIT_ASSERT_EQUAL(http_str, from_buf); } Index: squid3/src/tests/test_http_range.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/tests/test_http_range.cc,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- squid3/src/tests/test_http_range.cc 18 May 2007 06:41:33 -0000 1.2 +++ squid3/src/tests/test_http_range.cc 29 May 2007 13:31:48 -0000 1.3 @@ -1,6 +1,6 @@ /* - * $Id: test_http_range.cc,v 1.2 2007/05/18 06:41:33 amosjeffries Exp $ + * $Id: test_http_range.cc,v 1.3 2007/05/29 13:31:48 amosjeffries Exp $ * * DEBUG: section 64 HTTP Range Header * AUTHOR: Alex Rousskov @@ -56,10 +56,10 @@ return NULL; } -extern string httpHeaderGetList(const HttpHeader * hdr, http_hdr_type id) +extern String httpHeaderGetList(const HttpHeader * hdr, http_hdr_type id) { fatal ("dummy function\n"); - return ""; + return String(); } SQUIDCEXTERN int httpHeaderHas(const HttpHeader * hdr, http_hdr_type type) @@ -76,7 +76,7 @@ void testRangeParser(char const *rangestring) { - string aString (rangestring); + String aString (rangestring); HttpHdrRange *range = HttpHdrRange::ParseCreate (&aString); if (!range) @@ -96,7 +96,7 @@ HttpHdrRange * rangeFromString(char const *rangestring) { - string aString (rangestring); + String aString (rangestring); HttpHdrRange *range = HttpHdrRange::ParseCreate (&aString); if (!range)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor