Change Log

# Documentation Conventions

Each change or addition will be prefixed by the module name. In cases where both C/C++ and TCL code is being explained, the TCL code references will contain the prefix tcl/ before the module name. Unix shell scripts will be prefixed with script/.

# September 17, 2006

Changes and additions in the C/C++ GPL package designated as 1.36-2006.09.17

## New Items

- ialive.c - Internet connection test program with Bbuuzzb database support
- sched.c - personal schedule and budget program with Bbuuzzb database support
- script/mkialive - build single user ialive application
- script/mkialivem - build client/server ialivem application
- script/mksched - build single user sched application
- script/mkschedm - build client/server schedm application

## Modified Items

- dbeng.c - modified dbeng_ll_new_table to open only if tid flag is positive
- dbeng.h - changed DBENG_VERSION
- db.c - changed c_new_table to only display tid if open was requested
- iexlib.c
  - removed calc of scale and call to fxp_scale in iexlib_import_conv_wind_dir
  - fixed bug in iexlib_import where db_write was called when the import ASCII line was empty
- daymvdel.c - modified all or nothing processing by creating functions delete_all_files and move_all_files
- ipcomm.c - commented out calls to log_file_date unless there is an error
- script/mkall
  - added build of ialive
  - added build of ialivem
  - added build of sched
  - added build of schedm

# August 19, 2006

Changes and additions in the Tcl GPL package designated as .64-1.35-2006.08.19

## New Items

- tcl/dos2unix.tcl - text convesion application

## Modified Items

- tcl/ialive.tcl - changed to assume nothing received if no output from the ping command
- tcl/datime.tcl - fixed bug in proc juldate by calling int_remove_lz before addition

# August 7, 2006

Changes and additions in the Tcl GPL package designated as .63-1.35-2006.08.07

## New Items

- tcl/path.tcl - path parsing (split and join) API
- tcl/ialive.tcl - Internet connection test application
- tcl/daymvdel.tcl - file/tree move/delete application

## Modified Items

- tcl/stdhead.tcl
  - added constant OB for open square bracket
  - added constant CB for close square bracket
- tcl/spec.tcl - added proc catch_exec

# June 19, 2006

Changes and additions in the Tcl GPL package designated as .62-1.35-2006.06.19

## New Items

- tcl/wlib.tcl - weather calculation/conversion API
- tcl/iexlib.tcl - database import API
- tcl/iex.tcl - single user database import application

## Modified Items

- tcl/cupcake.tcl
  - added code to place current file name in the window title when file name is passed as an argument
  - added code to initialize file_changed and save_name elements of the textedit array when the file name is passed as an argument
  - added code to put the load directory name into the lastdirectory element of the prefs array when the file name is passed as an argument

# May 13, 2006

Changes and additions in the Tcl GPL package designated as .61-1.35-2006.05.13

## New Items

- tcl/dbstress.tcl - single user database stress application

## Modified Items

- tcl/appinit.tcl - added exit log message to appinit_remove_name
- tcl/dbeng.tcl
  - changed db_put_subfield to allow for no existing record
  - changed db_put_subsubfield to allow for no existing record
- tcl/dbmess.tcl - changed DBENG_VERSION
- tcl/dbengsrt.tcl
  - fixed bug in dbeng_sort_match_tables in call to db_io_code_log
  - fixed bug in dbeng_sort_rl_delete that defined global dbengsrt_sort_memory_in_use incorrectly

# April 16, 2006

Changes and additions in the Tcl GPL package designated as .6-1.35-2006.04.16

## New Items

- tcl/db.tcl - single user command line application for the Bbuuzzb database

## Modified Items

- tcl/dbeng.tcl
  - fixed bug in db_delete_subsubfield that failed to check range
  - changed dbeng_ll_new_table to open only if tid flag is positive
  - added global DBENG_NO_SUCH_TID to db_get_is_table_locked
- tcl/parse.tcl - added -- to switch in command_words
- tcl/dbmess.tcl - changed DBENG_VERSION
- tcl/dbcomm.tcl - added DBCOM_CONFIG_SET_LOG which was missing
- tcl/logman.tcl - changed logman_start by removing braces
- tcl/dbengcat.tcl - renamed dbeng_catalog_list to db_get_catalog_list
- tcl/dbengsrt.tcl - fixed bug in db_set_sort_max_open_bin range check

# March 22, 2006

New Tcl modules added that make up the package .5-1.35-2006.03.22.

- tcl/dbgen.tcl - single user database random data generator application

# March 18, 2006

New Tcl modules added that make up the package .4-1.35-2006.03.18.

- tcl/dbengsrt.tcl - database sort module

# March 8, 2006

New Tcl modules added that make up the package .3-1.35-2006.03.08.

- tcl/dbfxp.tcl - database fixed-point read/write API

# March 3, 2006

Changes and additions in the GPL package designated as 1.35-2006.03.03

## New Items

- daymvdel.c - application to remove/move files by date age
- path.c - path parsing API
- path.h - path parsing API header
- script/mkdaymvdel - build daymvdel application

## Modified Items

- flsocket.h - added IPC_HEAD_SIZE
- ipcomm.c
  - changed function ipc_recv to receive data header before actual data
  - changed function ipc_send to send data header before actual data
- script/mkall - added build of mkdaymvdel
- script/cclib - added compile of path.c

# October 16, 2005

New Tcl modules added that make up the package .1-1.34-2005.10.16

- tcl/cupcake.tcl - Cupcake editor application main module
- tcl/prefsdlg.tcl - Cupcake editor preferences dialog module
- tcl/cupcalc.tcl - Cupcalc expression calculator application module
- tcl/datagen.tcl - Datagen application
- tcl/fxpstres.tcl - Fixed-point stress application
- tcl/appinit.tcl - Application initialization/notification API
- tcl/comcode.tcl - Common codes module
- tcl/conv.tcl - Math conversion API
- tcl/datime.tcl - Date/time API
- tcl/dscan.tcl - Directory scanning API
- tcl/fio.tcl - File I/O API
- tcl/fxp.tcl - Fixed-point math API
- tcl/logger.tcl - Personal logging API
- tcl/logman.tcl - Log manager API
- tcl/misc.tcl - Misc procedures
- tcl/parse.tcl - String parsing API
- tcl/prefs.tcl - Save/load prefs file API
- tcl/spec.tcl - Procedures specific to Tcl
- tcl/stdhead.tcl - Common intro
- tcl/cutcopy.tcl - Cut/copy/paste Tk API
- tcl/finddlg.tcl - Find dialog Tk API
- tcl/fontdlg.tcl - Font dialog Tk API
- tcl/gotodlg.tcl - Goto line number in text widget Tk API
- tcl/menu.tcl - Add items to menu Tk module
- tcl/menubar.tcl - Create base menu Tk module
- tcl/pathdlg.tcl - Dialog to get a path from the user Tk module
- tcl/tw.tcl - Various text widget procedures Tk module
- tcl/winprint.tcl - Print a file under Windows from a text widget Tk module
- tcl/dbcomm.tcl - Database command code definition module
- tcl/dbeng.tcl - Main bbuuzzb engine module
- tcl/dbengcat.tcl - Database catalog API
- tcl/dbengcfg.tcl - Database configuration API
- tcl/dbiocode.tcl - Database error translation module
- tcl/dbmess.tcl - Database code definition module

# July 24, 2005

Changes and additions in the GPL package designated as 1.34-2005.07.24

## New Items

- logman.h - logging manager API header
- logman.c - logging manager API
- armtree.h - directory tree removal API header
- armtree.c - directory tree removal API
- rmtree.c - application to remove directory trees
- script/mkrmtree - build rmtree application
- script/chasyslog - compile a module that contains references to sys_log

## Modified Items

- enhlib.h - added include of logman.h
- dbmess.h
  - added define DBENG_NO_CATALOG
  - added define DBENG_SEND_GET_AUTOPACK
  - added define DBENG_SEND_SET_AUTOPACK
  - added define DBENG_SEND_SET_LOG
- dbcomm.h
  - added define DBCOM_GET_AUTOPACK
  - added define DBCOM_SET_AUTOPACK
  - added define DBCOM_CONFIG_CLIENT_GET_LOG
  - added define DBCOM_CONFIG_CLIENT_GET_LOG_FLAG
  - added define DBCOM_CONFIG_CLIENT_SET_LOG
  - added define DBCOM_CONFIG_CLIENT_SET_LOG_FLAG
  - added include of fio.h
  - changed define DBCOM_MAXCOMLINE to same as BUFSIZE (defined in fio.h)
- dbeng.h
  - changed record_count in dbeng_table to active_record_count
  - added dbeng_table member deleted_record_count
  - added dbeng_table member record_status
  - added additional parameter to prototype dbeng_count_rec
  - added additional parameter to prototype dbeng_rec_count
  - added prototype dbeng_set_record_count
  - added autopack member to dbeng_table
  - added define DBENG_SYSTABLE_MAX_DELETED
  - added prototype dbeng_autopack
  - added prototype dbeng_set_autopack
- dbengcat.h
  - added define DBENG_CATALOG_FIELD_AUTOPACK
  - added new structure dbengcat_details
  - added prototype dbeng_catalog_table_details
  - added prototype dbeng_catalog_init_table_details
  - added prototype dbeng_catalog_term_table_details
  - removed prototype dbeng_catalog_rep_list
- dbengrep.h - added a parameter to prototype dbeng_rep_rll_load
- dblocal.h
  - added prototype db_get_catalog_list
  - changed parameters in prototype db_count
  - added parameter to prototype db_get_rec_count
  - added deleted_count parameter to function db_count
  - removed allopt parameter in function db_count
  - removed save and restore of process_deleted flag in function db_count
  - added deleted_count parameter to function db_get_rec_count
  - removed allopt parameter in function db_get_rec_count
  - added prototype db_get_autopack
  - added prototype db_set_autopack
- dbcs.h
  - added parameter to prototype db_count
  - removed allopt parameter in prototype db_count
  - added parameter to prototype db_get_rec_count
  - added prototype db_get_autopack
  - added prototype db_set_autopack
- dbcscfg.h
  - added prototype db_config_client_init
  - added prototype db_config_client_set_log
  - added prototype db_config_client_set_log_flag
  - added prototype db_config_client_get_log
  - added prototype db_config_client_get_log_flag
- sys_log.h
  - added prototype sys_log_console
  - added prototype sys_log_get_console
- datime.h
  - added prototype juldate
  - added prototype datdif
- dscan.h - added new define DSCAN_TYPE_SYMLINK
- appinit.c
  - fixed bug in function appinit_get_name that ignored whether appinit_apname was NULL
  - changed all logging calls from log_file_date to logman
- parse.c
  - changed function getyn to use fgets instead of gets
  - fixed logic error in function rpad
  - plugged memory leak in function ll_worddel
- logger.c - changed default value of p_console_output to FALSE
- fio.c
  - changed function unique to use sequential count for file name instead of a random number
  - added check for proper directory name in function unique
  - fixed ifdef in function qrename
- conv.c - changed all logging calls from log_file_date to logman
- dscan.c - changed all logging calls from log_file_date to logman
- fxp.c - changed all logging calls from log_file_date to logman
- misc.c - changed all logging calls from log_file_date to logman
- timesapi.c - changed all logging calls from log_file_date to logman
- sconnect.c - changed all logging calls from log_file_date to logman
- slconfig.c - changed all logging calls from log_file_date to logman
- sloc.c - changed all logging calls from log_file_date to logman
- dbiocode.c
  - added text of error message DBENG_NO_CATALOG
  - changed all logging calls from sys_log to logman
- dbeng.c
  - changed counting logic in dbeng_count_rec
  - added a parameter to function dbeng_count_rec
  - saved process_deleted table flag in function dbeng_count_rec, set the process_deleted table flag high before counting records and restored original process_deleted table flag after counting
  - changed all calls to function dbeng_count_rec
  - changed all references to dbeng_table member record_count to either active_record_count or deleted_record_count
  - changed function dbeng_rec_count by adding a parameter
  - added function dbeng_set_record_count
  - modified function dbeng_ll_open_table to load the autopack value from the catalog (non-systable) or DBENG_SYSTABLE_MAX_DELETED (systable)
  - added function dbeng_autopack
  - added function dbeng_set_autopack
  - added logic to autopack in function dbeng_delete_recd
  - changed all logging calls from sys_log to logman
  - modified function dbeng_ferror to use logman functions
  - fixed bug in dbeng_ll_new_table where output table name may not be large enough
  - changed dbeng_write_recd to create a new record when attempting to re-write a record marked for deletion
  - plugged memory leak in function dbeng_ll_open_table when the open failed due to no catalog entry
- dbengcfg.c
  - changed dbeng_config structure to always contain catalog information
  - changed dbeng_config_get_catalog to return DBENG_NO_CATALOG if catalog name has not been loaded
  - automatically turned on catalog in function dbeng_config_read in single user mode if a catalog file name is present in the config file
  - changed all logging calls from sys_log to logman
  - changed function dbeng_config_set_log so that it no loger attempts to validate the file/path name of the log
  - removed private function dbeng_config_valid_log
  - changed function dbeng_config_set_log_flag so that it activates and deactivates logging
  - added include of appinit.h
- dbengcat.c
  - added function dbeng_catalog_init_table_details
  - added function dbeng_catalog_term_table_details
  - added function dbeng_catalog_table_details
  - made function dbeng_catalog_rep_list private
  - changed all logging calls from sys_log to logman
- dbengrep.c
  - added a parameter to function dbeng_rep_rll_load
  - modified function dbeng_rep_init to call dbeng_catalog functions to acquire replication list details
  - changed all logging calls from sys_log to logman
- dbengses.c
  - added support for DBENG_SEND_GET_AUTOPACK in function dbeng_session_should_rs
  - added support for DBENG_SEND_SET_AUTOPACK in function dbeng_session_should_rs
  - changed all logging calls from sys_log to logman
  - added support for DBENG_SEND_SET_LOG in function dbeng_session_should_rs
- dbengsrt.c
  - changed all logging calls from sys_log to logman
  - changed dbeng_sort_compare to allow empty sort fields
- dblocal.c
  - added function db_get_catalog_list
  - added function db_get_autopack
  - added function db_set_autopack
  - changed all logging calls from sys_log to logman
- dbcs.c
  - added parameter to function db_count
  - removed allopt parameter in function db_count
  - added parameter to function db_get_rec_count
  - added function db_get_autopack
  - added function db_set_autopack
  - changed all logging calls from sys_log to logman
- dblocfg.c
  - enabled all catalog functions
  - changed all logging calls from sys_log to logman
  - removed logging activate and deactivate code in function db_config_set_log_flag
- dbcscfg.c
  - changed all logging calls from log_file_date to logman
  - modified to send command DBENG_SEND_SET_LOG
  - added function db_config_client_init
  - added function db_config_client_set_log
  - added function db_config_client_set_log_flag
  - added function db_config_client_get_log
  - added function db_config_client_get_log_flag
- dbfxp.c - changed all logging calls from sys_log to logman
- iexlib.c - changed all logging calls from sys_log to logman
- dscan.c - modified symbolic link detection code to use lstat
- sys_log.c (API)
  - added function sys_log_console
  - added function sys_log_get_console
  - added global sys_log_console_output
  - modified function sys_log to output the message to the screen if sys_log_console_output flag is high
  - modified function sys_log_nf to output the message to the screen if sys_log_console_output flag is high
- datime.c
  - added function days_in_month
  - added function isleap
  - changed all logging calls from sys_log to logman
  - added function juldate
  - added function datdif
- db.c
  - enabled all catalog commands in single and multi user modes
  - added support for DBCOM_GET_AUTOPACK
  - added support for DBCOM_SET_AUTOPACK
  - added support for DBCOM_CONFIG_CLIENT_GET_LOG
  - added support for DBCOM_CONFIG_CLIENT_GET_LOG_FLAG
  - added support for DBCOM_CONFIG_CLIENT_SET_LOG
  - added support for DBCOM_CONFIG_CLIENT_SET_LOG_FLAG
  - added include of appinit.h
  - added call to appinit_register_name from main
  - removed DEBUG define
  - recoded function term_app
  - added define APNAME
- dbsrv.c
  - changed function c_get_catalog_list to get list from db_get_catalog_list
  - changed function c_count to reply with active and deleted counts
  - changed function c_get_rec_count to reply with active and deleted counts
  - added support for send code DBENG_SEND_GET_AUTOPACK
  - added support for send code DBENG_SEND_SET_AUTOPACK
  - added processing for the send code DBENG_SEND_SET_LOG
  - added global console_output
  - changed function main to accept command line input for both TCP and QNX message passing IPC's
  - changed function parameters for parse_comline to accept all command arguments
  - changed all logging calls to use the logman API
  - added command line switch q to supress all console output
  - recoded function term_app
- dbstress.c
  - changed default table names to the logical names for single user and client/server
  - changed calls to db_count and db_get_rec_count to use new parameters
  - added support for DBCOM_GET_AUTOPACK
  - added support for DBCOM_SET_AUTOPACK
  - added support for DBCOM_CONFIG_CLIENT_GET_LOG
  - added support for DBCOM_CONFIG_CLIENT_GET_LOG_FLAG
- dbgen.c
  - added include of appinit.h
  - added call to appinit_register_name from function main
  - changed debug code to use the logman API
  - recoded function term_app
- sys_log.c (APP)
  - changed message when unable to receive data from client connection in process_request
  - code cleanup
- dumsockc.c
  - added include appinit.h
  - added include sliocode.h
  - added define APNAME
  - changed all logging calls to use the logman API
  - used the appinit API to register and remove application name
  - changed call in function main from gets to get_rec
  - changed commnad line buffer size to BUFSIZE
- dumsocks.c
  - changed all logging calls to use the logman API
  - recoded function term_app
- sockc.c
  - code cleanup
  - changed all logging calls to use the logman API
- socloc.c - code cleanup
- fxpstres.c
  - changed all logging calls to use the logman API
  - changed all requests for random numbers to use the rnd function (defined in misc.c)
- iex.c
  - added include of appinit.h
  - added call to appinit_register_name from function main
  - changed all logging call to use logman API
  - recoded function term_app
- iresolve.c - code cleanup
- timesync.c
  - changed all logging calls to use the logman API
  - added command line switch s to wait for system logging service
- script/include.linux
  - added pre-processor define HAS_SYSLOG
  - changed define LIBASE to point to new compiler directory
- script/cclib - added compile of logman.c
- script/mkdb
  - added module dbengcat.c
  - added module appinit.o
  - added module logman.c
  - removed module sys_log.o
  - removed module slogcode.o
  - removed module ip.o
  - removed module sloc.o
  - removed module sliocode.o
  - removed module slconfig.o
  - removed module sconnect.o
  - removed pre-processor define IPC
- script/mkdbm
  - added module appinit.o
  - added module logman.c
  - added define HASYSLOG
- script/mkdbgen
  - added module dbengcat.c
  - added module appinit.o
  - added module logman.c
  - removed module sys_log.o
  - removed module slogcode.o
  - removed module ip.o
  - removed module sloc.o
  - removed module sliocode.o
  - removed module slconfig.o
  - removed module sconnect.o
  - removed pre-processor define IPC
- script/mkdbgenm
  - added module appinit.o
  - added module logman.c
  - added define HASYSLOG
- script/mkdbsrv
  - added module logman.c
- script/mkdbstress
  - added module dbengcat.c
  - added module logman.c
  - added module appinit.o
- script/mkdbstresm
  - added module logman.c
  - added module appinit.o
  - added define HASYSLOG
- script/mkiex
  - added module dbengcat.c
  - added module appinit.o
  - added module logman.c
  - removed module sys_log.o
  - removed module slogcode.o
  - removed module ip.o
  - removed module sloc.o
  - removed module sliocode.o
  - removed module slconfig.o
  - removed module sconnect.o
  - removed pre-processor define IPC
- script/mkiexm
  - added module logman.c
  - added module appinit.o
  - added define HASYSLOG
- script/mkdumsockc
  - added module logman.c
  - added module appinit.o
  - added module sys_log.o
  - added module slogcode.o
  - added define HASYSLOG
- script/mkdumsocks
  - added module logman.c
  - added module sys_log.o
  - added module slogcode.o
  - added define HASYSLOG
- script/mksockc
  - added module logman.c
  - added module sys_log.o
  - added module slogcode.o
  - added define HASYSLOG
- script/mksocloc - added module logman.c (not directly used but needed for linking)
- script/mksys_log - added module logman.c (not directly used but needed for linking)
- script/mkdatimec - added define HASYSLOG
- script/mktimesync
  - added module logman.c
  - added module sys_log.o
  - added module slogcode.o
  - added define HASYSLOG

# October 19, 2003

Changes and additions in the GPL package designated as 1.33-2003.10.19:

## New Items

- iexlib.h - Bbuuzzb import library header
- wlib.h - weather station library header
- weather.h - weather station main header
- slocsrv.h - socloc server library header
- misc.h - misc. library header
- iexlib.c - Bbuuzzb import (and someday export) library
- wlib.c - weather station library
- slocsrv.c - socloc server library to talk to other socloc servers
- misc.c - misc. library
- iex.c - Bbuuzzb import command application
- script/mkiex - build iex single user command application
- script/mkiexm - build iexm client/server user command application

## Modified Items

- enhlib.h - added include of misc.h
- comcode.h - added defines SOCKET_SEND_TRANS_NUM and SOCKET_SEND_CONNECT_NUM
- flsocket.h
  - changed scope of IPC_SEND_RETRY from QNX to all IPC methods
  - changed QUEUE_SIZE to 1024
  - added define SA (Unix)
- ipcsrv.h
  - added prototypes ipc_trans_num and ipc_connect_num (TCP)
  - changed prototype ipc_server_wait to return nothing (TCP)
  - removed prototype ipc_end (QNX)
  - added prototype ipc_close
- socloc.h - added defines SL_SEND_TRANS_NUM and SL_SEND_CONNECT_NUM
- sloc.h
  - added prototype sloc_end
  - added prototypes sloc_trans_num and sloc_connect_num
  - added prototype sloc_term_api
- sys_log.h - added prototypes sys_log_trans_num and sys_log_connect_num
- dbengver.h - changed DBENG_VERSION
- dbeng.h - added prototypes dbeng_delete_field, dbeng_delete_subfield and dbeng_delete_subsubfield
- dblocal.h
  - added prototypes db_delete_field, db_delete_subfield and db_delete_subsubfield
  - added prototype db_end
- dbcs.h
  - added prototypes db_delete_field, db_delete_subfield and db_delete_subsubfield
  - added prototypes db_trans_num and db_connect_num
- dbcomm.h
  - added defines DBCOM_DELETE_FIELD, DBCOM_DELETE_SUBFIELD, and DBCOM_DELETE_SUBSUBFIELD
  - added defines DBCOM_TRANS_NUM and DBCOM_CONNECT_NUM
- dbmess.h
  - added defines DBENG_SEND_DELETE_FIELD, DBENG_SEND_DELETE_SUBFIELD and DBENG_DELETE_SUBSUBFIELD
  - added defines DBENG_SEND_TRANS_NUM, DBENG_SEND_CONNECT_NUM and DBENG_NO_INIT
- dumsocks.h - added defines DM_SEND_TRANS_NUM, DM_SEND_CONNECT_NUM, DM_NOT_IMPLEMENTED, DMCOM_TRANS_NUM, DMCOM_CONNECT_NUM, DMCOM_SOCLOC_TRANS_NUM and DMCOM_SOCLOC_CONNECT_NUM
- timesync.h
  - added send codes TS_SEND_TRANS_NUM and TS_SEND_CONNECT_NUM
  - added error code TS_NOT_IMPLEMENTED
  - added prototypes timesync_trans_num, timesync_connect_num and timesync_end
- parse.c
  - fixed bug in functions lpad and rpad that returned an empty string if no padding was necessary
  - re-wrote function ll_worddel to use function delbytes
- ipclient.c - changed to connect only upon ipc_set_active and to keep the socket open (TCP)
- sloc.c
  - re-write to keep socket open (TCP)
  - added functions sloc_trans_num and sloc_connect_num
  - added function sloc_term_api
- ipcsrv.c
  - changed to use select to manage list of client sockets (TCP)
  - added functions ipc_trans_num and ipc_connect_num (TCP)
  - changed function ipc_server_wait to return nothing (TCP)
  - renamed function ipc_end (QNX) to ipc_close
- sys_log.c (API)
  - modified to keep socket open (TCP)
  - added functions sys_log_trans_num and sys_log_connect_num
- dbeng.c
  - fixed bug in function dbeng_tmp_systable which caused a memory leak
  - added functions dbeng_delete_field, dbeng_delete_subfield and dbeng_delete_subsubfield
  - changed function dbeng_get_recd to goto the top of the table on a record header read error
- dblocal.c
  - added functions db_delete_field, db_delete_subfield and db_delete_subsubfield
  - added function db_end
- dbiocode.c - added text of error message DBENG_NO_INIT
- dbcs.c
  - added functions db_delete_field, db_delete_subfield and db_delete_subsubfield
  - re-wrote to keep socket open until DBENG_VC_ERROR or db_end
  - added functions db_trans_num and db_connect_num
- dbengrep.c - changed call to function connect from dbengrep_connect to use SA define (Unix)
- dbengses.c
  - added support for the send codes DBENG_SEND_DELETE_FIELD, DBENG_SEND_DELETE_SUBFIELD and DBENG_DELETE_SUBSUBFIELD in the function dbeng_session_should_rs
  - added support for the send codes DBENG_SEND_TRANS_NUM and DBENG_SEND_CONNECT_NUM in the function dbeng_session_should_rs
- dbengsrt.c - changed to use specified amount of sort memory and specified number of open bin tables
- tlogcode.c - added translation of error code TS_NOT_IMPLEMENTED
- timesapi.c
  - changed to keep socket open (TCP)
  - added functions timesync_trans_num, timesync_connect_num and timesync_end
- sys_log.c (APP)
  - modified for updated socloc API and ipcsrv
  - added function term_app
  - re-wrote function output_log to take variable number of parms
  - added function output_log_nf
- db.c
  - modified for updated socloc API
  - added support for the commands DBCOM_DELETE_FIELD, DBCOM_DELETE_SUBFIELD and DBCOM_DELETE_SUBSUBFIELD
  - modified for updated sys_log API
  - added support for the commands DBCOM_TRANS_NUM and DBCOM_CONNECT_NUM
  - modified for the updated bbuuzzb API
- socloc.c
  - changed for updated ipcsrv
  - added support for the send codes SL_SEND_TRANS_NUM and SL_SEND_CONNECT_NUM
  - changed for new slocsrv API
  - added function term_app
- dbsrv.c
  - added support for the send codes DBENG_SEND_DELETE_FIELD, DBENG_SEND_DELETE_SUBFIELD and DBENG_DELETE_SUBSUBFIELD
  - modified for updated socloc API
  - modified for updated sys_log API
  - modified for updated ipcsrv
  - added function term_app
  - added support for the send codes DBENG_SEND_TRANS_NUM and DBENG_SEND_CONNECT_NUM
- dbstress.c
  - added support for the commands DBCOM_DELETE_FIELD, DBCOM_DELETE_SUBFIELD, and DBCOM_DELETE_SUBSUBFIELD
  - modified for updated socloc API
  - modified for updated sys_log API
  - added support for the commands DBCOM_TRANS_NUM and DBCOM_CONNECT_NUM
  - modified for the updated bbuuzzb API
- sockc.c
  - added support for the commands socloc.trans.num (TCP), socloc.connect.num (TCP), trans.num (any server) and connect.num (any TCP socket server)
  - modified for updated socloc API
- datimec.c - modified for updated socloc API
- dbgen.c
  - modified for updated socloc API
  - modified for updated sys_log API
  - modified for the updated bbuuzzb API
- dumsockc.c
  - modified for updated socloc API
  - added function term_app
- dumsocks.c
  - modified for updated socloc API and ipcsrv
  - added function term_app
  - added support for the send codes DM_SEND_TRANS_NUM and DM_SEND_CONNECT_NUM
- datimec.c
  - added function term_app
  - modified for the updated timesync API
- script/dbeng - added compile of iexlib.c
- script/cclib
  - added compile of wlib.c
  - added compile of misc.c
- script/mkall - added build of iex and iexm,
- script/mkdbstress - added object file misc.o
- script/mkdbstresm - added object file misc.o

# February 1, 2003

Changes and additions in the GPL package designated as 1.32-2002.02.01:

## New Items

- dbengsrt.h - Bbuuzzb sort module header
- dbengsrt.c - Bbuuzzb sort module
- dos2unix.c - ASCII text file conversion program

## Modified Items

- parse.h - added function prototype strip_space
- logger.h - changed name of function prototype log to logger as the GNU C++ compiler has this function defined
- fxp.h - added function prototype fxp_remove_decimal
- dbfxp.h - added function prototypes dbfxp_get_subfield, dbfxp_put_subfield, dbfxp_get_subsubfield and dbfxp_put_subsubfield
- dbengcat.h - added function prototype dbeng_catalog_list
- dbcomm.h
  - added define DBCOM_GET_CATALOG_LIST
  - added define DBCOM_SORT
  - added defines DBCOM_GET_SORT_MEM, DBCOM_SET_SORT_MEM, DBCOM_GET_SORT_OPEN_BIN and DBCOM_SET_SORT_OPEN_BIN
- dbmess.h
  - added define DBENG_SEND_GET_CATALOG_LIST
  - added defines DBENG_SEND_SORT, DBENG_SEND_GET_SORT_MEM, DBENG_SEND_SET_SORT_MEM, DBENG_SEND_GET_SORT_OPEN_BIN and DBENG_SEND_SET_SORT_OPEN_BIN
- dbeng.h
  - added a parameter to the function prototype dbeng_open_table_list
  - added function prototype dbeng_tmp_systable
  - added dbeng_table members sort_max_open_bin and sort_max_mem
- dblocal.h
  - added a parameter to the function prototype db_get_open_table_list
  - added function prototypes db_sort, db_get_sort_max_mem, db_set_sort_max_mem, db_get_sort_max_open_bin and db_set_sort_max_open_bin
- dbcs.h
  - added function prototype db_get_catalog_list
  - added a parameter to the function prototype db_get_open_table_list
  - added function prototypes db_sort, db_get_sort_max_mem, db_set_sort_max_mem, db_get_sort_max_open_bin and db_set_sort_max_open_bin
- datime.h
  - added function prototype datime_hour12_2_hour24
  - added function prototype run_year
  - added function prototype get_ftime
- csocket.h - added directive using namespace std
- ssocket.h - added directive using namespace std
- parse.c - added function strip_space
- logger.c - changed name of function log to logger as the GNU C++ compiler has this function defined
- fxp.c - added function fxp_remove_decimal
- dbfxp.c - added functions dbfxp_get_subfield, dbfxp_put_subfield, dbfxp_get_subsubfield and dbfxp_put_subsubfield
- dbengcat.c - added function dbeng_catalog_list
- dbeng.c
  - added a parameter to the function dbeng_open_table_list
  - added function dbeng_tmp_systable
  - changed function dbeng_pack_table to create a new system table using the function dbeng_tmp_systable
  - added include dbengsrt.h
  - added initialization code for dbeng_table members sort_max_open_bin and sort_max_mem
- dblocal.c
  - added a parameter to the function db_get_open_table_list
  - added include of dbengsrt.h
  - added functions db_sort, db_get_sort_max_mem, db_set_sort_max_mem, db_get_sort_max_open_bin and db_set_sort_max_open_bin
- dbcs.c
  - added function db_get_catalog_list (multiuser only)
  - added a parameter to the function db_get_open_table_list
  - added functions db_sort, db_get_sort_max_mem, db_set_sort_max_mem, db_get_sort_max_open_bin and db_set_sort_max_open_bin
- dbengses.c - added support for the commands DBENG_SEND_SORT, DBENG_SEND_GET_SORT_MEM, DBENG_SEND_SET_SORT_MEM, DBENG_SEND_GET_SORT_OPEN_BIN and DBENG_SEND_SET_SORT_OPEN_BIN in the function dbeng_session_should_rs
- datime.c
  - added function datime_hour12_2_hour24
  - added private function datime_get_ampm
  - changed function get_time to return a compact date/time string
  - added function run_year
  - added function get_ftime
- csocket.cpp - added directive using namespace std
- ssocket.cpp - added directive using namespace std
- sys_log.c (API) - added extra error messages that will be sent to the personal log
- script/include.linux - added pre-processor defines OS_UNIX_LINUX and OS_UNIX_LINUX_DEBIAN
- script/mkdbsrv - added object file dbengsrt.o
- script/mkdb - added object file dbengsrt.o
- script/mkdbstress - added object file dbengsrt.o
- script/cdbeng - added compilation of dbengsrt.c
- script/mkall - added build of datagen and dos2unix applications
- db.c
  - added a parameter to the support of the command DBCOM_GET_OPEN_TABLE_LIST
  - added support for the command DBCOM_GET_CATALOG_LIST
  - added support for the commands DBCOM_SORT, DBCOM_GET_SORT_MEM, DBCOM_SET_SORT_MEM, DBCOM_GET_SORT_OPEN_BIN and DBCOM_SET_SORT_OPEN_BIN
- dbsrv.c
  - added support for a additional parameter with the send code DBENG_SEND_GET_OPEN_TABLE_LIST
  - added support for send code DBENG_SEND_GET_CATALOG_LIST
  - added support for the send codes DBENG_SEND_SORT, DBENG_SEND_GET_SORT_MEM, DBENG_SEND_SET_SORT_MEM, DBENG_SEND_GET_SORT_OPEN_BIN and DBENG_SEND_SET_SORT_OPEN_BIN
- dbstress.c - added support for the commands DBCOM_EXIST, DBCOM_GET_CATALOG_LIST, DBCOM_SORT, DBCOM_GET_SORT_MEM, DBCOM_SET_SORT_MEM, DBCOM_GET_SORT_OPEN_BIN and DBCOM_SET_SORT_OPEN_BIN
- sys_log (app) - changed output_log function to obtain date/time string from function get_time

# July 29, 2002

Changes and additions in the GPL package designated as 1.31-2002.07.29:

## New Items

- fxp.h - fixed point math API header
- conv.h - math conversion API header
- datime.h - date/time API header
- appinit.h - application initialization API header
- dbfxp.h - Bbuuzzb fixed point API header
- fxp.c - fixed point math API
- conv.c - math conversion API
- datime.c - date/time API
- appinit.c - application initialization API
- dbfxp.c - Bbuuzzb fixed point API
- fxpstres.c - fixed point math stress program

## Modified Items

- parse.h
  - added prototypes lpad and rpad
  - moved prototype get_time to header datime.h
- enhlib.h - added include of fxp.h, conv.h and datime.h
- dbengver.h - changed DBENG_VERSION
- dbmess.h
  - added defines DBENG_TABLE_IN_USE and DBENG_SEND_DELETE_TABLE
  - added define DBENG_SEND_CLEAR_TABLE
  - added define DBENG_SEND_COPY_TABLE
- dblocal.h
  - added prototype db_delete_table
  - added prototype db_exist
  - added prototype db_clear_table
  - added prototype db_copy_table
- dbcomm.h
  - added define DBCOM_DELETE_TABLE
  - added define DBCOM_EXIST
  - added define DBCOM_CLEAR_TABLE
  - added define DBCOM_COPY_TABLE
- dbcs.h
  - added prototype db_delete_table
  - added prototype db_exist
  - added prototype db_copy_table
- dbeng.h
  - added prototype dbeng_exist
  - added prototypes dbeng_clear_table and dbeng_copy_table
- dbengcfg.h - added prototype dbeng_config_is_catalog
- sys_log.h - changed prototype sys_log_init by adding a parameter
- parse.c
  - added functions lpad and rpad
  - moved function get_time to module datime.c
- dbeng.c
  - changed function dbeng_get_tid to obtain the next tid based on the number of tables in use
  - added private functions dbeng_put_which_field, dbeng_put_which_subfield and dbeng_put_which_subsubfield
  - modified dbeng_put_field, dbeng_put_subfield and dbeng_put_subsubfield to call its respective dbeng_put_which function
  - added functions dbeng_delete_table and private function dbeng_table_in_use
  - added function dbeng_exist
  - added functions dbeng_clear_table and dbeng_ll_copy_table
  - modified function dbeng_pack_table to call dbeng_ll_copy_table
  - added function dbeng_copy_table
  - added database server name by calling function appinit_get_name to pass to function sys_log_init in function dbeng_ferror
- dblocal.c
  - modified db_put_field, db_put_subfield and db_put_subsubfield to allow a zero field, sub-field or sub-sub-field value
  - added function db_delete_table
  - added function db_exist
  - added function db_clear_table
  - added function db_copy_table
- dbcs.c
  - modified db_put_field, db_put_subfield and db_put_subsubfield to allow a zero field, sub-field or sub-sub-field value
  - added function db_exist
  - added function db_clear_table
  - added function db_copy_table
- dbiocode.c - added translation of DBENG_TABLE_IN_USE
- dbengses.c
  - added DBENG_SEND_DELETE_TABLE to function dbeng_session_should_rs
  - changed function dbeng_session_flush_all to clear the session table using dbeng_clear_table
  - added trap of send codes DBENG_SEND_EXIST and DBENG_SEND_CLEAR_TABLE to function dbeng_session_should_rs
- dbengcfg.c
  - added function dbeng_config_is_catalog
  - changed function dbeng_config_set_session_flag to flush the session table (by calling dbeng_session_flush_all) when the session flag is set high
- dblocfg.c - added database server name by calling function appinit_get_name to pass to function sys_log_init in function db_config_set_log_flag
- sys_log.c (API)
  - added application name parameter to function sys_log_init
  - added module global variables to store application name, local host name (TCP), node ID (QNX 4.x) and process ID (QNX 4.x)
  - changed function sys_log_init to obtain and store new module globals
  - changed function sys_log_end to de-allocate module globals
  - changed function sys_log_sr_code to prefix any message to be logged with the application name and either the local host name (TCP) or the node ID (QNX 4.x) and the process ID (QNX 4.x)
- script/cl - added files fxp.o, conv.o and datime.o
- script/cclib - added files fxp.c, conv.c, datime.c and appinit.c
- script/cdbeng - added file dbfxp.c
- script/mksocloc - added object files datime.o and appinit.o
- script/mksys_log - added object files datime.o and appinit.o
- script/mkdbsrv - added object files datime.o and appinit.o
- script/mkdumsocks - added object files datime.o and appinit.o
- script/mktimesync - added object files datime.o and appinit.o
- script/mkdb - added object file datime.o
- script/mkdbm - added object file datime.o
- script/mkdbstress - added object file datime.o
- script/mkdbstresm - added object file datime.o
- script/mkdbgen - added object file datime.o
- script/mkdbgenm - added object file datime.o
- script/mkdatimec - added object file datime.o
- script/mkdumsockc - added object file datime.o
- script/mksockc - added object file datime.o
- script/mkiresolve - added object file datime.o
- socloc.c
  - made main return an int
  - coded to use appinit API
- sys_log.c (application) - coded to use appinit API
- dbsrv.c
  - coded to use appinit API
  - added support for DBENG_SEND_DELETE_TABLE
  - modified to allow zero field, sub-field and sub-sub-field numbers
  - added support for DBENG_SEND_EXIST
  - added support for DBENG_SEND_DELETE_TABLE
  - added support for DBENG_SEND_COPY_TABLE
  - removed call to dbeng_session_flush_all during initialization as this is now automatically done when the session flag is set high
- db.c
  - added support for zero field, sub-field and sub-sub-field
  - added support for the command delete.table
  - added support for the command exist
  - added support for the command clear.table
  - added display of Bbuuzzb server version in opening message (multiuser only)
  - added support for the command copy.table
  - changed call to sys_log_init by adding application name
- dumsocks.c - coded to use appinit API
- timesync.c - coded to use appinit API
- dbgen.c - changed call to sys_log_init by adding application name

# April 19, 2002

Changes and additions in the GPL package designated as 1.30-2002.04.19:

## New Items

- dbengrep.h - Bbuuzzb replication management header
- timesync.h - timesync header
- timesapi.c - timesync main API
- tlogcode.c - timesync error translation API
- timesync.c - timesync server
- datimec.c - timesync client
- dbgen.c - Bbuuzzb random data generator
- dbengrep.c - Bbuuzzb replication management
- script/mktimesync - make timesync server
- script/mkdatimec - make timesync client
- script/mkdbgen - make dbgen stand-alone
- script/mkdbgenm - make dbgenm client server

## Modified Items

- dbcomm.h
  - added defines DBCOM_GET_NSUBFIELDS, DBCOM_GET_SUBFIELD_SIZE, DBCOM_GET_SUBFIELD, DBCOM_PUT_SUBFIELD, DBCOM_GET_NSUBSUBFIELDS, DBCOM_GET_SUBSUBFIELD_SIZE, DBCOM_GET_SUBSUBFIELD, DBCOM_PUT_SUBSUBFIELD
  - added DBCOM_CONFIG_GET_REPLICATE_FLAG and DBCOM_CONFIG_SET_REPLICATE_FLAG
  - added command DBCOM_REPLICATE_UPDATE
- dbmess.h
  - changed define DBENG_NO_SUCH_VALUE to DBENG_NO_SUCH_SUBFIELD, DBENG_NO_SUCH_SUBVALUE to DBENG_NO_SUCH_SUBSUBFIELD and DBENG_FIELD_PUT_ERROR to DBENG_PUT_ERROR
  - added send codes DBENG_SEND_GET_NSUBFIELDS, DBENG_SEND_GET_SUBFIELD_SIZE, DBENG_SEND_GET_SUBFIELD, DBENG_SEND_PUT_SUBFIELD, DBENG_SEND_GET_NSUBSUBFIELDS, DBENG_SEND_GET_SUBSUBFIELD_SIZE, DBENG_SEND_GET_SUBSUBFIELD, DBENG_SEND_PUT_SUBSUBFIELD
  - added error code DBENG_RECORD_POSITION_CHANGED
  - added send code DBENG_SEND_REPLICATE
  - added error codes DBENG_REPLICATION_NOT_ACTIVE and DBENG_NO_REPLICATION_ENTRY
  - added send code DBENG_SEND_REPLICATE_UPDATE
- dblocal.h - added prototypes db_get_nsubfields, db_get_subfield_size, db_get_subfield, db_put_subfield, db_get_nsubsubfields, db_get_subsubfield_size, db_get_subsubfield and db_put_subsubfield
- dblocfg.h - added prototypes db_config_get_replicate_flag and db_config_set_replicate_flag
- dbeng.h
  - changed DBENG_VM to DBENG_SFM, DBENG_SVM to DBENG_SSFM
  - added prototypes dbeng_nsubfields, dbeng_subfield_size, dbeng_get_subfield, dbeng_put_subfield, dbeng_nsubsubfields, dbeng_subsubfield_size, dbeng_get_subsubfield, dbeng_put_subsubfield
  - added prototype dbeng_record_header
  - added structure dbeng_rep and the define DBENG_ROT_NULL
  - added pointer rep_list to dbeng_table structure
  - added send codes DBENG_SEND_GET_REPLICATE_FLAG and DBENG_SEND_SET_REPLICATE_FLAG
  - added dbeng_table member is_systable
  - added prototypes dbeng_open_systable, dbeng_new_systable and dbeng_is_systable
- dbengver.h - changed DBENG_VERSION
- dbengcat.h
  - added catalog field defines DBENG_CATALOG_FIELD_REPLICATE, DBENG_CATALOG_SSF_PORT and DBENG_CATALOG_SSF_TNAME
  - removed prototype dbeng_catalog_find
  - added prototype dbeng_catalog_rep_list
  - changed prototypes dbeng_catalog_set_name and dbeng_catalog_new_table by adding another parameter
- dbengcfg.h
  - added prototypes dbeng_config_get_replicate_flag and dbeng_config_set_replicate_flag
  - removed prototype dbeng_config_is_systable
  - added prototype dbeng_config_is_session
- dbcs.h
  - added function prototypes db_get_nsubfields, db_get_subfield_size, db_get_subfield and db_put_subfield
  - added prototype db_replicate_update
- dbcscfg.h - added prototype db_config_get_replicate_flag and db_config_set_replicate_flag
- dbiocode.c
  - added DBENG_RECORD_POSITION_CHANGED error translation
  - changed define DBENG_NO_SUCH_VALUE to DBENG_NO_SUCH_SUBFIELD, DBENG_NO_SUCH_SUBVALUE to DBENG_NO_SUCH_SUBSUBFIELD and DBENG_FIELD_PUT_ERROR to DBENG_PUT_ERROR and altered message text
  - added error translation for DBENG_REPLICATION_NOT_ACTIVE and DBENG_NO_REPLICATION_ENTRY
- dbeng.c
  - added functions dbeng_nsubfields, dbeng_subfield_size, dbeng_get_subfield, dbeng_get_subfield, dbeng_put_subfield, dbeng_nsubsubfields, dbeng_subsubfield_size, dbeng_get_subsubfield and dbeng_put_subsubfield
  - added function dbeng_record_header and changed functions dbeng_get_recd and dbeng_delete_recd to use this function
  - dbeng_delete_recd now checks for a valid record header and returns the error code DBENG_RECORD_POSITION_CHANGED
  - changed dbeng_pack_table to reconcile the starting record positions of any table in use
  - changed dbeng_write_string_recd to retain the file positions
  - added include of dbengrep.h
  - set rep_list pointer to NULL in dbeng_open_table
  - called replicate function dbengrep_rll_delete from function dbeng_close_table (multiuser TCP only)
  - added functions dbeng_open_systable, dbeng_ll_open_table, dbeng_new_systable, dbeng_ll_new_table and dbeng_is_systable
  - added call to dbengrep_send from functions dbeng_write_new_recd, dbeng_write_string_recd, dbeng_delete_recd and dbeng_pack_table
  - changed function dbeng_ll_new_table to create a new physical file in single-user mode only
- dbengcfg.c
  - added replicate_flag to configuration structure
  - added functions dbeng_config_get_replicate_flag and dbeng_config_set_replicate_flag
  - removed function dbeng_config_is_systable
  - added function dbeng_config_is_session
- dblocal.c - added functions db_get_nsubfields, db_get_subfield_size, db_get_subfield, db_put_subfield, db_get_nsubsubfields, db_get_subsubfield_size, db_get_subsubfield and db_put_subsubfield
- dblocfg.c
  - made sure returned flag value is set to FALSE in the functions db_config_get_log_flag, db_config_get_catalog_flag and db_config_get_session_flag
  - added functions db_config_get_replicate_flag and db_config_set_replicate_flag
- dbengses.c
  - added support for the send codes DBENG_SEND_GET_NSUBFIELDS, DBENG_SEND_GET_SUBFIELD_SIZE, DBENG_SEND_GET_SUBFIELD, DBENG_SEND_PUT_SUBFIELD, DBENG_SEND_GET_NSUBSUBFIELDS, DBENG_SEND_GET_SUBSUBFIELD_SIZE, DBENG_SEND_GET_SUBSUBFIELD, DBENG_SEND_PUT_SUBSUBFIELD in function dbeng_session_should_rs
  - changed function dbeng_session_open to open with dbeng_open_systable
  - added support for the command DBCOM_REPLICATE_UPDATE in function dbeng_session_should_rs
- dbengcat.c
  - changed name of static function dbeng_catalog_find to dbeng_catalog_tfind
  - added static function dbeng_catalog_ffind
  - added function dbeng_catalog_rep_list
  - changed function dbeng_catalog_open to open with dbeng_open_systable
  - added parameter to functions dbeng_catalog_new_table and dbeng_catalog_set_name called systable_flag
  - changed function dbeng_catalog_new_table to create both the new table and the catalog entry (if required)
- dbcs.c
  - added functions db_get_nsubfields, db_get_subfield_size, db_get_subfield and db_put_subfield
  - added function db_replicate_update under TCP only
- dbcscfg.c - added functions db_config_get_replicate_flag and db_config_set_replicate_flag
- db.c
  - added support for the commands DBCOM_GET_NSUBFIELDS, DBCOM_GET_SUBFIELD_SIZE, DBCOM_GET_SUBFIELD, DBCOM_PUT_SUBFIELD, DBCOM_GET_NSUBSUBFIELDS, DBCOM_GET_SUBSUBFIELD_SIZE, DBCOM_GET_SUBSUBFIELD, DBCOM_PUT_SUBSUBFIELD
  - added support for DBCOM_CONFIG_GET_REPLICATE_FLAG and DBCOM_CONFIG_SET_REPLICATE_FLAG
  - added support for the command DBCOM_REPLICATE_UPDATE
- dbstress.c
  - added support for the commands DBCOM_GET_NSUBFIELDS, DBCOM_GET_SUBFIELD_SIZE, DBCOM_GET_SUBFIELD, DBCOM_PUT_SUBFIELD, DBCOM_GET_NSUBSUBFIELDS, DBCOM_GET_SUBSUBFIELD_SIZE, DBCOM_GET_SUBSUBFIELD, DBCOM_PUT_SUBSUBFIELD
  - added support for DBCOM_CONFIG_GET_REPLICATE_FLAG and DBCOM_CONFIG_SET_REPLICATE_FLAG
- dbsrv.c
  - added support for the send commands DBENG_SEND_GET_NSUBFIELDS, DBENG_SEND_GET_SUBFIELD_SIZE, DBENG_SEND_GET_SUBFIELD, DBENG_SEND_PUT_SUBFIELD, DBENG_SEND_GET_NSUBSUBFIELDS, DBENG_SEND_GET_SUBSUBFIELD_SIZE, DBENG_SEND_GET_SUBSUBFIELD, DBENG_SEND_PUT_SUBSUBFIELD
  - added support for DBENG_SEND_GET_REPLICATE_FLAG and DBENG_SEND_SET_REPLICATE_FLAG
  - added replication support
  - added support for send code DBENG_SEND_REPLICATE_UPDATE
- socloc.c
  - fixed bug in function s_ll_put_list on call to log_file_date
  - fixed bug in function s_find which sometime would calculate an incorrect size for the reply string
- parse.c - fixed bug in function ll_wordput which sometimes would return an empty string
- script/cclib - added compilation of timesapi.c and tlogcode.c
- script/mkall - added builds of mktimesync and mkdatimec
- script/include.linux - split MULTI variable into multiuser and IPC type
- script/cmulti - added IPC variable
- script/cdbeng - added compile of dbengrep.c
- script/mkdb - added IPC variable
- script/mkdbm - added IPC variable
- script/mkdbsrv
  - added IPC variable
  - added object file dbengrep.o
- script/mkdbstresm - added IPC variable
- script/mkdbstress - added IPC variable
- script/mkdumsockc - added IPC variable
- script/mkdumsocks - added IPC variable
- script/mkiresolve - added IPC variable
- script/mksockc - added IPC variable
- script/mksocloc - added IPC variable
- script/mksys_log - added IPC variable
- script/mktestcs - added IPC variable
- script/mktestss - added IPC variable
- script/ppcmulti - added IPC variable

# December 10, 2001

Changes and additions in the GPL package designated as 1.29-2001.12.15:

## New Items

- script/cmulti - new compilation Unix shell script
- dbengses.h - header for database session table management
- dbengcat.h - header for database catalog management
- dbengses.c - database session table management (used by server only)
- dbengcat.c - database catalog management (used by server only)
- rb/dbengses - database session table management (used by server only)
- rb/dbengcat - database catalog management (used by server only)

## Modified Items

- dbmess.h - changed to accommodate both sockets and QNX message passing
- sys_log.h - ditto and added prototype sys_log_nf
- script/csocloc - changed compile from c to cmulti
- script/cclib - ditto for multiuser modules
- script/cdbeng - ditto
- script/include.generic - removed definition of MULTI
- script/include.linux - added definition of MULTI
- slogcode.c - removed include of headers sys_log.h and slogcode.h
- stdhead.h - removed QNX specific defines and added OS message passing includes
- flsocket.h - adapted for use with sockets and QNX message passing
- ipclient.c - ditto
- ipclient.h - ditto
- ipcsrv.c - ditto
- ipcsrv.h - ditto
- sys_log.c(API) - ditto and added function sys_log_nf
- dbcs.h - adapted for use with sockets and QNX message passing
- dbcs.c - ditto
- db.c - ditto
- dbsrv.c - ditto and added session table and catalog support
- dbstress.c
  - adapted for use with sockets and QNX message passing
  - removed processing of commands config.set.log.flag, config.set.catalog.flag and config.set.session.flag
  - added catalog support for multiuser version
- sockc.c - adapted for use with sockets and QNX message passing and ported to QNX 4.x
- sys_log.c(server) - adapted for use with sockets and QNX message passing
- dumsocks.c - ditto and ported to QNX 4.x
- dumsockc.c - ditto and re-coded to use ipclient API
- logger.c - added function log_file_date_nf and changed log_file_date to get date/time string from get_time
- logger.h - added prototype log_file_date_nf
- parse.c - added function get_time
- parse.h - added prototype get_time
- dbeng.c
  - added functions dbeng_ll_open and dbeng_ll_close
  - added support for session table
  - re-wrote dbeng_pack_table and added a dbeng_goto_top after the pack
- dbeng.h - added prototypes dbeng_ll_open and dbeng_ll_close
- dbengcfg.c - changed dbeng_config_is_systable to detect temporary tables
- dbeng.h - added dbeng_table member current_position
- dbengver.h - changed DBENG_VERSION
- dbmess.h - added error codes DBENG_NO_CATALOG_ENTRY and DBENG_CATALOG_ENTRY_EXISTS
- dumsocks.h - adapted for use with sockets and QNX message passing
- fio.c - fixed bug in zcreate which would truncate an existing file
- dbiocode.c - added translation of new error codes DBENG_NO_CATALOG_ENTRY and DBENG_CATALOG_ENTRY_EXISTS
- dblocal.c - fixed bug in db_next which caused an exception with logging on
- rb/dbeng
  - changed scope of function dbengAtidLookup to public
  - added functions dbengLLOpen and dbengLLClose
  - added session table support
  - re-wrote dbengPackTable and placed a call to dbengGotoTop after the pack
- rb/dbengConstants - added dbengNoCatalogEntry and dbengCatalogEntryExists and changed dbengVersion
- rb/dbsrv - added session table and catalog support and changed version
- rb/dbstress - changed default table names to logical in multiuser version
- rb/parse - added function 'getTime'
- rb/dbengcfg - changed dbengConfigIsSystable to detect temporary tables
- rb/dbengTable - added currentPosition
- rb/dbiocode - added translation of error codes dbengNoCatalogEntry and dbengCatalogEntryExists
- rb/logger - changed logFileDate to get date/time from function getTime

# September 16, 2001

Changes and additions in the GPL package designated as 1.28-2001.09.21:

## New Items

- rb/dbengConstants - constants module, database
- rb/dbiocode - code module, database error translation
- rb/dbcs - code module, database client/server, high level
- rb/dbcscfg - code module, database client/server configuration, high level
- rb/dbeng - code module, database stand-alone engine, low level
- rb/dbengcfg - code module, database stand-alone configuration, low level
- rb/dblocal - code module, database stand-alone, high level
- rb/dblocfg - code module, database stand-alone configuration, high level
- rb/dbengConfigEntry - class, database configuration
- rb/dbengTable - class, database table instance
- rb/dirEntry - class, directory scanning
- rb/dscan - code module, directory scanning
- rb/dscanEntry - class, directory scanning
- rb/datagen Project - application, random data generation
- rb/Db Single User Project - application, stand-alone database command line
- rb/Db Multi User Project - application, client/server database command line
- rb/Bbuuzzb Server Project - application, Bbuuzzb database server
- rb/Dbstress Single User Project - application, stand-alone database stress
- rb/Dbstress Multi User Project - application, client/server database stress
- rb/Dumsockc Project - application, socket client for dumsocks server
- rb/Dumsocks Server Project - application, simple test socket server
- rb/Sockc Project - application, command line interface to almost any socket server

## Modified Items

- rb/globalConstants - added new constant multiuser
- rb/parse
  - added methods subString, int2bool, bool2int and pmatch
  - fixed bug in llWordPut involving first word in string
  - fixed bug in strReplace that caused the string not to be replaced
  - fixed bug in commandWords that sometimes ignored a word at the end of the string
- rb/misc - added methods randBool and dispLineDelim
- rb/logger - changed llog to use new dispLineDelim method
- sys_log.h - added define SYS_LOG_BAD_IP
- dbmess.h - added defines DBENG_BAD_IP, DBENG_LIST_DELIM and DBENG_SEND_GET_OPEN_TABLE_LIST
- dbeng.c
  - added function dbeng_open_table_list
  - removed requirement of an active record from the functions dbeng_delete_flag and dbeng_set_delete_flag
  - documented exit using sys_log function in dbeng_rec_count
- dbeng.h - added prototype dbeng_open_table_list
- dblocal.c - added function db_get_open_table_list
- dblocal.h - added prototype db_get_open_table_list
- dbcs.c - added function db_get_open_table_list
- dbcs.h - added prototype db_get_open_table_list
- dbcomm.h
  - added define DBCOM_GET_OPEN_TABLE_LIST
  - changed value of define DBCOM_MAXCOM
- fio.c - changed function filecopy to use C standard stream I/O
- db.c
  - corrected some return codes and syntax of documented commands
  - modified function c_count to use table process_deleted flag if all option is not used
  - added support for command get.open.table.list
- slogcode.c - added translation of new define SYS_LOG_BAD_IP in function sys_log_code_string
- dbiocode.c - added translation of new define DBENG_BAD_IP in function dbeng_io_code_string
- dbsrv.c
  - added support for DBENG_SEND_GET_OPEN_TABLE_LIST
  - fixed bug in process_request that ignored parameter with opening quote
- dbengver.h - changed define DBENG_VERSION
- dbengcfg.c - changed session_flag and catalog_flag default values to FALSE
- dbstress.c - added support for command get.open.table.list and made function c_new_table available in single user mode only
- sloc.c - changed global sockClientAddr to slsockClientAddr
- dumsocks.c - removed multiple declarations of localHost
- sockc.c - minor message and documentation changes

# February 23, 2001

Changes and additions in the GPL package designated as 1.27-2001.02.23:

## New Items

- dscan.c - is a new API used for scanning directories for matching files or other directories
- dscan.h - header file for the directory scanning API

## Modified Items

- logger.c - the local variable mes in the function log_file_date has been changed in size to the define of MAXMES (given in the header logger.h)
- logger.h - the size of the define MAXMES has been increased to 2kb
- stdhead.h - added the include of the headers dirent.h and sys/stat.h
- parse.c - changed functions ll_indxword and ll_wordlen to call the function inittstring only if the word delimiter is a space, otherwise use the function initstring
- parse.c - new function pmatch to perform pattern matching
- parse.h - new prototype for the function pmatch
- fio.c - changed function isdirectory to be compiled for all platforms and now uses the opendir system call
- fio.h - enabled prototype of the function isdirectory for all platforms
- dbengcfg.c - added include of the header dbeng.h
- cclib script - added compile of new library module dscan.c

# January 24, 2001

Changes and additions in the REALbasic package designated as 1.26p-2001.01.24:

## New Items

- TCPSocketServerList - link list class used by the TCPSocketServer class and managed by the ipcSrv code module
- writeTimer - timer class used to sent a reply back to the client application used by the TCPSocketServer class
- sysLog - code module which is the system logger API
- sysLogConstants - code module containing system logger constants
- slogcode - code module with methods to translate a system logger reply code to an English explanation
- sys_log Server Project - the complete system log server

## Modified Items

- TCPSocketServer - during stress testing of the system log server, I realized that the server would not respond when a connection was active and another connection was attempted. Unlike the BSD or WinSock socket API, the REALbasic socket class has no ability to queue requests when a connection is already active. This class has been modified to spawn a new listener when a connection takes place. The new TCPSocketServerList class stores all current listeners. This class also has been changed to use the new writeTimer class to transmit/send data back to the client application.
- ipcSrv - this socket server API has been modified to manage the TCPSocketServerList link list.
- Socloc Server Project - the socloc server has been modified to use the new socket server API including the ipcSrv code module, the TCPSocketServer class, the new TCPSocketServerList class and the new writeTimer class.

# November 10, 2000

A new C++ class has been added starting in package version 1.26-2000.11.10. This new class called word string encapsulates most of the functionality of the parse C module.

# September 23, 2000

New C++ code has been added to the GPL package starting in package version 1.25-2000.09.23. Two classes have been created. Both are TCP/IP socket related. One which implements a socket client and the other which creates a socket server. These new classes are contained within the clib GPL package directory.

Two test example applications have also been created to that use the new C++ classes. One application is a socket client and the other is a socket server. Both of these applications are located in the apps GPL package directory.

Many new Unix shell scripts have been added. These scripts are used to compile/build C++ code. In addition, the existing shell scripts include.linux and mkall have been modified to accommodate C++ code.

# September 10, 2000

The changes in the new REALbasic code starting in GPL package 1.24p-2000.07.05 will be reflected in this log.

# July 5, 2000

The following modules have changed as a result of the implementation of the new library module ip.c. These changes are reflected in the GPL package 1.24-2000.07.05. Here is a list of the changes:

## Header Files

There is a new library header file called ip.h. This header is not automatically included.

## Library Modules

A new library module called ip.c has been created to handle all functions related to IP addressing and resolution. There are currently three functions in this module: ip_host2ip will resolve a host name to an IP address, ip_ip2host will resolve an IP address to a host name and the function isip, which used to be located in the library module parse.c has been moved to this new library module.

## Application Modules

The following application server modules have changed:

- dbsrv.c - Bbuuzzb database server
- dumsocks.c - dumsocks server
- socloc.c - socloc server
- sys_log.c - system log server

The above servers have had their main initialization function changed to obtain the IP address of the current machine and passing this IP address to socloc.

The following application client modules have changed:

- db.c - Bbuuzzb database client
- dbstress.c - Bbuuzzb database stress
- dumsockc.c - dumsocks client
- iresolve.c - IP resolve
- sockc.c - universal socket client

Each of the above applications has had the new library module ip.c added to its link sequence and also included the header file ip.h.

## API Modules

The two socloc API modules sloc.c and slconfig.c have had the header file ip.h included.

## Unix Shell Scripts

The following Unix shell scripts have been changed to add the new library module ip.c:

- cclib
- mkdbsrv
- mkdumsocks
- mksocloc
- mksys_log
- mkdb
- mkdbm
- mkdbstress
- mkdbstresm
- mkdumsockc
- mkiresolve
- mksockc

# July 1, 2000

While porting the socloc API code to REALbasic, I discovered that the automatic failover built into the API was not functioning as designed. Only the first dead socloc server was being recorded. Changed the function sloc_client_connect to call the function sl_config_get_first. Also changed the function sloc_failover to record the value of the dead port index (spos) before entering the sloc_config_delete loop.

This change is reflected in the GPL package version 1.23-2000.07.01.

# May 31, 2000

I found a major structural problem with the client socket high level API module. The function ipc_init was calling the socket function connect. This means that the only way to connect to a socket server would be to call this function. This is not the intention of the design. I re-structured the ipclient.c module by removing the ipc_init function as there is no specific initialization required other than to load the host name and port number of the socket server. I also added the functions ipc_set_active to set/load the host name and port number of the server, ipc_get_active to obtain the current host name and port number and also added the function ipc_send_receive which will connect to the server, send the command request and wait for a reply. The connection to the server is now performed in the new function ipclient_connect. The functions ip_send_data and ipc_recv_data no longer have any purpose and have been removed.

The client socket high level API header has also been changed so that the function prototypes match the client socket high level API module.

The sockc application also has been changed by adding two command line switches. The -s switch will disable the socloc interface when the program is executed. The -l (el) command line switch specifies a client log file to use once logging is enabled. The application now uses the client socket high level API module to communicate to the currently connected socket server. The client socket global data that also was part of this application has now been removed as well as the d_client_connect function. Two new commands have been added to the application, they are: socloc.on and socloc.off which allow the socloc interface to be turned on or off while the application is running.

The above changes are reflected in the GPL package version 1.22-2000.06.01.

# May 25, 2000

I discovered a bug in the sockc application. The commands socloc.list and socloc.config.list sometimes caused the program to blow. Upon investigation, the program turned out to be dynamic memory allocation related. I was freeing a string and then later in the function, attempting to use that same string. This bug has been corrected in the new package 1.21-2000.05.25.

# April 30, 2000

Completed coding of the new GPL software package designated as 1.2-2000.05.03. This version contains the completed integration of the socloc interface with all applications. The new GPL package has not been posted as yet. See the newsletter for more information. Here is a detailed list of all the code changes:

## Header Files

- comcode.h - This is a new header file which contains the common socket send and reply codes. This header is now included from other API header files. Normally, this file should not be included from your application.
- dbcomm.h - A new command DBENG_VERSION has been added which represents the socket server version.
- dbcs.h - Added the function prototypes db_version and db_get_active.
- dbcscfg.h - Added the extern "C" sections for a C++ compiler.
- dbengcfg.h - Added the extern "C" sections for a C++ compiler.
- dbengver.h - Changed the value of DBENG_VERSION to .40.03-2000.04.28.
- dbmess.h - Added the reply codes DBENG_SOCLOC_NO_INIT, DBENG_NO_SERVER and DBENG_FAILOVER. Added include of comcode.h.
- flsocket.h - Moved the common socket send and reply codes to the include file comcode.h.
- ipclient.h - Added the extern "C" sections for a C++ compiler.
- ipcomm.h - Added the extern "C" sections for a C++ compiler.
- ipconfig.h - Added the extern "C" sections for a C++ compiler. Note that this module is now obsolete but is not being removed as it might be of some use.
- ipcsrv.h - Added the extern "C" sections for a C++ compiler.
- logger.h - Added log_file_name, log_console and log_get_console prototypes.
- parse.h - The prototypes for the functions stricmp and strnicmp will now only be included if the define HAS_STRICMP (from stdhead.h) is not defined. These function prototypes used to be controlled via the platform define OS_DOS.
- sconnect.h - Added the extern "C" sections for a C++ compiler and added the include of the file comcode.h.
- sliocode.h - Added the extern "C" sections for a C++ compiler.
- slogcode.h - Added the extern "C" sections for a C++ compiler.
- socloc.h - Added the include of the file comcode.h.
- stdhead.h - Added the define HAS_STRICMP to control the definition and compilation of the functions stricmp and strnicmp. These are non-ANSI functions and some compilers include them.
- sys_log.h - Added the include of the file comcode.h. Added the prototype of the new function sys_log_get_active.

## Library Modules

- ipconfig.c - This module is now obsolete since socloc is now used to obtain the host name and TCP/IP port number. This file will not be removed as it still may be of some use.
- logger.c - This module has undergone a major change including:
  - Added the global variable p_has_init to track whether the logger interface has been successfully initialized at least once.
  - Added the global variable p_console_output to control message output to the console/display.
  - Added the function log_file_name to obtain the name of the current log file.
  - Modified the function log_start to allow a NULL string in place of the log file name if the logger interface has been successfully initialized at least once. A NULL or empty log file name indicates to start logging with the previously registered log file name.
  - Added the function log_console to turn console/screen message output on or off.
  - Added the function log_get_console to obtain the current value of the console/screen output flag p_console_output.
- sys_log.c - Added the function sys_log_get_active to obtain the host name and TCP/IP port number of the currently connected sys_log server. Removed all personal logging calls from the sys_log and sys_log_header functions as these cause too many debugging messages.

## Database API Modules

- dbcs.c - This module has seen major changes with the integration of socloc. A Bbuuzzb server failover will be detected and another server will be selected (if one is running) but the database command will not be re-tried as the new Bbuuzzb server does not have the same tables open as the original server. Upon failover and a successful connection to another Bbuuzzb server, this API module will return DBENG_FAILOVER to the application. Changed items include:
  - Removed all references to Winsock WSA functions and the WSAdata structure since it is now the responsibility of the application to use these.
  - Renamed all socket variables by adding the prefix db_.
  - Added function db_version to obtain the Bbuuzzb server version string.
  - Modified to use the socloc interface.
  - Implemented limited failover as above.
  - Added function db_get_active to obtain the current Bbuuzzb server host name and TCP/IP port in use.
- dbeng.c - Cleaned up some debug messages.
- dbiocode.c - Added messages for reply codes DBENG_SOCLOC_NO_INIT, DBENG_NO_SERVER and DBENG_FAILOVER.
- dblocal.c - Cleaned up some debug messages.
- dblocfg.c - Implemented turning on or off of the system logger or personal logger (depending on the MULTIUSER define) from the function db_config_set_log_flag.

## Unix Shell Scripts

All of the Unix shell scripts have had major changes including:

- Compilation and linking is assisted using environment variables.
- Two new shell scripts have been composed called include.generic and include.linux which load the environment variables. These two shell scripts are dot executed from the compile/link scripts.

Refer to the script documentation for a complete reference

## Applications

- datagen - Removed log statements and unnecessary printf statements.
- db/dbm - Moved the include of the flsocket.h inside the multiuser defines. Modified to use socloc if in multiuser mode. Changed the keyword connecting character from the underscore (_) to the period (.). Added the command version. Added the display of the currently connected Bbuuzzb server host name and TCP/IP port number if in multiuser mode.
- dbsrv - Modified to use the socloc interface. Added all common send and reply codes. Removed requirement in function process_request to have at least two command words received. Added a command line parameter consisting of the TCP/IP port number to service.
- dbstress/dbstresm - Moved the include of the flsocket.h inside the multiuser defines. Modified to use socloc if in multiuser mode. Changed function c_config_set_log_flag to turn logging back on if it was turned off. Added command line parameters to specify the primary and alternate table names as well as the log file name.
- dumsocks - Added command line option to suppress all console/screen output, running quiet.
- socloc - Added command line options to run quiet and specify the output log file name.
- sys_log - Added command line option to suppress all console/screen output, run quiet.

# April 3, 2000

Generated a new version of the GPL software package designated as 1.11-2000.04.03. This version contains the inclusion of the socloc interface into the sys_log server and the Bbuuzzb database server. The database client applications that use the sys_log API have also been re-compiled to include the socloc API although these applications do not (as yet) directly call the socloc API.

While adapting the Bbuuzzb database server, I discovered a structural problem with the common socket codes. These codes are required for both single and multi user applications and by placing the codes in the header file flsocket.h, the single user applications will require the include of this header which is not appropriate. For now, I have included this header file as required. In the next version of the GPL software, I plan to separate these common socket codes into a separate header file.

The website documentation has not yet been updated with these changes. The documentation will be updated once the integration of socloc is complete.

# March 9, 2000

Generated a new version of the GPL software package designated as 1.1-2000.03.09. This version contains the following new components:

- dumsockc client application
- dumsocks server application
- socloc server application
- socloc APIs
- sockc client application

This GPL software package also contains the following changes:

The function log_start has been changed to return a integer flag representing success or failure.

The TCP IPC library modules ipclient.c and ipcsrv.c have been changed to remove the Windows specific WinSock functions WSAStartup and WSACleanup. These functions should now be called from the application module instead of the library module. The name of the socket structure was also changed in these two modules to prevent global naming conflicts that have been found to affect the CodeWarrior V4 Windows compiler.

A new function called isip has been added to the GPL parse library module. This function will check for a valid TCP/IP address.

# September 12, 1999

While building a DOS version of the GPL software package, I encountered some bugs in the code that the other compilers did not catch. Generated a new package designated as 1.01-99.09.12 which contains the corrected code in the iresolve application.

# September 7, 1999

Initial release of the Future Lab GPL software including the following components:

- clib - GPL library
- datagen - application
- db - application
- dbeng - Bbuuzzb database engine and APIs
- dbsrv - Bbuuzzb server application
- dbstress - application
- include - header files
- iresolve - application
- sys_log - system log server and API

This release designated as 1.0-99.09.07

Goto Top | Contact Author | Future Lab Home | Contact Webmaster | Feedback

Copyright © 1999-2006 Future Lab, Last Updated Sep 10, 2006