Have you been pining for your latest Barry fix? Have you had the shakes whenever you approach your Linux system with Blackberry in hand? Perhaps you have even been tempted (gasp!) to try the latest CVS to see what fun you're missing?

Well, calm your fragile nerves, for just in the nick of time, version 0.8 is released!

This version includes a lot of new features, including new and improved database support. Brian Edginton has reverse engineered and added support for parsing email records, pin messages, saved email messages, improved contact and calendar parsing, folders, memos, and tasks! Thanks Brian!

This version also includes the first ever, experimental, working release of the OpenSync plugin, supporting calendar and contact items. _Please_ make backups of both your device and your desktop data before playing with this.

The plugin is written for OpenSync version 0.22, and has some limitations, such as no support for recurring appointments, no support for timezones, and poor merge support. The good news is that it is finally possible to sync your Blackberry with applications such as Evolution.

I'm sure there are bugs, so please report them to the list if you find them.

This version includes Debian binary packages for the library, command line tools, and the GUI backup. Fedora 6 RPM's are available too. More binary packages for other systems should appear shortly over time.

Thanks everyone for downloading, using, and providing feedback for Barry!

- Chris

Code:

Changelog:
Release: version 0.8 - 2007/08/03
------------------------------------------------------------------------------
2007/08/03
- moved Interface implementation to usbwrap.cc file
- added dout debugging messages to usbwrap.cc
- clarified unhandled packet error message in socket.cc
- added temporary workaround in opensync-plugin environment's
Reconnect(), for odd message seen on newer Blackberry
devices
- fixing issues with Brian Edginton's MessageRecord patch (2007/06/29)
- fixed missing size check in message oriented ParseHeader()
- fixed endian conversion issues (also found one pre-existing
endian bug in the process)
- moved message timestamp converter code to time.cc
- added Barry version number to opensync plugin name
- changed maintainer scripts and rpm.spec to use bzip2 instead of gzip
- added opensync-plugin to configure script build
- added -S option to btool, to list supported parsers and builders
- slight change to opensync-plugin/buildgen.sh to cleanup config.h.in~
- opensync-plugin/README update
- added opensync-plugin/patches for others who may be building and
testing the plugin with OpenSync 0.22
- added debian package build scripts to maintainer/
2007/08/01
- added entry to doc/TroubleShooting.txt
2007/07/28
- added doc/TroubleShooting.txt
2007/07/27
- opensync plugin:
- fixed bug in vcard.cc that was using the FN field
for the broken-down name instead of N
- added dbId and dbName to DatabaseSyncState
- added Reconnect() functionality to BarryEnvironment class
and moved connect logic out of barry_sync.cc
- changed the batch commit functionality in barry_sync.cc
to single-change-commit. Why? Because opensync
0.22 groups all batch changes into one group
and calls one batch commit function, even if you
registered two. Moving to single change commit
mode removes a chunk of unneccessary code
from the plugin as well, and can in theory
ease memory pressure in the library.
- added FinishSync() to perform actions needed on successful
syncing completion
- disconnect on successful sync completion, and reconnect,
since the device's dirty flags don't seem to
be updated until a disconnect occurs.
2007/07/26
- added ReadDataArray() to data.h, using an istream instead of
requiring a file
- added raw data version of BuildField() to record-internal.h
This is so that btool doesn't add extra null terminators
to unknown data, when restoring with option -s
- fixed bugs in r_contact.cc:
- fixed bug that caused a LastName/FirstName swap
if FirstName was empty and you wrote a contact
record into the device.... First/Last Name
fields are position sensitive, and the code
was missing the empty FirstName case on writing
- fixed bug in BuildFields() and Dump() where they
were not updated to handle the new field
table added for the postal address changes
on 2007/07/20, oops
- opensync plugin:
- changed the plugin config file, so it is possible to
turn debug output on/off without recompiling
- moved the standalone Map2Uid() function into
the DatabaseSyncState class, and changed the
code to produce "contact-#" and "calendar-#"
UID strings, instead of just numbers
- changed default PIN to -1, so that if the user doesn't
configure properly, it will fail... this is a
safety measure to avoid syncing with different
devices and corrupting the cache/idmap...
this should be fixed someday, to handle this
automatically
On second thought... is this right? Perhaps
it is better to fail if the PIN is not what
is expected, so a user doesn't accidentally
sync the wrong device and lose data.
Actions to take on new PIN:
- force slow_sync, or
- fail
- incorporated the new VCardConverter code into the
main barry_sync.cc plugin code
- fixed bug that did not clear the devices dirty flags
in the case where a sync only read data from it,
and didn't write
- changed PIN error message number to hex
2007/07/20
- minor wording change in backup GUI prompt: "Backup working..." to
"Backup in progress..."
- renamed Contact class's Title field to JobTitle for clarity
- added record function ParseFieldString(), which properly handles
strings from the device that have multiple null terminators,
and changed the record parsing code to use this new function
- moved FullName() function from ldif.cc to r_contact.cc since it
is generally useful in areas outside of LDIF processing
- refactored postal addresses in the Contact record class into
a new class called PostalAddress
- renamed Address class in record.h to EmailAddress
- moved Contact::GetPostalAddress() to record.cc as part of the
new PostalAddress class and renamed it
PostalAddress::GetLabel()
- opensync plugin:
- refactored vformat helpers into separate base class
called vBase
- added vCard converter class
- commented out the code that skipped over the adding
of empty attribute values and parameters,
since VCARD depends on some of this behaviour
- movified vformat.c:vformat_find_attribute() to take
an extra nth argument, in order to search
for multiple attributes with the same name...
the way this is coded is a bit inefficient...
but we're moving away from vformat when we move
to OpenSync 0.3x / 0.40, so this is just temporary
pain
2007/07/19
- added SUBSYSTEM=="usb_device" to example udev rules, in order
to avoid running bcharge for each endpoint that is
added by udev, when first plugged in. Running bcharge
back-to-back multiple times can crash some
Blackberries.
2007/07/14
- opensync plugin:
- fixed ID mapping bug in the case of a non-numeric UID
from syncing external -> Barry, and then the
new Barry ID would look like a new change
when syncing back from Barry -> external.
- added support for slow sync
- added clear() to idmap class
- added vformat attr parameter extraction class
- added more trace logging during vformat/Barry conversions
- added Notification time support
- handled "all day" vformat special case, when DTEND
does not exist in a vformat data block
- changed the min1900_t time conversion functions to handle
the 0xffffffff special case, when notifications
are turned off on a calendar event (src/time.cc)
- also made the calendar data dump output clearer for
disabled timestamps, and added debug output
for the raw min1900 value, in case there are more
special cases in the future
2007/07/13
- fixed null pointer access in opensync's HasMultipleVEvents()
2007/07/12
- upper management directive: revert all OpenSync 0.3x changes
and proceed with OpenSync 0.22. Reverting the
opensync-plugin/src tree to Barry 0.7 status.
2007/07/06
- reorganized exception and trace code in opensync plugin
- added XmlToCalendar() function, based on unfinished opensync
library API that is not yet finished... will be
committed to opensync svn tree when complete
- added OSyncXMLField logger to plugin trace class
2007/06/29
- applied email MessageRecord patch from Brian Edginton (thanks!)
- updated Message::Dump() to output more valid mbox data...
the goal is to be able to do:
btool -d "Messages" > email.mbox
mutt -f email.mbox
- changed some TODO's to FIXME's to keep it grep-consistent
- applied Folder support patch from Brian Edginton
- fixed pedantic compile warnings, and changed order in src/Makefile.am
- removed unneeded cast in src/r_folder.cc
2007/06/28
- minor adjustment to ctags building in buildgen.sh
- applied patch from Brian Edginton for better boost detection
in configure.ac
- added boost usage message to btool -h output
2007/06/21
- more porting of OpenSync module to 0.30
- added ctags build for opensync source tree to buildgen.sh
2007/06/14
- changed PKG_CONFIG_PATH setting in rpm script, so that systems
like SuSE that have an extensive PKG_CONFIG_PATH
in general use will not break on build
- added PKG_CONFIG_PATH to debian script too, just in case :-)
- added debian/changelog to doc/ReleaseChecklist.txt
- added comment to rpm/barry.spec regarding SuSE RPM builds
2007/06/08
- applied patch from Niels de Vos fixing debian package build
dependency
- applied Brian Edginton's Saved Email Messages patch
- updated r_saved_messages.cc comment to match header
- added GetRecType()/GetUniqueId() to r_saved_messages.h, since
SetIds() is already there
- removed Address version of operator<<() from message related headers
and moved into record.h
- added std::hex to message related dumps, and changed output to
be more mbox-like
- updated doc/CodingStyle.txt to cover switch() statements
- opensync compiles again, with 0.30! (not functional yet)
- moving closer to more modular and reusable plugin functions
- updated release checklist for opensync version number
2007/06/07
- added doc/CodingStyle.txt... preliminary version
2007/06/06
- applied Brian Edginton's PIN message patch
- changes to PIN message patch:
- fixed missing backslash in src/Makefile.am
- fixed tab alignment throughout
- removed typedef from Address struct
- added clear() to Address... might as well, if it it is
going to be a standalone type
- fixed missing comma in PINMessageFieldLinks table
- changed MessageRecordId in PINMessage to load from a new
uint32_t field in CommonField, instead of piggy
backing on a field for other use
- did some testing and found that PINMessage's MessageRecordId
is the same as the RecordId given through the SetIds()
API... but these Id's are duplicated in the protocol...
RecordId is stored in the protocol header, while
MessageRecordId is stored in the record it self as
a common field... added RecType and RecordId to
PIN Message so that we store both of these
- updated AUTHORS
2007/05/27
- added item to gui/TODO
- applied Brian Edginton's s11n-boost.h patch
2007/05/25
- renamed template values to more consistent naming scheme
- applied memos and tasks patch from Brian Edginton, slightly
modified to split into the new separate files system
- changes to memos and tasks classes:
- reformatted the code to match coding style
(come on Brian) :-)
- added copyright notice
- changed class to singular (Memo, not Memos)
- placed in Barry namespace
- added #ifdef header protectors
- added new files to Makefile.am
- added new r_*.h headers to record.h
- added support for Memos and Tasks to tools/btool.cc, based on
Brian Edginton's patch
(currently commented out, for Boost library reasons):
- added doc/CommitPolicy.txt
- updated AUTHORS
2007/05/24
- added ctags generation to buildgen.sh
- applied record.{h,cc} fix patch from Brian Edginton
- ClassFlag
- FreeBusyFlag
- Clear() fixes
- fixed broken formatting in above patch
- refactored record parser classes into separate files for each
- changed the ConvertHtoB<> template to inline, as it caused
linker errors with the new file layout
2007/05/17
- fixed bug in Debian packaging that put util commands in
/bin and /sbin instead of /usr/bin and /usr/sbin
- commited byteswap.h replacement code from gm2net
- backup gui:
- removed unneeded debug messages on stdout
- changed the default for debug output to "off"
and added a command line option to turn
it on if necessary (--debug-output)
- command line option --help now also works
- fixed bug in Calendar class where it didn't initialize
RecType properly... and cleaned up other RecType
code to use the GetDefaultRecType() functions,
localizing the constants in one place
2007/05/11
- applied patches from Brian Edginton, parsing more
fields in Contact and Calendar records
- added Brian Edginton to AUTHORS
- reformatted record.{h,cc} to match the rest of the code,
removed commented out code, and removed mention of
Outlook from the comments.
- updated udev/10-blackberry.rules.Debian for Debian Etch
- updated debian/rules to use new udev rules file
- removed debian/postinst, as stable versions of Debian now
have a recent udev, and don't need the special handling
- updated Debian build scripts to build separate packages:
libbarry
libbarry-dev
barry-util
barrybackup-gui
- added menu support to Debian barrybackup-gui package
- made the buttons bigger in the backup GUI, as they were too
small on Debian Etch
- opensync plugin:
- more progress in porting to opensync 0.30, heavily
based on the example plugin in the opensync
svn tree... this is a work in progress, and so far
is incomplete
2007/05/04
- opensync plugin:
- partial porting to opensync 0.30 (in progress!)
- fixed bug in sync_done where it reported context error
and then success afterward
- checking in new INSTALL files based on Etch's autoconf run
- added item to gui's todo list
- bumped version numbers to 0.8 in:
- configure.ac
- src/Makefile.am
- src/version.cc
- gui/src/BackupWindow.cc (about dialog)
- src/Doxygen
- rpm/barry*.spec

Now is there any documented or known "how to" to sync with evo? I am currently sycing to yahoo with the windows software so I can access things via browser on my linux machine, but yahoo is really slow so a sync to evo would be perfect.