	$Id: ChangeLog,v 1.25 2001/08/12 03:38:51 thosch Rel $
	ChangeLog for IC35 communication
	================================

2001-08-12	version 1.18	IC35LINK-1-18
	long pending release with several improvements and corrections
	according to suggestions and bug reports by users.
	improvements:
	- improved README: table of contents, restrictions, more explanations
	- ic35mgr restore and MMC write 30% faster (proposal by Harald Becker)
	- ic35sync, ic35mgr, vcaconv now support long options, e.g. "--help"
	  info enquiry with "--help" or "--version" now returns exitcode 0
	- new autogen.sh script for generate configure etc. after CVS checkout
	  (thanks Konrad Mader for report about missing configure in CVS)
	- new configure option "--disable-logandcomsim" for conditional compile
	  without logging and com-simulation (proposal by Harald Becker)
	- new configure options "--enable-ansi" and "--enable-pedantic"
	bugfixes:
	- fixed problem where ic35sync with many (ca. 860) addresses failed
	  (thanks Konrad Mader for bug report "get_mod_flen failed")
	- ic35sync now accepts also empty PIMfile(s), e.g. empty ic35.memo
	  (thanks Malte Schmidt for bug report "ic35.memo: parse error")
	- ic35mgr MMCard functions now check ic35path before accessing IC35
	  e.g. warn if shell eat backslash (\) in unquoted MMCard1\test.txt
	  (thanks Thomas Lichtenberg for bug report)
	- restricted ic35mgr to max.blocksize 16350 found by experiments
	- ic35sync, ic35mgr now abort on open failure of logfile or simfile
	- fixed com-simulation for adjacent "RD nn" lines and non-logged bytes
	- fixed compile problem util.c with Linux Mandrake-8.0 and SuSE-7.2
	  (thanks Christian Theile, Karl Stroetmann for bug reports)
	- corrected warnings from "--enable-ansi" and "--missing-prototypes"
	- fixed all Makefile.am: maintainer-clean keeps only sources in CVS,
	  install also README and COPYING, clean dependencies and versinfo.c
2001-08-12_05
	* Makefile.am: maintainer-clean delete also INSTALL, as not in CVS
	* autogen.sh: clearified CONFIGURE_FLAGS and NOCONFIGURE
	* README: didactic reordering, explain autogen.sh maintainer-mode,
	  initial test with 'ic35sync status', tested some more platforms
2001-08-02_22
	* autogen.sh: new script for generating configure and Makefile.in etc.
	  thanks Konrad Mader <konrad.mader@gmx.de> for problem report about
	  configure missing in CVS
	* README: explain when and how to use autogen.sh
2001-06-18_01	version 1.17.6 (CVS only)
	* synproto.c: timeout 2.0 sec for L1-ack1 response on L1-command
	  thanks Konrad Mader <konrad.mader@gmx.de> for bug report where
	  sync of ca. 860 addresses caused "get_mod_flen failed"
2001-06-09_11
	* util.c: explicitely #include <time.h>, as using localtime() etc.
	  thanks Christian Theile <ch_theile@gmx.de> for bug report with
	  Mandrake 8.0 gcc 2.96
2001-03-03_04
	* ic35mgr.c,comio.c,comio.h: new option "--nice=NICEVAL" to lower
	  process priority with restore,mmcput, default "--nice=2", works
	  like builtin 'nice -n 2 ic35mgr mmcput ..", see nice(1).
	  (proposal from Harald Becker)
2001-03-02_02	version 1.17.5 (CVS only)
	* configure.in,README: new configure option "--disable-logandcomsim"
	  (proposal from Harald Becker)
	* ic35sync.c,dataio.c,databin.c,datavca.c,ic35frec.c,syntrans.c,
	  ic35mgr.c,mgrtrans.c,mgrproto.c,comio.{c,h},util.{c,h}:
	  conditional compile for logging and com-simulation (default enabled)
	* ic35sync.c,ic35mgr.c,comio.c,util.c:
	  log_init(),com_siminit() abort program on failure opening file
	* util.{c,h}: new fatal() reports error message and aborts program
2001-02-22_05
	* datavca.c bugfix: accept also empty PIMfile(s), e.g. empty ic35.memo
	  ic35sync creates empty ic35.memo if IC35 has no memo records, and
	  next call ic35sync complained "vCard/vCal "ic35.memo": parse error"
	  (thanks Malte Schmidt for bug report)
	* README: explain 1..3 PIMfiles, more details about export,import,sync
2001-02-19_19
	* comio.c: com_sendw() delay with busy wait instead of interval timer
	  increased write MMCard file throughput to 1740 b/s (with 2kB blocks)
	  (thanks Harald Becker)
	* ic35mgr.c: max.blocksize 16350 for MMC read/write found by experiments
	* mgrproto.c: timeout 5.0 sec for response length needed with big blocks
2001-02-19_02	version 1.17.4 (CVS only)
	* ic35mgr.c: MMCard functions now check ic35path before accessing IC35
	  (thanks Thomas Lichtenberg for bug report)
	* comio.c: fixed com_simrecv() adjacent "RD nn" lines, non-logged bytes
	* README: remarks about install-strip and uninstall
	* all Makefile.am: maintainer-clean keeps only sources under CVS
	* .cvsignore,src/.cvsignore: added missing config.log, programs, .deps
2001-02-17_21	version 1.17.3 (CVS only)
	* ic35sync.c,ic35mgr.c,vcaconv.c: support long options, e.g. "--help"
	  info enquiry with "--help" or "--version" now returns exitcode 0
	* ic35sync.c,ic35mgr.c,comio.h,comio.c,util.h,util.c:
	  error exit on open failure of logfile or simfile
	* README: 'configure --enable-ansi' is ok, warning '--enable-pedantic'
	  successful tests on some more platforms (thanks Thomas Lichtenberg)
	  restrictions of ic35sync and ic35mgr
	* configure.in: pass revision info to configure
	* Makefile.am: install also README and COPYING
	* src/Makefile.am: clean dependencies and versinfo.c
2001-02-10_04	version 1.17.1 (CVS only)
	* configure.in: separate "ansi" and "pedantic" gcc compile options
	* ic35sync.c,ic35mgr.c,datavca.c,port.h,vcc.y,comio.c:
	  corrected warnings from "-ansi" compile
	* util.c,util.h,comio.c,comio.h:
	  local substitutes for functions missing with "-ansi" compile
2001-02-07_04
	* configure.in: more compile warnings with "--missing-prototypes"
	* databin.c,mgrtrans.c,vcc.y,vobject.c:
	  corrected warnings from "--missing-prototypes"
	* README: table of contents, warning about 'configure --enable-ansi'

2001-02-05_03	IC35LINK-1-17
	package renamed to "ic35link" and automake/autoconf/CVS reorganization.
	no changes in sources, programs are unchanged except for version (and
	except for compile with -O2 instead of -O due to automake/autoconf).
	new files:
	  NEWS		release information
	  AUTHORS 	authors
	  THANKS	contributors
	  configure.in	input for autoconf to create configure
	  Makefile.am	input for automake to create Makefile.in
	  .cvsignore	topdir CVS ignore patterns
	  doc/		subdirectory with documentation
	  doc/Makefile.am input for automake to create doc/Makefile.in
	  doc/.cvsignore  CVS ignore patterns
	  src/		subdirectory with sources
	  src/Makefile.am input for automake to create doc/Makefile.in
	  src/.cvsignore  CVS ignore patterns

2001-02-04_02	IC35SYNC-1-16
	this is a bugfix and redesign release and is the last named "ic35sync".
	(the package will be renamed to "ic35link" in the next release, when
	 the reorganizations for automake/autoconf and public CVS are done.)
	improvements and redesign:
	- ic35sync,ic35mgr,vcaconv now report package version and build info
	- distribution includes vcc.c to handle missing/bad 'bison' or 'yacc'
	  (e.g. SuSE-7.0's yacc produced bad vcc.o, thanks Michael Bruennert)
	- reworked and clearified the IC35 manager protocol documentation and
	  implementation (see ic35mgr.txt, mgrtrans.*, mgrproto.*), refer to
	  the IC35 SoftwareDevelopmentKit API MMCard functions in mgrproto.c
	bugfixes in ic35mgr and ic35sync:
	- fixed compile error RedHat-7.0 gcc-2.96 (thanks Dieter Schultschik)
	- corrections for 'ic35mgr status' (thanks Michael Bruennert):
	  mgrtrans.c:status() tries to get IC35 response instead of only wait
	  mgrproto.c:MMCsend() sends blocklength with initial wait
	  corrected output of MMCard2 label
	- ic35mgr commands backup and restore show error messages on new line
	- avoid failing 'ic35mgr restore ..' at "disconnect" by delay 3.25 sec
	  after writedatabase() done
	- avoid failure of 'ic35mgr mmcput file' with occasional slow IC35
	  MMCard write with 3.5 sec timeout for length of response block
	- corrected MMC closedir,closefile response PDUs having no status-word
	- corrected to make 'ic35sync status' work also with simulation file
2001-02-04_01
	* ic35sync.c,ic35mgr.c,vcaconv.c,Makefile:
	  import version info from auto-generated "versinfo.c"
	  all programs now report the common package version
	* util.{c,h}: new log_proginfo(),log_argsinfo() used
	  by ic35sync.c,ic35mgr.c for initial info in logfile
	* ic35sync.c: corrected com_siminit() before status command
	* Makefile: include vcc.c in distribution to avoid bison/yacc problems
2001-02-03_20
	* mgrproto.h,mgrtrans.h: moved MMC file attributes and open modes
	  from mgrtrans.h to mgrproto.h as needed for MMCxxxx() functions
	* mgrproto.c,mgrtrans.c: common conversions functions for FILE_INFO
	  import FIDENSZ for accurate size of FILE_IDEN from IC35 SDK Mmc.h
	* ic35mgr.txt: incorporated protocol corrections due to experience
2001-01-30_01
	* mgrproto.c: need 3.5 sec timeout for length of response block
2001-01-29_13
	* fixed compile error gcc-2.96 RedHat-7.0 (thanks Dieter Schultschik):
	  synproto.c now passes 'int' instead of 'ushort to 'va_arg', because
	  `short unsigned int' is promoted to `int' when passed through `...'
	* mgrproto.h,mgrproto.c,mgrtrans.c:
	  new MMCard command functions MMCxxxx() replace sendmcmd(),recvmcmd()
	  for better prototype check and avoid the gcc-2.96 RedHat-7.0 problem
	  refer to IC35 SoftwareDevelopmentKit API MMCard functions
	* synproto.c,mgrproto.c,ic35frec.c offsetof,alenof macros now in util.h
2001-01-27_05
	* bugfix "ic35mgr status" (thanks to Michael Bruennert):
	  mgrtrans.c:status() tries to get IC35 response instead of only wait
	  mgrproto.c:MMCsend() sends blocklength with initial wait
	  ic35mgr.c: corrected MMCard2 label output
	* ic35mgr.c,util.{c,h}: extracted _not_impl() to util.{c,h}
2001-01-25_05
	* mgrtrans.c,mgrproto.c,ic35mgr.txt:
	  corrected: closedir,closefile response PDUs do not have status-word
	* mgrtrans.c: backup,restore show error messages on new line
	  writedatabase() delays 3.25 sec to avoid failure in mdisconnect()
	* mgrtrans.c,mgrproto.c,mgrproto.h,genproto.h:
	  reorganized manager protocol, new Mcmdrsp(),Msendblk(),Mrecvblk()
	* ic35mgr.txt: described and incorporated basic protocol operations
2001-01-21_21
	* genproto.c,genproto.h,Makefile,README:
	  new module genproto.{c,h} - general IC35 protocol support
	* synproto.c,mgrproto.c: import PDU encode/decode with genproto.h
	* syntrans.c,mgrtrans.c: import general welcome() with genproto.h

2001-01-20_03	IC35SYNC-1-15
	new IC35 manager 'ic35mgr' supports access of IC35 MMCard(s)
	- command "mmcdir" lists contents of MMCard(s)
	- commands "mmcget","mmcput","mmcdel" read,write,delete MMCard file
	- commands "backup","restore" IC35 organizer database
	- ic35mgr.txt now really describes the IC35 manager protocol
	  (previously it was just extracts of Windows 'portmon' logfiles)
	bugfixes in ic35sync and vcaconv:
	- "ic35sync sync" now updates record if on IC35, else writes new record
	- "vcaconv sortvca ic35.vcal" did produce empty output, fixed vobject.c
	- fixed vcc.y compile warnings
	- "vcaconv sortvca .." improved: shows properties in sort order sequence
	todo:
	- ic35mgr install application on IC35
	- ic35sync initial sync does not yet write all records to IC35
	  workaround: do "ic35sync import .." before first "ic35sync sync .."
	* ic35mgr.c: fixed compile warning with unused _not_impl()
2001-01-18_02
	* comio.{c,h},mgrproto.c,mgrtrans.c:
	  new com_sendw() - send datablock with waiting (for slow MMCard ops)
	  com_send() does send without delays at full speed
	* mgrtrans.c: status() needs 10 msec delay to let IC35 get ready
2001-01-17_05
	* ic35mgr.c,mgrtrans.c:
	  implemented "restore" IC35 organizer database from file, tested OK
2001-01-16_05
	* ic35mgr.c,mgrtrans.h,mgrtrans.c:
	  implemented "backup" IC35 organizer database to file, tested OK
	* ic35mgr.txt: corrected details IC35 backup: head retry, last ack resp
2001-01-14_23
	* README: IC35 manager modules and usage, short section "programs"
2001-01-14_22
	* comio.c: com_send() using interval timer for delay increased
	  write MMCard file throughput to 1350 b/s (with 2kB blocks)
2001-01-14_01
	* ic35log.sh: new option "-s n" - prepend output with 1:line 2:time
	  CAVEAT: "-s n" does not work for "-lsyn2", "-lsyn4"
	* Makefile: added missing ic35log,ic35mgr to "all" target
2001-01-13_04
	* comio.c: made "mmcput" faster with 2 stopbits and delay every 29 bytes
	  improved write MMCard to 890 b/s default 2kB blocks (930 b/s with 5kB)
	  err.corr com_recv,comsend: handle un-opened com_fd to avoid segfault
	  RCS branch 1.4.1 with experiments for throughput
	  RCS branch 1.3.1 with com_simrecv() non-logged bytes (yet erroneous)
2001-01-12_22
	ic35mgr "mmcget", "mmcput", "mmcdel" commands tested OK with IC35
	* ic35mgr.c,mgrtrans.h,mgrtrans.c,mgrproto.h,mgrproto.c:
	  implemented "mmcput" - write file to IC35 MMCard, tested OK (but slow)
	  implemented "mmcdel" - delete file on IC35 MMCard, tested OK (fast ;-)
	  additional 'mode' parameter for mmc_openfile(),sendmcmd(MCMDopenfile,)
	* ic35mgr.c: new option "-b size" - read/write blocksize (for tests)
	  corrected mmcget,mmcput show progress: space to separate errormessage
	* mgrproto.c: log checksum error in MPDUsend(),MPDUrecv() for diagnostic
	* ic35mgr.txt: MMCard operations for write file, delete file
	  table of contents, table of MMCard operation functions and codes
	  moved logfile reference to end, removed hacked log extracts
	read MMCard file throughput 2250 b/s with default 5kB blocksize
	write MMCard file throughput 590 b/s default 2kB (610 b/s with 5kB)
2001-01-10_02
	* ic35mgr.c: mmcget,mmcput without 'file' arg derive it from ic35path
	  mmcget converts ic35path lowercase to uppercase, translate '/' to '\'
	  mmcget shows file transfer progress every 5kB read data
2001-01-09_05
	* ic35mgr.c,mgrtrans.h,mgrtrans.c,mgrproto.h,mgrproto.c:
	  implemented "mmcget" - read file from IC35 MMCard, tested OK
	* mgrproto.c: MPDUrecv() needs receive timeout increased to 2.0 sec
2001-01-08_03
	ic35mgr "mmcdir" corrected and tested OK with IC35
	* ic35mgr.c: mmcdir output to stdout for simpler redirect to file
	  mmcdir output also MMC file attribute, do not read IC35 status data
	* mgrtrans.c: status() must always send '\x50' to init IC35,
	  status() optionally reads status data, fixed typo mmctstampstr()
	* mgrproto.c: reduced MAXRETRY to 5 for MPDUsend(),MPDUrecv()
	  corrected retry protocol MPDUsend(), 10 sec timeout nn_nn response
	  err.corr sendmcmd(): puttxt0() append trailing '\0' to dirpath in pdu
	* comio.c: delays 100 usec before send every 16th byte (slow MMCard ops)
	* comio.c,comio.h: com_settimeout() return previous timeout
	* ic35mgr.txt: details about MMCard ops filestatus block from IC35 SDK
	  read status data from IC35 is optional, initial send 50 is mandatory
	  negative acknowledge in MMCard operations protocol
2001-01-07_06
	* ic35mgr.c,mgrtrans.h,mgrtrans.c,mgrproto.h,mgrproto.c:
	  implemented directory listing of MMCard(s), tested OK with simulation
	  corrected max.length of MMC label to 11 chars (IC35 SDK API Ref.Guide)
	* mgrtrans.c: corrected mdisconnect(): send 09 recv 90, send 01 recv 90
	  mconnect() reads IC35 status only if statfname specified, log mconnect
	problem: MMCard(s) directory listing does not work with IC35,
	checksum error / timeout on send command get directory length
	uncertain if read IC35 status data needed in ic35mgr.c:ic35mmcdir()
2001-01-04_07
	* ic35mgr.txt: description of MMCard operations and backup,restore
	* ic35mgr.c,mgrtrans.h,mgrtrans.c,mgrproto.h,mgrproto.c,Makefile
	  first version of IC35 Manager, "status" command working with IC35
	* syntrans.c: removed not needed headers <time.h>,"dataio.h"
2001-01-01_20
	* ic35mgr.c: framework for (yet non-functional) IC35 Manager commands
2000-12-31_18
	* vcc.y: corrected compile warnings about unused functions
	  fixed yacc/bison warning: %expect 2 shift/reduce conflicts for "items"
	  use YYERROR_VERBOSE for parse error reports, disabled useless YYDEBUG
	* vobject.c: correct delList(): return removed vobj even if first
	* vcaconv.c: improved "sortvca": show properties in sort order sequence
	  sort todo by due-time,summary, memo by summary,modify-time
	  compare date+time independant of encoding
	* ic35sync.c: corrected "sync": update record if on IC35, else write new

2000-12-28_04	IC35SYNC-1-14
	ic35sync import,sync step-5 done: "sync" command, misc. improvements
	- sync command for synchronize vCard,vCalendar format PIMdata with IC35
	- corrected convert of PIM BDAY birthday to IC35 for yyyy-mm-dd format
	- PIM multiple CATEGORIES now preserved by prepend category from IC35,
	  single or standard of multiple CATEGORIES are replaced
	- PIM fullname FN now preserved, IC35 updates first,last name into it
	- put first 2 EMAIL entries from vCard into IC35 address Email1,Email2
	- put unspecific telno to IC35 TelWork for "Business", else to TelHome
	- map IC35 address "(def.)"s in VCARD.NOTE marked "(def1):","(def2):"
	- conversion IC35 to/from PIM record does now yet delete record fields
	- extracted data formats from dataio.c into separate modules:
	  datatxt.c  text format (output only)
	  databin.c  binary IC35 record format
	  datavca.c  vCard,vCalendar format
	  vcutil.c   vCard,vCalendar utilities
	  vcutil.h   header for vCard,vCalendar utilities
	fixes for gnomecard from gnome-pim_1.2.0:
	- compare VCARD.REV against old reference date+time from IC35, because
	  gnomecard does not maintain X-PILOTSTAT.
	- write VCARD.REV:yyyy-mm-ddThh:mm:ss, because yyyymmddThhmmss was
	  ignored by gnomecard.
	fixes for gnomecal from gnome-pim_1.2.0:
	- first line of VEVENT.SUMMARY to/from IC35 Summary, remaining lines
	  to/from Notes, because gnomecal does not support VEVENT.DESCRIPTION
	- keep unsupported property VTODO.DTSTART marked in VTODO.DESCRIPTION
	- add VEVENT,VTODO.CLASS:PUBLIC, else gnomecal would crash on edit
	fixes for korganizer v1.1.1:
	- put UID:IC35id-xxxxxxxx to vCard,vCalender record if no UID there.
	- produce output vCard,vCal in same CRLF/NL-mode as found on input,
	  as korganizer has NL-terminated lines in vCalendar.
	- translate IC35 CRLF to/from PIM NL in NOTE and DESCRIPTION fields.
	- keep unsupported properties VTODO.DTSTART,DUE,CATEGORIES as marked
	  lines in VTODO.DESCRIPTION
	- korganizer supports only DALARM, map IC35 LED and Beep to/from it
	vcaconv extensions:
	- command "prvca" reports vCard/vCalendar parse error.
	- command "sortvca" outputs sorted vCard,vCalendar to standard output.
	- command "imphandy" appends vCards with category HANDY from vCard file
	  to standard output, after import the result back into IC35 they are
	  for upload to a mobile phone from IC35 addresses in category HANDY.
	CAVEAT:
	- no options for sync conflict resolve, PIMfile always overrides IC35!
	- IC35 has no different times for LED,Beep alarm, DALARM takes priority
	- vcaconv conversions do not transfer clean/modified record status
	- memory leak in vobject.c: all setVObject_*_Value() do not free the
	  previously attached dupStr()-allocated string value
	* datavca.c,vcutil.{c,h}: support delete empty fields IC35 to/from PIM
	* vobject.c: correct delList(), delete (only) first in property list
2000-12-27_21
	* comio.c: for simulate do not set DTR, allow "RDx" in simulation file
	* datavca.c,vcutil.c,vcutil.h:
	  extracted vCard,vCal utilities from datavca.c to vcutil.c,vcutil.h
	  new clr_vobjdirty(),SetModtimeIfdirty() for vCard,vCal modified time
	* vcaconv.c: use vCard,vCal utilities vcutil.c
2000-12-27_01
	* datavca.c: correct vca_set_recid(): update UID if "IC35id-xxxxxxxx"
2000-12-26_04
	* datavca.c: fixes for gnomecal,korganizer
	  gnomecal does not support VTODO.DTSTART, keep in VTODO.DESCRIPTION
	  avoid gnomecal crash on edit by add VTODO,VEVENT.CLASS:PUBLIC
	  add VTODO,VEVENT.CLASS:PUBLIC, else gnomecal crashes on edit
	  korganizer supports only DALARM, map IC35 LED and Beep to/from it
	* dataio.c,dataio.h,databin.c,datatxt.c,datavca.c:
	  fix open,close logic: new argument mode=r/w/r+ for xxx_open()
	* dataio.c: no need to keep filenames
2000-12-25_17
	* ic35sync.c: initial "sync" with empty PIM must export all IC35 recs
	* datavca.c: fixes for korganizer and gnomecal
	  korganizer does not support VTODO.DTSTART,DUE,CATEGORIES, keep them
	  as marked lines in VTODO.DESCRIPTION
	  gnomecal does not support VEVENT.DESCRIPTION, keep the first line
	  of VEVENT.SUMMARY in IC35 S_Summary, more lines in S_Notes
	* IC35 address fields with marks "(def1):","(def2):" to/from VCARD.NOTE
	* README: added installation, usage, disclaimer sections
	* Makefile: added COPYING (GPL) to distribution
2000-12-23_19
	* datavca.c: default CLRF mode for output CRLF-terminated vCard,vCal
	  unspecific telno to IC35 TelWork for "Business", else to TelHome
	  replace single or standard of multiple categories, else prepend
	  new _vca_type() centralizes/simplifies vCard,vCal record type detect
	* vcaconv.c: corrected "imphandy" to skip non-digit telno separators
2000-12-23_15
	* dataio.{c,h},Makefile: extracted data formats into separate modules
	  datatxt.c  text format (output only)
	  databin.c  binary IC35 record format
	  datavca.c  vCard,vCalendar format
	* fixed problem with korganizer: translate IC35 CRLF to PIM NL in NOTEs
	* fixed SIGSEGV in SetCategory()
2000-12-22_01
	* dataio.c,vcc.y,vobject.c,vobject.h:
	  fixed problem with korganizer, has NL-terminated lines in vCalendar
	  produce output vCard,vCal in same CRLF/NL-mode as found on input
2000-12-21_22
	* dataio.c: corrected some conversions IC35 to/from PIM
	  conversion to IC35 of PIM BDAY birthday failed with yyyy-mm-dd format
	  PIM multiple CATEGORIES now preserved by prepend category from IC35
	  PIM fullname FN now preserved, IC35 updated first,last name into it
	* vcaconv.c: "sortvca" now sorts VObject property lists to ease tests
	  corrected "imphandy": created vCards lacked REV revised time
2000-12-21_15
	improved reference date+time from IC35:
	* syntrans.{c,h},ic35sync.c: ReadSysInfo() and WriteSysInfo() replace
	  old get_date_time(),set_date_time(), names like IC35Comm.dll
	* dataio.{c,h},ic35sync.c: new set_oldic35dt() and get_newic35dt()
	  to convert IC35 old/new reference date+time to/from internal
	fixes for gnomecard from gnome-pim_1.2.0:
	* dataio.c: compare VCARD.REV against old reference date+time from IC35
	  because gnomecard does not maintain X-PILOTSTAT
	  write VCARD.REV:yyyy-mm-ddThh:mm:ss, because yyyymmddThhmmss was
	  ignored by gnomecard
2000-12-21_03
	* vobject.{c,h},dataio.c: delList(),delProp() do not cleanVObject()
	* fixed SEGV: dataio.c:_backup_and_openwr, ic35frec.c:_del_ic35recbuffs
	* dataio.c: correct vcard_to_ic35addr(): 1st/2nd EMAIL to A_Email1/2
	* vcaconv.c: new command "sortvca" - sort vCard,vCal file to stdout
	  new command "imphandy" - import vCards for upload to handy telbook
2000-12-19_02
	* syntrans.c: set_date_time() reports set sysinfo
	* ic35frec.c: set_ic35recdata(NULL,0) clears record-,field-buffers
	* ic35frec.h: added IC35 record change flag definitions
	* dataio.c: use IC35 record change flag definitions
	  correct vca_open(): handle empty vCal file, report parse error
	  (e.g. empty vCal file makes "sync" delete all IC35 records!)
	  ic35xxx_to_vyyy(): put UID to record if not there, korganizer needs
	  support pim_delrec(), vca_delrec() uses new delProp(),delList()
	* vobject.{c,h}: support delete property from vobj, vobj from list
	* vcaconv.c: command "prvca" reports vCard/vCal parse error
	  (cannot use pim_openinp() like other commands, as pim_getrec()
	   skips the VCALENDER property from vcafile with vCalender only.)
	* ic35sync.c: implemented "sync" command as ic35sync(),syncfile()
	  importfile() collects IC35 actions, report num.of write/update/commit
	  CAVEAT: no conflict resolve options, PIMfile always overrides IC35!

2000-12-17_21	IC35SYNC-1-13	not released to public
	ic35sync import,sync step-4 done: "import" command, misc. improvements
	- algorithm details described in ic35sync.c:ic35import(),ic35export()
	- import command for vCard,vCalendar or binary format PIMdata into IC35
	- status command (new) shows IC35 version, sysinfo, total,mod records
	- export command improved:
	  export into existing PIMfile(s), backup e.g. ic35vcal to ic35.vcal~
	  map IC35 address fields "(def.)" to/from VCARD:NOTE marked lines
	  change vCard,vCalendar record modified time only if record changed
	  support DCREATED in vCalendar: creation time of VEVENT,VTODO record
	  corrected VEVENT:AALARM,DLARM, were sometimes wrongly created
	- support X-PILOTSTAT in vCard,vCal: 0=same, other=changed vs. IC35
	- default format changed to "vca" for primary use vCard,vCalendar
	- vcaconv may be used as filter with input/output from stdin/stdout
	- fixed QUOTED-PRINTABLE problem with multi-field properties (like
	  VCARD:N, VCARD:ADR): due to problem with parser vcc.y and for
	  compatibility with other programs using the vCard,vCal output
	  QUOTED-PRINTABLE is not used on multi-field properties.
	  (otherwise the split into field sub-properties fails and the
	  first field (e.g. VCARD:ADR:STREET) gets the string of ALL the
	  fields (e.g. STREET,CITY,etc.) with ";" within it.)
	todo: sync command, fix memory leak in vobject.c
	  conversion IC35 to/from PIM record does not yet delete record fields,
	  i.e. record on destination may differ and have fields not in source.
	  may be delete field needed only for sync, because import/export are
	  specified to not delete on destination.
	* ic35sync.c,syntrans.c,synproto.c: support new "status" command
2000-12-17_08
	* dataio.c: attach CHARSET to toplevel prop (e.g. VCARD:N, VCARD:ADR)
	  do not use QUOTED-PRINTABLE on e.g. VCARD:ADR due to parser problem
	  move IC35 address "(def.)" fields with markers to/from VCARD:NOTE
	  corrected for "vcaconv bin2txt .." conversion to standard output
	  corrected StringValue(): handle C and Unicode string values
	  ignore harmless LED,Beep, Start,EndTime differences (xxx_cmpic35rec)
	  log pimfile open,close operations
	* ic35sync.c: default format now "vca", log ic35sync command line
	  corrected importfile(): commit was too often (vca) or not done (bin)
	CAVEAT: delete field in convert vCard,vcal to/from IC35 not supported,
	  i.e. record on destination may differ and have fields not in source
2000-12-15_23
	* ic35sync.c: re-designed import, commented import,export algorithms 
	  compare all PIMrecs with IC35 and do commit/update/write to IC35
	  do not set sysinfo (date+time) if any IC35 record not in PIMfile
	  do not commit record on IC35 if not in PIMfile
	  use new _xxx_ic35recs() for records from IC35
	* vcaconv.c,dataio.c: optionally use stdin/stdout to act as filter
	* dataio.c: set vCard,vCal record modified-time only if record changed
	  added bin_cmpic35rec() - compare record from IC35 with binary record
	  corrected _ChangeString(): handle C and Unicode string values
	  fixed memory leak: pim_close() calls inpfmt close to free record list
2000-12-14_23
	* dataio.c:
	  ignore categoryIDs, repeat fields if no repeat (vca_cmpic35rec)
	  corrected bin_open(): start with binlist after bin_rewind()
	  corrected vca_open(): must add all memo records separately to vcalist
	  corrected VCARD:FN space in fullname only if FirstName AND LastName
	  new bin_updic35rec() for pim_putrec() with e.g. "vcaconv bin2txt .."
	* vcaconv.c: re-designed for generic PIM operations in dataio.c
2000-12-14_00
	* ic35sync.c: corrections and improvements in importfile():
	  must always update_frec() owner address data with recid=05000001,
	  otherwise on IC35 in category "Address", but not as owner data
	  write back recordID and CLEAN status to PIM only if write to IC35 OK
	  fix memory leak: release newly created ic35rec
	  shorten progress,error messages of import and export commands
	  pim_cmpic35rec() params were swapped, close IC35 file after error
	* dataio.{c,h}: prepare for vcaconv with generic operations pim_xxx()
	  pim_getrec() with fileid FILE_ANY=0 to get next record from any file
	  pim_putrec() converts inpfmt record to pimfmt and writes to outfile
	  pim_openinp() opens file for input and sets new inpfmt
	  pim_openout() opens file for output and sets pimfmt
	  removed old put_record(),_get_binrec(),_get_vcarec()
	  CAVEAT memory leak: record list from pim_openinp() not freed
2000-12-12_06
	* dataio.{c,h}: support DCREATED creation time of VEVENT,VTODO record
	  support X-PILOTSTAT in vCard,vCal: 0=same, other=changed vs. IC35
	  generic operations pim_xxx(), use function tables per format
	  ic35xxx_to_vyyy() update existing instead of create vCard,vCal record
	  read from existing pimfile(s), so that "ic35sync export" preserves
	  corrected ic35sched_to_vevent(): create VEVENT:AALARM,DALARM only
	  if S_AlarmBefore is non-zero, S_Alarm_Repeat may be absent and thus
	  AlarmNoLED,AlarmNoBeep misleading
	* syntrans.{c,h}: readfile() extracted to ic35sync.c:exportfile()
	* ic35sync.c: implemented "import" command as ic35import(),importfile()
	  stub for "sync" command ic35sync(),syncfile(), yet non-functional
	CAVEAT: memory leak in vobject.c: all setVObject_*_Value() do not free
	  previously attached dupStr()-allocated string value
	  dataio.c lacks some bin_xxx operations for import from binary format
	  delete PIM-record not supported yet, missing support in vobject.c

2000-12-07_04	IC35SYNC-1-12	not released to public
	ic35sync import,sync step-3 done: convert vCard,vCal to IC35 record
	* dataio.c: convert vCard,vCal to IC35 record vxxxx_to_ic35yyyy()
	  correct ic35addr_to_vcard(): set VCAdrProp if have any address field
	* dataio.{c,h}: export vCard,vCal to IC35 conversion as _get_vcarec()
	* ic35frec.c: corrected errors found with vCard,vCal to IC35 conversion
	* vcaconv.c: support "vca2bin", new "bin2txt" conversions
	* ic35sync.c: renamed ic35sync() to ic35export(), as that's what it does
	  stubs ic35import(), ic35sync() for un-implemented functions
	  connect() argument rdtime to retrieve value from IC35
2000-12-03_23
	* ic35sync.txt: marked uncertain topics with "???"
	  experiments found new commands: read record by record-ID (01 05)
	  and write record data update (01 09), keeps recID on IC35 unchanged
	* syntrans.{c,h},synproto.{c,h}: implemented new commands
	  read record by record-ID and write updated record data
	* ic35log.sh: support new commands readrecrid,updatrec
2000-12-02_07
	ic35sync import,sync step-2 done:
	- new protocol functions for import,sync tested OK
	- new knowledge about import,sync from experiments
	todo: vCard,vCal to IC35 record, commands import,sync
	* synproto.c: corrected CMDfgetmlen, CMDcategory, CMDsetdtime
	* syntrans.{c,h}: connect() argument rdtime to retrieve value from IC35
	* vcaconv.c,dataio.c: handle binfile records without data
	* ic35log.sh: process ic35sync logfiles, fragmented response readmodrec
	* ic35sync.txt: new knowledge about open file, changeflag, write record
	  first all read then write,del,commit, "date+time" may be any string

2000-12-01_20	IC35SYNC-1-11	not released to public
	intermediate freeze after ic35sync import,sync step-1 done:
	- new functions: set_date_time, category, get_mod_flen, read_mod_frec,
	  write_frec, delete_frec, commit_frec
	- IC35 record access functions ic35frec.{c,h}
	- 4byte record-ID combined from file-id (MSB) and record-id (LSW)
	- support last-modified-time for vCard,vCalendar
	- protocol-analyser ic35log.sh replaces and extends ic35prot.awk
	todo: test new funcs, vCard,vCal to IC35 record, commands import,sync
	* dataio.c: use 4byte record-ID in binary format
	* ic35sync.c: IC35 file descriptions now from "ic35frec.h"
2000-12-01_19
	* ic35sync.txt,ic35frec.h: comment max.lengths of record fields
	* dataio.c,syntrans.c,ic35frec.{c,h}:
	  hide ic35 file description internals, use acces functions
	* ic35frec.c: truncate to max.field-length, set nflds from recID
	  added missing 1byte-fields T_Completed,T_Priority
	* vcaconv.c: usage on "-h", report unknown conversion
2000-12-01_02
	* ic35frec.{c,h}: IC35 record access and file descriptions
	* dataio.{c,h},syntrans.{c,h},vcaconv.c:
	  adapted for IC35 record access functions and 4byte record-ID
	* synproto.c: adapted for 4byte record-ID combined of fileid,recid
	* Makefile: new module ic35frec.{c,h}, ic35log replaces ic35prot.awk
	  target "clean" also removes .depend file
2000-11-29_21
	* syntrans.{c,h}: missed commit_frec() for import,sync (yet untested)
2000-11-28_04
	* dataio.c: support last-modified-time for vCard,vCalendar
	  concatenate IC35 file-id and record-id for XPilotIdProp
	  export ic35_dtime() for use in syntrans.c:set_date_time()
	* syntrans.c: do disconnect on welcome() error to avoid hang IC35
	* syntrans.{c,h}: functions for import,sync (untested): set_date_time,
	  category, get_mod_flen, read_mod_frec, write_frec, delete_frec
	* synproto.{c,h}: import,sync commands: CMD{fdelrec,fgetmlen,fgetmrec}
2000-11-27_15
	* ic35sync.txt: record-id, file-id, get number of modified records
	  new commands: read next modified record, delete record
	  updated correspondance with IC35Comm.dll to current knowledge
	  comment logs Delete.tar.gz:*.log, how M.Bruennert made them
	* ic35log.sh: replaces ic35prot.awk, ic35prot2.awk
	  ic35prot.awk,ic35prot2.awk: moved to Attic/
2000-11-27_01
	* ic35prot.awk: err.corr prxdata(), _plen was undefined if skip < 3
2000-11-25_18
	* ic35prot2.awk: cosmetics, comment IC35Comm.dll functions
2000-11-25_03
	* ic35prot2.awk: decode record field contents, comment variables
2000-11-24_04
	* ic35prot.awk: prepend data with WRx,RDx (hex) WRa,RDa (ASCII)
	  skip also checksum if Level-1 headers are skipped with "-vskip=3"
	* ic35prot2.awk: decode IC35sync PDUs from WRx,RDx transmission logs
	  from 'portmon' processed with 'awk -f ic35prot.awk -vskip=3'

2000-11-22_08	IC35SYNC-1-10
	* ic35sync supports output IC35 PIM data in vCard,vCalendar format
	  new option "-f format" and command,pimfile args replace "-o outfile"
	  write date+time to logfile
	* restrictions of implemented vCard,vCalendar output:
	  - strings with non-printable chars get "QUOTED-PRINTABLE" property
	    uncertain if it should be "ENCODING=QUOTED-PRINTABLE"
	  - strings with 8bit-chars also get "CHARSET=ISO-8859-1" property
	    uncertain if this is compliant to standard, because vobject.h
	    does not contain "CHARSET", but both "vCard Version 2.1" and
	    "vCalendar Version 1.0" explicitely allow "Character Set"
	  - IC35 "Memo" has no standard vCard,vCalendar format representation
	    using proprietary extension of VMEMO records
	* vcc.y,vobject.{c,h}: extended by non-standard "VMEMO" records
	  for IC35 "Memo" representation
	* dataio.c: VEVENT recurrence rules and alarms
	* ic35sync.txt: corrected LED-,Beep-alarmflags
2000-11-21_04
	* moved IC35 file descriptions from syntrans.* to dataio.*
	  to avoid vcaconv link needing syntrans.o,synproto.o etc.
	* dataio.c: put_record() supports output vCard,vCalendar output
2000-11-20_02
	* added vCard,vCalendar API: vcc.h vcc.y vobject.h vobject.c port.h
	  from gnome-pim-1.2.0.tar.gz:gnome-pim-1.2.0/libversit/
	  see ftp://ftp.gnome.org/pub/GNOME/stable/sources/gnome-pim/
	  other sources for vCard,vCalendar API:
	  - kpilot_3.1.10-1.0.tar.gz (based on KPilot 3.1b9)
	    from ftp://kde.tdyc.com/pub/kde/debian/dists/potato/contrib/source/
	    see also http://www.slac.com/pilone/kpilot_home/index.html
	  - versit consortium' SDK for Windows DLLs
	    from http://www.imc.org/pdi/sdkdllsr.zip
	* new vcaconv.c vCard,vCalendar conversions, e.g. for offline tests
	  with IC35 binary data
	* restrictions of implemented vCard,vCalendar output:
	  - sometimes non-7bit-ASCII chars lack QuotedPrintable and CharSet
	  - VEVENT recurrence rules not implemented
	  - VEVENT alarms AALARM,DALARM not implemented
	  - IC35 "Memo" has no standard vCard,vCalendar format representation
2000-11-19_07
	* Makefile: ask before overwrite distribution tar.gz
	* ic35sync.c: write date+time to logfile; replaced "-o outfile"
	  with new option "-f format" and command,pimfile arguments
	* syntrans.c: reset serial device on abort with Ctrl-C
	* comio.c: correct comrecv(): fdsets undefined if select() returns -1
	* avoid gcc warnings about rcsid[]s not used

2000-11-19_00	IC35SYNC-1-9
	added README, ic35sync.txt,ic35mgr.txt, ic35prot.awk
	* Makefile: integrated help, target for tar.gz distribution
	* syntrans.{c,h},ic35sync.c: export connect(), details internal
	  abort on bad power and wrong password responses
	  check for ready-reponse '\x80' from IC35
	* ic35sync.c: write ic35sync version/rcsid to logfile
	* util.{c,h}: log_init() interface changed (loglevel argument)
	* ic35sync.txt: mention logfiles used for protocol analysis

2000-11-07_03	IC35SYNC-1-8
	ic35sync.c split into modules

2000-11-05_05	IC35SYNC-1-7
	version 1.7 released to Michael Bruennert
	read PIM data from IC35 tested OK
	CAVEAT:
	- PIM data export in "home grown" format not compatible to anything
	- cannot write PIM data to IC35, neither synchronize
	- unsupported commands "set date+time", "category", "reset chgflag"
	- ugly one-module-source
2000-11-04_19	ic35sync.c 1.1
	hacking finished, now for compile and tests ..
2000-10-31
	start hacking code
