This is ColdSync, a tool for synchronizing data between Palm devices and Unix workstations. Copyright (C) 1999-2001, Andrew Arensburger. The latest version of this package is available at http://www.coldsync.org/ This package is distributable under the terms of the Artistic License. You should have received a file called "Artistic", which specifies the terms under which this package may be distributed and modified. The Artistic License is taken from the Perl 5.005_03 distribution, so some of the text is specific to Perl and does not apply to ColdSync. I hope to address this in a future release. This product includes software developed by the University of California, Berkeley and its contributors. This product includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/). (Actually, the Apache code in question was written by Panos Tsirigotis. See comments in "src/ap_snprintf.c".) ---------------------------------------- * WHAT IS COLDSYNC? ColdSync is a tool for synchronizing data between Palm computing devices (such as the PalmPilot, PalmPilot Pro, Palm V, QualComm PDQ, Handspring Visor and so forth), and a Unix workstation. ColdSync can back up and restore the state of a Palm, as well as synchronize its data, which is sort of like a two-way rdist (see below). In future versions, it will be possible to do more interesting things with this data. * WHAT YOU'LL NEED - A POSIX-compliant operating system, preferably some flavor of Unix - An ANSI C compiler - An ANSI C++ compiler - Perl 5.005_03 or later (though earlier versions might work) * BUILDING AND INSTALLING COLDSYNC If you've built GNU software before, this should be familiar territory. You should be able to just ./configure make make install Full details are provided in the "INSTALL" file. * WHAT IS SYNCHRONIZING? Synchronizing, also referred to as "syncing" refers to the process of examining two databases (everything on the Palm is a database) to see how they differ, and updating them so that they are identical. Syncing is different from just overwriting one database with the other. For instance, if you add an entry for "Aunt Mabel" in your Palm's address book, and an entry for "Uncle Bob" on your desktop machine, then you don't want to just copy the address book from the Palm to the desktop or vice-versa: that would delete one of the entries that you just created. When you sync with ColdSync, you'll wind up with both entries, on both the Palm and the desktop. Another difference between synchronizing and blind copying lies in the fact that PalmOS has facilities to support syncing. If you have 2000 entries in your Palm address book and want to copy them to the desktop, it'll take a rather long time to copy them over a relatively slow serial connection. When it syncs, ColdSync copies only those records that have changed. ColdSync tries to be very cautious when it syncs, and not delete any information unless it is sure that that is the right thing to do. Its attitude is that it's better to err on the side of caution, and maybe make you delete something twice, than it is to delete some crucial bit of information. * SECURITY CONSIDERATIONS ColdSync is not secure. Period. I have tried to pay due attention to security considerations, but the sync process itself is inherently insecure. When ColdSync, running on a workstation, receives a connection from a Palm, it has no reliable way of knowing that the Palm on the other end is in fact the one that it claims to be. Likewise, when a Palm syncs with a workstation (whether that workstation is using ColdSync or Palm's own HotSync), it has no reliable way of knowing that the workstation is the one that it claims to be. PalmOS allows you to mark records as "private." This doesn't mean a thing when you sync: the private and non-private records are treated equally. In particular, anyone who has physical access to your Palm can download your private records. There may be a Palm utility out there that will encrypt each record in a database before a sync, but I don't know of any such utility. * INTERNATIONALIZATION ColdSync includes some internationalization (i18n) support. It is believed to work on all platforms with a Uniforum-compliant libintl (gettext()). ColdSync does not work with XPG i18n (catgets() etc.). However, you need GNU xgettext to compile the message catalog ("i18n/messages.po") from the source files. ---------------------------------------- COMPATIBILITY NOTES * ColdSync 2.2.4 FreeBSD: This package was developed under FreeBSD 3.x/4.x, and compiles cleanly with no modification under 4.2-RELEASE. On newer versions of FreeBSD (4.0 and beyond), it's possible to communicate with the Handspring Visor using its USB interface. Configure a listen type of "usb" rather than "serial", and use device /dev/ugen0. Redhat Linux 6.2 (also Debian, and probably others): (as of ColdSync v1.6.6-20010130) Compiles cleanly with no modifications. Runs fine. The Linux serial device driver appears to drop characters at random. As a result, you may see a lot of ##### Got an unexpected data packet. Sending an ACK to shut it up. messages. Solaris 2.8: (as of v2.3.1, Mar. 18, 2002) Compiles cleanly with both gcc 2.95.2 and Sun Forte 6.1U1. Solaris 2.7: (as of v2.2.4) There are still some problems with ColdSync's IPv6 code under Solaris 2.6 and later. You'll need to use ./configure --without-ipv6 (as of v2.2.0-20010805) Compiles with Sun Forte 6U1. ColdSync is known not to work with Sun's i18n utilities. ColdSync should detect this, and disable i18n. Digital Unix 4.0: (as of v2.3.1, Mar. 18, 2002) Compiles with gcc 2.95.2, but with warnings (partly because DEC uses nonstandard types, and not all functions are declared in /usr/include. Grrr...): PConnection_serial.c:646: warning: implicit declaration of function `cfmakeraw' config.c:1058: warning: overflow in implicit constant conversion "TRUE" and "FALSE" redefined in "lexer.l". (as of ColdSync v2.4.4-20011113) DEC's linker chokes on the overly-long identifiers produced by the STL. GNU ld might work. (as of ColdSync v1.6.6-20010130) Compiles with gcc 2.7.2. Compilation prints several warnings; they appear to be benign: PConnection_serial.c:444: warning: implicit declaration of function `cfmakeraw' PConnection_net.c:281: warning: passing arg 6 of `_Erecvfrom' from incompatiblepointer type PConnection_net.c:674: warning: passing arg 6 of `_Erecvfrom' from incompatiblepointer type PConnection_net.c:872: warning: passing arg 3 of `_Eaccept' from incompatible pointer type config.c:964: warning: overflow in implicit constant conversion GenericConduit.cc:82: warning: unused parameter `const struct conduit_block * block' If you are using DEC's C compiler, I suggest the following compiler flags: -std1 -msg_enable level3 AIX 4.1: (as of ColdSync v1.1.2) Compiles with gcc 2.7.2, but when linking, complains that: ld: 0711-224 WARNING: Duplicate symbol: _IO_cleanup_registration_needed ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. This may be a problem with the installation, though (the same thing happens when compiling "Hello, world"). I've only compiled it. I don't know whether it actually runs. If you have any updated information, please send it in to the maintainer (firstname.lastname@example.org). My testing pool isn't as large as it once was. Windows NT: (as of ColdSync 1.4.5) To the best of my knowledge, ColdSync compiles and runs under Windows NT with the Cygwin tools. However, ColdSync was written as a Unix tool. Windows users have the HotSync desktop tools from Palm, which work quite well. If ColdSync works under Windows, that's wonderful, but I'm not going to let Windows compatibility get in the way of Unix development. MacOS X: (as of ColdSync 1.4.6) According to one correspondent, ColdSync compiles and runs with no problems under MacOS X. The serial port should be /dev/ttyd.printer . ---------------------------------------- BUGS: If you create a Memo record, delete it without leaving the editor, and check the "Save archive copy on PC" box, it will be archived, but the archived record may contain trailing garbage. This is due to a bug in PalmOS (as of 3.0).