Chapter 4: Changelog

The following listing is a verbatim inclusion of the ChangeLog. It is included for reference purposes.

ChangeLog for the e-tunity utility library
------------------------------------------

4.38	[KK 2007-03-07] - Implemented ps_sortsnapshot()


4.37	[KK 2006-07-19] - Bugfix in ps_makesnapshot (related to Linux
			  kernels 2.6+)
			- RPM creation & uploading disabled. This lib
			  will have to be made from source.
			- Fix in rx_match(): when 2nd string argument
			  is 0, RX_NOMATCH is returned.

4.36	[KK 2006-05-15] - Installation defaults to /usr/local/* when
			  $EBASE isn't set.
	[KK 2006-06-02] - Small update regarding Cygwin portability.

4.35	[KK 2005-10-27] - A topline 'make install' now hits getline's
			  'make install' too.
			- A 'make install' in the C branch forces a
			  'make local' in a better way.
			  
4.34	[KK 2005-09-28] - Added c-conf

4.33	[KK 2005-09-22] - Port to OSX, 'configure' utility added.
			  Dynamic build on Darwin implemented.

4.32	[RE 2005-07-14] - Added &shy to e-mlcode.txt
	[KK 2005-07-11] - Added c/Makefile for e-lib onboarding in
			  other projects. Removed fcgi based compile.
			  Revamped make process.
	[KK 2005-07-11] - Added c/Makefile for e-lib onboarding in
			  other projects.

	[RE 2005-07-06] - Fixed compile errors in checksumadler32.c and
			  fchecksumadler32.c
			  
4.31	[KK 2005-06-21] - Added make_socket(), checksum_adler(),
			  fchecksum_adler()

4.30	[KK 2005-05-10] - Rewired daemonize() to use better
			  IPC. Improved docs.
			  
4.29	[KK 2005-04-07] - Small documentation (manppage) fixes.
	[KK 2005-05-06]   daemonize() added.

4.28	[KK 2005-04-05] - getline() renamed to gl_getline(), to avoid
			  conflicts with a new function of stdio.h

4.27	[RE 2005-02-04] - bugfix in logsetup.c

4.26	[KK 2005-01-06] - sha1() implemented

4.25	[KK 2004-12-20] - Library flag -lm added when testing C libs

4.24	[KK 2004-07-07] - tmp_fopen() and tmp_file() are more
			  robust. When the compiletime symbol ETMP is
			  missing, then "/tmp" gets substituted.
			- Minor documentation fixes.
			- "make installdoc" fixed; manpages for the
			  separate C functions would sometimes not be
			  installed. 

4.23	[KK 2004-06-23] - random_ulong() implemented

4.22	[KK 2004-06-21] - rx_find() added

4.21	[KK 2004-06-21] - Renamed mm_*() to mmsg_*() to avoid name
			  collisions with a memory allocation lib,
			  that also holds mm_destroy().

4.20	[KK 2004-06-15] - Makefile.help added, RPM construction
			  improved
			- mm_*() functions added for mail message
			  parsing
			- Make target 'documentation' created.
			- Make target 'test' now uses local libraries.
			  Previously, a 'make install' was neccessary.

4.19	[KK 2004-05-25] - Added RPM build.
			- Installed manpages are now compressed (also
			  those of getline).
			- Dropped version ID in installed library name,
			  RPM installs will handle that.

4.18	[KK 2004-04-27] - sf_sleep() added

4.17	[KK 2004-04-19] - Documentation updated (text on environment variables
			  during installation added).
			- Docs on some C functions (rc_read and so on) updated.
	
4.16	[KK 2003-12-16] - Fixed /dev/syslog/*/* logging via
			  logmsg(). Services local0 thru local7 were
			  handled incorrectly.

4.15	[KK 2003-11-18] - ' encoding added to html_(un)escape()
	
4.14	[KK 2003-11-14] - ml_encode() / ml_decode() have a wider range
			- html_escape() / html_unescape() now support
			  numeric codings as in {

4.13    [KK 2003-10-31] - get_log_setup() function implemented.

4.12	[KK 2003-10-09] - md5() function implemented.

4.11 	[KK 2003-10-01] - /dev/syslog/FACILITY/LEVEL implemented for
			  log_setup() and family.

4.10	[KK 2003-09-09] - Small code changes in C/C++ sources to make GCC
			  3.3 cleanly compile.
			- C++ libs don't get built any more for FastCGI
			  support. The C libs still do though, that's still
			  being used.
			- logmsg() can now be called with 0 as the format
			  string, in that case, only log rotations will occur.

4.09	[KK 2003-06-17] - Bugfix in fgetline(). The old function wouldn't
			  properly handle extremely long lines that were
			  not \n-terminated (e.g., a very long last line
			  of a file).
			- Bugfix in elib_require().

4.08	[KK 2003-06-16] - base64_encode() and base64_decode() rebuilt,
			  implemented and documented
			- Top level Makefile changed: "make install" will
			  now just make the libs, a separate "make
			  install_doc" is needed to install the manpages

4.07	[HK 2003-05-13]	- encode_base64 () added
                        - decode_base64 () added

4.06	[KK 2003-04-07] - ps_makesnapshot() and ps_freesnapshot() added:
			  /proc-based process table analyzers

4.05	[KK 2003-01-30] - rc_setval() implemented.
			- Small fix in logmsg().

4.04	[KK 2003-01-29] - Documentation update in rc_read().

4.03	[KK 2003-01-09] - Makefile slightly changed.
			- rc_clean() implemented.
			- btn_*() and bth_*() implemented. Finally, some
			  generic binary tree / hash functions. Also hash()
			  and hashbuf() are here.			  

4.02	[KK 2003-01-09] - Added sig_catch() to C library.

4.01	[KK 2003-01-02] - Added INCLUDE depth testing to rc_read(). This
			  avoids endless nesting.

4.00	[KK 2002-12-04] - Conversion to shared object usage. The C functions
			  are installed as libe.so (or libefcgi.so, for
			  FastCGI), the C++ classes are installed as
			  libepp.so (no FastCGI version available). The libs
			  are installed with a version suffix, symlinks point
			  to the right version.
			- Source tree restructured.
			- elib_version() and elib_require() implemented.
			- Test runs implemented. LD_LIBRARY_PATH gets set
			  during these runs, incase /etc/ld.so.conf isn't
			  active yet.
			- Docs updated.

3.22	[KK 2002-11-27] - cmm_blocksize() implemented.
			- Default tmpfile prefix changed to /tmp/e; this
			  was: /tmp/e- (note the hyphen).

3.21	[KK 2002-11-26] Makefile changed. The FastCGI versions are only
			made when FastCGI is available on the system.

3.20	[KK 2002-11-20] - copyfile(): return value CP_DST_IS_NO_FILE
			  implemented
			- movefile(): implemented

3.19	[KK 2002-11-19] - Zipping taken out of log_rotate(). We would probably
			  prefer more allocation of disk space, than load on
			  the CPU. (Previously the history files would be
			  gzipped.)
			- Some embedded documentation in C sources fixed.

3.18	[KK 2002-11-18] - Environment checks implemented, the current
			  environment is checked during a make.
			- tmp_fileprefix(): a / is appended to the prefix
			  if the argument name is a directory.
			- tmp_fopen() implemented

3.17	[KK 2002-11-11] - Bugfix in filetype(): fclose() was missing...

3.16	[KK 2002-10-29] - Separate function log_rotate() implemented.
			  logmsg() now rotates via this one.

3.15	[KK 2002-10-28] - rc_read() expanded: INCLUDE directive added,
			  environment variable RC_NAME implemented to overrule
			  any filename to source
			- All-in-one manpage e-lib(3) added.

3.14	[RE 2002-10-23]	e_zip_threshold renamed to zip_threshold.

3.13	[KK 2002-10-23] "make upload" now also sends the version ID and the
			ChangeLog.

3.12	[KK 2002-10-22] Updated docs for zip_threshold().
			Makefile changed: "make upload" added, conforming
			to the public area of e-tunity.com.

3.11	[KK 2002-10-11] "make clean" now removes stale document results

3.10	[KK 2002-10-07] lap_start() and family now also log the duration
			(elapsed time), not only CPU ticks

3.09	[KK 2002-05-31] copyright() modified to show the right years

3.08	[KK 2002-05-27] Documentation: manpages are now named just like the
			contained C function or the contained class.

3.07	[RE 2002-05-21] Documentation changed to man format.

3.06	[KK 2002-05-16] More accessors for eStr made (using an eStr*
			argument).

3.05	[KK 2002-05-10] eStrArr changed again: (eStr const *) arguments
			also supported.

3.04	[KK 2002-05-08] eStrArr class changed: push(), add(), unshift()
			all support (char const *) arguments now

3.03	[KK 2002-05-01] Minor bugfix in the make process. 

3.02	[KK 2002-04-25] The "make install_lib" doesn't invoke e-libman
			anymore to install PMMP's. This is now done during
			"make documentation".

3.01	[KK 2002-04-16] Added eStrArr::sort(), eStr::strip()
			Bugfix in the wrapping during eProgram::msg().

3.00	[KK 2002-02-01] Merged e-lib (C-style) and epp-lib (C++ style)
			into new e-lib. Both are in two tastes: plain and
			FCGI.

Original C++-style epp-lib ChangeLog:
-------------------------------------
1.10	[KK 2002-01-23] eHttpRequest::empty() implemented

1.09	[KK 2002-01-21] eHttpRequest now also handles HTTP/1.0 type requests
			with "close" connection. This is used by e.g. htdig.

1.08	[KK 2002-01-17] Classes eHttpHdr and eHttpRequest added.
			"make clean" cannot really clean up, but touches
			all cc and h files, so that a subsequent "make" is
			forced to recompile.

1.07	[KK 2002-01-15] eProgram::cmdline(char *switches, char *cmd)
			implemented

1.06	[KK 2002-01-14] eStrArr enhanced.

1.05	[KK 2002-01-02] ostream support for eStr added

1.04	[KK 2001-12-27] in eStrArr: proper includes added, const added
			for the "get" accessor, as in eArray.

1.03	[KK 2001-12-20] in eProgram: wrapmsg() implemented, and wrapping
			mechanism for msg() calls

1.02	[KK 2001-12-18] in eProgram::cmdline(): options that are specified
			more than once result in an error.

1.01	[KK 2001-12-17] eStrArr added

1.00	[KK 2001-12-01] First version.


Original C-style e-lib ChangeLog:
---------------------------------
2.02	[KK 2002-01-23] Make target "install_lib" is new. The "install" also
	makes and installs the HTML docs.

2.01	[KK 2002-01-23] html_unescape() implemented

2.00	[KK 2002-01-22] Public release. Also:
	- HTML generation revisited
	- tmp_file(): compilation symbol ETMP gets #defined if it wasn't
	  so already

1.44	- cmm_setlevel(-1) works again, that code somehow fell over. The
	  internal CMM_ELIB_LEVEL is now -2.

1.43 	- Check for positive size implemented in cmm_malloc() and
	  cmm_realloc().
	- Implemented: log_wrap().

1.42	- C++ wrapping of all C-functions implemented.
	- e-mail adress of copyright() changed to e-tunity.com, years updated

1.41	- copyfile() changed: last 2 arguments can be NULL pointers, in which
	  case the counts of read/written bytes are not updated.
	- Bugfix in tmp_file(): the temporary file prefix (directory) is now
	  stored under CMM level CMM_ELIB_LEVEL. This makes tmp_file() c.s.
	  re-entrant for programs that do garbage collection.

1.40	rc_*() functions now expand variables, in the format $(var). This
	is done right after a file has been scanned in rc_read().

1.39	"Make check" now disregards *zip*.c from checking. This is because
	the headers under minilzo/ don't grok in e-lint (unsupported typedef
	syntax).

1.38	Message generation through msg() always results in flushing stderr.

1.37	ml_encode() and ml_decode() added

1.36	Bugfix in zip_decompress(). The compression/decompression would fail
	when the exact same buffer lengths would be reached.

1.35	stricmp() rewired. Previously the compared buffers would be allocated
	in memory, this is not necessary.

1.34    Added recognition for XML filetype (.xml)

1.33	Bugfix on 1.32.

1.32	Persistent CMM level for "e-lib internal usage" implemented. This
	level is used in: log_setup(), set_progname(), tmp_fileprefix(),
	fin_push() fin_read(), lap_start (), rc_read(), tmp_file(),

1.31	- Cosmetic change in cmm_realloc().
	- Both normal and FCGI libs are created now.

1.30 	Gigantic speedup in cmm*() achieved by using a hash table that
	accesses linked lists of memory blocks. 

1.29	- FCGI build is now optional, via a macro in the Makefile.
	- Bugfixes in cmm*().

1.28	- Global macros C_DEBUGGING, C_OPTIMIZING etc. used in the
	  Makefile's CFLAGS settings for better portability
	- Installation of the docs to $ELIBMANDIR first removes old *.pmmp's.
	  That ensures that old functions's docs are removed.
	- dp_*() functions removed, since the datapool for say Dantras is now
	  in MySQL. Besides, these functions don't belong in e-lib anyway.
	- cmm*() functions implemented.

1.27	- ANSIDATE and ANSITIME macros in the Makefile changed for better
	  system independence.
	- MySQL functions removed from e-lib (meta*()).

1.26	In image_size(): the JPEG sizing now looks for the right frame
	marker 0xc0 (previously: 0xc*); this means that we need the FIRST
	frame to determine the image size. This supports, e.g., HyperSnap
	jpegs.

1.25	log_dontflush() added

1.24	Double build implemented: once a single version, once a FCGI-enabled
	library construction.

1.23	Filetypes .doc (Office document) and .rtf (Rich Text format) added.

1.22	- supply_ext() added
	- suggest_ext() added

1.21	- tmp_fileprefix() added
	- script "makehtml" enhanced

1.20	- copyright() notice changed: build-information now includes username
	  and hostname and build timestamp
	- cgi_setpostfile() added

1.19	- skipline() function added
	- multipart CGI processing added

1.18	equal() function renamed to str_equal(), and the semantics have
	somewhat changed. The function now returns the number of matched
	chars. To avoid problems, the old name no longer exists in the
	library.

1.17	zip_*() functions and subdirectory minilzo/ added.

1.16	Makefile adapted to allow "make check".

1.15	Added: stab_popstr(): pops a string off a string table stack

1.14	Checks for __E_LINT__ added in e-lib.h. When detected, __GNUC__ gets
	undefined so that GNU extensions are suppressed in the included
	headers.

1.13	copyright_setoutput() added

1.12	stab_addsprintf() added

1.11	"Out of memory" handling added: xstrdup(), xmalloc(), xrealloc(), with
	the auxiliary functions out_of_memory() and set_memerr().

1.10	stab_maxlen() added

1.09	Make html calls "e-libman -1" via the script makehtml. The pages are
	now cleaner..

1.08	- Makefile enhanced.
	- "make html" added as option for the make process; shell script
	  "makehtml" will produce the e-libman-like pages in a subdir html.

1.07	- Installation of *.pmmp now creates a TimeStamp file.
	- Function cgi_getdata() "un-escapes" both the CGI variable name and
	  its value.
	  
1.06	Textual information of some functions adapted (for e-libman).

1.05	Making order changed. The installation of pmmp files (poor-man's man
	pages) occurs now during the install phase. NOTE THAT e-libman is
	needed for that... so the "make install" in the e-libman directory
	must occur before the "make install" here. The top-level Makefile
	should take care of that.
	
1.04	msg_and_log() added

1.03	checksum() added

1.02	copyfile() added

1.01	log_setup() overrules its arguments via the environment ELOGFILE etc.,
	see "e-libman log_setup"
	
1.00	First issued version number. Versioning is now implemented also
	in the e-lib and displayed via copyright(). Previous e-lib versions
	do not use an internal versioning.