libstrfunc 8.3: 27 Apr 2007 * Compiled with Solaris 10 with Sun Studio 11. 8.2.1: 26 May 2006 * Introduced external charset encoder. 8.2: 26 May 2005 * More fixes to strtotime(). * Added const qualifiers in more places. * Removed sf_lang subsystem. 8.1.1: 16 May 2004 * Proper size rounding in sbuf. * replace() parameters include const in proper places. 8.1: 30 Mar 2004 * strtotime() recognizes "Nov 23 23:50:36 2005 GMT" * strtotime() refactored, made even faster. * sbuf_sprintf() now takes in account free space in sb->off and uses it, if possible (like sbuf_add2() does). 8.0: 08 Aug 2003 * Library layout reworked: library split by logical parts. * base64_decode, encode and other MIME functions changed signature AND/OR semantics. Beware! * sbuf_trim() added. 7.4.7: 03 Jul 2003 * Fixed memory leak in sclear(). 7.4.6: 12 Jan 2003 * Added a possibility of a function call upon memory failures. * Fixed url_encode() bug introduced in 7.4.5 :/ 7.4.5: 30 Nov 2002 * Fixed problem with splitf()'ing regular expressions, when they starting with "/". * Fixed problem with sed()'ing expressions like "( )*". * Several man page fixes. * Fixed potential mmap() problem in cfgread(). * Code identation and style fixes. * Fixed bug with sbuf_fetch(). 7.4: 29 Jun 2002 * Project automakefied. 10x2 Alexey Mahotkin . * strtotime() better recognizes some time representations; module test included. (Interesting fact: strtotime() performs more than 50 times faster than yacc-based curl_getdate() found in the libcurl, http://curl.haxx.se/) * slist renamed to svect to reflect actual meaning of this data structure. * Fixed bug in formatf() which triggers when metafunction return { NULL }. * formatf() was convinced to support ${a[n]?b:c} when n > 0. * Fixed memory leak and sed_free() bug in sed*() code. 7.3: 25 Dec 2001 * Offset field added to sbuf structure. * sbuf_fetch() added. Suggested by Pavel Plesov . * MinGW builds with Cygwin tools. Submitted by alexander smishlajev . * Support for different POSIX-compatible regexp libraries. * strtotime() performs 50 times faster. 7.2.7: 22 Nov 2001 * Allocation bug fixed in cgifunc.c. Thanks to Eric Gentry * lockf() replaced with fcntl(). * manual pages fixed. 7.2.6: 28 Jul 2001 * Minor NULL<->NUL gcc 3.0 compile problems fixed. * Fixed sed misbehaviour on unescaping slashes. * Added sed modifier 'm' aka REG_NEWLINE. Thanks to bjudson@benjudson.com. 7.2.5: 19 Jul 2001 * params() now invokes parse_form() and can be used stand-alone. * eq*() now immune to NULL's. 7.2.4: 02 Jul 2001 * strtotime() now recognizes dates in MM.DD[.YYYY] format. 7.2.3: 07 Jun 2001 * Other CGI functions are made consistent with libstrfunc memory control technique. 7.2.2: 26 May 2001 * lang*(), replace() and cgi*() functions are made consistent with libstrfunc memory control technique. 7.2.1: 22 May 2001 * Security bugfix in formatf(). * format*() functions are made consistent with libstrfunc memory control technique. 7.2.0: 16 May 2001 * sed_*() and cookie() are made consistent with libstrfunc memory control technique. * Documented strfunc_ctl() and memory control technique. * splitf can use regular expressions as delimiters. 7.1.0: 15 May 2001 * inet_aton() avoided by implementing sf_iaton(). * split_network() not destroys input value. 7.0.8: 10 May 2001 * sjoin(NULL, ...) works fine. 7.0.7: 30 Apr 2001 * sbuf_*, mime_word_decode are made consistent with libstrfunc memory control technique. 7.0.6: 22 Apr 2001 * strtotime() now recognizes something like "1997/06/23 13:22:33" and derivatives. * TFMT_X208 constant defined to follow the RFC2252 style of using X.208 standard for general time representation 7.0.5: 06 Apr 2001 * mime_word_decode() fixed after sed() changes. 7.0.4: 03 Apr 2001 (8765 lines, 184633 bytes) * Light join() fix. * Improved strtotime() behaviour on syslogd dates. * Significal changes in sed() internals. 'n' flag added. * splitf() improved to reflect the need in splitting by arbitrary strings instead of character sets. * int, size_t and ssize_t are properly reassigned to arguments. 7.0.0: 31 Mar 2001 (8614 lines, 181895 bytes) * Code was significaly revised and almost fully rewritten. * *destroy => *free. * param2() returns pointer to static structure. * binparam() & parammeta() removed. * Due to incompatible changes library's major number changed to 7 6.1.0: 15 Mar 2001 * Fixes in sed_*() functions. * Added sed_results(). 6.0.6: 02 Mar 2001 * Old bug in configuration file parser line counter fixed. 6.0.5: 29 Jan 2001 * initFILEpos now fully transparent. 6.0.2: 15 Jan 2001 * Portability changes. 6.0.1: 29 Dec 2000 (6247 lines, 132687 bytes) * sins() behaves more accurate. * sed_compile() behaves more accurate. 6.0.0: 25 Dec 2000 * Significant portability issues; changes inspired by ancom@ugk.uaz.ru. * Library number changed, but is still compatible with 5.5. * sed.c works without REG_STARTEND. * datetime.c works without timegm and tm_gmtoff. * {init|adj}{FILE|fd}pos() are able to deal with extensible position format. 5.6.1: 19 Dec 2000 * Fixed bug with duplicate names when mmap() is not available (10x2ancom). 5.6.0: 18 Dec 2000 * warnx() removed due to non-portability. * fprintf's removed from {init|adj}{FILE|fd}pos(). * sbuf_zero() and sbuf_detach() added. * sbuf_fgets() added. * updated manual pages about sf_*(). 5.5.6: 14 Dec 2000 * sbuf_sprintf() function added. 5.5.5: 12 Dec 2000 * GNU autoconf suite was used to form a complete distribution. 5.5.0: 11 Dec 2000 * Some significial changes, including the naming conventions and interfaces. * Stability added to sarray() && mkarray(). 5.2.5: 11 Dec 2000 * Even more minor changes. 5.2.4: 08 Dec 2000 * cfgget2() is not saves the object in the internal memory. * More accurate escaping handling in cfglex.c * sed_compile() recognizes one more expression. * timetostr and strtotime binaries added. 5.2.1: 07 Dec 2000 * Light makefile changes. 5.2.0: 04 Dec 2000 * sbuf (clever buffer) structure and appropriate handlers added. * A subset of the sed(1)'s functionality added. * manual pages on sf_file, sf_sed and sf_sbuf created. * mime_word_decode() completely rewritten. 5.1.3: 03 Dec 2000 * splitquotable() patch. 5.1.2: 21 Nov 2000 * strtotime(): + 'T' is now not necessary delimiter between date and time. + More careful distinguishing between the time_t and ISO times. + ISO time allows incomplete times and dates, like "hh:mm..". 5.1.1: 14 Nov 2000 * CGI: Attribute name now url_decoded. 5.1.0: 04 Nov 2000 (5243 lines) * Added functions initfdpos() and adjfdpos(). * Added functions initFILEpos() and adjFILEpos(). 5.0.1: 31 Oct 2000 (5040 lines) * Improved koi8_r_to_windows_1251(). * mime_word_decode() now automaticaly recodes known charsets to koi8-r. * Recode tables size set to safe value. TODO: revise the _detach() functions. TODO: mime_word_decode() should always return utf-8. 5.0.0: 19 Oct 2000 (5020 lines) * Final release. * do*lean() changed to *_detach(). * Major number changed to 5.0. * Makefile was somewhat simplified to achieve portability. TODO: revise the _detach() functions. 4.9.9: 6 Oct 2000 * TFMT_OLD822GMT flag added to timetostr() * Absolutely idiotic bug in strtotime() fixed. (Related with GMT/LT). * Manual pages were slightly improved to achieve readability for the native english readers. 4.9.6: 2 Oct 2000 (4465 lines) * Introduced replace_detach(). * Introduced countstr(). * Manual pages rewritten to reflect that changes. 4.9.5: 2 Oct 2000 (4431 lines) * Introduceed char *timetostr(time_t time, int flags); * fetchdate() is now able to recognize ISO-8601, ctime() and unix_time formats. * fetchdate() performs up to ten times faster. * fetchdate() renamed to strtotime(3). * httptime() removed, use timetostr() instead. * match() and match1() removed as unnecessary. * sinit(slist *) replaced by sinit(void). * Due to incompatible changes library's major number changed to 4.9 * All necessary manual pages created. 4.5.2: 28 Sep 2000 * cfgread(): equal sign is optional between an attribute and a value. Equal sign may be placed between an attribute and a left brace. 4.5.1: 25 Sep 2000 * Licks in limittextwidth(). * Fixed cfgread()' rc in reading broken config file (10x2basil). From now it will return 0x1 if something failed inside the well-opened file. * mime_word_decode(): added '\t' to the list of whitespace symbols. 4.5.0: 18 Sep 2000 * formatf() function now accepts the third value - a key to be passed to the invoked helper functions due to this significal change, the library major number has changed to leave intact already built applications. * Created sf_cfgread(3) manual page. * getlanguageprefs() introduced in CGI module. * sins() added for inserting values into slist structure. * fetchdate() guesses that GMT = time - our_offset. 4.3.2: 16 Sep 2000 * parse_form() performs additional checks to ensure data correctness. * fetchdate() recognizes an RFC-850 (obsoleted) time format. 4.3.1: 14 Sep 2000 * fetchdate() acts more accurately on broken times. 4.3.0: 13 Sep 2000 * fetchdate() and mime_word_decode() acting significaly faster. * iso-8859-5 to koi8-r table added. * Quoted-printable engine slightly improved. 4.2.2: 7 Sep 2000 * Little lick in fetchdate(). 4.2.1 * Three of six manual pages created. 4.2: 24 Aug 2000 * Some improvements in the formatf() about \escaping. 4.1.1: 30 Jun 2000 * Some licks in the config parsing. 4.1: * formatf() now recognizes something like this: ${attr==value?${printok}:${printfail}} * cookie*() and set_cookie() functions added. 4.0: * libcfg-3.1 has integrated into this code. 3.8.0: * Format functions added for generalizing of metacharacters handling. * Version control (strfunc_build()) added. 3.7.6: * url_decode() updated to be more stable on unusual data. * httptime() function added for creating Expires field in CGI's. * warning: mime_word_decode() invisibly "touches" the argument! (Feature is documented bug). 3.7.5: * fetchdate() function added. * base64_encode() function added. 3.7.2: * lang_recode() function added. * windows_1251_to_koi8_r and koi8_r_to_windows_1251 tables added. * struct slistpair and related functions (sgetp(), scgetp()) added. 3.7.1: * mime_word_decode() reviewed to match RFC2045 (base64 encoding). 3.7.0: * CGI part of the library handles multipart/form-data encoding! 3.6.0: * url_encode() function added. * quoted_printable_decode() function added. * mime_word_decode() function added. * base64_decode() function added. * match() (regex-based) function added. + Added C++ compatibility in header. 3.5.0: * stand-alone strfunc.c turned into this library * code was rechecked and cleaned * strfunc.h was totally rewriten