#include "squid.h"
#include "base/TextException.h"
#include "sbuf/SBuf.h"
#include "SquidString.h"
#include "StrList.h"
Go to the source code of this file.
Functions | |
void | strListAdd (String &str, const char *item, const size_t itemSize, const char delimiter) |
Appends the given item of a given size to a delimiter-separated list in str. More... | |
void | strListAdd (String *str, const char *item, const char delimiter) |
Appends the given item to a delimiter-separated list in str. More... | |
void | strListAdd (String &str, const SBuf &item, char delimiter) |
int | strListIsMember (const String *list, const SBuf &m, char del) |
int | strListIsSubstr (const String *list, const char *s, char del) |
int | strListGetItem (const String *str, char del, const char **item, int *ilen, const char **pos) |
SBuf | getListMember (const String &list, const char *key, const char delimiter) |
Function Documentation
◆ getListMember()
Searches for the first matching key=value pair within a delimiter-separated list of items.
- Returns
- the value of the found pair or an empty string.
Definition at line 144 of file StrList.cc.
References delimiter, and strListGetItem().
Referenced by HttpHeader::getByNameListMember(), ProxyProtocol::Header::getElem(), and HttpHeader::getListMember().
◆ strListAdd() [1/3]
Definition at line 18 of file StrList.cc.
References String::append(), String::canGrowBy(), delimiter, Must, and String::size().
Referenced by HttpStateData::forwardUpgrade(), HttpHeader::getList(), HttpHeader::hasNamed(), HttpStateData::httpBuildRequestHeader(), and strListAdd().
◆ strListAdd() [2/3]
Appends the given item to a delimiter-separated list in str. Use strListAdd(c-string) for c-string items with unknown length.
Definition at line 39 of file StrList.cc.
References delimiter, SBuf::length(), SBuf::rawContent(), and strListAdd().
◆ strListAdd() [3/3]
void strListAdd | ( | String * | str, |
const char * | item, | ||
const char | delimiter | ||
) |
Definition at line 31 of file StrList.cc.
References assert, delimiter, and strListAdd().
◆ strListGetItem()
int strListGetItem | ( | const String * | str, |
char | del, | ||
const char ** | item, | ||
int * | ilen, | ||
const char ** | pos | ||
) |
iterates through a 0-terminated string of items separated by 'del's. white space around 'del' is considered to be a part of 'del' like strtok, but preserves the source, and can iterate several strings at once
returns true if next item is found. init pos with NULL to start iteration.
Definition at line 86 of file StrList.cc.
References assert, String::termedBuf(), and xisspace.
Referenced by assembleVaryKey(), HttpStateData::blockSwitchingProtocols(), Http::ContentLengthInterpreter::checkList(), HttpStateData::forwardUpgrade(), getListMember(), HttpHeader::hasByNameListMember(), HttpHeader::hasListMember(), StoreEntry::hasOneOfEtags(), Adaptation::Icap::Options::TransferList::parse(), HttpHdrCc::parse(), HttpHdrSc::parse(), HttpHdrRange::parseInit(), Adaptation::DynamicServiceChain::Split(), and strListIsMember().
◆ strListIsMember()
returns true iff "m" is a member of the list
Definition at line 46 of file StrList.cc.
References assert, SBuf::caseCmp(), SBuf::plength(), and strListGetItem().
Referenced by copyOneHeaderFromClientsideRequestToUpstreamRequest(), StoreEntry::hasOneOfEtags(), httpHeaderHasConnDir(), and HttpHeader::removeConnectionHeaderEntries().
◆ strListIsSubstr()
returns true iff "s" is a substring of a member of the list
- Note
- Note: the original code with a loop is broken because it uses strstr() instead of strnstr(). If 's' contains a 'del', strListIsSubstr() may return true when it should not. If 's' does not contain a 'del', the implementation is equavalent to strstr()! Thus, we replace the loop with strstr() above until strnstr() is available.
Definition at line 63 of file StrList.cc.
References assert, String::find(), and String::npos.
Referenced by clientInterpretRequestHeaders().