2001-01-14 Andrew Arensburger - Version 1.6.6 released. * doc/coldsync.8: Clarified installation process a bit. * src/coldsync.c (bug fix? enhancement?): Previously, ColdSync installed databases before or after the main sync, depending on whether the -z option was given, but ran the Install conduits before the main sync no matter what. Now runs the Install conduits just before installing files, either before or after the main sync. * doc/coldsync.8: Clarified -mr option a bit. * doc/coldsync.8: Mention -z command-line option. 2001-01-11 Andrew Arensburger * AUTHORS: Added two more contributors. * src/config.c, src/coldsync.c: Added -z option, to install new databases after the main sync. Zachary P. Landau * src/coldsync.c (bug fix): dumped core when .coldsyncrc didn't contain any pda blocks. Fix contributed by Ted Faber - Version 1.6.5 released. * i18n/fr.po: Latest translations. * i18n/de.po: Checked in on general principle. * src/restore.c, src/parser.y, src/palm.c, src/log.c, src/lexer.l, src/install.c, src/config.c, src/conduit.c, src/coldsync.c, src/backup.c, src/archive.c, src/GenericConduit.cc, libpdb/pdb.c, libpconn/slp.c, libpconn/padp.c, libpconn/dlp_rpc.c, libpconn/dlp_cmd.c, libpconn/dlp.c, libpconn/cmp.c, libpconn/PConnection_usb.c, libpconn/PConnection_serial.c, libpconn/PConnection.c: Anal retentive error message cleanup. 2001-01-10 Andrew Arensburger - Version 1.6.4 released * src/restore.c, src/parser.y, src/palm.c, src/config.c, src/conduit.c, src/coldsync.c: Updated error messages to look better with Error() and Warn(). 2001-01-09 Andrew Arensburger * include/pconn/util.h, include/pconn/slp.h, include/pconn/padp.h, include/pconn/dlp_cmd.h, include/pconn/dlp.h, include/pconn/cmp.h, include/pconn/PConnection.h, include/pdb.h, src/GenericConduit.hh, src/parser.h, doc/conduits.texi, doc/coldsync.8: Updated copyright statement. * include/pconn/pconn.h: Added header comment, copyright statement. * include/pconn/palm_types.h, configure.in: Added copyright statement. * src/restore.c, src/pref.c, src/parser.y, src/palm.c, src/log.c, src/lexer.l, src/install.c, src/conduit.c, src/backup.c, src/archive.c, src/GenericConduit.cc: Changed fprintf(stderr, ...) to Warn() or Error(), as appropriate. * src/spc.c: Updated copyright statement. * src/coldsync.c: Added abortive logfile. Not used, though. Changed fprintf(stderr, ...) to Warn() or Error(), as appropriate. * src/misc.c: Added Warn(), Error(). * src/coldsync.h: Added abortive global_opts.log_fname. Changed print_version() prototype. Added declarations for Warn(), Error(). * src/config.c: Added abortive "-l " option. Not used, though. print_version() now takes a file handle argument. Replaced fprintf(stderr, ...) with Error() or Warn(), as appropriate. 2001-01-08 Andrew Arensburger * configure.in: Added test for vfprintf(). 2001-01-05 Andrew Arensburger * libpdb/pdb.c: Cosmetic modifications. 2000-12-31 Andrew Arensburger * src/GenericConduit.cc: Added a comment. Made sure previous fix was okay. 2000-12-30 Andrew Arensburger * src/GenericConduit.cc (bug fix): Fixed the logic for new records from the Palm, to handle the pathological (but not unheard-of) case of an archived or expunged, but not deleted, record. Also, now does _something_ with new, deleted, non-archived, non-expunged records, though it's probably not something very smart. 2000-12-24 Andrew Arensburger * (almost everything): Added "typedef struct PConnection PConnection". Removed the "struct" where possible. * src/coldsync.c: forward_netsync() terminates when it fails to read from or write to either PConnection. - Version 1.6.3 released. * src/config.c: Added 'hostaddrs', 'num_hostaddrs', 'hostname'. Renamed get_hostid() to get_hostinfo(). Use gethostbyname2() instead of gethostbyname(). Added sockaddr_len(), get_hostaddrs(), free_hotaddrs(). Updated new_pda_block(), free_pda_block(). * src/coldsync.c: Added mkforw_addr(), forward_netsync(). Use get_hostinfo() instead of get_hostid(). main() now has "done:" label, to simplify termination. Added forwarding support in run_mode_Standalone(). Added "to do" comments in run_mode_Init(). Connect() now uses the new PConn_bind(). Removed unused find_max_speed(), since it's in PConnection_serial.c. * src/parser.y: Added grammar for "forward:" lines in pda block. Added opt_string. * src/coldsync.h: Added forwarding-related fields to pda_block. Added declaration of 'hostaddrs', 'num_hostaddrs', get_hostaddrs(), free_hostaddrs(). Renamed get_hostid() to get_hostinfo(). Added conditional declaration of snprintf(), for systems that don't have it. * libpconn/PConnection_usb.c: Added trivial udp_bind(), dummy udp_connect(). * libpconn/PConnection_serial.c: Added trivial serial_bind(), dummy serial_connect(). * libpconn/PConnection_net.c: Uncommented the remaining ritual statements, since they're now used. Added net_bind(), net_connect(). pconn_net_open() initializes io_bind, io_connect. Moved bind() out of pconn_net_open() and into net_bind(). Cleaned up some trace statements. (bug fix): net_tcp_listen() read from and wrote to NULL instead of a PConnection. * libpconn/PConnection.c: new_PConnection() now initializes io_bind and io_connect. PConn_bind just calls the io_bind method. * libpconn/slp.c: slp_bind() now takes a const address. * include/pconn/slp.h: Changed slp_bind() declaration to take a const address. * include/pconn/PConnection.h: Added io_bind, io_connect methods to struct PConnection. This follows the socket API reasonably closely. Changed PConn_bind() declaration. * i18n/fr.po, i18n/de.po: Checking in latest version of strings, on general principle. * configure.in: Bumped up version number. Added HAVE_IPV6 (really check for AF_INET6). * config.h.in: Added HAVE_IPV6. 2000-12-23 Andrew Arensburger * src/palm.h, src/palm.c: Added palm_netsync_hostaddr(), palm_netsync_netmask(). * src/Makefile: Added "net_compat.c", "net_compat.h", "ap_snprintf.c". * src/GenericConduit.cc: Added a "to do" bug report. * include/pconn/dlp_cmd.h: Minor cosmetic cleaning. * i18n/Makefile: Added net_compat.c to list of files to check. Removed FILES from distribution. * configure.in: Cleaned up some comments. Added test for "long long". Added tests for (struct sockaddr).sa_len, "struct sockaddr6", inet_aton(), inet_ntoa(), inet_ntop(), net_pton(), snprintf(). * config.h.in: Added checks for "long long", (struct sockaddr).sa_len, "struct sockaddr6", snprintf(), inet_aton(), inet_ntoa(), inet_ntop(), inet_pton(), gethostbyname2(). * README, AUTHORS: Added Apache Group, for snprintf(). * src/net_compat.h, src/net_compat.c (added): inet_ntop() and inet_pton() for systems that don't have them. * src/ap_snprintf.c (added): snprintf() from the Apache source. 2000-12-18 Andrew Arensburger * i18n/fr.po, i18n/de.po: Checked in latest version of strings, on general principle. * i18n/Makefile: Got rid of dependency on file "FILES". Moved list of files to Makefile, so that message catalogs are rebuilt only if the source files have changed. * i18n/FILES (deleted): the list of files has been moved to Makefile, to avoid rebuilding catalogs unnecessarily. * AUTHORS: Added list of "bundled" software included in the distribution. * doc/coldsync.8: Mention "-t net" option. * src/config.c: Added "-t net" command-line option. * libpconn/dlp_cmd.c (feature): DlpAddSyncLogEntry(): if the message exceeds DLPC_MAXLOGLEN, keep only the end of it. * include/pconn/dlp_cmd.h: Added DLPC_MAXLOGLEN. 2000-12-17 Andrew Arensburger * doc/coldsync.8: Rewrote section on listen blocks. Added mention of "listen net". Mention ${prefix}/etc/coldsync.conf in passing. Added reference to Linux Visor HOWTO. * src/palm.c, src/misc.c, libpdb/pdb.c, libpconn/slp.c, libpconn/PConnection_usb.c, libpconn/PConnection_net.c: Added some casts for portability. * libpconn/PConnection.c: If USB isn't enabled but user tries to listen on a USB port, print an error message to that effect, rather than complaining about "unknown listen type" * i18n/Makefile: Use INSTALL_I18N to determine whether message catalogs should be installed or not. * configure.in: Redid --with(out)-usb : it now checks to see whether it's possible to build with USB support, so 'configure' should do the Right Thing by default. * README: Rewrote section on internationalization. Updated compatibility notes. * Make.rules.in: Added INSTALL_I18N, to determine whether message catalogs should be installed or not. * AUTHORS: Added UCBerkeley, for cfmakeraw(). * configure.in: Install i18n stuff if possible. To this end, added INSTALL_I18N variable for Makefiles. Make sure 'makeinfo' is the GNU program of that name. Changed AC_CHECK_PROG to AC_CHECK_PROGS so that error message is more intuitive when the program can't be found ("checking for foo... true" is misleading). Fixed typo. * libpconn/PConnection_net.c: Look up ports in /etc/services; default to NETSYNC_*_PORT if not found. Changed listen() backlog to 1. Hopefully this doesn't suck. Cleaned up some trace statements. * libpconn/PConnection_usb.c: Print descriptive message if can't open the USB device. * libpconn/PConnection_serial.c: Print descriptive message if can't open the serial device. 2000-12-16 Andrew Arensburger * src/lexer.l (portability): Cast malloc()'s return value to the proper type. * src/config.c: Removed unreached statement, to make some compilers shut up. * src/coldsync.c: Fixed lint comment. * libpconn/PConnection_net.c (portability): Cast args to recvfrom() and sendto() to (char *) to make compiler shut up under Solaris. * configure.in (portability): Added check for GNU libintl; added EXTRA_MSGFMT_ARGS; added check for socklen_t. * config.h.in: Added check for socklen_t, since Solaris doesn't define it. * aclocal.m4: Added CS_CHECK_GNU, CS_CHECK_GNU_PROGS, CS_CHECK_TYPE. * Make.rules.in (Portability): Added EXTRA_MSGFMT_ARGS, to allow or disallow GNU-specific arguments to 'msgfmt', as appropriate. * src/coldsync.c: Initialize a variable to make gcc happy. * src/palm.c, src/misc.c, libpdb/pdb.c, libpconn/slp.c (portability): Use bzero() rather than memset(). * configure.in: Added check for bzero() and memset(). * config.h.in: Check for the existence of bzero() and memset(). Define bzero() in terms of memset(), if necessary. * src/parser.y, src/lexer.l: Added "forward" keyword, for NetSync forwarding. * src/coldsync.c: Added "done:" label in main(), for cleaning up. On abnormal termination, jump to that label. Avoids certain memory leaks. * libpconn/slp.c, libpconn/dlp.c: Sanity: when free()ing pointers, set them to NULL afterwards, to avoid double free()ing. * libpconn/PConnection_serial.c: Check the file descriptor before tcdrain()ing it. * libpconn/PConnection.c: new_PConnection() no longer calls PConnClose on abnormal termination. This avoids problems with double free()ing, since the pconn_*_open() functions also clean up after themselves. * src/config.c (bug fix): Plugged memory leak. 2000-12-15 Andrew Arensburger - Version 1.6.2 released. * libpconn/PConnection_serial.c: Got rid of io_setspeed. Renamed serial_setspeed() to setspeed(), since it's only used for serial connections. * libpconn/PConnection_net.c, libpconn/PConnection_usb.c, libpconn/PConnection.c, include/pconn/PConnection.h: Got rid of io_setspeed. * src/lexer.l: Plugged memory leak. * src/lexer.l: Ugly hack to make compilation work with memory leak detection. * src/misc.c, find-leaks, config.h.in: Added leak-detection support for calloc(), strdup(). 2000-12-13 Andrew Arensburger - Version 1.6.1 released. * libpconn/padp.c, libpconn/netsync.c, libpconn/dlp.c, libpconn/PConnection_usb.c, libpconn/PConnection_serial.c, libpconn/PConnection_net.c: Added error-checking. * include/pconn/PConnection.h: Removed unused ver_maj, ver_min fields. * libpconn/PConnection.c: new_PConnection() initializes the common part of 'struct PConnection'. * src/palm.c: Added some trace statements. * src/coldsync.c: Removed remnants of speeds[] and other development cruft. * src/Makefile: Added experimental 'manifest' target. * libpconn/netsync.c: Removed extraneous #includes. Removed global variables used for development. Added bump_xid(). * libpconn/cmp.c: Added some trace statements. * libpconn/PConnection_usb.c: pconn_usb_open() cleans up after itself if initialization fails. * libpconn/PConnection_serial.c: Added find_available_speeds(), bps_entry(). Added 'usable' initializers to speeds[]. Cleaned up serial_accept(). pconn_serial_open() cleans up after itself (though this may interfere with destructors). pconn_serial_open() now finds the speeds at which the serial port can run. * libpconn/PConnection_net.c: Got rid of ugly global variables and other development cruft. net_udp_listen(), net_acknowledge_wakeup() now take extra sockaddr_in arguments. * include/pconn/padp.h, libpconn/padp.c: padp_write()'s 'len' argument is now const. Yay! * include/pconn/Makefile: Added "netsync.h" to distribution. * i18n/FILES: Added newly-added files, as well as a few others that fell through the cracks. 2000-12-11 Andrew Arensburger - Version 1.6.0 released. * libpconn/PConnection_usb.c (bug fix): If pconn_usb_open() aborted, its private data got freed twice. * libpconn/PConnection_serial.c (bug fix): If user gave a speed of 0, serial_accept() complained that it couldn't set the requested speed. * src/config.c: Added "net" debugging facility. * src/coldsync.c: Added initialization for net_trace. * libpconn/netsync.c: net_trace initialized to a sane value of 0. * libpconn/cmp.c: Include i18n header. Added cmp_accept(), to negotiate CMP connection. * libpconn/PConnection_usb.c: Trimmed usb_accept() down to just the USB-specific parts. usb_close() is static again. * libpconn/PConnection_serial.c: Added 'usable' field to the speeds[] struct. Moved CMP negotiations from serial_accept() into cmp_accept(). (bug fix): a stray assignment prevented default speed from working. * libpconn/PConnection_net.c: net_close() is static again. Added some casts, to make the compiler happy. * libpconn/PConnection.c: Removed declarations for _close() (they're private, anyway). new_PConnection() uses PConnClose() to clean up afterwards. PConnClose() is more paranoid: doesn't assume that the methods were set. * include/pconn/cmp.h: Added declaration for cmp_accept(). * include/pconn/PConnection.h: Added declaration for net_trace. Removed declaration for PConnSetSpeed (OBE). * doc/coldsync.8: Added mention of "net" debugging facility. 2000-12-10 Andrew Arensburger * src/coldsync.c: Commented out the speed table, since it's now in PConnection_serial.c . Eviscerated Connect(), since most of what it did was serial/USB-specific; replaced this with a call to (*pconn->io_accept)(). Commented out find_max_speed(), since it was never used, and was causing compilation problems. Added, then commented out, net_listen(), an experimental NetSync function. * libpconn/padp.c: Initialize PConnection->dlp.{read,write} to point to padp_{read,write}(). * libpconn/netsync.c (added): Code for dealing with NetSync communications. * libpconn/dlp_rpc.c, libpconn/dlp.c: Took out references to PADP. Now uses PConnection->dlp.read and PConnection->dlp.write to send the formatted DLP packet to the Palm. * libpconn/PConnection_usb.c: Added usb_accept(), with much of the code from Connect(). Added _tini() calls to usb_close(). Added _init() calls to pconn_usb_open(). * libpconn/PConnection_serial.c: Moved the table of speeds from "src/coldsync.c" to here, since it logically belongs here. Added serial_accept(), which has taken over most of what Connect() used to do. Added _tini() calls to serial_close(). Added _init() calls to pconn_serial_open(). * libpconn/PConnection_net.c (added): Support for NetSync. * libpconn/PConnection.c: Moved the _init() calls out of new_PConnection() and into pconn__open(), and moved the _tini() calls into _close(), since the protocol stack varies by connection type. Took out the generic cleanup code after the switch, for the same reason. Added support for LISTEN_NET. * libpconn/Makefile: Added netsync.c, PConnection_net.c to sources. * include/pconn/pconn.h: Added . * include/pconn/netsync.h (added): Useful definitions for NetSync protocol. * include/pconn/PConnection.h: Added io_accept method to PConnection, since different connection types get to where you can send DLP requests differently. PConnection.dlp now has 'read' and 'write' methods that indicate how to send DLP requests, since NetSync doesn't use PADP/SLP. Added 'net' section to Pconnection, for NetSync. * configure.in: Added some "to do" comments. 2000-12-09 Andrew Arensburger - Version 1.5.5 released. * src/misc.c: Added wrappers for malloc(), realloc(), and free(), for primitive memory leak detection. * find-leaks (added): Primitive memory leak detector. * configure.in: Added support for primitive memory leak detection. Moved the developer-only options to the end. Added a section header for the developer-only options, for "configure --help". * config.h.in: Added support for primitive memory leak detection. * Makefile: Added "find-leaks" to distribution. * src/log.c: Initialize synclog to NULL. * src/coldsync.c (bug fix): Plugged a memory leak: the sync log didn't get freed. * src/backup.c (bug fix): Plugged a memory leak: backup() didn't free the downloaded PDB. * libpdb/pdb.c (bug fix): plugged some memory leaks. Added new_Resource(). * src/restore.c: Added a useful trace statement. * src/backup.c (bug fix): If couldn't download database, error didn't get logged correctly. * src/palm.c (bug fix): Due to an off-by-one error, palm_nextdb() didn't return the last database, so it never got synced (or backed up, or whatever). 2000-12-08 Andrew Arensburger * src/coldsync.c: Use CMP_VER_* constants. * include/pconn/dlp.h: Added constants specifying DLP version. * include/pconn/cmp.h: Added constants specifying CMP version. * doc/coldsync.8: Document the fact that "speed: 0;" makes ColdSync use whatever the Palm suggests. * src/coldsync.c (feature): If the .coldsyncrc doesn't specify a speed, go with what the Palm suggests. * src/lexer.l: Confirmed hack. * src/parser.y: Added new listen type "net". * src/lexer.l: Added keywords "net" and "network". * src/config.c: Functions used only in this file are now static. Added get_hostid(). * src/coldsync.h: Rearranged function declarations, to make it easier to find them in source files. * src/coldsync.c (bug fix): get this host's hostid, so as to know whether to do a slow or fast sync. The functions that are only used inside coldsync.c are now static. * include/pconn/PConnection.h: Renamed LISTEN_TCP to LISTEN_NET, since NetSync also uses UDP. 2000-12-01 Andrew Arensburger * Make.rules.in: Added a portability comment. 2000-11-27 Andrew Arensburger - Version 1.5.4 released. * conduits/std-categories (bug fix): close the database when it's done. * src/backup.c (bug fix): backup() didn't DlpCloseDB() the database when it was done. * src/coldsync.c (bug fix): Check pref_cache before freeing it, lest segmentation violations occur. Got rid of load_palm_config(). run_mode_Standalone() now performs those functions differently. run_mode_Standalone() checks username and userid on Palm to make sure they're sane. The run_mode_*() functions no longer worry about freeing pref_cache: it's a global variable, so let main() worry about it. run_mode_Backup() now prints an error message when it fails. D'oh! The part of run_mode_Init() that prints the pda{} block now moved into print_pda_block(). * src/coldsync.h: Removed load_palm_config() declaration. Fixed find_pda_block() declaration. Added print_pda_block() declaration. * src/config.c: Added print_pda_block(). Added 'check_user' option to find_pda_block(). Got rid of load_palm_config(): it was too confusing, and its reason for existence wasn't clear. * libpconn/padp.c: Fixed an ugly hack (with a goto, but hey). * i18n/fr.po: Updated some strings. * doc/coldsync.8: Rewrote section on Bargle Bug in light of Init mode. Mention that you shouldn't run ColdSync as root. More detail on Visors' serial numbers. "Bad CRC" messages under Linux are due to a Linux bug, and are therefore a limitation (not a bug) as far as ColdSync goes. * src/backup.c: Added error-checking. * libpconn/padp.c: Increased robustness: in several cases, where the old version would simply give up, the new version ignores the offending packet, or retries. In the case of unexpected data packets, sends a dummy ACK to get the Palm to shut up. 2000-11-25 Andrew Arensburger * libpconn/padp.c (bug fix): select() modifies its 'timeout' argument on some architectures, hence it must be set before each call to select(), and cannot be factored out of a while(){ select() } loop. Put it back in. Fix submitted by Christian Kirsch . 2000-11-24 Andrew Arensburger * src/install.c: mkfname() and friends no longer return a volatile value. Fixed some misleading error messages. * src/config.c: Split off the part of load_palm_config() that creates the backup directories (~/.palm etc.) into its own function: make_sync_dirs(). * src/coldsync.c: Initialize pref_cache to NULL. * src/coldsync.h: Added declaration for make_sync_dirs(). * src/misc.c, src/conduit.c, src/coldsync.h, src/backup.c, src/archive.c, src/GenericConduit.cc: mkfname() and friends no longer return a volatile value. 2000-11-23 Andrew Arensburger * conduits/std-categories: Rewritten from scratch. Might actually work this time. * include/pconn/dlp_cmd.h: Updated comment: official word from Palm is that the viewer ID is not used. * src/coldsync.c (bug fix): Fixed off-by-one error causing username to not be NUL-terminated. Added sync log for (successful) initialization mode. 2000-11-22 Andrew Arensburger * conduits/std-categories: Rewritten from scratch. About to be rewritten again. 2000-11-20 Andrew Arensburger - Version 1.5.3 released. * src/parser.y: Added support for pda_block.userid_given. * src/palm.h: Added declarations for the new functions. * src/palm.c (bug fix): fetch_userinfo() didn't update have_userinfo_. Added palm_username(), palm_userid(), palm_viewerid(). * src/config.c: load_config() now always calls get_userinfo(), not just when no config file was specified. This is because information about the current user is rather useful in other cases. Removed remains of Install mode. Added Init mode. Updated usage message. Added find_pda_block(). Update new_pda_block() to initialize new field userid_given. * src/coldsync.h: Removed remains of Install mode. Added Init mode. Got rid of some archaic global variables. Added declarations for find_pda_block(), load_palm_config(). * src/coldsync.c: Removed remains of Install mode. (feature) Added Init mode. * libpconn/PConnection_serial.c: That annoying sleep() is now only under FreeBSD. * doc/coldsync.8: Added description of Init mode. * include/pconn/dlp_cmd.h: Made a string const. * i18n/fr.po: Translated some strings. * src/archive.c, src/backup.c, src/conduit.c, src/install.c: Update for new volatileness. * src/coldsync.h: Added declaration for mkfname(). All other filename-building functions now return a volatile value. * src/misc.c: Added mkfname(). All other filename-making functions now use it, directly or indirectly, and now return a volatile value. * src/GenericConduit.cc: Replaced stat() with exists(). Cast away the new volatileness of various functions' return values. 2000-11-19 Andrew Arensburger * src/install.c: Removed an unused variable. * src/conduit.c: Re-added fpurge(), on general principle. * config.h.in: Added test for fpurge(), and redefine it if it doesn't exist. * configure.in: Added test for fpurge(). 2000-11-18 Andrew Arensburger * src/restore.c: Removed some old code to test whether a file to be restored is a file: it's broken and unnecessary. * src/install.c: Use is_database_name(), instead of doing it manually. * src/config.c: Removed get_config(). * src/coldsync.c: Removed the pre-mode version of main(). * src/misc.c,src/coldsync.h, src/backup.c: Renamed mkfname() to mkpdbname(). * src/palm.c (bug fix) Stupid typo. * src/coldsync.h: Moved the LISTEN_* constants to include/pconn/PConnection.h . * libpconn/PConnection.c: Removed inclusion of ColdSync header file. Moved a trace statement from MISC_TRACE to IO_TRACE. * include/pconn/PConnection.h: Moved the LISTEN_* constants here, to help remove libpconn's dependency on coldsync. - Version 1.5.2 released. * src/coldsync.c: Removed global variable 'palm'; all run_mode_*() functions now have their own 'struct Palm *'. They now use the 'struct Palm' accessor functions, rather than accessing it directly. Consequently, removed a bunch of unnecessary code. Moved various functions elsewhere: GetMemInfo() (now fetch_meminfo()), ListDBs(), find_dbentry(), append_dbentry(). Got rid of GetPalmInfo() (now split up into three functions in "palm.c"), run_mode_Install() (no one seems to want it). * src/palm.c: Fixed up some comments. Removed test to see if Palm has more than one memory card: it doesn't work. ListDBs runs fetch_meminfo() iff it's necessary. Moved (palm_)find_dbentry(), (palm_)append_dbentry() from "coldsync.c". Added palm_netsync_hostname(). * src/palm.h: Moved (palm_)find_dbentry(), (palm_)append_dbentry() here. Added palm_netsync_hostname(). * src/restore.c: Minor changes. * src/install.c: Use 'struct Palm' accessors, instead of accessing it directly. find_dbentry() renamed to palm_find_dbentry(). append_dbentry() renamed to palm_append_dbentry(). Fixed indentation. * src/config.c: Use 'struct Palm' accessors, instead of accessing it directly. * src/conduit.h, src/conduit.c: run_conduits(), run_conduit(), run_*_conduits() now take a const dbinfo 'cos hey, it seems to work. * src/coldsync.h: Moved 'struct Palm' and various related function declarations to "palm.h". * src/backup.c: Use 'struct Palm' accessors, instead of accessing it directly. * src/palm.c (added) Functions for the 'struct Palm' Proxy. * src/palm.h (added) Declarations for the 'struct Palm' Proxy. * src/Makefile: Added "palm.c" and "palm.h". 2000-11-17 Andrew Arensburger * doc/coldsync.8: "Synopsis" section is shorter and hopefully clearer, but not as complete. Updated "Options" section to include mode options. "-b" and "-r" are now officially deprecated. "Description" section rewritten. Updated "Overview" section wrt Install conduits. Added mention of Install conduits where applicable. Added description of conduit arguments in conduit blocks. Minor stylistic changes. 2000-11-14 Andrew Arensburger - Version 1.5.1 released. Incorporated J.D. Smith's patch for install conduits: * src/coldsync.c: Added support for Install conduits. run_mode_Standalone() now runs Install conduits. Added convenience function dbinfo_fill(). * src/parser.y: Added support for Install conduits. * src/misc.c: Added mkinstfname() function. Arensb: added is_database_name() function. * src/lexer.l: Added "install" keyword, for Install conduits. * src/config.c: Fixed a couple of debugging statements to support Install conduits. * src/conduit.h: Added declaration for run_Install_conduits(). * src/conduit.c: Added run_Install_conduits(), and support for it throughout. * src/coldsync.h: Added Install mode. Added prototypes for NextInstallFile(), mkinstfname(), is_database_name(), dbinfo_fill(). * perl/ColdSync/ColdSync.pm: Added support for Install conduits. * libpdb/pdb.c: Made pdb_LoadHeader() externally visible. * include/pdb.h: Added declaration for pdb_LoadHeader(). END * src/coldsync.c: Added, then commented out, run_mode_Install(). Not sure if it's useful. Fixed run_mode_*() to return rather than exit(). * src/restore.c: restore_dir() now uses is_database_name(). * src/misc.c: Added is_database_name() function. * src/install.c: Added (and commented out) first draft of install_file(). Changed InstallNewFiles() to use is_database_name(). 2000-11-09 Andrew Arensburger * src/install.c, libpconn/PConnection.c, doc/coldsync.8: Added a "to do" comment. * src/Makefile, perl/Makefile, libpdb/Makefile, libpconn/Makefile, include/pconn/Makefile, include/Makefile, i18n/Makefile, doc/Makefile, conduits/Makefile: Added magic Emacs lines. 2000-11-04 Andrew Arensburger * src/coldsync.c: Massive reorganization: tore out main() and rewrote it from scratch. Each mode has its own run_mode_*() function, for modularity. Currently supported modes are Standalone, Backup, and Restore. Renamed 'config' to 'sync_config'. Moved a common trace statement to ListDBs(), to avoid excessive duplication. Replaced stat() calls with exists() and friends. For now, took out the bits that update the user name and ID. Init mode will handle this. * src/config.c: Big reorganization: 'config' renamed to 'sync_config'; new_config() renamed to new_sync_config(); free_config() renamed to free_sync_config(). New global variable: 'conf_fname': holds pathname to user's config file. get_config() eliminated, and most of its functionality moved to load_config(). stat() calls replaced by exists() and friends. Several global variables moved to 'global_opts'. Added parse_args(), to parse command-line arguments. Added load_config(), to read a config file (.coldsyncrc). * src/restore.c: Restore() eliminated. Its functionality is now split up between restore_file() and restore_dir(). * src/conduit.c: Global variable 'config' renamed to 'sync_config'. * src/coldsync.h: Site-wide config file is now "/etc/coldsync.conf" instead of "/etc/coldsync.rc" 'struct config' renamed to 'struct sync_config', and its purpose clarified somewhat. 'sync_config' allocated at run-time, so that it can be freed properly. More anal prototypes: "type func()" -> "type func(void)". 'parse_config()' renamed to 'parse_config_file()'. run_mode_*() now take argc, argv arguments. Got rid of Restore() in favor of new functions restore_file() and restore_dir(). get_config() eliminated in favor of load_config(). * src/backup.c: full_backup() now takes a directory name as an argument, instead of looking in global options. * src/parser.y: Renamed parse_config() to parse_config_file(). * src/GenericConduit.hh: More anal prototypes: type func() -> type func(void) 2000-10-22 Andrew Arensburger - Version 1.5.0 released. * src/misc.c: Added exists(), lexists(), is_file(), is_directory(). * src/coldsync.h: Added some fields to cmd_opts (global_opts): conf_fname, conf_fname_given, devname, devtype. Added declarations for new functions. 2000-10-21 Andrew Arensburger * src/conduit.c: Removed references to sys_maxfds in comments, since it doesn't exist anymore. * src/config.c: Removed sys_maxfds, get_maxfds(), since they aren't used. * src/coldsync.h: Removed sys_maxfds, since it isn't used. * config.h.in: Removed HAVE_SYSCONF, since it isn't used. * configure.in: Removed test for sysconf(), since it isn't used. * src/config.c: Added "-m" option. Use it to determine what the program as a whole will do. Warn if user uses "-b " or "-r ". Moved set_debug_level(), usage(), print_version() here. Added set_mode(). * src/coldsync.h: Redefined run mode; moved it out of 'config' and into 'global_opts'. Added declaration of set_mode(). 2000-09-30 Andrew Arensburger * src/coldsync.c: Minor string cleaning. Added trace statement for run mode. Moved set_debug_level(), usage(), print_version() to config.c, where they make more sense. 2000-09-28 Andrew Arensburger - Version 1.4.6 released 2000-09-27 Andrew Arensburger * src/coldsync.c: Updated by Philipp Hahn's patch. * i18n/fr.po: Updated by Philipp Hahn's patch. * i18n/de.po: Incorporated translations by Philipp Matthias Hahn. * i18n/de.po: Latest version of strings, before applying patch. * README: Added a blurb about Windows NT. * conduits/todo-text: Cleaned up documentation a bit. * AUTHORS: Added author. Removed CVS conflict marker. * perl/ColdSync/ColdSync.pm (bug fix): Declared some variables so that Perl wouldn't complain about unknown variables. (bug fix): Test to see whether there are any references before blindly assigning them. Rearranged some of the prefrence-related code. * conduits/send-mail: Applied Philipp Hahn's patch: Added an argument to allow the user to use a category name other than "Outbox", for non-English Palms. (bug fix) Fixed a bogus error message. 2000-09-23 Andrew Arensburger - Version 1.4.5 released (stable). * i18n/fr.po: Added \n to some strings. * src/config.c (bug fix): If the user specified an invalid option on the command line, ColdSync would print the wrong option in its error message. 2000-09-22 Andrew Arensburger * doc/sample.coldsync.rc: Repeat that "listen usb" only makes sense under FreeBSD right now. Mention that Visors don't have useful serial numbers. Added mention of sync conduits, "[generic]", and preferences. * conduits/Makefile: Moved 'std-categories' to where it won't be installed. Added 'memo-text' to distribution. * conduits/std-categories: Lots of playing around. Mainly, commented out previous generation of experiments. 2000-09-21 Andrew Arensburger * i18n/fr.po: Incorporated Nicolas Bouthors's translations. * libpconn/slp.c: Added some trace statements. * doc/coldsync.8: Added bug. * conduits/todo-text (bug fix): Updated to use new category structure. * perl/ColdSync/ColdSync.pm: Initialize a variable to make Perl shut up. * src/GenericConduit.cc (bug fix): "-F" option now forces a fast sync, even if ColdSync would otherwise attempt a slow sync. 2000-09-20 Andrew Arensburger * src/conduit.c (bug fix): Dumped core if a conduit block didn't contain a "path:" element. 2000-09-19 Andrew Arensburger * perl/ColdSync/ColdSync.pm (feature): "-config" caught up with ColdSync: instead of printing a separate conduit block for each flavor/type combination, combines the supported flavors into one string (e.g., "conduit fetch,dump"). Prints multiple "type:" lines if the conduit supports multiple types. 2000-09-17 Andrew Arensburger * src/config.c: Fixed misspelling of __GNUC__. * Renamed "src/handledb.c" to "src/misc.c", since it no longer contains handledb(). * src/Makefile: Changed "handledb.c" to "misc.c", its new name. * i18n/FILES: Renamed "src/handledb.c" to "src/misc.c". Get strings from "src/lex.yy.c", since 'xgettext' can't parse lex files. * i18n/fr.po: Latest version of strings. Added/fixed some translations. * i18n/de.po: Latest version of strings. Attempted some translations. * src/conduit.c: Added check for file descriptor leak in run_conduit(). Made certain arguments to run_*Conduit() 'const'. run_conduit() returns valid status on error, not -1. Added other error-checking. If run_conduit() aborts, it kills the conduit before cleaning up. (bug fix): Ensure that built-in conduits aren't run with flavors that they don't support. (bug fix); spawn_conduit() doesn't just exit() if something goes wrong. Added cleanup code to spawn_conduit() for when things go wrong. Added some trace statements. * src/config.c: Added declarations of everything related to getopt(), in hopes that that'll make things run properly under Windows NT. * src/coldsync.c: Added some error-checking. * src/GenericConduit.cc: Added some error-checking. * perl/ColdSync/ColdSync/SPC.pm: Changed $VERSION so that it can be collated both numerically and as a string. * perl/ColdSync/ColdSync.pm: Changed $VERSION so that it can be collated both numerically and as a string. Added 'use vars'. (bug fix): setup of %PREFERENCES used the wrong variable (I think). Fixed. * include/pconn/padp.h: Removed declaration of padp_unget(), since it's never going to exist. * doc/coldsync.8: Added documentation for [generic] conduit. Added some bugs. * AUTHORS: Added contributor. 2000-09-16 Andrew Arensburger * libpdb/pdb.c (bug fix): Don't read the two useless NULs, since the spec allows but doesn't mandate them. Formerly, pdb_Load() would reject certain well-formed PDBs. 2000-09-09 Andrew Arensburger * src/log.c: Added a 'const', on general principle. * src/handledb.c: Took out old declaration of run_GenericConduit(). * src/coldsync.h: Added some 'const's, on general principle. * src/backup.c: Added a 'const', on general principle. * src/GenericConduit.hh: Made the _dbinfo protected member 'const', on general principle. * src/GenericConduit.cc: Added a 'const', on general principle. 2000-09-08 Andrew Arensburger - Version 1.4.3 released * src/conduit.c: Added support for built-in conduits: Added table of built-in conduits. Added [dummy] conduit. Added findConduitByName(). run_conduit() looks up the path in table of built-in conduits and calls a function if found; otherwise, spawns a conduit process, as before. Fixed some typos. * src/GenericConduit.cc: run_GenericConduit() now takes a conduit_block argument, so that it can look at the user's arguments. GenericConduit::run() backs up resource databases if there's no backup. Moved here from the now-obsolete HandleDB(). * src/GenericConduit.hh: run_GenericConduit() now takes a conduit_block argument, so that it can look at the user's arguments. * src/coldsync.c: run_Sync_conduits() has assumed HandleDB()'s functions, so only run run_Sync_conduits(), and not HandleDB(). Added another O_BINARY flag, for Windows. * src/coldsync.h: Removed declaration of HandleDB(); it is now obsolete. * src/config.c: Before parsing the config file, adds a default conduit, equivalent to running the built-in generic conduit if nothing else is specified. * src/handledb.c: Removed HandleDB(), as it is now obsolete. 2000-09-04 Andrew Arensburger * perl/ColdSync/ColdSync/SPC.pm: Added POD. * configure.in: Fixed check for socketpair() to look in libsocket if it's not in libc (for Solaris). * README: Updated OS notes for v1.4.2. * doc/conduits.texi: Added sections on SPC and Sync conduits. 2000-09-03 Andrew Arensburger - Version 1.4.2 released * src/conduit.c: Make anal compilers shut up. * doc/conduits.texi: Added mention of Sync conduits. Added description of 'Preference' headers and data. * doc/coldsync.8: Added mention of Sync conduits. Added description of 'pref:' directives. Added LIMITATIONS section, for bugs that aren't going to be fixed. - Version 1.4.1 released * configure.in: Added checks for and . Added check for O_BINARY, for open(). * config.h.in (portability): Added HAVE_O_BINARY for Windows; define it for other platforms. (portability): Check for both and , since Linux puts definitions of ntohs() and friends in the latter. * libpconn/cfmakeraw.c (portability): Windows doesn't know about PENDIN. * src/coldsync.c (portability): Don't use mkstemp() under Windows: it assumes text files. * src/conduit.c: Try to include and , since different systems define ntohs() and friends in different places. Change fdopen() calls to "rb", to open files in binary mode under Windows. * src/restore.c, src/install.c, src/backup.c, src/archive.c, src/GenericConduit.cc, libpconn/PConnection_usb.c, libpconn/PConnection_serial.c (portability): Open files with O_BINARY, so it'll have a chance of working under Windows. * src/spc.c (portability): Include , since that's where Linux hides ntohs() and friends. - Version 1.4.0 released * perl/ColdSync/ColdSync/SPC.pm: Added a bit of POD. * perl/ColdSync/ColdSync.pm: Fixed a rather bogus construction. * src/conduit.c (portability): Replaced call to good but unportable snprintf() with sprintf(). * src/coldsync.c: Don't seed the preference cache if we're doing a backup or a restore. * src/coldsync.c (bug fix): 'pref_cache' was being freed too soon. Added some trace statements. 2000-09-02 Andrew Arensburger * src/conduit.c: In run_conduit(), pref_list is 'volatile' to make gcc shut up. If conduit has no preferences, don't allocate a pref_list of length 0. * src/pref.c (bug fix): Fixed order of arguments to calloc(). (bug fix): Oops! Messed up data structure. * libpconn/dlp.c: Fixed order of arguments to calloc(). * src/pref.c: Rewrote FindPrefItem() as a simple for-loop. Note: if there are multiple preferences that match 'description', then this version returns the first one. The previous version returned the last one. Hopefully, this won't make a big difference. * src/conduit.c: Fixed call to GetPrefItem(). * src/pref.c: Moved a #define out of pref.h to where it's actually used (temporarily). Undid the previous change: several 'const' arguments aren't const after all. FindPrefItem(), GetPrefItem() no longer take a pass-by-value struct argument. * src/pref.h: Moved a #define out of this .h file (where it has multi-file scope) to where it's actually used (temporarily). Undid the previous change: several 'const' arguments aren't const after all. * src/pref.c: Removed redundant declarations. Made arguments and return values 'const' where possible. * src/pref.h: Made arguments and return values 'const' where possible. * src/conduit.c: Made variables 'const' where possible. 2000-09-01 Andrew Arensburger * src/pref.h, src/pref.c: Added copyright statement. Minor cleaning and stylistic changes. Added some "to do" items. * src/conduit.c: Minor cleaning and stylistic changes. Added some "to do" items. * src/coldsync.c: Some stylistic changes and minor cleaning. Internationalized an error message. * perl/ColdSync/ColdSync.pm: Rewrote the description of %PREFERENCES in the POD. Some stylistic changes. (bug fix): Fixed an off-by-one error in &ReadHeaders. * AUTHORS: Added author. 2000-08-31 Andrew Arensburger Incorporated Sumant Oemrawsingh's preferences changes: * src/pref.h (new): data structures and declarations related to preferences. * src/pref.c (new): functions related to preferences. * src/conduit.c: run_conduit() now sends a list of preferences to the conduit (in two parts: first the "declarations" as normal headers, then the data after all the headers have been sent). * src/coldsync.c: Added global variable 'pref_cache'. main() creates and seeds preference cache, and frees it at the end. * perl/ColdSync/ColdSync.pm: New exported variable %PREFERENCES. &ReadHeaders now parses preferences passed on stdin. * Makefile: Added "pref.c" and "pref.h" to the source and header file lists. End of Sumant Oemrawsingh's changes. 2000-08-30 Andrew Arensburger * conduits/std-categories (new): Early draft of conduit to sync standard category lists. * conduits/Makefile: Added 'std-categories' to list of conduits in distribution. 2000-08-29 Andrew Arensburger * include/pconn/util.h: Pedantic patch: include to catch 'FILE'. Patch supplied by Niklas Lundberg . * src/coldsync.c (feature?): If a conduit fails, continues anyway instead of aborting. * perl/ColdSync/ColdSync/SPC.pm: Exports all of the implemented &dlp_* functions. &dlp_get_dbinfo gets database index and name. (feature) Added &dlp_OpenDB, &dlp_CloseDB, &dlp_ReadAppBlock, &dlp_WriteAppBlock. Added AUTHOR and BUGS section to the POD. * include/pconn/slp.h: Added some comments, and pointer to Palm's documentation. 2000-08-13 Andrew Arensburger * conduits/send-mail: Fixed typo. * AUTHORS: Added author. * conduits/send-mail (feature): Body of message is wrapped. Patch submitted by John Chia 2000-08-08 Andrew Arensburger * perl/ColdSync/Makefile.PL: Overrode libscan method, to exclude .bak files and such from distributions. * perl/ColdSync/MANIFEST: Added ColdSync/SPC.pm to the distribution. Added MANIFEST.SKIP, for completeness. * perl/ColdSync/ColdSync.pm: Added copyright statement. Added SPC initializer and finalizer for Sync conduits. * libpconn/dlp.c (bug fix): Size bits got stripped off incorrectly when reading long arguments in DLP return value. 2000-08-06 Andrew Arensburger * perl/ColdSync/ColdSync.pm: Added mention of "sync" flavor in POD. Removed redundant check for mandatory header. * i18n/fr.po: Updated some strings. * src/conduit.c: run_conduits(), run_conduit() now take 'pconn' argument. Fixed run_*_conduits() accordingly. run_conduit(): several variables are now 'volatile' to make gcc shut up. (bug fix): doesn't hang on zero-length requests. * src/spc.c: Added some standard headers. Added functions pack_dlp_time(), pack_dbinfo(). spc_send() now takes 'pconn' and 'dbinfo' arguments. spc_send() now handles SPCOP_DBINFO and SPCOP_DLPC requests (albeit without any firewall-like error-checking). * src/spc.h: Defined new SPCERR_NOMEM error code. spc_send() now takes 'pconn' and 'dbinfo' arguments. * src/conduit.h: run_Sync_conduits() now takes a 'pconn' argument. * src/coldsync.c: New syntax for run_Sync_conduits() call. More information in debugging statement. * include/pconn/padp.h: padp_write() now takes a const buffer, instead of a non-const one. * src/handledb.c: Fixed calls to run_GenericConduit(): doesn't require `palm' argument anymore. * src/GenericConduit.cc, src/GenericConduit.hh: Got rid of unused _palm member. * FAQ: Added section on Bargle bug. 2000-07-31 Andrew Arensburger - Version 1.3.0 released. (Still unstable.) * src/conduit.c (feature): Added first-draft support for Sync conduits. (feature): Added first-draft of support for SPC. run_conduit() now takes 'with_spc' argument; fixed all functions that call it. run_conduit(): System headers are now stored in an array that gets turned into a linked list. This allows us to append the user-supplied headers to the system ones, in a clever/semi-ugly hack. Create a socket pair (essentially, a portable two-way pipe) to talk to the child. (potential bug fix): Make sure SIGCHLD is blocked while constructing headers. Send "SPCPipe" header to child, with the SPC pipe's file descriptor as its value. Main loop pretty much redone from scratch. Now includes a state machine for handling SPC requests. sigchld_handler() saves and restores 'errno'. * src/spc.c (added): SPC (Serialized Procedure Call) functions. * src/spc.h (added): SPC declarations and such. * src/Makefile: Added spc.c, spc.h to the package. * perl/ColdSync/ColdSync.pm: Added `use Palm::PDB;'. Dunno why it wasn't already there. (feature): Added first draft of support for Sync conduits. * doc/Makefile: Removed referenced to "pdb.texi", since it's no longer part of the distribution. * configure.in: Added check for socketpair(). Fixed a typo. Complain if rename() or strncpy() could not be found. * FAQ: Clarified the problem with reading the Visor's serial number. * conduits/send-mail: Exit with 502 status, not 202, if can't run sendmail. 2000-07-22 Andrew Arensburger * doc/sample.coldsync.rc: Updated to use colons where necessary. Added some missing semicolons. * doc/pdb.texi: Deleted, since Palm have finally gotten their act together and put up an official description of PDB files at http://www.palmos.com/dev/tech/docs/fileformats.zip 2000-07-18 Andrew Arensburger - Version 1.2.8 released * AUTHORS: Added contributor. * conduits/Makefile (bug fix): Make sure ${MAN1DIR} exists before installing to it. * src/conduit.c (bug fix): Removed calls fpurge(), since it isn't portable. (Patches contributed by Hollis Blanchard ) 2000-07-14 Andrew Arensburger * src/conduit.c: Added format_header() for convenience, to create a properly-formatted header. The process of sending headers to a conduit is much more robust. Use poll_fd() instead of polling file descriptor manually. 2000-07-13 Andrew Arensburger * src/conduit.c (bug fix): Fixed stupid bug in block_sigchld(). Added poll_fd(), for convenience. run_conduit(): Reorganized the way the standard headers are sent. Make sure the headers conform to the spec. Instead of just pumping headers at the child, check its status. This should make things more robust. 2000-07-12 Andrew Arensburger * src/conduit.c: Added block_sigchld(), unblock_sigchld(), to encapsulate those actions. 2000-07-06 Andrew Arensburger - Version 1.2.7 released * src/parser.y: conduit_block now contains a dynamically-allocated array of creator/type pairs. Added a warning if a conduit_block doesn't contain any such pairs. * src/config.c: conduit_block now contains a dynamically-allocated array of creator/type pairs. * src/conduit.c (feature) run_conduits() now checks array of creator/type pairs in conduit block, instead of just one pair. Added crea_type_matches() function. * src/coldsync.h: Replaced single creator/type pair in conduit_type with an array. * doc/coldsync.8: Added mention that you can have multiple `type:' lines in .coldsyncrc . Minor housecleaning. 2000-07-03 Andrew Arensburger - Version 1.2.6 released * src/conduit.c: Got rid of cond_sendline() and cond_sendheader(), in favor of good old fprintf(). `conduit_pid' is now volatile, for robustness. run_conduit() now uses a half-baked list of headers, rather than sending each one manually. Also, doesn't check for conduit output while sending headers (yet). run_conduit() now split up into two sections: one while the conduit is running, which blocks on child output, and one that doesn't, for after the child exits. run_conduit() discards all unsent I/O to and from the child before closing file descriptors. Critical section in spawn_conduit() now protected against interrupts that might come up at the wrong moment. Clarified error message in sigchld_handler(). 2000-07-02 Andrew Arensburger * src/conduit.c: Use sigsetjmp()/siglongjmp() in SIGCHLD handler to return to run_conduit() immediately as soon as conduit exits. Explicitly initialize 'fromchild' and 'tochild' to NULL, for robustness. Now run_conduit(), rather than run_conduits(), sets the SIGCHLD handler. Simplified cond_sendline() somewhat. Added sanity check to cond_readline(). 2000-07-01 Andrew Arensburger * src/conduit.h: Got rid of init_conduits(), tini_conduits(). Added run_Sync_conduits() declaration. * src/coldsync.c: Got rid of init_conduits(), tini_conduits(). Added experimental run_Sync_conduits() call. * README: Added information about Solaris. * src/conduit.c: Got rid of unused init_conduits(), tini_conduits(). Added run_Sync_conduits(). Minor housecleaning. 2000-06-23 Andrew Arensburger - Version 1.2.5 released * src/coldsync.c (bug fix): Added reserve_fd(), to reserve file descriptors 0-2, which avoids potential problems later on, if std{in,out,err} were initially closed. 2000-06-18 Andrew Arensburger - Version 1.2.4 released * src/GenericConduit.cc (bug fix): a record's category is now considered part of the record. Now, if the category changes on the Palm, it changes on the desktop as well. (bug fix): generic conduit archived the wrong record sometimes: if you modified a record on the Palm, then deleted and archived it, the desktop's version would wind up in the archive. Fixed. Fixed a case where generic conduit didn't use the compare_rec() method to compare records. Cosmetic changes. * FAQ: Added mention of Visor serial number. * doc/coldsync.8: Added mention of Visor serial number bug to BUGS section. * src/conduit.c (bug fix): don't close child's stdin and stdout. Let dup2() handle it. Fixes a bug whereby dump conduits don't get run if stdin is closed. Fixed a typo. 2000-06-15 Andrew Arensburger * src/GenericConduit.cc: Fixed a bunch of error messages to indicate which record they're talking about. - Version 1.2.3 released * src/parser.y: Conduit blocks can now contain "preference: cccc/123;" lines. * src/parser.h: Added LEX_ID4, for 4-character identifiers. * src/lexer.l: Added ID4 start state, for 4-character identifiers. Added keywords "preference", "pref", "saved", "unsaved". * src/config.c: Fixed various `conduit_block'-related functions to deal with the preference list. Added append_pref_desc(). * src/coldsync.h: Added `struct pref_desc', to describe preferences. `conduit_block' now contains an array of `struct pref_desc's, listing the preferences that this conduit cares about. 2000-06-11 Andrew Arensburger - Version 1.2.2 released * i18n/fr.po, i18n/de.po: Latest version of messages. * src/parser.y, src/config.c, src/conduit.c, src/coldsync.h: Renamed 'the_q' to 'conduits'. * src/parser.y: Removed INSTALL, UNINSTALL from list of known tokens. * src/lexer.l: "install" and "uninstall" flavors no longer used. * src/parser.y: `flavor' token type obsoleted. Conduit block now takes comma-separated list of conduit flavors. 'conduit_flavor' rule renamed to 'flavor'. "install" and "uninstall" flavors no longer recognized. * src/config.c: Fixed get_config() new_config(), free_config(), to work with only one conduit queue instead of five. new_conduit_block() now works with bitmap of conduit flavors. * src/conduit.c: Tweaked run_conduits() to work with only one conduit queue. Fixed run_Fetch_conduits() and run_Dump_conduits() accordingly. * src/coldsync.h: Got rid of obsolete ConduitFunc, conduit_flavor types. `conduit_block' can now handle any number of flavors, rather than just one. `struct config' now only has one master queue of conduits, rather than five. * doc/sample.coldsync.rc: Updated an example to use conduit flavor lists. * doc/coldsync.8: Documented the fact that you can now use lists of conduit flavors. 2000-06-03 Andrew Arensburger * README: Took out the bit about mktemp() causing a warning. * src/GenericConduit.cc: Use open_tempfile() instead of mktemp(). * src/coldsync.c: Added open_tempfile(): wrapper for opening unique files (this is to shut the compiler up under FreeBSD). * src/coldsync.h: Added declaration for open_tempfile(). - Version 1.2.1 released * src/config.c, src/coldsync.c: Got rid of redundant (global) variable 'user_uid'. Use 'userinfo.uid' instead. * config.h.in: Added HAVE_MKSTEMP. * configure.in: Added test for mkstemp(). * doc/coldsync.8: Use a better serial number in the example. Added mention of 'username' and 'userid' statements in PDA block. * src/parser.y: Added "userid" and "username" fields to PDA block. Numbers are now 'long' instead of 'int', just in case there are still compilers out there where 'int' == 'short'. * src/lexer.l: Added "userid" and "username" keywords. Numbers are now 'long' instead of 'int', just in case there are still compilers out there where 'int' == 'short'. * src/config.c: Connection speed is now a long, instead of an int. (feature): PDA block can now override default username and userid. * src/coldsync.h: Connection speed is now a long instead of an int. (feature) PDA block now contains username and userid fields, so users can override the defaults. * src/coldsync.c: Connection speed is now a long, just in case there are still compilers out there where 'int' == 'short'. ((mis?)Feature): If the userid on the Palm isn't what we think it should be, update it. * include/pconn/PConnection.h: PConnection.speed is now a long. * HACKING: Added a bit about modifying structs. 2000-05-30 Andrew Arensburger - Version 1.2.0 released * conduits/Makefile: Changed POD2MAN to POD2MAN_EXE, to avoid problems with Perl-generated Makefiles. * Make.rules.in: Changed POD2MAN to POD2MAN_EXE, to avoid problems with Perl-generated Makefiles. 2000-05-25 Andrew Arensburger * i18n/fr.po: Latest version of strings. Updated a bunch of translations. * conduits/todo-text: Small addition to documentation. * conduits/Makefile: Split conduits up by interpreter. 'make manifypods' generates man pages from Perl pods. 'make install' mungs the #! line. 'make clean' cleans up generated man pages. Install man pages for conduits. * configure.in: Added checks for 'sed' and 'pod2man'. * Make.rules.in: Added POD2MAN, SED, MAN1DIR, for installing man pages and pods. 2000-05-21 Andrew Arensburger * src/parser.y: Use HAVE_LIBINTL_H rather than HAVE_LIBINTL to decide whether to include (bug fix) Fixed a type bug. * src/lexer.l: Use HAVE_LIBINTL_H rather than HAVE_LIBINTL to decide whether to include Added manual declaration of strdup(), for Linux. * src/coldsync.c: Use HAVE_LIBINTL_H rather than HAVE_LIBINTL to decide whether to include Use HAVE_GETTEXT rather than HAVE_LIBINTL to decide whether to run setlocale(). * src/Makefile: Added bison files to list of files to delete during 'make clean'. * src/restore.c, src/log.c, src/install.c, src/handledb.c, src/config.c, src/conduit.c, src/backup.c, src/archive.c, src/GenericConduit.cc, libpdb/pdb.c, libpconn/slp.c, libpconn/palm_errno.c, libpconn/padp.c, libpconn/dlp_rpc.c, libpconn/dlp_cmd.c, libpconn/dlp.c, libpconn/PConnection_usb.c, libpconn/PConnection_serial.c, libpconn/PConnection.c: Use HAVE_LIBINTL_H rather than HAVE_LIBINTL to decide whether to include * configure.in: Redhat 6.2 has gettext() and friends in libc. Hence, `configure' now checks separately for gettext(1), , the libintl library, and gettext(3) (in both libintl and libc). * config.h.in: Separated gettext into HAVE_GETTEXT and HAVE_LIBINTL. Now uses HAVE_GETTEXT (whether the function exists) to decide whether to use I18N, rather than HAVE_LIBINTL (whether the library exists). * FAQ: Expanded a bit on IR syncing. 2000-05-20 Andrew Arensburger * src/parser.y (feature): Now warns when the config file redefines various fields. * doc/coldsync.8: Added another example debugging level. Updated all examples to use soon-to-be-mandatory colons, and avoid unnecessary quoting. Added section on quoting. Added tip for IR syncing. Removed old, deleted section. * configure.in: 'lex' no longer supported. Requires 'flex'. * src/parser.y: In `type cccc/tttt;' statements, the colon is now optional. The name of a PDA may be unquoted. * src/parser.y: Conduit headers are parsed more sensibly: as a series of individual tokens, rather than as a single line that must match a regular expression. Got rid of HEADER_PAIR (and its associated types and entry in the %union) and NAME tokens. Extensive use of lex start states to figure out which tokens to look for. (feature) Lots more error-checking, even if it doesn't quite work in all cases. * src/parser.h: Redefined lex start state macros. Got rid of obsolete `start_header' declaration. * src/lexer.l: Rearranged start states: ERROR no longer exists; HEADER now only refers to header names; added BSTRING (unquoted "bareword" string), and CTPAIR (creator/type pair). Conduit headers are now parsed sensibly, instead of monolithically, a full line at a time. Unquoted header/creator pairs are now only recognized as such if we're looking for them. Defined KEYWORD(k) macro for quick and easy debugging. Decided to use the WORD rule at the end after all, for error-reporting. * src/config.c: Print conduit flags in config file summary. * src/Makefile: Added "parser.output" to list of things to delete. Added manual dependencies for lex/yacc-generated files. * src/lexer.l {HID} character class obsoleted, replaced by {ID}. "name" keyword obsoleted. * src/parser.y (feature): Vastly improved error-reporting. (syntax change): Colons are now recommended after all directives. They will become mandatory at some point. "name" directive in conduit blocks is no longer supported. Version 1.1.10 released * src/parser.y, src/coldsync.c: Cast argument of toupper() to int, so compiler will shut up under DU. * perl/ColdSync/Makefile.PL: Added a backward-compatibility message. 2000-05-19 Andrew Arensburger * Make.rules.in: Oops! Restored previous distdir-building behavior. * i18n/fr.po, i18n/de.po: Latest set of strings. * src/parser.y: Use lex_expect() instead of start_header. Some progress toward better error-detection. All punctuation characters now have a rule of their own for this. * src/parser.h: Added declaration for lex_expect(), and symbols for start states. * src/lexer.l: Replaced `start_header' variable with more generic lex_expect() function. Baby steps toward improving error-detection and -reporting. * src/Makefile: Use 'mkinstalldirs' to create installation directories. * perl/ColdSync/Makefile.PL (feature): Now allows one to specify different run-time and install-time PREFIXes. * perl/ColdSync/ColdSync.pm: DumpConfig() handles wildcard types and creators correctly now. * i18n/Makefile: Use 'mkinstalldirs' to create installation directories. * doc/sample.coldsync.rc (added): A bunch of configuration examples. * doc/coldsync.8: Changed a comment. I'm not sure why. * doc/Makefile: Added sample.coldsync.rc to distribution. It gets installed now, too. Make sure directories exist before installing stuff in them. * conduits/Makefile: Use 'mkinstalldirs' to create installation directories. * configure.in: Specify $PREFIX when building the Perl Makefile. * Makefile: Use 'mkinstalldirs' to create installation directories. Added 'mkinstalldirs' to the distribution. * Make.rules.in: Use 'mkinstalldirs' to create installation directories. Tweaked INSTALL_SCRIPT to avoid giving options twice. * INSTALL: Added lots of specific installation instructions. * FAQ: Fixed thinko. * mkinstalldirs (added): The standard "mkdir -p" replacement. 2000-05-17 Andrew Arensburger * src/GenericConduit.cc (bug fix): Don't reset sync flags on open databases, since it causes the Palm to reset (guru). * libpconn/dlp_cmd.c (bug fix): Fixed a buffer overflow. 2000-05-11 Andrew Arensburger * libpdb/pdb.c: Added warning when writing zero-length records. Explanation of why they're not shot on sight. * config.h.in: Tweaked preprocessor games to make things compile cleanly on non-Linux machines. Johnny C. Lam 2000-05-07 Andrew Arensburger * src/parser.y (bug fix): When conduit type is specified with double-quoted strings, the creator and type weren't being set correctly. (Dirk-Willem van Gulik ). 2000-05-06 Andrew Arensburger Version 1.1.9 released. * src/parser.y (feature): Conduit block may now contain user-supplied headers. (feature): PDA block may now have an (optional) name. * src/parser.h: First draft of magic to recognize user-supplied headers. * src/lexer.l: First cut of magic to distinguish between predefined keywords and arbitrary strings that just happen to look like reserved words. First cut at recognizing user-supplied headers. Added character classes for identifiers. Added "arguments" keyword. Added rule for recognizing standalone identifier. Not sure why. * src/cs_error.h (added): ColdSync error codes and such. * src/config.c: Conduit blocks now contain user-supplied headers. Ctor and dtor now deal with this. PDA blocks can specify a name. Ctor and dtor deal with this. Print user-supplied headers when debugging. * src/conduit.h: Header names can now only be 31 characters long, to allow for terminating NUL. * src/conduit.c (feature): Conduit block with no path is equivalent to ignoring the database. Mainly useful for specifying default or final conduits. (feature): Send user-supplied header lines to conduit. (feature): `final' conduits work as advertised. * src/coldsync.h: Added type for conduit header-value pairs. `pda_block' now includes a name. * src/coldsync.c (feature): If a conduit fails, try to figure out why. If the sync was cancelled by the user, abort. Fixed compile-time warning under Solaris. * src/Makefile: Added cs_error.h to distribution. Removed unneeded ${PROG}. * perl/ColdSync/ColdSync.pm: Added @HEADERS, for cases where order matters. (feature): -config now prints the default headers. (bug fix): Header names may now include dashes. Removed unnecessary quoting. * libpdb/pdb.c: Hack to avoid uploading zero-length records (which oughtn't exist in the first place). * libpconn/padp.c: Dump PADP ACK packets correctly when debugging. * doc/conduits.texi: Fixed bug in example conduit. * doc/coldsync.8: Added "overview" section, for newbies, and got rid of the ponderous "conduits and syncing" section. Description of "pda" directive now mentions PDA names. Description of "default" and "final" flags for conduits. "Files" section updated. * conduits/todo-text (added): Conduit for converting to do lists to/from plain text files. * conduits/send-mail: Removed unnecessary quoting. * conduits/memo-text (added): Conduit for converting memos to/from text format. * conduits/Makefile (added) Makefile for conduits subdirectory. * configure.in: Require automake version 2.13 or higher. * Makefile: Added 'conduits' to list of subdirectories. Added FAQ to distribution. * Make.rules.in: Added CONDUITDIR. Pass along 'prefix' and 'PREFIX' to makes in subdirectories, so that user can install with a prefix different from the one ColdSync was built with. * FAQ (added) Frequently (and not-so-frequently) asked questions. 2000-05-03 Andrew Arensburger * libpdb/pdb.c (bug fix): split record attribute when there was no need to do so. * (bug fix): records in the 8th category are no longer seen as deleted and archived. * src/GenericConduit.cc: Use "cs_error.h" instead of "error.h". 'struct pdb_record' now has separate fields for flags and category. * libpdb/pdb.c: The single-byte "attributes" field in a PDB record is now split into separate "flags" and "category" fields. The pdb functions split and merge these fields when necessary. * include/pdb.h: Split the single "attributes" PDB record field into "flags" and "category", to simplify the code that uses it. * config.h.in: Uncommented "inline". * configure.in: Moved pedantic-compilation checking back to the beginning, since "inline" is illegal with -ansi, but you can use "__inline__". 2000-05-02 Andrew Arensburger * configure.in: Moved pedantic compiler flags to the end, so that checks that fail with pedantic compilation won't. Reinstated test for `inline' Added "--disable-pedantic" configure option. 2000-04-21 Andrew Arensburger * conduits/send-mail (added). Conduit to send Palm Mail messages. 2000-04-15 Andrew Arensburger * src/GenericConduit.cc: Better error handling: detect when user has cancelled sync on Palm. 2000-04-10 Andrew Arensburger * doc/coldsync.8: Added description of 'speed' directive. Added description of pda { } blocks. Suggested a workaround for the Bargle bug. Removed description of a bug, since it's no longer true. Version 1.1.8 released. * i18n/de.po: Translated a string. New serial-number-related strings have appeared. * src/config.c: Rearranged tests when looking for a pda_block: a pda_block that specifies a serial number can also be a default. It doesn't automatically match. * src/GenericConduit.cc: Changed capitalization of some strings, for translators' benefit. * i18n/fr.po: Translated latest strings. * src/parser.y: .coldsyncrc can now contain pda { } or palm { } blocks to describe individual devices by serial number, and specify a directory to sync them with. * src/lexer.l: Added pda_block-related keywords. * src/config.c: Main and user configurations now include list of 'pda_block's, to describe individual PDAs. Added various functions to allocate and free pda_blocks, and manage the configuration sanely. * src/coldsync.c: ROM serial number checksum is now a plain character, rather than a ubyte. So there. Serial number checksum calculation is now in a separate function. * src/coldsync.h: ROM serial number is now a string of signed chars. So there. Configuration now includes a list of 'pda_block's, for users (or sites) who have more than one PDA. 2000-04-09 Andrew Arensburger Version 1.1.7 released. * src/log.c (bug fix): Log didn't get initialized properly. Cleaned up sucky code. * configure.in: Incremented patch-level number. * src/conduit.c: Rearranged order of arguments to run_conduits(); seems more sensible this way. Added run_conduit() function, which runs a single conduit; putting this a separate function makes default conduits possible. Default conduits seem to work now. * src/coldsync.c: Added 19200 to list of allowable connection speeds. Reads the serial number from Palm's ROM, if possible. User can now specify connection speed in .coldsyncrc . * src/install.c: Pay attention to the "force install" flag. * src/coldsync.h: Added fields for ROM serial number to 'struct Palm'. * src/Makefile: Fixed "include" statement to use ${TOP} instead of hard-wired path. * src/GenericConduit.cc: SlowSync: moved 'remoterec' down to where it's used. (bug fix): Deleting a record in the remote database would break iteration over that database. Fixed a possibly erroneous error message. * perl/ColdSync/Makefile.PL: Replaced a godawful hack with a slightly less ugly one. * perl/Makefile: Fixed ${TOP}. Came up with a slightly less ugly hack to clean up Perl-generated Makefile. * libpconn/dlp_rpc.c (added). Functions for RPC over DLP. * libpconn/Makefile: Added "dlp_rpc.c" to list of source files. * include/pconn/slp.h: Removed old prototype. * include/pconn/pconn.h: Added "dlp_rpc.h" to the standard includes. * include/pconn/dlp_rpc.h (added). Declarations and such for RPC over DLP. * include/pconn/Makefile: Added "dlp_rpc.h". * i18n/fr.po: Brought up to date with v1.1.7, mostly. * i18n/de.po: Latest update from Christian Kirsch. * i18n/Makefile: Added a "to do" comment. * README: Updated FreeBSD section for v1.1.7. * Makefile: Added NEWS file to distribution. * Make.rules.in: Added ${PERL} variable. * AUTHORS: Added more contributors. Version 1.1.6 released. * src/GenericConduit.cc (bug fix): Fixed a bunch of lingering "cerr <<" statements. 2000-04-05 Andrew Arensburger Version 1.1.5 released. * GenericConduit.cc (bug fix): Records deleted locally didn't get deleted on the Palm. Fix by Ward Vandewege . Fixed some typos. 2000-03-14 Andrew Arensburger * src/restore.c: Check flags on database being uploaded: if it's open, don't overwrite it unless it also has OKNEWER set. * include/pconn/PConnection.h: Added `pconn_direction' type to replace "forReading" and "forWriting" cpp macros. * libpconn/PConnection_usb.c, libpconn/PConnection_serial.c: Fixed to use `pconn_direction'. * src/coldsync.h: Added 'force_install' global option flag, for "-I" option. * src/config.c, doc/coldsync.8: Added "-I" option. * perl/ColdSync/Makefile.PL: Ugly hack to make 'make clean' not delete the Makefile. 2000-03-13 Andrew Arensburger * configure.in: Made GNU 'gettext' the official supported version. Fixed a bug on machines that happen not to have GNU gettext. 2000-03-04 Andrew Arensburger * README: Clarified i18n. * libpconn/dlp_cmd.c: Removed lingering traces of ppack(), punpack(). * libpconn/padp.c: Added header magic to include the appropriate headers to memcpy() works correctly. * src/GenericConduit.cc: Added to an XXX comment. * i18n/fr.po: Incorporated Jorge's changes. Got rid of some obsolete entries. * i18n/de.po (added) German translation. * i18n/.cvsignore: Added. Ignore .mo files. * AUTHORS: Added more contributors. 2000-03-03 Andrew Arensburger * i18n/Makefile: Added German .po file. * i18n/FILES: Took out obsolete src/pack.c file. 2000-02-09 Andrew Arensburger Version 1.1.4 (bug fix) released. * libpdb/pdb.c (bug fix): sanity check gone horribly wrong. 2000-02-07 Andrew Arensburger Version 1.1.3 released. * perl/Makefile: Oops! Forgot to remove "ColdSync.pm" from distribution. * libpdb/pdb.c: Added some sanity checks and trace statements. 2000-02-06 Andrew Arensburger * perl/ColdSync/ColdSync.pm: &DumpConfig prints creator/type pair without quotes. * doc/conduits.texi: Changed preferred notation for creator/type pairs to not have quotes. * doc/coldsync.8: Changed preferred notation for creator/type pairs to not have quotes. * src/parser.y: Conduit creator/type pair moved into its own rule. Accepts either two strings and a slash, or a single creator/type pair token (defined in "lexer.l") * src/parser.h: Added type for creator-type pair. * src/lexer.l (feature) Can now specify creator-type pairs without quotes all over the place. Added PARSE_TRACE. * src/conduit.c (feature) "final" conduit keyword now works. Added sketch for "default" keyword. * configure.in: Create the Perl Makefile(s) as part of the configuration process. * src/restore.c, src/install.c, src/coldsync.c: Removed the str(n)casecmp() compatibility macros, since they're now in "config.h". * src/coldsync.c: Added "-t" option to usage string. * config.h.in: Moved the str(n)casecmp() compatibility cpp macros into here, so they're not duplicated all over the place. * src/config.c, doc/coldsync.8: "-t" option now takes a string as its argument. * src/coldsync.h: Removed a few unused types. * perl/ColdSync/MANIFEST.SKIP (added): Stuff that isn't part of the distribution, but Perl shouldn't gripe about. Moved ColdSync perl module into its own directory. * perl/ColdSync/test.pl, perl/ColdSync/Makefile.PL, perl/ColdSync/MANIFEST (added): Added as part of standard Perl module. * perl/ColdSync/ColdSync.pm (moved from previous location) * perl/Makefile: Moved the real ColdSync module stuff under its own directory. Added ${SUBDIRS} to reflect this. * i18n/Makefile: (bug fix) Shouldn't barf if i18n isn't turned on. * configure.in (bug fix) I18n stuff should now work if you don't have i18n enabled. (feature) Added embryonic i18n support (details below). * i18n/Makefile: Added the usual things to ${CLEAN}. * Makefile: Added "TAGS" to ${CLEAN}. * i18n/fr.po (added) French translation of ColdSync messages. * i18n/README (added) Draft README. * i18n/Makefile (added) Makefile for building catalogs of translatable strings. * i18n/GLOSSARY.fr (added) Tentative glossary to help English-to-French translators. * i18n/FILES (added) List of files in which to look for translatable strings. * Make.rules.in: Added i18n-related variables and rules. * Makefile: Added "i18n" to list of subdirectories. * README: Added a note on internationalization. * config.h.in: Added N_() macro for internationalizable strings that shouldn't be translated immediately. * configure.in: Fixed check for static_cast<> to work under egcs. Fixed i18n to work when it's turned off. * libpconn/PConnection_usb.c: Fixed some internationalized strings. Left something outside of the outermost #if block so gcc won't complain about empty source files. * libpconn/palm_errno.c: Internationalized error message strings. * libpdb/pdb.c: Fixed some i18n-ed strings. * src/GenericConduit.cc: Converted from C++-style "cout << foo" to C-style fprintf() throughout. Added internationalization. * src/coldsync.c: Tweaked "io" debugging facility. * src/Makefile: Fixed stupid typo. * src/conduit.c: Fixed error message to make sense. 2000-02-05 Andrew Arensburger * src/Makefile, libpdb/Makefile, doc/Makefile, Makefile: Makefiles now use "OBJS = ${SRCS:.c=.o}"-like constructs, since it appears to be portable. 2000-02-04 Andrew Arensburger * configure.in: Rearranged tests so that the C++-related tests are all together. 2000-02-02 Andrew Arensburger Incorporated Louis Mamakos's changes to 1.1.2: <<<<< BEGIN * libpconn/PConnection_usb.c: Lots of changes: - got actual documentation from Handspring on what their vendor specific setup commands do. The biggest result of this is that we now use a "portmapper" type mechanism to find the USB endpoint that does the Hot Sync service, rather than just "knowing" that it's 2. - Access the fields of the USB request using some accessor macros. The data is in little endian order, so it just works now. But it would have had problems on a big-endian CPU. - moved printing of the "Press HotSync button" message into the device specific I/O functions. In the case of USB, this needs to be pressed to cause the device to attach to the USB port. Before, it would pring the message after you pushed the button. - reflect that the USB header file is installed in /usr/include/dev/usb/usb.h now. I don't know if you want to use this in the autoconf process or not. - picked up the string.h macros in PConnection_usb.c - cleaned up the error handling in the USB code to not just exit() at the slightest provocation. - added an io_trace variable and IO_TRACE() macro to control debugging in the USB code. This could also be used in the serial code if you wanted to add I/O specific debugging messages there. - added a somewhat unsatisfactory way of specifing the device type on the command line. E.g., you can now say -t 3 along with -p /dev/ugen0 to indicate it's a USB device. Certainly you'd prefer to say -t usb, but I'm not sure how to do this and keep the config parser in sync. * src/config.c: Added "io" debugging facility. Added "-t " command-line argument, to specify connection type. * src/coldsync.c: new_PConnection() now takes argument specifying whether to prompt the user. Added "io" debugging facility. * libpconn/PConnection_serial.c: new_PConnection() now takes argument specifying whether to prompt the user. * PConnection.c: new_PConnection() now takes argument specifying whether to prompt the user. * include/pconn/PConnection.h: new_PConnection() now takes argument specifying whether to prompt the user. >>>>> END * configure.in: Make sure C++ compiler understands 'bool'(!) and new-style casts ("static_cast(foo)"). Cosmetic changes. * src/install.c (bug fix): Make the Palm log come out right when installing a file that already exists in the backup directory. * src/Makefile (bug fix): Fixed bogus arguments to 'install'. * doc/conduits.texi: Fixed 'dir' title, to go along with what the rest of the documentation says. * perl/ColdSync.pm: New API: added &ConduitMain, &StartConduit, &EndConduit. Added &DumpConfig, &ReadHeaders for convenience. Added documentation. Added $VERSION, per CPAN. Renamed $pdb to $PDB, and %headers to %HEADERS. The 'warn' and 'die' wrappers are now set later on. &ReadHeaders now makes sure that mandatory headers for each flavor are set. * libpdb/pdb.c (bug): Zero-length records cause problems. Added a mediocre workaround. * include/pconn/Makefile: Added a ${HEADERS} variable. * include/Makefile: Added a ${HEADERS} variable. * doc/conduits.texi: Rewrote 'todo-dump' example with the new ColdSync.pm module. Added 'pine-aliases' example. Status codes 301 and 501 are now in the spec. * doc/Makefile (bug fix): Install man pages in ${MAN8DIR}, not the top of the man tree. Duh. Added targets for various file formats. * configure.in: Now finds 'perl'. * Makefile: Added the 'tags' and 'TAGS' targets. * Make.rules.in: Added MAN8DIR. Took out the ownership options to the ${INSTALL_*} variables, since they screw things up in the *BSD port. Added the 'tags' (and 'TAGS') targets, as recursive targets. * src/handledb.c (bug fix): (mkfname) Characters with ASCII values >= 128 in database names weren't getting escaped properly when converted to filenames. * src/coldsync.c (bug fix): Used to barf on "-dfac". Now this is equivalent to "-dfac:1", just like the documentation says. * src/lexer.l (configuration): Added "%option noyywrap", which should make things compile cleanly with flex under Irix. 2000-01-30 Andrew Arensburger * doc/conduits.texi: Added `pine-aliases' two-way syncing tutorial. Added a few .coldsyncrc examples. Fixed indentation for a few paragraphs. Got rid of cartouches for long code listings, since they screw up the page formatting in the printed manual. 2000-01-27 Andrew Arensburger * src/conduit.c (bug fix) Applied Pace Willisson's patch: fixed bug where ColdSync wouldn't find the second and subsequent conduits of the same flavor. Version 1.1.2 released. * src/handledb.c: Cast to avoid compiler warning. * Make.rules.in (bug fix) Can't have comments at the end of the line. They get interpreted as part of the macro. * src/Makefile, doc/Makefile: Added 'install::' target. * Make.rules.in: Added rules for installing. * libpdb/Makefile, libpconn/Makefile: Added comment saying why 'make install' doesn't do anything. * doc/coldsync.8: Added `WARNINGS' section, to make the Bargle Bug more obvious. Updated, clarified `BUGS' section. * src/handledb.c (bug fix) If the database being synced is a resource database, and there's no backup of it, make on. This isn't perfect, but it means that all of your applications get backed up at some point. * src/backup.c: Created a separate function to back up a single database, and shuffled function names around a bit. 2000-01-26 Andrew Arensburger Version 1.1.1 released. * src/GenericConduit.cc: Updated call to arch_create(). * src/archive.h: Fixed arch_create() declaration. * src/archive.c: arch_create() no longer takes a filename argument, but builds it from the database info. Use mkarchfname() instead of building the archive filename by hand. * src/install.c: When installing new files, now uses mkbakfname() to check for an already-installed version in the backup directory, rather than constructing the filename by hand. * src/handledb.c: Added fname2dbname(), hex2int(). mkfname() now uses isprint() rather than isgraph() for testing weird characters. Escaped hex digits are now in upper case. * src/coldsync.c: Use fname2dbname() when checking for files to move to the Attic, instead of doing it by hand. * src/coldsync.h: Added fname2dbname(). * config.h.in, configure.in: Check for memcpy(), strchr(). * src/handledb.c: Added mkfname(), mkarchfname(). Fixed mkbakfname() to use mkfname(). Now escapes weird characters in file names. * src/GenericConduit.cc: More rational use of mkbakfname(). * src/coldsync.h: Updated mkfname(), mkarchfname(). * src/coldsync.c: Moved the print_version() call to where it'll actually get called. D'oh! * src/backup.c: Use mkfname() instead of constructing backup file name by hand. * src/GenericConduit.cc: More trace statements. Use new arch_open() call. * src/archive.c: More trace statements. * config.h.in: Added placeholder for `inline', in case that ever becomes useful. * README: Removed Y2K compliance bit, now that Y2K is past. Updated notes for v1.1.0. Added mention of bug with new+deleted+archived Memo records. * src/archive.h: Updated arch_open() prototype. * src/archive.c: Changed arch_open() to take a struct dlp_dbinfo instead of a full pathname: in reality, we're not going to archive to more than one place, and this allows us to use mkarchfname(), which simplifies the caller code. Version 1.1.0 released * configure.in, Makefile, Make.rules.in: Due to inconsistencies between `make's, can't have multiple levels of inclusion in Makefiles. (That is, can't have "Makefile" include "../Make.rules", which in turn includes "Make.vars"). So "Make.rules" contains the variables as well, and is generated by `configure'. * Make.rules: renamed to "Make.rules.in". * Make.rules: Merged the variables back in from "Make.vars". * Make.rules: Fixed to work with Sun's 'sh'. * perl/Makefile: Fixed `clean' target. * libpconn/Makefile, libpdb/Makefile, include/pconn/Makefile, include/Makefile, src/Makefile, perl/Makefile, doc/Makefile, configure.in, Makefile, Make.vars.in, Make.rules: Redid the 'make' structure: instead of having `configure' generate each Makefile, individual Makefiles now "include Make.rules", which includes Make.vars. In this scheme, only "Make.vars" is generated by `configure'. The rules for building targets are kept in "Make.rules", so it's easier to add or modify how things get built. 2000-01-25 Andrew Arensburger Incorporated changes from `usb' branch: <<<<< USB * src/log.c: Moved the log-related global variables here, and hid two of them. Bug fix: Rewrote add_to_log() to fix a problem with it not updating the log properly. * src/coldsync.c: Moved the log-related variables to "log.c" and made two of them 'static', to hide the ugliness. 2000-01-24 Andrew Arensburger * src/parser.y: Allow specifying listen type: serial or usb. * src/lexer.l: (Louis Mamakos) Added "usb" keyword. * src/coldsync.h: (Louis Mamakos) Added LISTEN_USB listen type. * src/coldsync.c: Fixed call to new_PConnection. Moved serial-specific stuff out to PConnection*.c. 'coldsync -h' now prints whether it was compiled with USB support or not. * src/Makefile.in: Added extra dependencies for 'coldsync', so it gets rebuilt when the libraries change. * libpdb/Makefile.in: (Louis Mamakos) Fixed 'ar' flags. * libpconn/slp.c: (Louis Mamakos) Fixed to use the PConnection "virtual methods". * libpconn/padp.c: (Louis Mamakos) Fixed to use the PConnection "virtual methods". * libpconn/cfmakeraw.c: Added #if !HAVE_CFMAKERAW block around most of the file, so we don't have to play silly buggers in the Makefiles.ins. * libpconn/PConnection_usb.c (added): (Louis Mamakos) The USB part of PConnection. * libpconn/PConnection_serial.c (added): (Louis Mamakos) The serial port part of PConnection. * libpconn/PConnection.c: (Louis Mamakos) Fixed the PConnection functions to use "virtual methods", depending on whether we're listening to a serial or USB port. * libpconn/Makefile.in: Got rid of the COMPAT* nonsense. (Louis Mamakos) fixed the 'ar' flags. * include/pconn/PConnection.h: (Louis Mamakos) Modified struct PConnection to allow either serial or USB port connection. * doc/coldsync.8: Describe USB listen blocks. Cosmetic changes. * configure.in: Got rid of the COMPAT* abomination. Added "--with-usb" option. Cosmetic changes. * config.h.in: Added WITH_USB symbol. * README: Added mention of Visor. * AUTHORS: Added Louis Mamakos. >>>>> USB * src/coldsync.c: When running with -dmisc, print version and features, so I'll know what people are using when they send me stderr. * src/Makefile.in: Don't strip executables when installing, for debugging. * perl/ColdSync.pm (added) Perl module to simplify writing conduits. 2000-01-23 Andrew Arensburger Version 1.0.1 released. * src/GenericConduit.cc: Cosmetic changes. * configure.in: Look for gethostbyname() in libsocket, as well as libnsl (for UnixWare). * src/coldsync.c: Debugging output goes to stderr, not stdout, dammit! Print the program name and version when debugging, just for completeness. * libpdb/pdb.c: Debugging output goes to stderr, not stdout, dammit! * doc/conduits.texi: Fixed typo in tutorial script. * doc/conduits.texi: Cosmetic changes to the HTML version. * Makefile.in: Rotated ChangeLog file. Added ChangeLog.0 to the distribution.