
Release Version 2.7:

add: size verification of structs MCB & PSP (checks alignment pads)
bugfix: unless_segm(segm)
add: appInitEx()
bugfix: psp.h: lastStack is far pointer
bugfix: suppl.h: dpeekc/b(): wrong (idx)
bugfix: to*Upper(): accept negative characters
add: env_clear()
chg: suppl_testMemChain() to use mcb_walk() and internal check of MCB
add: mcb_first()
bugfix: (void far*)_fnormalize() ignores the macro'ed (void huge*) cast
bugfix: _fstrcpy(): uses length of destination
fix: env_forall(): if the callback function removes the current
	variable and the environment becomes shortened, the loop stops instead
	of to advance to the strings area
add: StrFUpr(), MemFUpr()
fix: _getdcwd(): warning about getdisk() for non-Micro-C
add: default segment (env_dfltSeg and env_setDfltSeg)
fix: dfnsplit(): removed warning about significant digits in StrLeft()
chg: removed NULLs to prevent NULL problematic with Turbo C++ v1
	Requires more care calling non-prototyped functions.
bugfix: _fstrchr(x, 0) does not find the '\0'
add: _fmemchr
chg: solved several unsigned vs. word types; "word" used for all DOS-
	releated 16bit values
ren: mcb.h: renamed OFF_MCB_* --> MCB_OFF_* for cleanessness
bugfix: dfnsearch(): empty paths are root dir e.g. 2nd of "A:\;;A:\DOS"
fix: dfnmerge(): root directory is stripped on "\q" paths
bugfix: getopt*.*: replaced to avoid licensing problems
fix: fcopy.c: while() condition wrong [Ron Cemer]
add: dfnfull?.c: dfnfullpath() := return fully-qualified path, remove any
	embedded dot-only components, such as "." and ".."; includes a
	Win9x-style variant supporting multiple dots, e.g. "....."
bugfix: COMPILE.BAT: Dyn_src ignored, dynamic soruces removed, even ??fc_*.c
chg: TC+1 compatibly: Remove inline assembly (Ron Cemer)
add: mark the paces where warnings occure
add: debug subsystem
bugfix: Fposcmp(): If abs(pos1 - pos2) > 32767, the return value is random
add: strend() --> returns the address of the NUL byte of a string
chg: StrAppend() --> StrAppQStr()
add: StrQuote(), StrUnquote()
bugfix: Strspn(): if any parameter is NULL, returns NULL now
bugfix: MemiCmp(): returned wrong sign
bugfix: dfnstat(): Win95 LFN's entry never or invalidly detected
add: dfndelim() & dfndelim2()
chg: environ.h: mcb_toenv() --> macro mcb_env()
fix: cfg_osen.c: cfg_ostkEnum(): If output stack empty --> random return value
fix: strnum(): '0x' prefix detection fails
chg: long*(): Except longcmp() all functions are void; for portable subsys
bugfix: Erealloc(): if len == 0, the program is terminated erroreously
add: Fcopyi() & Fcopyl() & Fcopybuf()
chg: Fcopyto(): 'topos' must contain a valid position returned by Fgetpos()
add: supplio.h: Fpos2dword() & Fppos2dword(): Extract (dword) pos from(fpos_t)
chg: env_newsize() renamed into env_setsize()
bugfix: env_check(): accepts no segm==0, as it is standard
sub: dynstr.h: STR_SAVE_MODES, not used anymore (StrSaveTokens() removed)
chg: dynstr.h: STR_SAVED_TOKENS is its own type now
bugfix: StrTok*(): if(st) effects first assignment only
bugfix: StrTail(): string is strdup()'ed two times
bugfix: _fStriCmp(): temporary storage into (char) is unportable
bugfix: StriCmp(): sign is inverted
bugfix: StriCmp(): accepts no NULL parameters
add: DFN_LFN to dfn.h and dfnstat()
bugfix: UNC-aware dfnmatch2(): function name wrong
sub: removed "Target compilers" note everywhere
fix: dfnstat(): returns DFN_DIRECTORY on "X:" and "X:\"
chg: No SUPPL function will invoke openlog() automatically
bugfix: DFN_LABEL wrong; DFN_SYSTEM missing
fix: cfgASBoolean: bad function name 
fix: cntry.h: 'char' members could be treated signed
add: syslogo(), syslogv()
add: SUPPL_LOG_MEMORY & *alloc/free/strdup replacements
add: SUPPLDBG.H	as last #include into all *.C files
fix: openlog() prevents recursive calls
fix: syslog_printv() accepts syslog_logfile == NULL
chg: syslog_openmode --> []
bugfix: dfnexpand(): fname == "" --> fname := "."
bugfix: dfnsearch(): Searching root instead of '.' if no search path
add: syslog subsystem
fix: spelling in comments etc.
bugfix: not all SUPPORT_UNC_PATH macros correct
add: INI file random access subsystem
add: Fmaxbuf()
add: Fcopy(), Fcopyto()
add: Fposcpy(), Fposcmp()
add: memzero(): unportable memory zero'ing function
add: INI file writing functions
fix: dfnstat() uses wrong register for result
add: dfnfreplace(), dfnbakname()
chg: renamed *.inc into *.loc
add: Fgetline() & Egetline()
sub: cfgfile subsystem to be added later
add: FFget()/FFput()
add: appName subsystem
fix: Esetsize() removed warning because of free()
fix: some typos
add: secure string functions
add: Esetsize()
chg: F_tmpfile(): returns NULL if fnam == NULL (to simplify Ftmpfile())
add: F_tmpfile() as Ftmpfile(), but open a given filename
fix: ostkWrFile(): save newly created output structure into putArg
add: output stack and functions for memory & file arg list
sub: cfg_addArgToList(), cfg_getArgFromList(), cfg_addItemToList()
add: Fxcloseall()
fix: Ftmpfile(): to set the "istmp" attribute
chg: Fxopen() renamed to F_xopen() and returns the extended attributes
	added new Fxopen() to call F_xopen()
fix: cfg_rspwr(): Eget() instead of Eput()
fix: env_fetch(): ignoring segm==0, returning variable name as well
chg: cfgSplitArg() & cfgSplitBuffer() independed on what string is
	to be splitted
fix: getopt(): longname == NULL
fix: pushargv: wrong parameters in structure
fix: getarg(): C(_stk) == NULL --> return NULL
fix: getopt(): S(buf)[ ] = new char
fix: type conflict appVar() <-> insVar
add: dpeekc(), dpeekb(), dpeekw()
add: Eresize()
chg: env_change() to use env_ovrVarOffset() --> replaced variables
	remain at the position they were before
add: env_ovrVarOffset(), env_insVarOffset(), env_appVar()
sub: env_addVar() [replaced by env_appVar()]
bugfix: DOSalloc(): add FreeDOS compliant setting of flags prior call DOS
chg: toupperx.c: to use nlsInfo(); added toLower()
add: cntry.?: nlsInfo(): NLS information provider
add: fpos_t/fsetpos()/fgetpos() to PAC
bugfix: DOSalloc(): If called with length == 0, the allocation
	strategy is not resetted
bugfix: env_newsize(): Grow block, if fails completely, the old environment
	was destroyed unneceesaryly
add: getbootdisk()
add: Ftmpfile(), Ftmpnam(), Etmpfile()
add: dfnstat(), dfnmktmp()
add: dfnwrdir(), dfnstat(), dfnmkfile()
fix/chg: StrTrim(): returns "s" if realloc() fails
fix: _getdcwd(): removed Carry()
bugfix: dfnsqueeze(): In non-UNC mode, there was nothing actually
	sequeezed, except the slashes were flipped
add: env_fetch(): DOS-ish getenv()
add: _fdupstr(): Duplicates far string into local heap
add: ff*.c/supplio.h: F*(), equal (FILE*) functions for Micro-C & ANSI C
add: gm_*.c: get memory, wrappers of malloc() and assoc. functions
chg: getopt.c: to use msgs.h
add: msgs.h: shared MSGLIB/internal message handling
add: StrChr(): searches for a character within a string
add: StrWord(): strips leading & trailing whitespaces and trim string
bugfix: StrTrim(): if realloc() fails, no NULL was returned.
add: getoptx.c: This file always includes the version control information
	of GETOPT.C in order to be compared with external getopt() supplements
chg: getopt.c: Added support for MSGLIB to getopt() and substutution for
	non-MSGLIB environments; by default no MSGLIB is supported
fix: spelling

Release Version 2.6:

fix: incompatiblies Watcom to other compilers
chg: added Watcom C v10.6
chg: include RCS IDs if RCS_Version is defined (rather than !defined(lint))
bugfix: dfnmerge(): doesn't added '\' if root directory && no name given
chg: dfnsearch(): always return absolute paths or paths from PATH
bugfix: dfnsearch(): incomplete paths sometimes failed
bugfix: dfnsearch(): "c:\path\fnam" doesn't work
chg: splitted StrSaveTokens() into StrTokSave() & StrTokRestore()
add: StrTokStop(): stop StrTokenize() cycle (next call to it returns NULL)

Release Version 2.5:

chg: getopt() to not depend on msglib
add: portable.h: getvect(), setvect(), isr
chg: moving _f*() memory/string function declarations into fmemory.h
bugfix: env_size.c: env_newsize(): shrinking causes unpredictable results
add: _fmemcmp(), _fnormalize(), _fmemmove() for PAC
add: dta.c/suppl.h: setdta()/getdta()
add: suppl.h/filefind.c: findfirst()/findnext()/ffblk for PAC
add: _getdcwd.c: Pacific C version
add: suppl.h: settings for Pacific C, incl. (struct REGPACK)
chg: all *.c files include INITSUPL.INC as the very first
	line after the welcome header. This will setup various
	compiler depend macros (e.g. _PAC_NOCLIB_)
add: setdisk.c, getdisk.c, osvers.c: for Pacific C
add: portable.h: various settings: Support for Pacific C v7.51

Release Version 2.4:

bugfix: getopt.c: Micro-C complains about comment in #include
add: dfnmatch(): check if a filename matches a pttern, DOS style
add: dfnmatch2(): check if a filename matches a pttern, Win32 style
ren: *MemCmp() --> *MemiCmp()
bugfix: env_resize(): growing/shrinking swapped
bugfix: env_resize() and assoc. fail on length == 0 or non-existent
	environment segments

Release Version 2.3:

fix: suppl.h: memcmpi -> memicmp
fix: dossize.c: In Micro-C mode the INT 21h was called with random values
chg: env_nullStrings(): Eliminated the Missing Prototype warning
fix: env_sub.c: segm must >>NOT<< be zero :)

Release Version 2.2:

add: env_nullStrings()
fix: env_shell(): using MCB number instead of PSP
fix: dfnumerge(): double backslash with UNC drive & root path
add: StrCString(), toxdigit(), isodigit()
add: UNC path support to the dfn*() functions
add: StrLeft(), StrRight(), StrMiddle(), StrTail(), StrBeg()
add: dfnsearch(), StrTokenize(), StrSaveTokens()
add: Carry() for Micro-C only
chg: dfnpath(): use _getdcwd() for Micro-C
add: _getdcwd() for Micro-C only
fix: dfnpath(): getdrive() -> get_dir()
fix: suppl.h: invokeDOS() struct REGPACK typedef for Micro-C
add: StrAppend(), StrAppChr()
fix: env_replace(): the 3rd argument as length with native CREATE mode
chg: DOSalloc(): update the name field of the MCB to the caller's one
add: StrStrip(), StrChar()
add: toFUpper(), MemFCmp(), _fMemFCmp()
add: dfnpath(), dfntruename()
chg: toUpper(): retreive the upcase table only once
add: _fStrCmp(), _fMemCmp(), StrCmp(),& MemCmp()
add: toUpper()
add: env_matchVar()
add: env_dupvar() & dupvar()
chg: env_switch() -> env_replace()
chg: env_strinsert & env_strput: more efficient when appending a new string
fix: env_strcpy: stringnr must be < env_strings()

Release Version 2.1:

chg: Makefile: automatically detect, when switching compiler or mem model etc.
fix: mcb_walk: evaluating _FLAGS after destroying them by a compare
add: env_noSpace: check if environment can hold another variable
fix: env_change: don't delete the variable if environment too small
fix: env_strput: check env size, f a new string is appended
chg: environ.h: prototype: putenv(char *var) to conform to DOS quasi-standard

Release Version 2:

fix: revised: segm == 0 on all environment functions
add: the environment string functions
fix: getoptg(): last option preserves the boolean state flag if MARKEMPTY is set
add: DOSalloc(), addu()
chg: newenv(), sizenv()
add: getopt() functions
fix: (signed) cast bug in suppl.h

Initial revision
