1 2 libstrfunc 3 48.3: 27 Apr 2007 5 6 * Compiled with Solaris 10 with Sun Studio 11. 7 88.2.1: 26 May 2006 9 10 * Introduced external charset encoder. 11 128.2: 26 May 2005 13 14 * More fixes to strtotime(). 15 * Added const qualifiers in more places. 16 * Removed sf_lang subsystem. 17 188.1.1: 16 May 2004 19 20 * Proper size rounding in sbuf. 21 * replace() parameters include const in proper places. 22 238.1: 30 Mar 2004 24 25 * strtotime() recognizes "Nov 23 23:50:36 2005 GMT" 26 * strtotime() refactored, made even faster. 27 * sbuf_sprintf() now takes in account free space in sb->off and 28 uses it, if possible (like sbuf_add2() does). 29 308.0: 08 Aug 2003 31 32 * Library layout reworked: library split by logical parts. 33 * base64_decode, encode and other MIME functions changed 34 signature AND/OR semantics. Beware! 35 * sbuf_trim() added. 36 377.4.7: 03 Jul 2003 38 39 * Fixed memory leak in sclear(). 40 417.4.6: 12 Jan 2003 42 43 * Added a possibility of a function call upon memory failures. 44 * Fixed url_encode() bug introduced in 7.4.5 :/ 45 467.4.5: 30 Nov 2002 47 48 * Fixed problem with splitf()'ing regular expressions, when they 49 starting with "/". 50 * Fixed problem with sed()'ing expressions like "( )*". 51 * Several man page fixes. 52 * Fixed potential mmap() problem in cfgread(). 53 * Code identation and style fixes. 54 * Fixed bug with sbuf_fetch(). 55 567.4: 29 Jun 2002 57 58 * Project automakefied. 10x2 Alexey Mahotkin <alexm@hsys.msk.ru>. 59 * strtotime() better recognizes some time representations; 60 module test included. (Interesting fact: strtotime() performs 61 more than 50 times faster than yacc-based curl_getdate() found 62 in the libcurl, http://curl.haxx.se/) 63 * slist renamed to svect to reflect actual meaning of 64 this data structure. 65 * Fixed bug in formatf() which triggers when metafunction 66 return { NULL }. 67 * formatf() was convinced to support ${a[n]?b:c} when n > 0. 68 * Fixed memory leak and sed_free() bug in sed*() code. 69 707.3: 25 Dec 2001 71 72 * Offset field added to sbuf structure. 73 * sbuf_fetch() added. Suggested by Pavel Plesov <mclap@simtts.mv.ru>. 74 * MinGW builds with Cygwin tools. 75 Submitted by alexander smishlajev <alex@tycobka.lv>. 76 * Support for different POSIX-compatible regexp libraries. 77 * strtotime() performs 50 times faster. 78 797.2.7: 22 Nov 2001 80 81 * Allocation bug fixed in cgifunc.c. 82 83 Thanks to Eric Gentry <eric_gentry@hp.com> 84 85 * lockf() replaced with fcntl(). 86 * manual pages fixed. 87 887.2.6: 28 Jul 2001 89 90 * Minor NULL<->NUL gcc 3.0 compile problems fixed. 91 * Fixed sed misbehaviour on unescaping slashes. 92 * Added sed modifier 'm' aka REG_NEWLINE. 93 94 Thanks to bjudson@benjudson.com. 95 967.2.5: 19 Jul 2001 97 98 * params() now invokes parse_form() and can be used stand-alone. 99 * eq*() now immune to NULL's. 100 1017.2.4: 02 Jul 2001 102 103 * strtotime() now recognizes dates in MM.DD[.YYYY] format. 104 1057.2.3: 07 Jun 2001 106 107 * Other CGI functions are made consistent 108 with libstrfunc memory control technique. 109 1107.2.2: 26 May 2001 111 112 * lang*(), replace() and cgi*() functions are made consistent 113 with libstrfunc memory control technique. 114 1157.2.1: 22 May 2001 116 117 * Security bugfix in formatf(). 118 * format*() functions are made consistent 119 with libstrfunc memory control technique. 120 1217.2.0: 16 May 2001 122 123 * sed_*() and cookie() are made consistent 124 with libstrfunc memory control technique. 125 * Documented strfunc_ctl() and memory control technique. 126 * splitf can use regular expressions as delimiters. 127 1287.1.0: 15 May 2001 129 130 * inet_aton() avoided by implementing sf_iaton(). 131 * split_network() not destroys input value. 132 1337.0.8: 10 May 2001 134 135 * sjoin(NULL, ...) works fine. 136 1377.0.7: 30 Apr 2001 138 139 * sbuf_*, mime_word_decode are made consistent 140 with libstrfunc memory control technique. 141 1427.0.6: 22 Apr 2001 143 144 * strtotime() now recognizes something like "1997/06/23 13:22:33" and 145 derivatives. 146 * TFMT_X208 constant defined to follow the RFC2252 style of using X.208 147 standard for general time representation 148 1497.0.5: 06 Apr 2001 150 151 * mime_word_decode() fixed after sed() changes. 152 1537.0.4: 03 Apr 2001 (8765 lines, 184633 bytes) 154 155 * Light join() fix. 156 * Improved strtotime() behaviour on syslogd dates. 157 * Significal changes in sed() internals. 'n' flag added. 158 * splitf() improved to reflect the need in splitting by 159 arbitrary strings instead of character sets. 160 * int, size_t and ssize_t are properly reassigned to arguments. 161 1627.0.0: 31 Mar 2001 (8614 lines, 181895 bytes) 163 164 * Code was significaly revised and almost fully rewritten. 165 * *destroy => *free. 166 * param2() returns pointer to static structure. 167 * binparam() & parammeta() removed. 168 * Due to incompatible changes library's major number changed to 7 169 1706.1.0: 15 Mar 2001 171 172 * Fixes in sed_*() functions. 173 * Added sed_results(). 174 1756.0.6: 02 Mar 2001 176 177 * Old bug in configuration file parser line counter fixed. 178 1796.0.5: 29 Jan 2001 180 181 * initFILEpos now fully transparent. 182 1836.0.2: 15 Jan 2001 184 185 * Portability changes. 186 1876.0.1: 29 Dec 2000 (6247 lines, 132687 bytes) 188 189 * sins() behaves more accurate. 190 * sed_compile() behaves more accurate. 191 1926.0.0: 25 Dec 2000 193 194 * Significant portability issues; changes inspired by ancom@ugk.uaz.ru. 195 * Library number changed, but is still compatible with 5.5. 196 * sed.c works without REG_STARTEND. 197 * datetime.c works without timegm and tm_gmtoff. 198 * {init|adj}{FILE|fd}pos() are able to deal with extensible position 199 format. 200 2015.6.1: 19 Dec 2000 202 203 * Fixed bug with duplicate names when mmap() is not available 204 (10x2ancom). 205 2065.6.0: 18 Dec 2000 207 208 * warnx() removed due to non-portability. 209 * fprintf's removed from {init|adj}{FILE|fd}pos(). 210 * sbuf_zero() and sbuf_detach() added. 211 * sbuf_fgets() added. 212 * updated manual pages about sf_*(). 213 2145.5.6: 14 Dec 2000 215 216 * sbuf_sprintf() function added. 217 2185.5.5: 12 Dec 2000 219 220 * GNU autoconf suite was used to form a complete distribution. 221 2225.5.0: 11 Dec 2000 223 224 * Some significial changes, including the naming conventions 225 and interfaces. 226 * Stability added to sarray() && mkarray(). 227 2285.2.5: 11 Dec 2000 229 230 * Even more minor changes. 231 2325.2.4: 08 Dec 2000 233 234 * cfgget2() is not saves the object in the internal memory. 235 * More accurate escaping handling in cfglex.c 236 * sed_compile() recognizes one more expression. 237 * timetostr and strtotime binaries added. 238 2395.2.1: 07 Dec 2000 240 241 * Light makefile changes. 242 2435.2.0: 04 Dec 2000 244 245 * sbuf (clever buffer) structure and appropriate handlers added. 246 * A subset of the sed(1)'s functionality added. 247 * manual pages on sf_file, sf_sed and sf_sbuf created. 248 * mime_word_decode() completely rewritten. 249 2505.1.3: 03 Dec 2000 251 252 * splitquotable() patch. 253 2545.1.2: 21 Nov 2000 255 256 * strtotime(): 257 + 'T' is now not necessary delimiter between date and time. 258 + More careful distinguishing between the time_t and ISO times. 259 + ISO time allows incomplete times and dates, like "hh:mm..". 260 2615.1.1: 14 Nov 2000 262 263 * CGI: Attribute name now url_decoded. 264 2655.1.0: 04 Nov 2000 (5243 lines) 266 267 * Added functions initfdpos() and adjfdpos(). 268 * Added functions initFILEpos() and adjFILEpos(). 269 2705.0.1: 31 Oct 2000 (5040 lines) 271 272 * Improved koi8_r_to_windows_1251(). 273 * mime_word_decode() now automaticaly recodes known charsets to koi8-r. 274 * Recode tables size set to safe value. 275 276 TODO: revise the _detach() functions. 277 TODO: mime_word_decode() should always return utf-8. 278 2795.0.0: 19 Oct 2000 (5020 lines) 280 281 * Final release. 282 * do*lean() changed to *_detach(). 283 * Major number changed to 5.0. 284 * Makefile was somewhat simplified to achieve portability. 285 286 TODO: revise the _detach() functions. 287 2884.9.9: 6 Oct 2000 289 290 * TFMT_OLD822GMT flag added to timetostr() 291 * Absolutely idiotic bug in strtotime() fixed. (Related with GMT/LT). 292 * Manual pages were slightly improved to achieve readability for the 293 native english readers. 294 2954.9.6: 2 Oct 2000 (4465 lines) 296 297 * Introduced replace_detach(). 298 * Introduced countstr(). 299 * Manual pages rewritten to reflect that changes. 300 3014.9.5: 2 Oct 2000 (4431 lines) 302 303 * Introduceed char *timetostr(time_t time, int flags); 304 * fetchdate() is now able to recognize ISO-8601, ctime() and 305 unix_time formats. 306 * fetchdate() performs up to ten times faster. 307 * fetchdate() renamed to strtotime(3). 308 * httptime() removed, use timetostr() instead. 309 * match() and match1() removed as unnecessary. 310 * sinit(slist *) replaced by sinit(void). 311 * Due to incompatible changes library's major number changed to 4.9 312 * All necessary manual pages created. 313 3144.5.2: 28 Sep 2000 315 316 * cfgread(): equal sign is optional between an attribute and a value. 317 Equal sign may be placed between an attribute and a left brace. 318 3194.5.1: 25 Sep 2000 320 321 * Licks in limittextwidth(). 322 * Fixed cfgread()' rc in reading broken config file (10x2basil). From 323 now it will return 0x1 if something failed inside the well-opened file. 324 * mime_word_decode(): added '\t' to the list of whitespace symbols. 325 3264.5.0: 18 Sep 2000 327 328 * formatf() function now accepts the third value - a key to be passed to 329 the invoked helper functions due to this significal change, the library 330 major number has changed to leave intact already built applications. 331 * Created sf_cfgread(3) manual page. 332 * getlanguageprefs() introduced in CGI module. 333 * sins() added for inserting values into slist structure. 334 * fetchdate() guesses that GMT = time - our_offset. 335 3364.3.2: 16 Sep 2000 337 338 * parse_form() performs additional checks to ensure data correctness. 339 * fetchdate() recognizes an RFC-850 (obsoleted) time format. 340 3414.3.1: 14 Sep 2000 342 343 * fetchdate() acts more accurately on broken times. 344 3454.3.0: 13 Sep 2000 346 347 * fetchdate() and mime_word_decode() acting significaly faster. 348 * iso-8859-5 to koi8-r table added. 349 * Quoted-printable engine slightly improved. 350 3514.2.2: 7 Sep 2000 352 353 * Little lick in fetchdate(). 354 3554.2.1 356 357 * Three of six manual pages created. 358 3594.2: 24 Aug 2000 360 361 * Some improvements in the formatf() about \escaping. 362 3634.1.1: 30 Jun 2000 364 365 * Some licks in the config parsing. 366 3674.1: 368 369 * formatf() now recognizes something like this: 370 ${attr==value?${printok}:${printfail}} 371 * cookie*() and set_cookie() functions added. 372 3734.0: 374 375 * libcfg-3.1 has integrated into this code. 376 3773.8.0: 378 379 * Format functions added for generalizing of metacharacters handling. 380 * Version control (strfunc_build()) added. 381 3823.7.6: 383 384 * url_decode() updated to be more stable on unusual data. 385 * httptime() function added for creating Expires field in CGI's. 386 * warning: mime_word_decode() invisibly "touches" the argument! 387 (Feature is documented bug). 388 3893.7.5: 390 391 * fetchdate() function added. 392 * base64_encode() function added. 393 3943.7.2: 395 396 * lang_recode() function added. 397 * windows_1251_to_koi8_r and koi8_r_to_windows_1251 tables added. 398 * struct slistpair and related functions (sgetp(), scgetp()) added. 399 4003.7.1: 401 402 * mime_word_decode() reviewed to match RFC2045 (base64 encoding). 403 4043.7.0: 405 406 * CGI part of the library handles multipart/form-data encoding! 407 4083.6.0: 409 410 * url_encode() function added. 411 * quoted_printable_decode() function added. 412 * mime_word_decode() function added. 413 * base64_decode() function added. 414 * match() (regex-based) function added. 415 + Added C++ compatibility in header. 416 4173.5.0: 418 419 * stand-alone strfunc.c turned into this library 420 * code was rechecked and cleaned 421 * strfunc.h was totally rewriten 422 423