30 #ifndef APT_8_CLEANER_HEADERS
38 std::string Strip(
const std::string &s);
39 bool Endswith(
const std::string &s,
const std::string &ending);
44 bool UTF8ToCodeset(
const char *codeset,
const std::string &orig, std::string *dest);
45 char *_strstrip(
char *String);
46 char *_strrstrip(
char *String);
47 char *_strtabexpand(
char *String,
size_t Len);
48 bool ParseQuoteWord(
const char *&String,std::string &Res);
49 bool ParseCWord(
const char *&String,std::string &Res);
50 std::string QuoteString(
const std::string &Str,
const char *Bad);
51 std::string DeQuoteString(
const std::string &Str);
52 std::string DeQuoteString(std::string::const_iterator
const &begin, std::string::const_iterator
const &end);
55 std::string DeEscapeString(
const std::string &input);
57 std::string SizeToStr(
double Bytes);
58 std::string TimeToStr(
unsigned long Sec);
59 std::string Base64Encode(
const std::string &Str);
60 std::string OutputInDepth(
const unsigned long Depth,
const char* Separator=
" ");
61 std::string URItoFileName(
const std::string &
URI);
62 std::string TimeRFC1123(time_t Date);
63 bool RFC1123StrToTime(
const char*
const str,time_t &time) __must_check;
64 bool FTPMDTMStrToTime(
const char*
const str,time_t &time) __must_check;
65 __deprecated
bool StrToTime(
const std::string &Val,time_t &Result);
66 std::string LookupTag(
const std::string &Message,
const char *Tag,
const char *Default = 0);
67 int StringToBool(
const std::string &Text,
int Default = -1);
68 bool ReadMessages(
int Fd, std::vector<std::string> &List);
69 bool StrToNum(
const char *Str,
unsigned long &Res,
unsigned Len,
unsigned Base = 0);
70 bool StrToNum(
const char *Str,
unsigned long long &Res,
unsigned Len,
unsigned Base = 0);
71 bool Base256ToNum(
const char *Str,
unsigned long &Res,
unsigned int Len);
72 bool Hex2Num(
const std::string &Str,
unsigned char *Num,
unsigned int Length);
75 bool TokSplitString(
char Tok,
char *Input,
char **List,
76 unsigned long ListMax);
79 std::vector<std::string> VectorizeString(std::string
const &haystack,
char const &split) __attrib_const;
95 std::vector<std::string> StringSplit(std::string
const &input,
96 std::string
const &sep,
97 unsigned int maxsplit=std::numeric_limits<unsigned int>::max()) __attrib_const;
99 void ioprintf(std::ostream &out,const
char *format,...) __like_printf(2);
100 void strprintf(std::
string &out,const
char *format,...) __like_printf(2);
101 char *safe_snprintf(
char *Buffer,
char *End,const
char *Format,...) __like_printf(3);
102 bool CheckDomainList(const std::
string &Host, const std::
string &List);
103 int tolower_ascii(
int const c) __attrib_const __hot;
104 std::
string StripEpoch(const std::
string &VerStr);
106 #define APT_MKSTRCMP(name,func) \
107 inline int name(const char *A,const char *B) {return func(A,A+strlen(A),B,B+strlen(B));}; \
108 inline int name(const char *A,const char *AEnd,const char *B) {return func(A,AEnd,B,B+strlen(B));}; \
109 inline int name(const std::string& A,const char *B) {return func(A.c_str(),A.c_str()+A.length(),B,B+strlen(B));}; \
110 inline int name(const std::string& A,const std::string& B) {return func(A.c_str(),A.c_str()+A.length(),B.c_str(),B.c_str()+B.length());}; \
111 inline int name(const std::string& A,const char *B,const char *BEnd) {return func(A.c_str(),A.c_str()+A.length(),B,BEnd);};
113 #define APT_MKSTRCMP2(name,func) \
114 inline int name(const char *A,const char *AEnd,const char *B) {return func(A,AEnd,B,B+strlen(B));}; \
115 inline int name(const std::string& A,const char *B) {return func(A.begin(),A.end(),B,B+strlen(B));}; \
116 inline int name(const std::string& A,const std::string& B) {return func(A.begin(),A.end(),B.begin(),B.end());}; \
117 inline int name(const std::string& A,const char *B,const char *BEnd) {return func(A.begin(),A.end(),B,BEnd);};
119 int stringcmp(
const char *A,
const char *AEnd,
const char *B,
const char *BEnd);
120 int stringcasecmp(
const char *A,
const char *AEnd,
const char *B,
const char *BEnd);
126 int stringcmp(std::string::const_iterator A,std::string::const_iterator AEnd,
127 const char *B,
const char *BEnd);
128 int stringcmp(std::string::const_iterator A,std::string::const_iterator AEnd,
129 std::string::const_iterator B,std::string::const_iterator BEnd);
130 int stringcasecmp(std::string::const_iterator A,std::string::const_iterator AEnd,
131 const char *B,
const char *BEnd);
132 int stringcasecmp(std::string::const_iterator A,std::string::const_iterator AEnd,
133 std::string::const_iterator B,std::string::const_iterator BEnd);
135 inline int stringcmp(std::string::const_iterator A,std::string::const_iterator Aend,
const char *B) {
return stringcmp(A,Aend,B,B+strlen(B));};
136 inline int stringcasecmp(std::string::const_iterator A,std::string::const_iterator Aend,
const char *B) {
return stringcasecmp(A,Aend,B,B+strlen(B));};
139 APT_MKSTRCMP2(stringcmp,stringcmp);
140 APT_MKSTRCMP2(stringcasecmp,stringcasecmp);
143 size_t strv_length(
const char **str_array);
146 inline const char *DeNull(
const char *s) {
return (s == 0?
"(null)":s);};
150 void CopyFrom(
const std::string &From);
156 std::string Password;
161 operator std::string();
162 inline void operator =(
const std::string &From) {CopyFrom(From);};
163 inline bool empty() {
return Access.empty();};
164 static std::string SiteOnly(
const std::string &
URI);
165 static std::string NoUserPassword(
const std::string &URI);
167 URI(std::string Path) {CopyFrom(Path);};
174 const std::string *Contents;
177 std::string
SubstVar(
const std::string &Str,
const std::string &Subst,
const std::string &Contents);
185 unsigned long RegexChoice(
RxChoiceList *Rxs,
const char **ListBegin,
186 const char **ListEnd);