[Pkg-gtkpod-devel] r198 - in libgpod/branches/upstream/current: . bindings bindings/python bindings/python/examples bindings/python/tests bindings/python/tests/resources bindings/python/tests/resources/Artwork bindings/python/tests/resources/iTunes docs docs/reference docs/reference/html docs/reference/tmpl docs/reference/xml m4 po src tests

djpig at alioth.debian.org djpig at alioth.debian.org
Wed Jun 27 21:44:38 UTC 2007


Author: djpig
Date: 2007-06-27 21:44:37 +0000 (Wed, 27 Jun 2007)
New Revision: 198

Added:
   libgpod/branches/upstream/current/bindings/python/tests/
   libgpod/branches/upstream/current/bindings/python/tests/Makefile.am
   libgpod/branches/upstream/current/bindings/python/tests/Makefile.in
   libgpod/branches/upstream/current/bindings/python/tests/resources/
   libgpod/branches/upstream/current/bindings/python/tests/resources/Artwork/
   libgpod/branches/upstream/current/bindings/python/tests/resources/Artwork/ArtworkDB
   libgpod/branches/upstream/current/bindings/python/tests/resources/iTunes/
   libgpod/branches/upstream/current/bindings/python/tests/resources/iTunes/iTunesDB
   libgpod/branches/upstream/current/bindings/python/tests/resources/iTunes/iTunesDB.ext
   libgpod/branches/upstream/current/bindings/python/tests/resources/tiny.mp3
   libgpod/branches/upstream/current/tests/get-timezone.c
Removed:
   libgpod/branches/upstream/current/m4/gtk-doc.m4
   libgpod/branches/upstream/current/m4/intltool.m4
Modified:
   libgpod/branches/upstream/current/ChangeLog
   libgpod/branches/upstream/current/Makefile.in
   libgpod/branches/upstream/current/TROUBLESHOOTING
   libgpod/branches/upstream/current/aclocal.m4
   libgpod/branches/upstream/current/bindings/Makefile.am
   libgpod/branches/upstream/current/bindings/Makefile.in
   libgpod/branches/upstream/current/bindings/python/Makefile.am
   libgpod/branches/upstream/current/bindings/python/Makefile.in
   libgpod/branches/upstream/current/bindings/python/README
   libgpod/branches/upstream/current/bindings/python/examples/Makefile.in
   libgpod/branches/upstream/current/bindings/python/examples/add_song.py
   libgpod/branches/upstream/current/bindings/python/examples/coverart_fetch.py
   libgpod/branches/upstream/current/bindings/python/examples/create_mp3_tags_from_itdb.py
   libgpod/branches/upstream/current/bindings/python/examples/tag_genre_from_audioscrobber.py
   libgpod/branches/upstream/current/bindings/python/examples/toy_around.py
   libgpod/branches/upstream/current/bindings/python/gpod.i.in
   libgpod/branches/upstream/current/bindings/python/gpod_doc.i.in
   libgpod/branches/upstream/current/bindings/python/gtkpod.py
   libgpod/branches/upstream/current/bindings/python/ipod.py
   libgpod/branches/upstream/current/compile
   libgpod/branches/upstream/current/config.guess
   libgpod/branches/upstream/current/config.sub
   libgpod/branches/upstream/current/configure
   libgpod/branches/upstream/current/configure.ac
   libgpod/branches/upstream/current/depcomp
   libgpod/branches/upstream/current/docs/Makefile.in
   libgpod/branches/upstream/current/docs/reference/Makefile.am
   libgpod/branches/upstream/current/docs/reference/Makefile.in
   libgpod/branches/upstream/current/docs/reference/html/ch01.html
   libgpod/branches/upstream/current/docs/reference/html/index.html
   libgpod/branches/upstream/current/docs/reference/html/index.sgml
   libgpod/branches/upstream/current/docs/reference/html/itunesdb.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-Artwork.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-Device.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-File-handling-functions.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-Low-level-functions.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-Photo-database.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-Playlists.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-Smart-Playlists.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-The-Itdb-iTunesDB-structure.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-Time-handling.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod-Tracks.html
   libgpod/branches/upstream/current/docs/reference/html/libgpod.devhelp
   libgpod/branches/upstream/current/docs/reference/html/libgpod.devhelp2
   libgpod/branches/upstream/current/docs/reference/html/photodb.html
   libgpod/branches/upstream/current/docs/reference/html/style.css
   libgpod/branches/upstream/current/docs/reference/libgpod-docs.xml
   libgpod/branches/upstream/current/docs/reference/libgpod-sections.txt
   libgpod/branches/upstream/current/docs/reference/tmpl/artwork.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/device.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-db.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-lowlevel.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-time.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/libgpod-unused.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/photodb.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/playlists.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/smart-playlists.sgml
   libgpod/branches/upstream/current/docs/reference/tmpl/track.sgml
   libgpod/branches/upstream/current/docs/reference/xml/artwork.xml
   libgpod/branches/upstream/current/docs/reference/xml/device.xml
   libgpod/branches/upstream/current/docs/reference/xml/itunesdb-copying.xml
   libgpod/branches/upstream/current/docs/reference/xml/itunesdb-db.xml
   libgpod/branches/upstream/current/docs/reference/xml/itunesdb-lowlevel.xml
   libgpod/branches/upstream/current/docs/reference/xml/itunesdb-time.xml
   libgpod/branches/upstream/current/docs/reference/xml/photodb.xml
   libgpod/branches/upstream/current/docs/reference/xml/playlists.xml
   libgpod/branches/upstream/current/docs/reference/xml/smart-playlists.xml
   libgpod/branches/upstream/current/docs/reference/xml/track.xml
   libgpod/branches/upstream/current/gtk-doc.make
   libgpod/branches/upstream/current/install-sh
   libgpod/branches/upstream/current/intltool-extract.in
   libgpod/branches/upstream/current/intltool-merge.in
   libgpod/branches/upstream/current/intltool-update.in
   libgpod/branches/upstream/current/libgpod-1.0.pc.in
   libgpod/branches/upstream/current/ltmain.sh
   libgpod/branches/upstream/current/m4/Makefile.in
   libgpod/branches/upstream/current/m4/python.m4
   libgpod/branches/upstream/current/missing
   libgpod/branches/upstream/current/mkinstalldirs
   libgpod/branches/upstream/current/po/Makefile.in.in
   libgpod/branches/upstream/current/po/de.po
   libgpod/branches/upstream/current/po/es.po
   libgpod/branches/upstream/current/po/fr.po
   libgpod/branches/upstream/current/po/he.po
   libgpod/branches/upstream/current/po/it.po
   libgpod/branches/upstream/current/po/ja.po
   libgpod/branches/upstream/current/po/sv.po
   libgpod/branches/upstream/current/py-compile
   libgpod/branches/upstream/current/src/Makefile.in
   libgpod/branches/upstream/current/src/db-artwork-debug.h
   libgpod/branches/upstream/current/src/db-artwork-parser.c
   libgpod/branches/upstream/current/src/db-artwork-parser.h
   libgpod/branches/upstream/current/src/db-artwork-writer.c
   libgpod/branches/upstream/current/src/db-image-parser.h
   libgpod/branches/upstream/current/src/db-itunes-parser.h
   libgpod/branches/upstream/current/src/db-parse-context.h
   libgpod/branches/upstream/current/src/glib-compat.h
   libgpod/branches/upstream/current/src/itdb.h
   libgpod/branches/upstream/current/src/itdb_artwork.c
   libgpod/branches/upstream/current/src/itdb_device.c
   libgpod/branches/upstream/current/src/itdb_device.h
   libgpod/branches/upstream/current/src/itdb_endianness.h
   libgpod/branches/upstream/current/src/itdb_itunesdb.c
   libgpod/branches/upstream/current/src/itdb_photoalbum.c
   libgpod/branches/upstream/current/src/itdb_playlist.c
   libgpod/branches/upstream/current/src/itdb_private.h
   libgpod/branches/upstream/current/src/itdb_track.c
   libgpod/branches/upstream/current/src/ithumb-writer.c
   libgpod/branches/upstream/current/src/pixmaps.c
   libgpod/branches/upstream/current/src/pixmaps.h
   libgpod/branches/upstream/current/tests/Makefile.am
   libgpod/branches/upstream/current/tests/Makefile.in
   libgpod/branches/upstream/current/tests/itdb_main.c
   libgpod/branches/upstream/current/tests/test-init-ipod.c
   libgpod/branches/upstream/current/tests/test-ls.c
   libgpod/branches/upstream/current/tests/test-photos.c
Log:
[svn-upgrade] Integrating new upstream version, libgpod (0.5.2)

Modified: libgpod/branches/upstream/current/ChangeLog
===================================================================
--- libgpod/branches/upstream/current/ChangeLog	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/ChangeLog	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,5 +1,474 @@
+2007-06-23  Todd Zullinger <tmzullinger at users.sourceforge.net>
+
+	* configure.ac:
+	  bump version for 0.5.2 release
+
+2007-06-23 Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c (mhod52_make_collate_keys): ignore empty
+	  sort strings -- fixes multiple display of same album on the
+	  iPod.
+
+2007-06-18 Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* TROUBLESHOOTING: comment concerning namespace cleanup
+
+2007-06-17  Todd Zullinger <tmzullinger at users.sourceforge.net>
+
+	* configure.ac:
+	  bump version and soname for 0.5.0 release
+
+	* libgpod-1.0.pc.in:
+	  add glib version and gobject-2.0 to 'Requires:'
+
+2007-06-17  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c
+	  src/itdb.h: libgpod will not change the values for sort_artist.
+	  Furthermore, libgpod reads the stored values of
+	  sort_artist/_album... from the iTunesDB and makes them available
+	  through the Itdb_Track structure. Applications should modify
+	  these values along with the corresponding artist/album... fields
+	  if a particular sort order is required.
+
+	* src/itdb.h: corrected description for "BPM" (beats per minute)
+
+2007-06-14  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* po/es.po: new version updated by Alejandro Lamas Daviña.
+
+2007-06-11  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* po/ja.po
+	  po/sv.po
+	  po/it.po: Changed license to "same as gtkpod" to "same as
+	  libgpod" after consulting with translators. Waiting for response
+	  from the Hebrew and Spanish translators.
+
+2007-06-02  Daniele Forsi <dforsi at users.sourceforge.net>
+
+        * po/it.po: updated Italian translation
+
+2007-05-27  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+        * src/db-artwork-parser.c (parse_mhba): non-zero terminated
+	  string was copied using g_strdup() instead of g_strndup(). This
+	  affected album names of the Photo Database.
+
+	  src/db-artwork-writer.c (write_mhod_type_1): convert 'type' as
+	  16 bit integer, not 32 bit integer. Potential problem on
+	  non-standard endian system (iPod side).
+
+	  src/db-itunes-parser.h: '#if 0' unused structure to avoid
+	  confusion.
+
+	* src/itdb_photoalbum.c (itdb_photodb_parse): return a valid
+	  photodb structure including the main Photo Library album if no
+	  database existed, analogous to itdb_photodb_create(). Without
+	  this the test-photos script won't work as expected and other
+	  applications also would have to add extra checks for presence of
+	  the main Photo Libarary.
+
+2007-05-30  Todd Zullinger <tmzullinger at users.sourceforge.net>
+
+        * bindings/python/tests/resources/iTunes/iTunesDB.ext
+          docs/reference/libgpod-docs.xml
+          docs/reference/tmpl/photodb.sgml
+          m4/python.m4:
+          change CVS references and links to SVN
+
+2007-05-27  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/db-artwork-parser.c
+	  src/db-artwork-writer.c
+	  src/itdb_device.c
+	  src/itdb_itunesdb.c
+	  src/itdb_private.h:
+	  Fixed segfault when parsing photo databases introduced by the
+	  new handling of timestamps (all timestamps exported are
+	  host-local time_t).
+	  itdb_time_time_t_to_mac() and itdb_time_mac_to_time_t() were
+	  renamed to device_*() and take a pointer to an Itdb_Device
+	  instead of a pointer to an Itdb_iTunesDB structure as the latter
+	  does not exist in case of photo databases. All references to
+	  those two functions were changed accordingly and the functions
+	  themselves were moved from itdb_itunesdb.c to itdb_device.c.
+
+2007-05-23  Todd Zullinger <tmzullinger at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c (get_playlist): fix a potential crasher
+	  (Raymond Walsh)
+
+2007-05-19  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c (playcounts_init): C&P error stat'ing the
+	  wrong file. Thanks to Raymond Walsh.
+
+	* src/itdb_device.c (itdb_set_sysinfo): Corrected comment. Thanks
+	  to Daniele Forsi.
+
+2007-05-17  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb.h: warning about adding string fields
+	  src/itdb_track_duplicate: duplicate new string fields
+	  (sort_*). Thanks to Raymond Walsh.
+
+2007-05-10  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+        * TROUBLESHOOTING: added a note about the 'padding[]'
+	  incompatibility with older versions of gcc.
+
+2007-05-12  Todd Zullinger <tmzullinger at users.sourceforge.net>
+
+	* bindings/python/gpod.i.in: treat time_t as long
+
+	* docs/reference/Makefile.am
+	  docs/reference/libgpod-sections.txt
+	  docs/reference/tmpl/device.sgml
+	  docs/reference/tmpl/itunesdb-lowlevel.sgml
+	  docs/reference/tmpl/itunesdb-time.sgml
+	  docs/reference/tmpl/libgpod-unused.sgml
+	  docs/reference/tmpl/smart-playlists.sgml
+	  src/itdb_itunesdb.c
+	  src/itdb.h:
+	  Minor documentation cleanups.
+
+2007-05-10  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+        * src/itdb_itunesdb.c: remove non-sense check (itdb != NULL) when
+	  itdb can never be NULL. Thanks to Raymond Walsh.
+
+2007-05-07  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+        * src/itdb_artwork.c
+	  src/itdb_itunesdb.c
+	  tests/test-photos.c:
+	  Corrected some typos. Thanks to Daniele Forsi.
+
+	* src/itdb_itunesdb.c:
+	  Fix for 64 bit systems: don't show "last played" data as played
+	  in the last century... Thanks to Christophe.
+
+2007-05-06  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c
+	  src/itdb_device.c
+	  src/itdb_private.h
+	  src/itdb.h:
+	  New API functions to facilitate copying to the iPod in a
+	  background thread and implementation of own copying code.
+
+	  itdb_cp_get_dest_filename(): obtain a valid filename on the iPod
+	  to where a track can be copied. This function can be used in a
+	  thread-safe way.
+
+	  itdb_cp_finalize(): to be called after the track was
+	  copied to the iPod to update some fields in the Itdb_Track
+	  structure. This function can also be used in a thread-safe way.
+
+	  You can use the already existing function itdb_cp() to copy a
+	  track to the iPod and itdb_cp_track_to_ipod() remains available
+	  unchanged in functionality.
+
+2007-05-01  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c (itdb_cp_track_to_ipod): removed static
+	  variable "dir_num" which was initialized once and cycled through
+	  for each track transfered. This doesn't seem right since
+	  different iPods with different number of music directories may
+	  be connected at the same time, and itdb_cp_track_to_ipod() may
+	  be called for different iTunesDBs at the same in in a threaded
+	  environment. Since there is no inherent value in cycling through
+	  the directories, a random directory is selected each time.
+
+2007-04-30  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb (itdb_parse_internal): fixed compile warning
+	  (thanks to Daniele Forsi).
+
+	* tests/test-ls.c (display_recently_played): fixed compile warning
+	  (thanks to Daniele Forsi).
+
+	* tests/get-timezone.c: added to CVS (thanks to Daniele Forsi).
+
+	* src/itdb_playlist.c (compMostOftenPlayed, compLeastOftenPlayed):
+	  compaered time_added instead of playcount (thanks to Daniele
+	  Forsi).
+
+2007-04-28  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb.h: added padding to exported structures so new entries
+	  can be added without loosing backward run-time compatibility.
+
+	* docs/reference/tmpl/track.sgml
+	  src/itdb.h
+	  src/itdb_itunesdb.c
+	  src/itdb_track.c: Added the following fields to Itdb_Track:
+
+	  sort_artist
+	  sort_title
+	  sort_album
+	  sort_albumartist
+	  sort_composer
+	  sort_tvshow
+
+	  These fields can (theoretically) be used to force a certain sort
+	  order on the iPod when displaying by artist, album...
+
+	  Even though these fields are present in the iTunesDB, they are
+	  discarded when reading the iTunesDB and applications must always
+	  set them before writing the iTunesDB again. This is to avoid
+	  that the fields 'artist' and 'sort_artist' accidentially get out
+	  of sync.
+
+	  libgpod will automatically create a sort_artist key for you if
+	  artist is of the type 'The Artist' and sort_artist is not
+	  set. The sort key used in that case is 'Artist, The' (followed
+	  by five time 0x01), even though sort_artist itself will not be
+	  touched.
+
+2007-04-27  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+ 	* src/itdb.h
+ 	  src/itdb_itunesdb.c
+ 	  src/itdb_playlist.c
+ 	  src/itdb_private.h
+	  bindings/python/gpod.i.in
+	  bindings/python/gpod_doc.i.in
+	  docs/reference/libgpod-sections.txt
+	  docs/reference/tmpl/libgpod-unused.sgml
+	  docs/reference/tmpl/smart-playlists.sgml:
+
+	  Namespace cleanup. Applications supporting smart playlists will
+	  have to be adapted. The following changes were implemented to
+	  make sure all exported symbols start with ITDB or Itdb:
+ 
+ 	  structs:
+ 	      SPLPref -> Itdb_SPLPref
+ 	      SPLRules -> Itdb_SPLRules
+ 	      SPLRule -> Itdb_SPLRule
+ 	      SPL_* -> ITDB_SPL_*
+ 	  enums, #defines:
+ 	      LIMITTYPE_* -> ITDB_LIMITTYPE_*
+ 	      LIMITSORT_* -> ITDB_LIMITSORT_*
+ 	      SPLMATCH_* -> ITDB_SPLMATCH_*
+ 	      SPLACTION_* -> ITDB_SPLACTION_*
+ 	      SPLFIELD_* -> ITDB_SPLFIELD_*
+ 	      SPLDATE_IDENTIFIER -> ITDB_SPL_DATE_IDENTIFIER
+ 	      splft_* -> ITDB_SPLFT_*
+ 	      splat_* -> ITDB_SPLAT_*
+ 	      enum SPLAction -> ItdbSPLAction
+ 	      enum SPLActionType -> ItdbSPLActionType
+ 	      enum SPLField -> ItdbSPLField
+ 	      enum SPLFieldType -> ItdbSPLFieldType
+ 	      enum ItdbLimitType (new)
+ 	      enum ItdbLimitSort (new)
+ 	      enum ItdbSPLMatch (new)
+ 	      removed SPL_MAXSTRINGLENGTH (use ITDB_SPL_STRING_MAXLEN)
+
+
+	* docs/reference/tmpl/device.sgml
+	  docs/reference/tmpl/itunesdb-time.sgml
+	  docs/reference/tmpl/libgpod-unused.sgml
+	  docs/reference/tmpl/track.sgml
+	  src/db-artwork-parser.c
+	  src/db-artwork-writer.c
+	  src/db-itunes-parser.h
+	  src/itdb.h
+	  src/itdb_device.c
+	  src/itdb_device.h
+	  src/itdb_itunesdb.c
+	  src/itdb_private.h
+	  tests/Makefile.am:
+
+	  Christophe's patch for automatic correction of timestamps
+	  depending on which timezone the iPod is set to.
+
+	  ATTENTION DEVELOPERS: as a consequence all exported timestamps
+	  are no longer guint32 mac-type timestamps but standard time_t
+	  timestamps. This also includes the 64 bit timestamps in smart
+	  playlists. The following functions are therefore no longer
+	  needed and are deprecated:
+
+	  itdb_time_mac_to_host(), itdb_time_host_to_mac(): simply return
+	  the argument without changing it. Argument and return value are
+	  now both of type 'time_t'.
+
+	  itunesdb_time_get_mac_time(): returns the seconds passed since
+	  Epoch in seconds and is equivalent to time(NULL).
+
+	  These functions may be removed in a future version of
+	  libgpod. Programs linking to libgpod may need to be changed
+	  slightly if they made any assumptions on the type of timestamps
+	  used. This should be obvious through compile-time warnings.
+
+	  tests/test-ls.c: print a list of recently played tracks.
+
+
+2007-04-15  Todd Zullinger <tmzullinger at users.sourceforge.net>
+
+	* bindings/python/ipod.py: use the mac-style path for
+	  filename_ipod in the extended info file, like gtkpod does
+
+2007-04-14  Christophe Fergeau  <teuf at gnome.org>
+
+	* src/itdb_device.c: add itdb_device_supports_artwork and
+	idb_device_supports_photo functions
+	* docs/reference/tmpl/device.sgml: update api doc
+	* src/itdb_itunesdb.c: don't try to write artwork database if the iPod
+	model doesn't support artwork.
+
+2007-04-08  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb.h: changed 'gchar *chapterdata' to 'gpointer
+	  chapterdata' with note that chapterdata is not yet supported.
+
+	* src/itdb_track.c (itdb_track_duplicate): arrange the strings in
+	  the same order as in Itdb_Track for easier error-checking.
+
+2007-03-26  Nicholas Piper  <nicholas at users.sourceforge.net>
+
+	* bindings/python/Makefile.am
+	  bindings/python/tests/Makefile.am
+	  bindings/python/tests/tests.py: Causes tests to run with the
+	  libraries from the build tree rather than currently installed
+	  version (Todd Zullinger)
+
+2007-03-26  Nicholas Piper  <nicholas at users.sourceforge.net>
+
+	* bindings/python/gpod.i.in: Add basic PhotoDB reading facility
+
+2007-03-25  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c: streamline MHOD52 patch (remove mk_mhod52()
+	  and let mk_mhod() handle the sorting of mhod52 directly).
+
+2007-03-23  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c: Write out MHOD52 hunks after master
+	  playlist. This speeds up the iPod interface when browsing titles
+	  or albums etc. because the iPod won't have to sort through the
+	  track list.
+
+2007-03-22  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_itunesdb.c (write_playlist): corrected what is written
+	  into the mhyp header according to the iTunesDB wiki (mhod count /
+	  libmhod count)
+
+2007-03-21  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb_artwork.c (itdb_artwork_remove_thumbnail): memory used
+	  by thumbnail to be removed will be freed now. ATTENTION: this
+	  changes the previous API description that stated that the
+	  thumbnail will not be freed. This behaviour was inconsistent
+	  with all other _remove functions in libgpod and caused a memory
+	  hole.
+
+	* src/itdb_itunesdb.c (itdb_cp_track_to_ipod): cast filename
+	  extension to lowercase because some people reported new iPod
+	  models choking on filenames with uppercase extensions like
+	  test.MP3. Not sure if it helps, though.
+
+	* src/itdb.h
+	  src/itdb_artwork.c
+	  src/itdb_photoalbum.c
+	  src/itdb_track.c
+	  src/ithumb-writer.c:
+	  Added new API functions: itdb_photodb_add_photo_from_pixbuf
+	  function(), itdb_track_set_thumbnails_from_pixbuf() and
+	  itdb_artwork_add_thumbnail_from_pixbuf(). Thanks to Christophe
+	  Fergeau.
+
+	* docs/reference/libgpod-sections.txt: added descriptions by
+	  Christophe Fergeau.
+	
+2007-03-02  Todd Zullinger <tmzullinger at users.sourceforge.net>
+
+	* bindings/Makefile.am: only descend into the python subdir if
+	  HAVE_PYTHON is set, this avoids some problems with the
+	  Makefiles created by automake 1.7
+
+2007-02-27  Todd Zullinger <tmzullinger at users.sourceforge.net>
+
+	* INSTALL_CVS
+	  docs/reference/Makefile.am: build docs when creating
+	  tarballs
+
+	* docs/reference/libgpod-sections.txt: include missing and
+	  newly added declarations, remove unused declarations
+
+	* configure.ac
+	  m4/python.m4: allow the use of nicer version strings in
+	  AM_CHECK_PYMOD
+
+2007-02-25  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/itdb.h
+	  src/itdb_itunesdb.c
+	  src/itdb_playlist.c: introduced splft_binary_and as separate
+	  field type as this will simplify handling in applications.
+
+	* src/itdb_itunesdb.c (get_mhod, mk_mhod): replaced
+          if()... with a switch()... to catch changes made to
+          SPLFieldType more easily.
+
+	* src/itdb.h: introduced Itdb_Mediatype enum.
+
+2007-02-24  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/db-itunes-parser.h
+	  src/artwork-writer.c: Set unknown2 of mhfd header to 2 instead
+	  of 1, otherwise iTunes7 wipes the ArtworkDB.
+
+	* src/itdb.h
+	  src/itdb_itunesdb.c
+	  src/itdb_playlist.c:
+	  Updated smart playlist handling to recognize album artist, tv
+	  show, last skipped, season number, skipcount and video kind
+	  fields.
+
+	* src/itdb_itunesdb.c (get_mhod): don't skip unknown action types
+	  in smart rules to avoid writing illegal smart playlist rules
+	  corrupting the iTunesDB in the process.
+	
+2007-02-09  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* ChangeLog
+	  INSTALL_CVS
+	  configure.ac
+	  bindings/python/gtkpod.py
+	  bindings/python/ipod.py
+	  bindings/python/examples/add_song.py
+	  bindings/python/examples/create_mp3_tags_from_itdb.py:
+
+	  updates and fixes from Nicholas Piper.
+
+2007-02-11  Nicholas Piper  <nick-gtkpod at nickpiper.co.uk>
+
+	* bindings/python: Corrections to text encoding in the extended
+	  database and switch to python-mutagen from python-eyeD3 Thanks
+	  to Stalwart for his help clearing up handling broken filenames.
+
+2007-02-09  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+	* src/ithumb-writer.c: reduced maximum size for ithmb files from
+	  500 MB to 256 MB after reports of slow iPod interface behavior.
+
+2007-01-18  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+        * src/itdb.h
+	  src/itdb_itunesdb.c (itdb_cp_track_to_ipod): changed declaration
+	  of 'filename' from "gchar *" to "const gchar *".
+
+2007-01-16  Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+        * po/fr.po: updated French catalog -- thanks to Éric Lassauge
+
 2007-01-15  Jorg Schuler <jcsjcs at users.sourceforge.net>
 
+	* configure.ac: bumped version to 0.4.3-CVS for further development
+
 	* configure.ac: bumped version to 0.4.2 for release
 
 	* po/sv.po: updated Swedish catalog -- thanks to Stefan Asserhall

Modified: libgpod/branches/upstream/current/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -21,6 +21,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = .
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -34,56 +35,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(srcdir)/libgpod-1.0.pc.in $(top_srcdir)/configure AUTHORS \
-	COPYING ChangeLog INSTALL NEWS compile config.guess config.sub \
-	depcomp install-sh ltmain.sh missing mkinstalldirs py-compile
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno configure.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = libgpod-1.0.pc
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
-pkgconfigDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkgconfig_DATA)
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  { test ! -d $(distdir) \
-    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr $(distdir); }; }
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -183,6 +135,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -204,6 +157,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -224,8 +178,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -251,7 +203,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -269,8 +220,10 @@
 
 # build documentation when doing a distcheck.
 DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libgpod-1.0.pc
+
 EXTRA_DIST = \
 	TROUBLESHOOTING		\
         intltool-merge.in       \
@@ -278,47 +231,51 @@
         intltool-extract.in     \
         libgpod-1.0.pc.in
 
+
 DISTCLEANFILES = \
         intltool-extract        \
         intltool-merge          \
         intltool-update
 
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = libgpod-1.0.pc
+DIST_SOURCES =
+DATA = $(pkgconfig_DATA)
+
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure AUTHORS \
+	COPYING ChangeLog INSTALL Makefile.am NEWS aclocal.m4 compile \
+	config.guess config.h.in config.sub configure configure.ac \
+	depcomp install-sh libgpod-1.0.pc.in ltmain.sh missing \
+	mkinstalldirs py-compile
+DIST_SUBDIRS = $(SUBDIRS)
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-am--refresh:
-	@:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
-	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
+
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    echo ' $(SHELL) ./config.status'; \
-	    $(SHELL) ./config.status;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-	esac;
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
 
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	$(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
 	cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.ac 
 	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
 
 config.h: stamp-h1
@@ -330,14 +287,14 @@
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
 	cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.ac $(ACLOCAL_M4) 
 	cd $(top_srcdir) && $(AUTOHEADER)
-	rm -f stamp-h1
-	touch $@
+	touch $(srcdir)/config.h.in
 
 distclean-hdr:
 	-rm -f config.h stamp-h1
-libgpod-1.0.pc: $(top_builddir)/config.status $(srcdir)/libgpod-1.0.pc.in
+libgpod-1.0.pc: $(top_builddir)/config.status libgpod-1.0.pc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 
 mostlyclean-libtool:
@@ -349,22 +306,23 @@
 distclean-libtool:
 	-rm -f libtool
 uninstall-info-am:
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
 install-pkgconfigDATA: $(pkgconfig_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
+	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
 	@list='$(pkgconfig_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
-	  $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f; \
 	done
 
 uninstall-pkgconfigDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkgconfig_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  rm -f $(DESTDIR)$(pkgconfigdir)/$$f; \
 	done
 
 # This directory's subdirectories are mostly independent; you can cd
@@ -374,13 +332,7 @@
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@set fnord $$MAKEFLAGS; amf=$$2; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -392,7 +344,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -400,13 +352,7 @@
 
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@set fnord $$MAKEFLAGS; amf=$$2; \
 	dot_seen=no; \
 	case "$@" in \
 	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -427,7 +373,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -438,6 +384,14 @@
 	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -446,22 +400,19 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	mkid -fID $$unique
-tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
-	  empty_fix=.; \
 	else \
 	  include_option=--include; \
-	  empty_fix=; \
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
+	    test -f $$subdir/TAGS && \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -471,11 +422,10 @@
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -498,11 +448,24 @@
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = .
+distdir = $(PACKAGE)-$(VERSION)
+
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+
 distdir: $(DISTFILES)
 	$(am__remove_distdir)
 	mkdir $(distdir)
-	$(mkdir_p) $(distdir)/. $(distdir)/bindings/python $(distdir)/docs/reference $(distdir)/m4 $(distdir)/po
+	$(mkinstalldirs) $(distdir)/. $(distdir)/bindings/python $(distdir)/docs/reference $(distdir)/po
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
 	list='$(DISTFILES)'; for file in $$list; do \
@@ -514,7 +477,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -529,17 +492,15 @@
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -550,46 +511,19 @@
 	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
 	|| chmod -R a+r $(distdir)
 dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
 
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
-
 dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
 # tarfile.
 distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
+	$(am__remove_distdir)
+	GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
 	chmod -R a-w $(distdir); chmod a+w $(distdir)
 	mkdir $(distdir)/_build
 	mkdir $(distdir)/_inst
@@ -609,20 +543,19 @@
 	        distuninstallcheck \
 	  && chmod -R a-w "$$dc_install_base" \
 	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
 	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
 	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
 	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
 	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
 	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
 	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
+	  && rm -f $(distdir).tar.gz \
 	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
 	$(am__remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+	@echo "$(distdir).tar.gz is ready for distribution" | \
+	  sed 'h;s/./=/g;p;x;p;x'
 distuninstallcheck:
 	@cd $(distuninstallcheck_dir) \
 	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
@@ -646,9 +579,8 @@
 all-am: Makefile $(DATA) config.h
 installdirs: installdirs-recursive
 installdirs-am:
-	for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-	done
+	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
+
 install: install-recursive
 install-exec: install-exec-recursive
 install-data: install-data-recursive
@@ -668,7 +600,7 @@
 clean-generic:
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -681,15 +613,13 @@
 distclean: distclean-recursive
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags
+distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
+	distclean-tags
 
 dvi: dvi-recursive
 
 dvi-am:
 
-html: html-recursive
-
 info: info-recursive
 
 info-am:
@@ -726,22 +656,25 @@
 
 uninstall-info: uninstall-info-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
-	check-am clean clean-generic clean-libtool clean-recursive \
-	ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
-	dist-shar dist-tarZ dist-zip distcheck distclean \
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-recursive ctags \
+	ctags-recursive dist dist-all dist-gzip distcheck distclean \
 	distclean-generic distclean-hdr distclean-libtool \
 	distclean-recursive distclean-tags distcleancheck distdir \
-	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-exec \
-	install-exec-am install-info install-info-am install-man \
-	install-pkgconfigDATA install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic maintainer-clean-recursive \
-	mostlyclean mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+	distuninstallcheck dvi dvi-am dvi-recursive info info-am \
+	info-recursive install install-am install-data install-data-am \
+	install-data-recursive install-exec install-exec-am \
+	install-exec-recursive install-info install-info-am \
+	install-info-recursive install-man install-pkgconfigDATA \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+	pdf-recursive ps ps-am ps-recursive tags tags-recursive \
 	uninstall uninstall-am uninstall-info-am \
-	uninstall-pkgconfigDATA
+	uninstall-info-recursive uninstall-pkgconfigDATA \
+	uninstall-recursive
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.

Modified: libgpod/branches/upstream/current/TROUBLESHOOTING
===================================================================
--- libgpod/branches/upstream/current/TROUBLESHOOTING	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/TROUBLESHOOTING	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,6 +1,16 @@
 Possible problems:
 ------------------
 
+* Compilation of applications that compiled fine with libgpod 0.4.2
+  fail with libgpod 0.5.0 or later because of unknown symbols.
+
+With version 0.5.0 of libgpod the namespace has been cleaned up. All
+exported symbols now start with either ITDB or Itdb. Applications
+using the old symbols will have to be adapted. Please see the
+ChangeLog entry from 27 April 2007 for details on the renaming.
+
+------------------------------------------------------------
+
 * If you get an error stating
 
 "possibly undefined macro: AC_PROG_INTLTOOL"
@@ -46,6 +56,15 @@
 
 ------------------------------------------------------------
 
+* "array size missing in `padding'"
+
+Older versions of gcc don't seem to understand the construct. You can
+either change the 'padding[]' strings to 'padding[0]' (not tested) or
+upgrade your gcc to a more recent version (gcc-3.2 has been reported
+to work) fine.
+
+------------------------------------------------------------
+
 * Compiling for 64bit systems
 
 The current automake/autobuild setup doesn't set the correct
@@ -70,3 +89,6 @@
 python (e.g. python2.4)
 python-dev (e.g. python2.4-dev)
 python-eye3D
+
+------------------------------------------------------------
+

Modified: libgpod/branches/upstream/current/aclocal.m4
===================================================================
--- libgpod/branches/upstream/current/aclocal.m4	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/aclocal.m4	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005  Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -11,411 +11,896 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
-# Copyright (C) 1995-2002 Free Software Foundation, Inc.
-# Copyright (C) 2001-2003,2004 Red Hat, Inc.
+# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
+
+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_PREREQ([2.52])
+
+# serial 6
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake.                            -*- Autoconf -*-
+
+# This macro actually does too much some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 10
+
+AC_PREREQ([2.54])
+
+# Autoconf 2.50 wants to disallow AM_ names.  We explicitly allow
+# the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG(AMTAR, tar)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+	 [AM_AUTOMAKE_VERSION([1.7.9])])
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+
+# Copyright 2001, 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
 #
-# This file is free software, distributed under the terms of the GNU
-# General Public License.  As a special exception to the GNU General
-# Public License, this file may be distributed as part of a program
-# that contains a configuration script generated by Autoconf, under
-# the same distribution terms as the rest of that program.
+# Check to make sure that the build environment is sane.
 #
-# This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
+
+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+#  -*- Autoconf -*-
+
+
+# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
 #
-# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper at cygnus.com>, 1995, 1996
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
 #
-# Modified to never use included libintl. 
-# Owen Taylor <otaylor at redhat.com>, 12/15/1998
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
 #
-# Major rework to remove unused code
-# Owen Taylor <otaylor at redhat.com>, 12/11/2002
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
 #
-# Added better handling of ALL_LINGUAS from GNU gettext version 
-# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
 #
-# Modified to require ngettext
-# Matthias Clasen <mclasen at redhat.com> 08/06/2004
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+# Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_AUX_DIR_EXPAND], [
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+#                                                          -*- Autoconf -*-
+# Copyright (C) 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# serial 5						-*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
 #
-# We need this here as well, since someone might use autoconf-2.5x
-# to configure GLib then an older version to configure a package
-# using AM_GLIB_GNU_GETTEXT
-AC_PREREQ(2.53)
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
 
-dnl
-dnl We go to great lengths to make sure that aclocal won't 
-dnl try to pull in the installed version of these macros
-dnl when running aclocal in the glib directory.
-dnl
-m4_copy([AC_DEFUN],[glib_DEFUN])
-m4_copy([AC_REQUIRE],[glib_REQUIRE])
-dnl
-dnl At the end, if we're not within glib, we'll define the public
-dnl definitions in terms of our private definitions.
-dnl
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
 
-# GLIB_LC_MESSAGES
-#--------------------
-glib_DEFUN([GLIB_LC_MESSAGES],
-  [AC_CHECK_HEADERS([locale.h])
-    if test $ac_cv_header_locale_h = yes; then
-    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
-      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
-       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
-    if test $am_cv_val_LC_MESSAGES = yes; then
-      AC_DEFINE(HAVE_LC_MESSAGES, 1,
-        [Define if your <locale.h> file defines LC_MESSAGES.])
-    fi
-  fi])
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
 
-# GLIB_PATH_PROG_WITH_TEST
-#----------------------------
-dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
-[# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
-  /*)
-  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in ifelse([$5], , $PATH, [$5]); do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if [$3]; then
-	ac_cv_path_$1="$ac_dir/$ac_word"
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
 	break
       fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
     fi
   done
-  IFS="$ac_save_ifs"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
-  ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
-  AC_MSG_RESULT([$]$1)
+
+  cd ..
+  rm -rf conftest.dir
 else
-  AC_MSG_RESULT(no)
+  am_cv_$1_dependencies_compiler_type=none
 fi
-AC_SUBST($1)dnl
 ])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
 
-# GLIB_WITH_NLS
-#-----------------
-glib_DEFUN([GLIB_WITH_NLS],
-  dnl NLS is obligatory
-  [USE_NLS=yes
-    AC_SUBST(USE_NLS)
 
-    gt_cv_have_gettext=no
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
 
-    CATOBJEXT=NONE
-    XGETTEXT=:
-    INTLLIBS=
 
-    AC_CHECK_HEADER(libintl.h,
-     [gt_cv_func_dgettext_libintl="no"
-      libintl_extra_libs=""
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
 
-      #
-      # First check in libc
-      #
-      AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
-        [AC_TRY_LINK([
-#include <libintl.h>
-],
-         [return !ngettext ("","", 1)],
-	  gt_cv_func_ngettext_libc=yes,
-          gt_cv_func_ngettext_libc=no)
-        ])
-  
-      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-	      AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
-        	[AC_TRY_LINK([
-#include <libintl.h>
-],
-	          [return !dgettext ("","")],
-		  gt_cv_func_dgettext_libc=yes,
-	          gt_cv_func_dgettext_libc=no)
-        	])
-      fi
-  
-      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-        AC_CHECK_FUNCS(bind_textdomain_codeset)
-      fi
+# Generate code to set up dependency tracking.   -*- Autoconf -*-
 
-      #
-      # If we don't have everything we want, check in libintl
-      #
-      if test "$gt_cv_func_dgettext_libc" != "yes" \
-	 || test "$gt_cv_func_ngettext_libc" != "yes" \
-         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
-        
-        AC_CHECK_LIB(intl, bindtextdomain,
-	    [AC_CHECK_LIB(intl, ngettext,
-		    [AC_CHECK_LIB(intl, dgettext,
-			          gt_cv_func_dgettext_libintl=yes)])])
+# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
-	  AC_MSG_CHECKING([if -liconv is needed to use gettext])
-	  AC_MSG_RESULT([])
-  	  AC_CHECK_LIB(intl, ngettext,
-          	[AC_CHECK_LIB(intl, dcgettext,
-		       [gt_cv_func_dgettext_libintl=yes
-			libintl_extra_libs=-liconv],
-			:,-liconv)],
-		:,-liconv)
-        fi
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
 
-        #
-        # If we found libintl, then check in it for bind_textdomain_codeset();
-        # we'll prefer libc if neither have bind_textdomain_codeset(),
-        # and both have dgettext and ngettext
-        #
-        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
-          glib_save_LIBS="$LIBS"
-          LIBS="$LIBS -lintl $libintl_extra_libs"
-          unset ac_cv_func_bind_textdomain_codeset
-          AC_CHECK_FUNCS(bind_textdomain_codeset)
-          LIBS="$glib_save_LIBS"
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 
-          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
-            gt_cv_func_dgettext_libc=no
-          else
-            if test "$gt_cv_func_dgettext_libc" = "yes" \
-		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
-              gt_cv_func_dgettext_libintl=no
-            fi
-          fi
-        fi
-      fi
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
 
-      if test "$gt_cv_func_dgettext_libc" = "yes" \
-	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
-        gt_cv_have_gettext=yes
-      fi
-  
-      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
-        INTLLIBS="-lintl $libintl_extra_libs"
-      fi
-  
-      if test "$gt_cv_have_gettext" = "yes"; then
-	AC_DEFINE(HAVE_GETTEXT,1,
-	  [Define if the GNU gettext() function is already present or preinstalled.])
-	GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
-	  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
-	if test "$MSGFMT" != "no"; then
-          glib_save_LIBS="$LIBS"
-          LIBS="$LIBS $INTLLIBS"
-	  AC_CHECK_FUNCS(dcgettext)
-	  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
-	  GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-	    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
-	  AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
-			 return _nl_msg_cat_cntr],
-	    [CATOBJEXT=.gmo 
-             DATADIRNAME=share],
-	    [case $host in
-	    *-*-solaris*)
-	    dnl On Solaris, if bind_textdomain_codeset is in libc,
-	    dnl GNU format message catalog is always supported,
-            dnl since both are added to the libc all together.
-	    dnl Hence, we'd like to go with DATADIRNAME=share and
-	    dnl and CATOBJEXT=.gmo in this case.
-            AC_CHECK_FUNC(bind_textdomain_codeset,
-	      [CATOBJEXT=.gmo 
-               DATADIRNAME=share],
-	      [CATOBJEXT=.mo
-               DATADIRNAME=lib])
-	    ;;
-	    *)
-	    CATOBJEXT=.mo
-            DATADIRNAME=lib
-	    ;;
-	    esac])
-          LIBS="$glib_save_LIBS"
-	  INSTOBJEXT=.mo
-	else
-	  gt_cv_have_gettext=no
-	fi
-      fi
-    ])
+#serial 2
 
-    if test "$gt_cv_have_gettext" = "yes" ; then
-      AC_DEFINE(ENABLE_NLS, 1,
-        [always defined to indicate that i18n is enabled])
-    fi
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+	s/\\\\$//
+	p
+	n
+	/\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
-    dnl Test whether we really found GNU xgettext.
-    if test "$XGETTEXT" != ":"; then
-      dnl If it is not GNU xgettext we define it as : so that the
-      dnl Makefiles still can work.
-      if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
-        : ;
-      else
-        AC_MSG_RESULT(
-	  [found xgettext program is not GNU xgettext; ignore it])
-        XGETTEXT=":"
-      fi
-    fi
 
-    # We need to process the po/ directory.
-    POSUB=po
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
 
-    AC_OUTPUT_COMMANDS(
-      [case "$CONFIG_FILES" in *po/Makefile.in*)
-        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
-      esac])
+# Check to see how 'make' treats includes.	-*- Autoconf -*-
 
-    dnl These rules are solely for the distribution goal.  While doing this
-    dnl we only have to keep exactly one list of the available catalogs
-    dnl in configure.in.
-    for lang in $ALL_LINGUAS; do
-      GMOFILES="$GMOFILES $lang.gmo"
-      POFILES="$POFILES $lang.po"
-    done
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
 
-    dnl Make all variables we use known to autoconf.
-    AC_SUBST(CATALOGS)
-    AC_SUBST(CATOBJEXT)
-    AC_SUBST(DATADIRNAME)
-    AC_SUBST(GMOFILES)
-    AC_SUBST(INSTOBJEXT)
-    AC_SUBST(INTLLIBS)
-    AC_SUBST(PO_IN_DATADIR_TRUE)
-    AC_SUBST(PO_IN_DATADIR_FALSE)
-    AC_SUBST(POFILES)
-    AC_SUBST(POSUB)
-  ])
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
 
-# AM_GLIB_GNU_GETTEXT
-# -------------------
-# Do checks necessary for use of gettext. If a suitable implementation 
-# of gettext is found in either in libintl or in the C library,
-# it will set INTLLIBS to the libraries needed for use of gettext
-# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
-# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
-# on various variables needed by the Makefile.in.in installed by 
-# glib-gettextize.
-dnl
-glib_DEFUN([GLIB_GNU_GETTEXT],
-  [AC_REQUIRE([AC_PROG_CC])dnl
-   AC_REQUIRE([AC_HEADER_STDC])dnl
-   
-   GLIB_LC_MESSAGES
-   GLIB_WITH_NLS
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 
-   if test "$gt_cv_have_gettext" = "yes"; then
-     if test "x$ALL_LINGUAS" = "x"; then
-       LINGUAS=
-     else
-       AC_MSG_CHECKING(for catalogs to be installed)
-       NEW_LINGUAS=
-       for presentlang in $ALL_LINGUAS; do
-         useit=no
-         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
-           desiredlanguages="$LINGUAS"
-         else
-           desiredlanguages="$ALL_LINGUAS"
-         fi
-         for desiredlang in $desiredlanguages; do
- 	   # Use the presentlang catalog if desiredlang is
-           #   a. equal to presentlang, or
-           #   b. a variant of presentlang (because in this case,
-           #      presentlang can be used as a fallback for messages
-           #      which are not translated in the desiredlang catalog).
-           case "$desiredlang" in
-             "$presentlang"*) useit=yes;;
-           esac
-         done
-         if test $useit = yes; then
-           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
-         fi
-       done
-       LINGUAS=$NEW_LINGUAS
-       AC_MSG_RESULT($LINGUAS)
-     fi
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
 
-     dnl Construct list of names of catalog files to be constructed.
-     if test -n "$LINGUAS"; then
-       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
-     fi
-   fi
+# serial 2
 
-   dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
-   dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
-   dnl Try to locate is.
-   MKINSTALLDIRS=
-   if test -n "$ac_aux_dir"; then
-     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
    fi
-   if test -z "$MKINSTALLDIRS"; then
-     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-   fi
-   AC_SUBST(MKINSTALLDIRS)
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
 
-   dnl Generate list of files to be processed by xgettext which will
-   dnl be included in po/Makefile.
-   test -d po || mkdir po
-   if test "x$srcdir" != "x."; then
-     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
-       posrcprefix="$srcdir/"
-     else
-       posrcprefix="../$srcdir/"
-     fi
-   else
-     posrcprefix="../"
-   fi
-   rm -f po/POTFILES
-   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
-	< $srcdir/po/POTFILES.in > po/POTFILES
-  ])
+# AM_CONDITIONAL                                              -*- Autoconf -*-
 
-# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
-# -------------------------------
-# Define VARIABLE to the location where catalog files will
-# be installed by po/Makefile.
-glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
-[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
-glib_save_prefix="$prefix"
-glib_save_exec_prefix="$exec_prefix"
-glib_save_datarootdir="$datarootdir"
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-test "x$exec_prefix" = xNONE && exec_prefix=$prefix
-datarootdir=`eval echo "${datarootdir}"`
-if test "x$CATOBJEXT" = "x.mo" ; then
-  localedir=`eval echo "${libdir}/locale"`
+# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 5
+
+AC_PREREQ(2.52)
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
 else
-  localedir=`eval echo "${datadir}/locale"`
+  $1_TRUE='#'
+  $1_FALSE=
 fi
-prefix="$glib_save_prefix"
-exec_prefix="$glib_save_exec_prefix"
-datarootdir="$glib_save_datarootdir"
-AC_DEFINE_UNQUOTED($1, "$localedir",
-  [Define the location where the catalogs will be installed])
-])
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.])
+fi])])
 
-dnl
-dnl Now the definitions that aclocal will find
-dnl
-ifdef(glib_configure_in,[],[
-AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
-AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
-])dnl
+# Add --enable-maintainer-mode option to configure.
+# From Jim Meyering
 
+# Copyright 1996, 1998, 2000, 2001, 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode is disabled by default
+  AC_ARG_ENABLE(maintainer-mode,
+[  --enable-maintainer-mode enable make rules and dependencies not useful
+                          (and sometimes confusing) to the casual installer],
+      USE_MAINTAINER_MODE=$enableval,
+      USE_MAINTAINER_MODE=no)
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 
-# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
+# serial 48 AC_PROG_LIBTOOL
 
 
 # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
@@ -1799,6 +2284,18 @@
   dynamic_linker=no
   ;;
 
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -1954,7 +2451,7 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -1968,10 +2465,27 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+    if AC_TRY_EVAL(ac_compile); then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/^[	 ]*//;s/#.*//;/^[^\/]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -1983,7 +2497,7 @@
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
-netbsdelf*-gnu)
+knetbsd*-gnu)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -1992,7 +2506,7 @@
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
+  dynamic_linker='GNU ld.so'
   ;;
 
 netbsd*)
@@ -2700,7 +3214,7 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-freebsd* | dragonfly*)
+freebsd* | kfreebsd*-gnu | dragonfly*)
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
     case $host_cpu in
     i*86 )
@@ -2754,11 +3268,11 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd* | netbsdelf*-gnu)
+netbsd*)
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
   else
@@ -3506,7 +4020,7 @@
   freebsd-elf*)
     _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
     ;;
-  freebsd* | dragonfly*)
+  freebsd* | kfreebsd*-gnu | dragonfly*)
     # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
     # conventions
     _LT_AC_TAGVAR(ld_shlibs, $1)=yes
@@ -3665,7 +4179,7 @@
     _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
     _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
     ;;
-  linux* | k*bsd*-gnu)
+  linux*)
     case $cc_basename in
       KCC*)
 	# Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -3767,7 +4281,7 @@
 	;;
     esac
     ;;
-  netbsd* | netbsdelf*-gnu)
+  netbsd*)
     if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
       wlarc=
@@ -5032,7 +5546,7 @@
   lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
   lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
   ;;
-linux* | k*bsd*-gnu)
+linux*)
   if test "$host_cpu" = ia64; then
     symcode='[[ABCDGIRSTW]]'
     lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
@@ -5305,7 +5819,7 @@
 	    ;;
 	esac
 	;;
-      freebsd* | dragonfly*)
+      freebsd* | kfreebsd*-gnu | dragonfly*)
 	# FreeBSD uses GNU C++
 	;;
       hpux9* | hpux10* | hpux11*)
@@ -5348,7 +5862,7 @@
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu)
+      linux*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -5391,7 +5905,7 @@
 	    ;;
 	esac
 	;;
-      netbsd* | netbsdelf*-gnu)
+      netbsd*)
 	;;
       osf3* | osf4* | osf5*)
 	case $cc_basename in
@@ -5602,7 +6116,7 @@
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux*)
       case $cc_basename in
       icc* | ecc*)
 	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
@@ -5743,9 +6257,6 @@
   cygwin* | mingw*)
     _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
-  linux* | k*bsd*-gnu)
-    _LT_AC_TAGVAR(link_all_deplibs, $1)=no
-  ;;
   *)
     _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
@@ -5916,7 +6427,7 @@
       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux*)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
 	tmp_addflag=
 	case $cc_basename,$host_cpu in
@@ -5942,13 +6453,12 @@
   $echo "local: *; };" >> $output_objdir/$libname.ver~
 	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
 	fi
-	_LT_AC_TAGVAR(link_all_deplibs, $1)=no
       else
 	_LT_AC_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
 	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -6278,7 +6788,7 @@
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
+    freebsd* | kfreebsd*-gnu | dragonfly*)
       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       _LT_AC_TAGVAR(hardcode_direct, $1)=yes
@@ -6380,7 +6890,7 @@
       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
 	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -6747,6 +7257,7 @@
     done
   done
 done
+IFS=$as_save_IFS
 lt_ac_max=0
 lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -6779,9 +7290,215 @@
 done
 ])
 SED=$lt_cv_path_SED
+AC_SUBST([SED])
 AC_MSG_RESULT([$SED])
 ])
 
+
+dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 35 IT_PROG_INTLTOOL
+AC_DEFUN([IT_PROG_INTLTOOL],
+[AC_PREREQ([2.50])dnl
+
+case "$am__api_version" in
+    1.[01234])
+	AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
+    ;;
+    *)
+    ;;
+esac
+
+if test -n "$1"; then
+    AC_MSG_CHECKING(for intltool >= $1)
+
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
+    [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in`
+    ]
+    AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+    test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+	AC_MSG_ERROR([Your intltool is too old.  You need intltool $1 or later.])
+fi
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' 
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+
+AC_SUBST(INTLTOOL_DESKTOP_RULE)
+AC_SUBST(INTLTOOL_DIRECTORY_RULE)
+AC_SUBST(INTLTOOL_KEYS_RULE)
+AC_SUBST(INTLTOOL_PROP_RULE)
+AC_SUBST(INTLTOOL_OAF_RULE)
+AC_SUBST(INTLTOOL_PONG_RULE)
+AC_SUBST(INTLTOOL_SERVER_RULE)
+AC_SUBST(INTLTOOL_SHEET_RULE)
+AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
+AC_SUBST(INTLTOOL_UI_RULE)
+AC_SUBST(INTLTOOL_XAM_RULE)
+AC_SUBST(INTLTOOL_KBD_RULE)
+AC_SUBST(INTLTOOL_XML_RULE)
+AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+AC_SUBST(INTLTOOL_CAVES_RULE)
+AC_SUBST(INTLTOOL_SCHEMAS_RULE)
+AC_SUBST(INTLTOOL_THEME_RULE)
+AC_SUBST(INTLTOOL_SERVICE_RULE)
+
+# Use the tools built into the package, not the ones that are installed.
+AC_SUBST(INTLTOOL_EXTRACT, '$(top_builddir)/intltool-extract')
+AC_SUBST(INTLTOOL_MERGE, '$(top_builddir)/intltool-merge')
+AC_SUBST(INTLTOOL_UPDATE, '$(top_builddir)/intltool-update')
+
+AC_PATH_PROG(INTLTOOL_PERL, perl)
+if test -z "$INTLTOOL_PERL"; then
+   AC_MSG_ERROR([perl not found; required for intltool])
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+   AC_MSG_ERROR([perl 5.x required for intltool])
+fi
+if test "x$2" != "xno-xml"; then
+   AC_MSG_CHECKING([for XML::Parser])
+   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+       AC_MSG_RESULT([ok])
+   else
+       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+   fi
+fi
+
+AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv)
+AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
+AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
+AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
+
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+AC_SUBST(ALL_LINGUAS)
+
+# Set DATADIRNAME correctly if it is not set yet
+# (copied from glib-gettext.m4)
+if test -z "$DATADIRNAME"; then
+  AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+                 return _nl_msg_cat_cntr],
+    [DATADIRNAME=share],
+    [case $host in
+    *-*-solaris*)
+    dnl On Solaris, if bind_textdomain_codeset is in libc,
+    dnl GNU format message catalog is always supported,
+    dnl since both are added to the libc all together.
+    dnl Hence, we'd like to go with DATADIRNAME=share
+    dnl in this case.
+    AC_CHECK_FUNC(bind_textdomain_codeset,
+      [DATADIRNAME=share], [DATADIRNAME=lib])
+    ;;
+    *)
+    [DATADIRNAME=lib]
+    ;;
+    esac])
+fi
+AC_SUBST(DATADIRNAME)
+
+IT_PO_SUBDIR([po])
+
+dnl The following is very similar to
+dnl
+dnl	AC_CONFIG_FILES([intltool-extract intltool-merge intltool-update])
+dnl
+dnl with the following slight differences:
+dnl  - the *.in files are in ac_aux_dir,
+dnl  - if the file haven't changed upon reconfigure, it's not touched,
+dnl  - the evaluation of the third parameter enables a hack which computes
+dnl    the actual value of $libdir,
+dnl  - the user sees "executing intltool commands", instead of
+dnl    "creating intltool-extract" and such.
+dnl
+dnl Nothing crucial here, and we could use AC_CONFIG_FILES, if there were
+dnl a reason for it.
+
+AC_CONFIG_COMMANDS([intltool], [
+
+for file in intltool-extract intltool-merge intltool-update; do
+  sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \
+      -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \
+      -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \
+      -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \
+      -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \
+      -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \
+      -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \
+	< ${ac_aux_dir}/${file}.in > ${file}.out
+  if cmp -s ${file} ${file}.out 2>/dev/null; then
+    rm -f ${file}.out
+  else
+    mv -f ${file}.out ${file}
+  fi
+  chmod ugo+x ${file}
+  chmod u+w ${file}
+done
+
+],
+[INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}'
+prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir" 
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}'
+INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}'
+INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}'])
+
+])
+
+
+# IT_PO_SUBDIR(DIRNAME)
+# ---------------------
+# All po subdirs have to be declared with this macro; the subdir "po" is
+# declared by IT_PROG_INTLTOOL.
+#
+AC_DEFUN([IT_PO_SUBDIR],
+[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
+dnl
+dnl The following CONFIG_COMMANDS should be exetuted at the very end
+dnl of config.status.
+AC_CONFIG_COMMANDS_PRE([
+  AC_CONFIG_COMMANDS([$1/stamp-it], [
+    rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
+    >"$1/stamp-it.tmp"
+    [sed '/^#/d
+	 s/^[[].*] *//
+	 /^[ 	]*$/d
+	'"s|^|	$ac_top_srcdir/|" \
+      "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
+    ]
+    if test ! -f "$1/Makefile"; then
+      AC_MSG_ERROR([$1/Makefile is not ready.])
+    fi
+    mv "$1/Makefile" "$1/Makefile.tmp"
+    [sed '/^POTFILES =/,/[^\\]$/ {
+		/^POTFILES =/!d
+		r $1/POTFILES
+	  }
+	 ' "$1/Makefile.tmp" >"$1/Makefile"]
+    rm -f "$1/Makefile.tmp"
+    mv "$1/stamp-it.tmp" "$1/stamp-it"
+  ])
+])dnl
+])
+
+
+# deprecated macros
+AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
+# A hint is needed for aclocal from Automake <= 1.9.4:
+# AC_DEFUN([AC_PROG_INTLTOOL], ...)
+
+
 # pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
 # 
 # Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
@@ -6940,753 +7657,691 @@
 fi[]dnl
 ])# PKG_CHECK_MODULES
 
-# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
 #
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION so it can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.9.6])])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
 #
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
 #
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper at cygnus.com>, 1995, 1996
 #
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
+# Modified to never use included libintl. 
+# Owen Taylor <otaylor at redhat.com>, 12/15/1998
 #
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
+# Major rework to remove unused code
+# Owen Taylor <otaylor at redhat.com>, 12/11/2002
 #
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
+# Added better handling of ALL_LINGUAS from GNU gettext version 
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
 #
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Modified to require ngettext
+# Matthias Clasen <mclasen at redhat.com> 08/06/2004
 #
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
 
-# serial 7
+dnl
+dnl We go to great lengths to make sure that aclocal won't 
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
 
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])
-AC_SUBST([$1_FALSE])
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+  [AC_CHECK_HEADERS([locale.h])
+    if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+    if test $am_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES, 1,
+        [Define if your <locale.h> file defines LC_MESSAGES.])
+    fi
+  fi])
 
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    case $depmode in
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  /*)
+  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in ifelse([$5], , $PATH, [$5]); do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if [$3]; then
+	ac_cv_path_$1="$ac_dir/$ac_word"
 	break
       fi
-      ;;
-    none) break ;;
-    esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
-    if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
     fi
   done
-
-  cd ..
-  rm -rf conftest.dir
+  IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+  ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
 else
-  am_cv_$1_dependencies_compiler_type=none
+  AC_MSG_RESULT(no)
 fi
+AC_SUBST($1)dnl
 ])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
 
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+  dnl NLS is obligatory
+  [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+    USE_NLS=yes
+    AC_SUBST(USE_NLS)
 
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
+    gt_cv_have_gettext=no
 
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
 
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])
-])
+    AC_CHECK_HEADER(libintl.h,
+     [gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
 
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
+      #
+      # First check in libc
+      #
+      AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+        [AC_TRY_LINK([
+#include <libintl.h>
+],
+         [return !ngettext ("","", 1)],
+	  gt_cv_func_ngettext_libc=yes,
+          gt_cv_func_ngettext_libc=no)
+        ])
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+	      AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+        	[AC_TRY_LINK([
+#include <libintl.h>
+],
+	          [return !dgettext ("","")],
+		  gt_cv_func_dgettext_libc=yes,
+	          gt_cv_func_dgettext_libc=no)
+        	])
+      fi
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        AC_CHECK_FUNCS(bind_textdomain_codeset)
+      fi
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+	 || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+        
+        AC_CHECK_LIB(intl, bindtextdomain,
+	    [AC_CHECK_LIB(intl, ngettext,
+		    [AC_CHECK_LIB(intl, dgettext,
+			          gt_cv_func_dgettext_libintl=yes)])])
 
-#serial 3
+	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+	  AC_MSG_CHECKING([if -liconv is needed to use gettext])
+	  AC_MSG_RESULT([])
+  	  AC_CHECK_LIB(intl, ngettext,
+          	[AC_CHECK_LIB(intl, dcgettext,
+		       [gt_cv_func_dgettext_libintl=yes
+			libintl_extra_libs=-liconv],
+			:,-liconv)],
+		:,-liconv)
+        fi
 
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # So let's grep whole file.
-  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
-    dirpart=`AS_DIRNAME("$mf")`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-  # simplest approach to changing $(DEPDIR) to its actual value in the
-  # expansion.
-  for file in `sed -n "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-    # Make sure the directory exists.
-    test -f "$dirpart/$file" && continue
-    fdir=`AS_DIRNAME(["$file"])`
-    AS_MKDIR_P([$dirpart/$fdir])
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
-  done
-done
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+          AC_CHECK_FUNCS(bind_textdomain_codeset)
+          LIBS="$glib_save_LIBS"
 
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
+          fi
+        fi
+      fi
 
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+  
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+  
+      if test "$gt_cv_have_gettext" = "yes"; then
+	AC_DEFINE(HAVE_GETTEXT,1,
+	  [Define if the GNU gettext() function is already present or preinstalled.])
+	GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+	  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+	if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+	  AC_CHECK_FUNCS(dcgettext)
+	  MSGFMT_OPTS=
+	  AC_MSG_CHECKING([if msgfmt accepts -c])
+	  GLIB_RUN_PROG([msgfmt -c -o /dev/null],[
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo at bar.xx>\n"
+"Language-Team: C <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+	  AC_SUBST(MSGFMT_OPTS)
+	  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+	  GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+	    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+	  AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+			 return _nl_msg_cat_cntr],
+	    [CATOBJEXT=.gmo 
+             DATADIRNAME=share],
+	    [case $host in
+	    *-*-solaris*)
+	    dnl On Solaris, if bind_textdomain_codeset is in libc,
+	    dnl GNU format message catalog is always supported,
+            dnl since both are added to the libc all together.
+	    dnl Hence, we'd like to go with DATADIRNAME=share and
+	    dnl and CATOBJEXT=.gmo in this case.
+            AC_CHECK_FUNC(bind_textdomain_codeset,
+	      [CATOBJEXT=.gmo 
+               DATADIRNAME=share],
+	      [CATOBJEXT=.mo
+               DATADIRNAME=lib])
+	    ;;
+	    *)
+	    CATOBJEXT=.mo
+            DATADIRNAME=lib
+	    ;;
+	    esac])
+          LIBS="$glib_save_LIBS"
+	  INSTOBJEXT=.mo
+	else
+	  gt_cv_have_gettext=no
+	fi
+      fi
+    ])
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+    if test "$gt_cv_have_gettext" = "yes" ; then
+      AC_DEFINE(ENABLE_NLS, 1,
+        [always defined to indicate that i18n is enabled])
+    fi
 
-# serial 8
+    dnl Test whether we really found GNU xgettext.
+    if test "$XGETTEXT" != ":"; then
+      dnl If it is not GNU xgettext we define it as : so that the
+      dnl Makefiles still can work.
+      if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+        : ;
+      else
+        AC_MSG_RESULT(
+	  [found xgettext program is not GNU xgettext; ignore it])
+        XGETTEXT=":"
+      fi
+    fi
 
-# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+    # We need to process the po/ directory.
+    POSUB=po
 
-# Do all the work for Automake.                             -*- Autoconf -*-
+    AC_OUTPUT_COMMANDS(
+      [case "$CONFIG_FILES" in *po/Makefile.in*)
+        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+      esac])
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+    dnl These rules are solely for the distribution goal.  While doing this
+    dnl we only have to keep exactly one list of the available catalogs
+    dnl in configure.in.
+    for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
 
-# serial 12
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(CATALOGS)
+    AC_SUBST(CATOBJEXT)
+    AC_SUBST(DATADIRNAME)
+    AC_SUBST(GMOFILES)
+    AC_SUBST(INSTOBJEXT)
+    AC_SUBST(INTLLIBS)
+    AC_SUBST(PO_IN_DATADIR_TRUE)
+    AC_SUBST(PO_IN_DATADIR_FALSE)
+    AC_SUBST(POFILES)
+    AC_SUBST(POSUB)
+  ])
 
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation 
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by 
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+  [AC_REQUIRE([AC_PROG_CC])dnl
+   AC_REQUIRE([AC_HEADER_STDC])dnl
+   
+   GLIB_LC_MESSAGES
+   GLIB_WITH_NLS
 
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.58])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
-   test -f $srcdir/config.status; then
-  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-fi
+   if test "$gt_cv_have_gettext" = "yes"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       AC_MSG_CHECKING(for catalogs to be installed)
+       NEW_LINGUAS=
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+ 	   # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
+       done
+       LINGUAS=$NEW_LINGUAS
+       AC_MSG_RESULT($LINGUAS)
+     fi
 
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
+     dnl Construct list of names of catalog files to be constructed.
+     if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
 
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+   dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+   dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+   dnl Try to locate is.
+   MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+   AC_SUBST(MKINSTALLDIRS)
 
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+   dnl Generate list of files to be processed by xgettext which will
+   dnl be included in po/Makefile.
+   test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   rm -f po/POTFILES
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+	< $srcdir/po/POTFILES.in > po/POTFILES
+  ])
 
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-	      		     [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-                  [_AM_DEPENDENCIES(CC)],
-                  [define([AC_PROG_CC],
-                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                  [_AM_DEPENDENCIES(CXX)],
-                  [define([AC_PROG_CXX],
-                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+glib_save_datarootdir="$datarootdir"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+datarootdir=`eval echo "${datarootdir}"`
+if test "x$CATOBJEXT" = "x.mo" ; then
+  localedir=`eval echo "${libdir}/locale"`
+else
+  localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+datarootdir="$glib_save_datarootdir"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+  [Define the location where the catalogs will be installed])
 ])
-])
 
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_in,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
 
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
+# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL])
+# 
+# Create a temporary file with TEST-FILE as its contents and pass the
+# file name to PROGRAM.  Perform ACTION-IF-PASS if PROGRAM exits with
+# 0 and perform ACTION-IF-FAIL for any other exit status.
+AC_DEFUN([GLIB_RUN_PROG],
+[cat >conftest.foo <<_ACEOF
+$2
+_ACEOF
+if AC_RUN_LOG([$1 conftest.foo]); then
+  m4_ifval([$3], [$3], [:])
+m4_ifvaln([$4], [else $4])dnl
+echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD
+sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD
+fi])
 
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $1 | $1:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+dnl -*- mode: autoconf -*-
 
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-AC_SUBST(install_sh)])
+# serial 1
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+dnl Usage:
+dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+  AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+  AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+  dnl for overriding the documentation installation directory
+  AC_ARG_WITH(html-dir,
+    AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+    [with_html_dir='${datadir}/gtk-doc/html'])
+  HTML_DIR="$with_html_dir"
+  AC_SUBST(HTML_DIR)
 
-# serial 2
+  dnl enable/disable documentation building
+  AC_ARG_ENABLE(gtk-doc,
+    AC_HELP_STRING([--enable-gtk-doc],
+                   [use gtk-doc to build documentation [default=no]]),,
+    enable_gtk_doc=no)
 
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
+  have_gtk_doc=no
+  if test x$enable_gtk_doc = xyes; then
+    if test -z "$PKG_CONFIG"; then
+      AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+    fi
+    if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+      have_gtk_doc=yes
+    fi
 
-# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
-# From Jim Meyering
+  dnl do we want to do a version check?
+ifelse([$1],[],,
+    [gtk_doc_min_version=$1
+    if test "$have_gtk_doc" = yes; then
+      AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+      if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+        AC_MSG_RESULT(yes)
+      else
+        AC_MSG_RESULT(no)
+        have_gtk_doc=no
+      fi
+    fi
+])
+    if test "$have_gtk_doc" != yes; then
+      enable_gtk_doc=no
+    fi
+  fi
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+  AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+  AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
 
-# serial 4
+dnl copied from pygtk
+dnl
+dnl a macro to check for ability to create python extensions
+dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for python development headers)
+dnl deduce PYTHON_INCLUDES
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
 
-AC_DEFUN([AM_MAINTAINER_MODE],
-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
-  dnl maintainer-mode is disabled by default
-  AC_ARG_ENABLE(maintainer-mode,
-[  --enable-maintainer-mode  enable make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer],
-      USE_MAINTAINER_MODE=$enableval,
-      USE_MAINTAINER_MODE=no)
-  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
-  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
-  MAINT=$MAINTAINER_MODE_TRUE
-  AC_SUBST(MAINT)dnl
-]
-)
-
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 3
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo done
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
+dnl copied and modified from gnome-python
+dnl
+dnl AM_CHECK_PYMOD(MODNAME [,VERSION, VERSION_MATCHER [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl Check if a module of a particular version is visible to python.
+AC_DEFUN([AM_CHECK_PYMOD],
+[AC_REQUIRE([AM_PATH_PYTHON])
+py_mod_var=`echo $1`
+AC_MSG_CHECKING(for python module $1 ifelse([$2],[],,[>= $2]))
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+try:
+        import $1
+except ImportError:
+        sys.exit(1)
+except:
+        sys.exit(0)
+sys.exit(0)"], [prog="
+import sys, string, $1
+curverstr = $3
+# use method from AM_PYTHON_CHECK_VERSION
+minver = map(int, string.split('$2', '.'))
+length = len[(minver)]
+minver += [[0, 0, 0]]
+minverhex = 0
+for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
+curver = map(int, string.split(curverstr, '.')[[:length]])
+curver += [[0, 0, 0]]
+curverhex = 0
+for i in xrange(0, 4): curverhex = (curverhex << 8) + curver[[i]]
+if (curverhex >= minverhex):
+        sys.exit(0)
+else:
+        sys.exit(1)
+sys.exit(0)"])
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+  then
+    eval "py_cv_mod_$py_mod_var=yes"
+  else
+    eval "py_cv_mod_$py_mod_var=no"
+  fi
+])
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+  AC_MSG_RESULT(yes)
+  ifelse([$4], [],, [$4
+])dnl
+else
+  AC_MSG_RESULT(no)
+  ifelse([$5], [],, [$5
+])dnl
 fi
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
 ])
 
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+dnl check for python
+AC_DEFUN([LIBGPOD_CHECK_PYTHON],
+[
+    dnl aclocal-1.7 is missing this when version is used in AM_PATH_PYTHON, fudge it
+    am_display_PYTHON=python
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+    AC_ARG_WITH(python,
+        AC_HELP_STRING([--with-python=PATH],
+            [build python bindings [[default=yes]]]),
+        [with_python=$withval],[with_python=yes])
 
-# serial 4
+    AC_MSG_CHECKING(whether to build python bindings)
+    if test "X$with_python" != Xno; then
+        if test "X$with_python" != Xyes; then
+            PYTHON=$with_python
+        fi
+        with_python=yes
+    fi
+    AC_MSG_RESULT($with_python)
 
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
+    if test "X$with_python" == Xyes; then
+        if test -z "$PYTHON"; then
+            AC_PATH_PROG(PYTHON, python)
+        fi
+    
+        if test -n "$PYTHON"; then
+            AM_PATH_PYTHON($PYTHON_MIN_VERSION)
+            AM_CHECK_PYTHON_HEADERS(with_python="yes",with_python="no")
+    
+            if test "X$with_python" == Xyes; then
+                dnl test for python ldflags
+                dnl copied from the Redland RDF bindings, http://librdf.org/
+                if test `uname` = Darwin; then
+                    PYTHON_LDFLAGS="-Wl,-F. -Wl,-F. -bundle"
+                    if $PYTHON -c 'import sys, string; sys.exit(string.find(sys.prefix,"Framework")+1)'; then
+                        :
+                    else
+                        PYTHON_LDFLAGS="$PYTHON_LDFLAGS -framework Python"
+                    fi
+                else
+                    PYTHON_LDFLAGS="-shared"
+                fi
+                AC_SUBST(PYTHON_LDFLAGS)
 
+                dnl check for mutagen module >= $PYTHON_MUTAGEN_MIN_VERSION
+                AM_CHECK_PYMOD(mutagen,$PYTHON_MUTAGEN_MIN_VERSION,mutagen.version_string,,with_python=no)
 
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
+                dnl check for swig
+                if test "X$with_python" == Xyes; then
+                    AC_PROG_SWIG($SWIG_MIN_VERSION)
+                    with_python="$has_swig"
+                fi
+            fi
+        else
+            AC_MSG_WARN(python not found.  try --with-python=/path/to/python)
+            with_python="no"
+        fi
+    fi
+    AM_CONDITIONAL(HAVE_PYTHON, test x$with_python = xyes)
+])dnl
 
-# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
 
-# AM_PROG_MKDIR_P
-# ---------------
-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-#
-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
-# created by `make install' are always world readable, even if the
-# installer happens to have an overly restrictive umask (e.g. 077).
-# This was a mistake.  There are at least two reasons why we must not
-# use `-m 0755':
-#   - it causes special bits like SGID to be ignored,
-#   - it may be too restrictive (some setups expect 775 directories).
-#
-# Do not use -m 0755 and let people choose whatever they expect by
-# setting umask.
-#
-# We cannot accept any implementation of `mkdir' that recognizes `-p'.
-# Some implementations (such as Solaris 8's) are not thread-safe: if a
-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
-# concurrently, both version can detect that a/ is missing, but only
-# one can create it and the other will error out.  Consequently we
-# restrict ourselves to GNU make (using the --version option ensures
-# this.)
-AC_DEFUN([AM_PROG_MKDIR_P],
-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # We used to keeping the `.' as first argument, in order to
-  # allow $(mkdir_p) to be used without argument.  As in
-  #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.  However this is wrong
-  # for two reasons:
-  #  1. if the package is installed by a user who cannot write `.'
-  #     make install will fail,
-  #  2. the above comment should most certainly read
-  #     $(mkdir_p) $(DESTDIR)$(somedir)
-  #     so it does not work when $(somedir) is undefined and
-  #     $(DESTDIR) is not.
-  #  To support the latter case, we have to write
-  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
-  #  so the `.' trick is pointless.
-  mkdir_p='mkdir -p --'
-else
-  # On NextStep and OpenStep, the `mkdir' command does not
-  # recognize any option.  It will interpret all options as
-  # directories to create, and then abort because `.' already
-  # exists.
-  for d in ./-p ./--version;
-  do
-    test -d $d && rmdir $d
-  done
-  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-  if test -f "$ac_aux_dir/mkinstalldirs"; then
-    mkdir_p='$(mkinstalldirs)'
-  else
-    mkdir_p='$(install_sh) -d'
-  fi
-fi
-AC_SUBST([mkdir_p])])
 
-# Helper functions for option handling.                     -*- Autoconf -*-
+# Copyright 1999, 2000, 2001, 2002, 2003  Free Software Foundation, Inc.
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
 
-# serial 3
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
 
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+# AM_PATH_PYTHON([MINIMUM-VERSION])
 
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# ---------------------------------------------------------------------------
 # Adds support for distributing Python modules and packages.  To
 # install modules, copy them to $(pythondir), using the python_PYTHON
 # automake variable.  To install a package with the same name as the
 # automake package, install to $(pkgpythondir), or use the
 # pkgpython_PYTHON automake variable.
-#
+
 # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
 # locations to install python extension modules (shared libraries).
 # Another macro is required to find the appropriate flags to compile
 # extension modules.
-#
+
 # If your package is configured with a different prefix to python,
 # users will have to add the install directory to the PYTHONPATH
 # environment variable, or create a .pth file (see the python
 # documentation for details).
-#
+
 # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
 # cause an error if the version of python installed on the system
 # doesn't meet the requirement.  MINIMUM-VERSION should consist of
 # numbers and dots only.
+
 AC_DEFUN([AM_PATH_PYTHON],
  [
   dnl Find a Python interpreter.  Python versions prior to 1.5 are not
   dnl supported because the default installation locations changed from
   dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages
   dnl in 1.5.
-  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-                    [python python2 python2.5 python2.4 python2.3 python2.2 dnl
-python2.1 python2.0 python1.6 python1.5])
+  m4_define([_AM_PYTHON_INTERPRETER_LIST],
+	    [python python2 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5])
 
   m4_if([$1],[],[
     dnl No version check is needed.
     # Find any Python interpreter.
-    if test -z "$PYTHON"; then
-      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
-    fi
+    AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST)
     am_display_PYTHON=python
   ], [
     dnl A version check is needed.
@@ -7696,31 +8351,23 @@
       AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
 			      [AC_MSG_RESULT(yes)],
 			      [AC_MSG_ERROR(too old)])
-      am_display_PYTHON=$PYTHON
     else
       # Otherwise, try each interpreter until we find one that satisfies
       # VERSION.
       AC_CACHE_CHECK([for a Python interpreter with version >= $1],
 	[am_cv_pathless_PYTHON],[
-	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
-	done])
+	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST : ; do
+          if test "$am_cv_pathless_PYTHON" = : ; then
+            AC_MSG_ERROR([no suitable Python interpreter found])
+	  fi
+          AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+        done])
       # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
-      fi
+      AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
       am_display_PYTHON=$am_cv_pathless_PYTHON
     fi
   ])
 
-  if test "$PYTHON" = :; then
-  dnl Run any user-specified action, or abort.
-    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
-  else
-
   dnl Query Python for its version number.  Getting [:3] seems to be
   dnl the best way to do this; it's what "site.py" does in the standard
   dnl library.
@@ -7780,11 +8427,6 @@
   dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
 
   AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-
-  dnl Run any user-specified action.
-  $2
-  fi
-
 ])
 
 
@@ -7806,12 +8448,23 @@
 sys.exit(sys.hexversion < minverhex)"
   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Copyright 2001 Free Software Foundation, Inc.             -*- Autoconf -*-
 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
 # AM_RUN_LOG(COMMAND)
 # -------------------
 # Run COMMAND, save the exit status in ac_status, and log it.
@@ -7823,183 +8476,160 @@
    echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    (exit $ac_status); }])
 
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+dnl @synopsis AC_PROG_SWIG([major.minor.micro])
+dnl
+dnl This macro searches for a SWIG installation on your system. If
+dnl found you should call SWIG via $(SWIG). You can use the optional
+dnl first argument to check if the version of the available SWIG is
+dnl greater than or equal to the value of the argument. It should have
+dnl the format: N[.N[.N]] (N is a number between 0 and 999. Only the
+dnl first N is mandatory.)
+dnl
+dnl If the version argument is given (e.g. 1.3.17), AC_PROG_SWIG checks
+dnl that the swig package is this version number or higher.
+dnl
+dnl In configure.in, use as:
+dnl
+dnl             AC_PROG_SWIG(1.3.17)
+dnl             SWIG_ENABLE_CXX
+dnl             SWIG_MULTI_MODULE_SUPPORT
+dnl             SWIG_PYTHON
+dnl
+dnl @category InstalledPackages
+dnl @author Sebastian Huber <sebastian-huber at web.de>
+dnl @author Alan W. Irwin <irwin at beluga.phys.uvic.ca>
+dnl @author Rafael Laboissiere <rafael at laboissiere.net>
+dnl @author Andrew Collier <abcollier at yahoo.com>
+dnl @version 2004-09-20
+dnl @license GPLWithACException
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+AC_DEFUN([AC_PROG_SWIG],[
+        AC_PATH_PROG([SWIG],[swig])
+        if test -z "$SWIG" ; then
+                AC_MSG_WARN([cannot find 'swig' program. You should look at http://www.swig.org])
+                SWIG='echo "Error: SWIG is not installed. You should look at http://www.swig.org" ; false'
+        elif test -n "$1" ; then
+                AC_MSG_CHECKING([for SWIG version])
+                [swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`]
+                AC_MSG_RESULT([$swig_version])
+                if test -n "$swig_version" ; then
+                        # Calculate the required version number components
+                        [required=$1]
+                        [required_major=`echo $required | sed 's/[^0-9].*//'`]
+                        if test -z "$required_major" ; then
+                                [required_major=0]
+                        fi
+                        [required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
+                        [required_minor=`echo $required | sed 's/[^0-9].*//'`]
+                        if test -z "$required_minor" ; then
+                                [required_minor=0]
+                        fi
+                        [required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
+                        [required_patch=`echo $required | sed 's/[^0-9].*//'`]
+                        if test -z "$required_patch" ; then
+                                [required_patch=0]
+                        fi
+                        # Calculate the available version number components
+                        [available=$swig_version]
+                        [available_major=`echo $available | sed 's/[^0-9].*//'`]
+                        if test -z "$available_major" ; then
+                                [available_major=0]
+                        fi
+                        [available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
+                        [available_minor=`echo $available | sed 's/[^0-9].*//'`]
+                        if test -z "$available_minor" ; then
+                                [available_minor=0]
+                        fi
+                        [available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
+                        [available_patch=`echo $available | sed 's/[^0-9].*//'`]
+                        if test -z "$available_patch" ; then
+                                [available_patch=0]
+                        fi
+                        if test $available_major -ne $required_major \
+                                -o $available_minor -ne $required_minor \
+                                -o $available_patch -lt $required_patch ; then
+                                AC_MSG_WARN([SWIG version >= $1 is required.  You have $swig_version.  You should look at http://www.swig.org])
+                                SWIG='echo "Error: SWIG version >= $1 is required.  You have '"$swig_version"'.  You should look at http://www.swig.org" ; false'
+                                has_swig="no"
+                        else
+                                SWIG_LIB=`$SWIG -swiglib`
+                                has_swig="yes"
+                        fi
+                else
+                        AC_MSG_WARN([cannot determine SWIG version])
+                        SWIG='echo "Error: Cannot determine SWIG version.  You should look at http://www.swig.org" ; false'
+                        has_swig="no"
+                fi
+        fi
+        AC_SUBST([SWIG_LIB])
+])
 
-# serial 4
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# SWIG_ENABLE_CXX()
 #
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Enable SWIG C++ support.  This affects all invocations of $(SWIG).
+AC_DEFUN([SWIG_ENABLE_CXX],[
+        AC_REQUIRE([AC_PROG_SWIG])
+        AC_REQUIRE([AC_PROG_CXX])
+        SWIG="$SWIG -c++"
+])
 
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+# SWIG_MULTI_MODULE_SUPPORT()
 #
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Enable support for multiple modules.  This effects all invocations
+# of $(SWIG).  You have to link all generated modules against the
+# appropriate SWIG runtime library.  If you want to build Python
+# modules for example, use the SWIG_PYTHON() macro and link the
+# modules against $(SWIG_PYTHON_LIBS).
+#
+AC_DEFUN([SWIG_MULTI_MODULE_SUPPORT],[
+        AC_REQUIRE([AC_PROG_SWIG])
+        SWIG="$SWIG -noruntime"
+])
 
-# serial 2
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# SWIG_PYTHON([use-shadow-classes = {no, yes}])
 #
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
+# Checks for Python and provides the $(SWIG_PYTHON_CPPFLAGS),
+# and $(SWIG_PYTHON_OPT) output variables.
 #
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
+# $(SWIG_PYTHON_OPT) contains all necessary SWIG options to generate
+# code for Python.  Shadow classes are enabled unless the value of the
+# optional first argument is exactly 'no'.  If you need multi module
+# support (provided by the SWIG_MULTI_MODULE_SUPPORT() macro) use
+# $(SWIG_PYTHON_LIBS) to link against the appropriate library.  It
+# contains the SWIG Python runtime library that is needed by the type
+# check system for example.
+AC_DEFUN([SWIG_PYTHON],[
+        AC_REQUIRE([AC_PROG_SWIG])
+        AC_REQUIRE([AC_PYTHON_DEVEL])
+        test "x$1" != "xno" || swig_shadow=" -noproxy"
+        AC_SUBST([SWIG_PYTHON_OPT],[-python$swig_shadow])
+        AC_SUBST([SWIG_PYTHON_CPPFLAGS],[$PYTHON_CPPFLAGS])
+])
 
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
 
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-  rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
+dnl @synopsis AC_LIB_WAD
+dnl
+dnl This macro searches for installed WAD library.
+dnl
+AC_DEFUN([AC_LIB_WAD],
+[
+        AC_REQUIRE([AC_PYTHON_DEVEL])
+        AC_ARG_ENABLE(wad,
+        AC_HELP_STRING([--enable-wad], [enable wad module]),
+        [
+                case "${enableval}" in
+                        no)     ;;
+                        *)      if test "x${enableval}" = xyes;
+                                then
+                                        check_wad="yes"
+                                fi ;;
+                esac
+        ], [])
 
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
+        if test -n "$check_wad";
+        then
+                AC_CHECK_LIB(wadpy, _init, [WADPY=-lwadpy], [], $PYTHON_LDFLAGS $PYTHON_EXTRA_LIBS)
+                AC_SUBST(WADPY)
+        fi
+])
 
-m4_include([m4/gtk-doc.m4])
-m4_include([m4/intltool.m4])
-m4_include([m4/python.m4])
-m4_include([m4/swig.m4])

Modified: libgpod/branches/upstream/current/bindings/Makefile.am
===================================================================
--- libgpod/branches/upstream/current/bindings/Makefile.am	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/Makefile.am	2007-06-27 21:44:37 UTC (rev 198)
@@ -1 +1,3 @@
+if HAVE_PYTHON
 SUBDIRS=python
+endif

Modified: libgpod/branches/upstream/current/bindings/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/bindings/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -13,6 +13,7 @@
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -20,6 +21,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = ..
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -33,31 +35,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
-subdir = bindings
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -157,6 +135,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -178,6 +157,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -198,8 +178,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -225,7 +203,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -239,40 +216,30 @@
 sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
-SUBDIRS = python
+ at HAVE_PYTHON_TRUE@SUBDIRS = python
+subdir = bindings
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+DIST_SUBDIRS = python
 all: all-recursive
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  bindings/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  bindings/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
 
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -290,13 +257,7 @@
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@set fnord $$MAKEFLAGS; amf=$$2; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -308,7 +269,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -316,13 +277,7 @@
 
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@set fnord $$MAKEFLAGS; amf=$$2; \
 	dot_seen=no; \
 	case "$@" in \
 	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -343,7 +298,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -354,6 +309,14 @@
 	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -362,22 +325,19 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	mkid -fID $$unique
-tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
-	  empty_fix=.; \
 	else \
 	  include_option=--include; \
-	  empty_fix=; \
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
+	    test -f $$subdir/TAGS && \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -387,11 +347,10 @@
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -414,7 +373,11 @@
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -427,7 +390,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -444,15 +407,13 @@
 	done
 	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -462,6 +423,7 @@
 all-am: Makefile
 installdirs: installdirs-recursive
 installdirs-am:
+
 install: install-recursive
 install-exec: install-exec-recursive
 install-data: install-data-recursive
@@ -481,7 +443,7 @@
 clean-generic:
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -499,8 +461,6 @@
 
 dvi-am:
 
-html: html-recursive
-
 info: info-recursive
 
 info-am:
@@ -535,18 +495,22 @@
 
 uninstall-info: uninstall-info-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-generic clean-libtool clean-recursive ctags \
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-recursive ctags \
 	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-exec install-exec-am install-info \
-	install-info-am install-man install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic maintainer-clean-recursive \
-	mostlyclean mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am uninstall-info-am
+	distclean-recursive distclean-tags distdir dvi dvi-am \
+	dvi-recursive info info-am info-recursive install install-am \
+	install-data install-data-am install-data-recursive \
+	install-exec install-exec-am install-exec-recursive \
+	install-info install-info-am install-info-recursive install-man \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+	pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-recursive
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.

Modified: libgpod/branches/upstream/current/bindings/python/Makefile.am
===================================================================
--- libgpod/branches/upstream/current/bindings/python/Makefile.am	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/Makefile.am	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,4 +1,4 @@
-SUBDIRS = examples
+SUBDIRS = examples tests
 
 EXTRA_DIST =                \
         README.in           \
@@ -59,5 +59,5 @@
 	$(SWIG) -python -o $@ $<
 
 test:
-	cd tests && python tests.py
+	$(MAKE) -C tests test
 endif

Modified: libgpod/branches/upstream/current/bindings/python/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/bindings/python/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -21,6 +21,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = ../..
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -34,64 +35,8 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
 @HAVE_PYTHON_TRUE at am__append_1 = -fno-strict-aliasing
-subdir = bindings/python
-DIST_COMMON = README $(am__gpod_PYTHON_DIST) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/gpod.i.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = gpod.i
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(gpoddir)" "$(DESTDIR)$(gpoddir)" \
-	"$(DESTDIR)$(gpoddir)"
-gpodLTLIBRARIES_INSTALL = $(INSTALL)
-LTLIBRARIES = $(gpod_LTLIBRARIES)
-am__DEPENDENCIES_1 =
- at HAVE_PYTHON_TRUE@_gpod_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at HAVE_PYTHON_TRUE@	$(top_builddir)/src/libgpod.la
- at HAVE_PYTHON_TRUE@nodist__gpod_la_OBJECTS = _gpod_la-gpod_wrap.lo
-_gpod_la_OBJECTS = $(nodist__gpod_la_OBJECTS)
- at HAVE_PYTHON_TRUE@am__gpod_la_rpath = -rpath $(gpoddir)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(nodist__gpod_la_SOURCES)
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
-am__gpod_PYTHON_DIST = __init__.py gtkpod.py ipod.py
-gpodPYTHON_INSTALL = $(INSTALL_DATA)
-nodist_gpodPYTHON_INSTALL = $(INSTALL_DATA)
-py_compile = $(top_srcdir)/py-compile
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -191,6 +136,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -212,6 +158,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -232,8 +179,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -259,7 +204,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -273,7 +217,8 @@
 sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
-SUBDIRS = examples
+SUBDIRS = examples tests
+
 EXTRA_DIST = \
         README.in           \
         __init__.py         \
@@ -283,6 +228,7 @@
         gtkpod.py           \
         ipod.py
 
+
 CLEANFILES = \
         *.pyc               \
         *.pyo               \
@@ -291,13 +237,16 @@
         gpod_doc.i          \
         gpod_wrap.*
 
+
 DISTCLEANFILES = \
         README              \
         gpod.i
 
+
 @HAVE_PYTHON_TRUE at BUILT_SOURCES = gpod_wrap.c
 @HAVE_PYTHON_TRUE at SWIG_INTERFACES = gpod.i gpod_doc.i
 @HAVE_PYTHON_TRUE at INCLUDES = -I$(top_srcdir)/src
+
 @HAVE_PYTHON_TRUE at gpoddir = $(pyexecdir)/gpod
 @HAVE_PYTHON_TRUE at gpod_PYTHON = __init__.py gtkpod.py ipod.py
 @HAVE_PYTHON_TRUE at nodist_gpod_PYTHON = gpod.py
@@ -306,74 +255,87 @@
 @HAVE_PYTHON_TRUE at _gpod_la_CPPFLAGS = $(PYTHON_INCLUDES) $(LIBGPOD_CFLAGS) $(INCLUDES)
 @HAVE_PYTHON_TRUE at _gpod_la_LDFLAGS = -module -avoid-version
 @HAVE_PYTHON_TRUE at _gpod_la_LIBADD = $(LIBGPOD_LIBS) $(top_builddir)/src/libgpod.la
+subdir = bindings/python
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = gpod.i
+LTLIBRARIES = $(gpod_LTLIBRARIES)
+
+ at HAVE_PYTHON_TRUE@_gpod_la_DEPENDENCIES = $(top_builddir)/src/libgpod.la
+ at HAVE_PYTHON_FALSE@_gpod_la_DEPENDENCIES =
+ at HAVE_PYTHON_TRUE@nodist__gpod_la_OBJECTS = _gpod_la-gpod_wrap.lo
+_gpod_la_OBJECTS = $(nodist__gpod_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/_gpod_la-gpod_wrap.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES =
+py_compile = $(top_srcdir)/py-compile
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = README $(gpod_PYTHON) $(srcdir)/Makefile.in Makefile.am \
+	gpod.i.in
+DIST_SUBDIRS = $(SUBDIRS)
+SOURCES = $(nodist__gpod_la_SOURCES)
+
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  bindings/python/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  bindings/python/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-gpod.i: $(top_builddir)/config.status $(srcdir)/gpod.i.in
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+gpod.i: $(top_builddir)/config.status gpod.i.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+gpodLTLIBRARIES_INSTALL = $(INSTALL)
 install-gpodLTLIBRARIES: $(gpod_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(gpoddir)" || $(mkdir_p) "$(DESTDIR)$(gpoddir)"
+	$(mkinstalldirs) $(DESTDIR)$(gpoddir)
 	@list='$(gpod_LTLIBRARIES)'; for p in $$list; do \
 	  if test -f $$p; then \
-	    f=$(am__strip_dir) \
-	    echo " $(LIBTOOL) --mode=install $(gpodLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(gpoddir)/$$f'"; \
-	    $(LIBTOOL) --mode=install $(gpodLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(gpoddir)/$$f"; \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(gpodLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(gpoddir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(gpodLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(gpoddir)/$$f; \
 	  else :; fi; \
 	done
 
 uninstall-gpodLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@set -x; list='$(gpod_LTLIBRARIES)'; for p in $$list; do \
-	  p=$(am__strip_dir) \
-	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(gpoddir)/$$p'"; \
-	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(gpoddir)/$$p"; \
+	@list='$(gpod_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(gpoddir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(gpoddir)/$$p; \
 	done
 
 clean-gpodLTLIBRARIES:
 	-test -z "$(gpod_LTLIBRARIES)" || rm -f $(gpod_LTLIBRARIES)
 	@list='$(gpod_LTLIBRARIES)'; for p in $$list; do \
 	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
+	  test "$$dir" = "$$p" && dir=.; \
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
 _gpod.la: $(_gpod_la_OBJECTS) $(_gpod_la_DEPENDENCIES) 
-	$(LINK) $(am__gpod_la_rpath) $(_gpod_la_LDFLAGS) $(_gpod_la_OBJECTS) $(_gpod_la_LIBADD) $(LIBS)
+	$(LINK) -rpath $(gpoddir) $(_gpod_la_LDFLAGS) $(_gpod_la_OBJECTS) $(_gpod_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
+	-rm -f *.$(OBJEXT) core *.core
 
 distclean-compile:
 	-rm -f *.tab.c
@@ -381,32 +343,70 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/_gpod_la-gpod_wrap.Plo at am__quote@
 
 .c.o:
- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
 
 .c.obj:
- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
 
 .c.lo:
- at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
 
+_gpod_la-gpod_wrap.o: gpod_wrap.c
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gpod_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT _gpod_la-gpod_wrap.o -MD -MP -MF "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o _gpod_la-gpod_wrap.o `test -f 'gpod_wrap.c' || echo '$(srcdir)/'`gpod_wrap.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo" "$(DEPDIR)/_gpod_la-gpod_wrap.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gpod_wrap.c' object='_gpod_la-gpod_wrap.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/_gpod_la-gpod_wrap.Po' tmpdepfile='$(DEPDIR)/_gpod_la-gpod_wrap.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gpod_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o _gpod_la-gpod_wrap.o `test -f 'gpod_wrap.c' || echo '$(srcdir)/'`gpod_wrap.c
+
+_gpod_la-gpod_wrap.obj: gpod_wrap.c
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gpod_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT _gpod_la-gpod_wrap.obj -MD -MP -MF "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o _gpod_la-gpod_wrap.obj `if test -f 'gpod_wrap.c'; then $(CYGPATH_W) 'gpod_wrap.c'; else $(CYGPATH_W) '$(srcdir)/gpod_wrap.c'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo" "$(DEPDIR)/_gpod_la-gpod_wrap.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gpod_wrap.c' object='_gpod_la-gpod_wrap.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/_gpod_la-gpod_wrap.Po' tmpdepfile='$(DEPDIR)/_gpod_la-gpod_wrap.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gpod_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o _gpod_la-gpod_wrap.obj `if test -f 'gpod_wrap.c'; then $(CYGPATH_W) 'gpod_wrap.c'; else $(CYGPATH_W) '$(srcdir)/gpod_wrap.c'; fi`
+
 _gpod_la-gpod_wrap.lo: gpod_wrap.c
- at am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gpod_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT _gpod_la-gpod_wrap.lo -MD -MP -MF "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo" -c -o _gpod_la-gpod_wrap.lo `test -f 'gpod_wrap.c' || echo '$(srcdir)/'`gpod_wrap.c; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo" "$(DEPDIR)/_gpod_la-gpod_wrap.Plo"; else rm -f "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gpod_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT _gpod_la-gpod_wrap.lo -MD -MP -MF "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o _gpod_la-gpod_wrap.lo `test -f 'gpod_wrap.c' || echo '$(srcdir)/'`gpod_wrap.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo" "$(DEPDIR)/_gpod_la-gpod_wrap.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/_gpod_la-gpod_wrap.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gpod_wrap.c' object='_gpod_la-gpod_wrap.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gpod_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o _gpod_la-gpod_wrap.lo `test -f 'gpod_wrap.c' || echo '$(srcdir)/'`gpod_wrap.c
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/_gpod_la-gpod_wrap.Plo' tmpdepfile='$(DEPDIR)/_gpod_la-gpod_wrap.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gpod_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o _gpod_la-gpod_wrap.lo `test -f 'gpod_wrap.c' || echo '$(srcdir)/'`gpod_wrap.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -417,61 +417,51 @@
 distclean-libtool:
 	-rm -f libtool
 uninstall-info-am:
+gpodPYTHON_INSTALL = $(INSTALL_DATA)
 install-gpodPYTHON: $(gpod_PYTHON)
 	@$(NORMAL_INSTALL)
-	test -z "$(gpoddir)" || $(mkdir_p) "$(DESTDIR)$(gpoddir)"
+	$(mkinstalldirs) $(DESTDIR)$(gpoddir)
 	@list='$(gpod_PYTHON)'; dlist=''; for p in $$list; do\
 	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
 	  if test -f $$b$$p; then \
-	    f=$(am__strip_dir) \
-	    dlist="$$dlist $$f"; \
-	    echo " $(gpodPYTHON_INSTALL) '$$b$$p' '$(DESTDIR)$(gpoddir)/$$f'"; \
-	    $(gpodPYTHON_INSTALL) "$$b$$p" "$(DESTDIR)$(gpoddir)/$$f"; \
+	    d=`echo "$$p" | sed -e 's,^.*/,,'`; \
+	    dlist="$$dlist $$d"; \
+	    echo " $(gpodPYTHON_INSTALL) $$b$$p $(DESTDIR)$(gpoddir)/$$d"; \
+	    $(gpodPYTHON_INSTALL) $$b$$p $(DESTDIR)$(gpoddir)/$$d; \
 	  else :; fi; \
 	done; \
-	if test -n "$$dlist"; then \
-	  if test -z "$(DESTDIR)"; then \
-	    PYTHON=$(PYTHON) $(py_compile) --basedir "$(gpoddir)" $$dlist; \
-	  else \
-	    PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(gpoddir)" $$dlist; \
-	  fi; \
-	else :; fi
+	PYTHON=$(PYTHON) $(py_compile) --basedir $(DESTDIR)$(gpoddir) $$dlist
 
 uninstall-gpodPYTHON:
 	@$(NORMAL_UNINSTALL)
-	@list='$(gpod_PYTHON)'; dlist=''; for p in $$list; do\
-	  f=$(am__strip_dir) \
-	  rm -f "$(DESTDIR)$(gpoddir)/$$f"; \
-	  rm -f "$(DESTDIR)$(gpoddir)/$${f}c"; \
-	  rm -f "$(DESTDIR)$(gpoddir)/$${f}o"; \
+	list='$(gpod_PYTHON)'; for p in $$list; do \
+	  d=`echo "$$p" | sed -e 's,^.*/,,'`; \
+	  rm -f $(DESTDIR)$(gpoddir)/$$d; \
+	  rm -f $(DESTDIR)$(gpoddir)/$${d}c; \
+	  rm -f $(DESTDIR)$(gpoddir)/$${d}o; \
 	done
+nodist_gpodPYTHON_INSTALL = $(INSTALL_DATA)
 install-nodist_gpodPYTHON: $(nodist_gpod_PYTHON)
 	@$(NORMAL_INSTALL)
-	test -z "$(gpoddir)" || $(mkdir_p) "$(DESTDIR)$(gpoddir)"
+	$(mkinstalldirs) $(DESTDIR)$(gpoddir)
 	@list='$(nodist_gpod_PYTHON)'; dlist=''; for p in $$list; do\
 	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
 	  if test -f $$b$$p; then \
-	    f=$(am__strip_dir) \
-	    dlist="$$dlist $$f"; \
-	    echo " $(nodist_gpodPYTHON_INSTALL) '$$b$$p' '$(DESTDIR)$(gpoddir)/$$f'"; \
-	    $(nodist_gpodPYTHON_INSTALL) "$$b$$p" "$(DESTDIR)$(gpoddir)/$$f"; \
+	    d=`echo "$$p" | sed -e 's,^.*/,,'`; \
+	    dlist="$$dlist $$d"; \
+	    echo " $(nodist_gpodPYTHON_INSTALL) $$b$$p $(DESTDIR)$(gpoddir)/$$d"; \
+	    $(nodist_gpodPYTHON_INSTALL) $$b$$p $(DESTDIR)$(gpoddir)/$$d; \
 	  else :; fi; \
 	done; \
-	if test -n "$$dlist"; then \
-	  if test -z "$(DESTDIR)"; then \
-	    PYTHON=$(PYTHON) $(py_compile) --basedir "$(gpoddir)" $$dlist; \
-	  else \
-	    PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(gpoddir)" $$dlist; \
-	  fi; \
-	else :; fi
+	PYTHON=$(PYTHON) $(py_compile) --basedir $(DESTDIR)$(gpoddir) $$dlist
 
 uninstall-nodist_gpodPYTHON:
 	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_gpod_PYTHON)'; dlist=''; for p in $$list; do\
-	  f=$(am__strip_dir) \
-	  rm -f "$(DESTDIR)$(gpoddir)/$$f"; \
-	  rm -f "$(DESTDIR)$(gpoddir)/$${f}c"; \
-	  rm -f "$(DESTDIR)$(gpoddir)/$${f}o"; \
+	list='$(nodist_gpod_PYTHON)'; for p in $$list; do \
+	  d=`echo "$$p" | sed -e 's,^.*/,,'`; \
+	  rm -f $(DESTDIR)$(gpoddir)/$$d; \
+	  rm -f $(DESTDIR)$(gpoddir)/$${d}c; \
+	  rm -f $(DESTDIR)$(gpoddir)/$${d}o; \
 	done
 
 # This directory's subdirectories are mostly independent; you can cd
@@ -481,13 +471,7 @@
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@set fnord $$MAKEFLAGS; amf=$$2; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -499,7 +483,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -507,13 +491,7 @@
 
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@set fnord $$MAKEFLAGS; amf=$$2; \
 	dot_seen=no; \
 	case "$@" in \
 	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -534,7 +512,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -545,6 +523,14 @@
 	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -553,22 +539,19 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	mkid -fID $$unique
-tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
-	  empty_fix=.; \
 	else \
 	  include_option=--include; \
-	  empty_fix=; \
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
+	    test -f $$subdir/TAGS && \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -578,11 +561,10 @@
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -605,7 +587,11 @@
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -618,7 +604,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -633,17 +619,15 @@
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -654,9 +638,8 @@
 all-am: Makefile $(LTLIBRARIES)
 installdirs: installdirs-recursive
 installdirs-am:
-	for dir in "$(DESTDIR)$(gpoddir)" "$(DESTDIR)$(gpoddir)" "$(DESTDIR)$(gpoddir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-	done
+	$(mkinstalldirs) $(DESTDIR)$(gpoddir) $(DESTDIR)$(gpoddir) $(DESTDIR)$(gpoddir)
+
 install: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) install-recursive
 install-exec: install-exec-recursive
@@ -678,7 +661,7 @@
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -700,8 +683,6 @@
 
 dvi-am:
 
-html: html-recursive
-
 info: info-recursive
 
 info-am:
@@ -740,22 +721,25 @@
 
 uninstall-info: uninstall-info-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-generic clean-gpodLTLIBRARIES clean-libtool \
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-gpodLTLIBRARIES clean-libtool \
 	clean-recursive ctags ctags-recursive distclean \
 	distclean-compile distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-exec install-exec-am \
+	distclean-recursive distclean-tags distdir dvi dvi-am \
+	dvi-recursive info info-am info-recursive install install-am \
+	install-data install-data-am install-data-recursive \
+	install-exec install-exec-am install-exec-recursive \
 	install-gpodLTLIBRARIES install-gpodPYTHON install-info \
-	install-info-am install-man install-nodist_gpodPYTHON \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
+	install-info-am install-info-recursive install-man \
+	install-nodist_gpodPYTHON install-recursive install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	installdirs-recursive maintainer-clean maintainer-clean-generic \
 	maintainer-clean-recursive mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
-	pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
-	uninstall-gpodLTLIBRARIES uninstall-gpodPYTHON \
-	uninstall-info-am uninstall-nodist_gpodPYTHON
+	pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+	tags-recursive uninstall uninstall-am uninstall-gpodLTLIBRARIES \
+	uninstall-gpodPYTHON uninstall-info-am uninstall-info-recursive \
+	uninstall-nodist_gpodPYTHON uninstall-recursive
 
 
 README: README.in gpod.i
@@ -779,7 +763,7 @@
 @HAVE_PYTHON_TRUE@	$(SWIG) -python -o $@ $<
 
 @HAVE_PYTHON_TRUE at test:
- at HAVE_PYTHON_TRUE@	cd tests && python tests.py
+ at HAVE_PYTHON_TRUE@	$(MAKE) -C tests test
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:

Modified: libgpod/branches/upstream/current/bindings/python/README
===================================================================
--- libgpod/branches/upstream/current/bindings/python/README	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/README	2007-06-27 21:44:37 UTC (rev 198)
@@ -38,7 +38,13 @@
 
 The current helper functions are:
 
+sw_get_artwork_thumbnails
 sw_get_list_len
+sw_get_photo
+sw_get_photoalbum
+sw_get_photoalbum_members
+sw_get_photoalbums
+sw_get_photos
 sw_get_playlist
 sw_get_playlists
 sw_get_playlist_tracks
@@ -46,6 +52,8 @@
 sw_get_track
 sw_get_tracks
 sw_get_track_userdata
+sw_ipod_device_to_dict
+sw_save_itdb_thumb
 sw_set_track_userdata
 
 Please see the example scripts for ideas on how to use these functions.

Modified: libgpod/branches/upstream/current/bindings/python/examples/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/bindings/python/examples/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/examples/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -13,6 +13,7 @@
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -20,6 +21,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = ../../..
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -33,22 +35,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
-subdir = bindings/python/examples
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -148,6 +135,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -169,6 +157,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -189,8 +178,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -216,7 +203,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -235,39 +221,22 @@
              play_with_ipod_api.py create_mp3_tags_from_itdb.py \
              play_with_smart_playlists.py
 
+subdir = bindings/python/examples
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  bindings/python/examples/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  bindings/python/examples/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
 
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -283,7 +252,11 @@
 ctags: CTAGS
 CTAGS:
 
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -296,7 +269,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -314,6 +287,7 @@
 check-am: all-am
 check: check-am
 all-am: Makefile
+
 installdirs:
 install: install-am
 install-exec: install-exec-am
@@ -334,7 +308,7 @@
 clean-generic:
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -351,8 +325,6 @@
 
 dvi-am:
 
-html: html-am
-
 info: info-am
 
 info-am:
@@ -387,10 +359,10 @@
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
 	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-exec install-exec-am \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
+	dvi-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-generic \
 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
 	uninstall-info-am

Modified: libgpod/branches/upstream/current/bindings/python/examples/add_song.py
===================================================================
--- libgpod/branches/upstream/current/bindings/python/examples/add_song.py	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/examples/add_song.py	2007-06-27 21:44:37 UTC (rev 198)
@@ -29,7 +29,6 @@
 import urlparse, urllib2
 import tempfile
 import shutil
-import eyeD3
 
 def download(path):
     print "Downloading %s" % path

Modified: libgpod/branches/upstream/current/bindings/python/examples/coverart_fetch.py
===================================================================
--- libgpod/branches/upstream/current/bindings/python/examples/coverart_fetch.py	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/examples/coverart_fetch.py	2007-06-27 21:44:37 UTC (rev 198)
@@ -20,7 +20,7 @@
 ##  License along with this code; if not, write to the Free Software
 ##  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-##  $Id: coverart_fetch.py,v 1.7 2006/04/08 08:23:14 nicholas Exp $
+##  $Id: coverart_fetch.py 1233 2006-04-08 08:23:14Z nicholas $
 
 import os, os.path
 import gpod

Modified: libgpod/branches/upstream/current/bindings/python/examples/create_mp3_tags_from_itdb.py
===================================================================
--- libgpod/branches/upstream/current/bindings/python/examples/create_mp3_tags_from_itdb.py	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/examples/create_mp3_tags_from_itdb.py	2007-06-27 21:44:37 UTC (rev 198)
@@ -29,7 +29,7 @@
 #
 
 import gpod
-import eyeD3
+import mutagen.mp3
 
 # please specify your iPod mountpoint here..
 IPOD_MOUNT = '/mnt/ipod/'
@@ -51,22 +51,23 @@
 
     filename = gpod.itdb_filename_on_ipod( track)
     try:
-        tag = eyeD3.Tag()
-        tag.link( filename)
-        if tag.link( filename) != True:
+        mp3 = mutagen.mp3.MP3(filename)
+        if not mp3.tags:
             print ''
             print '%s has no id3 tags' % ( filename )
             print 'iTDB says: AR = %s, TI = %s, AL = %s' % ( track.artist, track.title, track.album )
-            tag.setVersion( eyeD3.ID3_DEFAULT_VERSION)
-            tag.setArtist( track.artist)
-            tag.setAlbum( track.album)
-            tag.setTitle( track.title)
-            tag.addComment( 'tagged from itdb with libgpod')
-            tag.update()
-            counter_upd = counter_upd + 1
+            mp3.add_tags() # create header
+            mp3.tags.add(mutagen.id3.TPE1(3,track.artist))
+            mp3.tags.add(mutagen.id3.TALB(3,track.album))
+            mp3.tags.add(mutagen.id3.TIT2(3,track.title))
+            mp3.tags.add(mutagen.id3.TXXX(3,"Taggger","tagged from itdb with libgpod"))
+            mp3.save()
+            counter_upd += 1
             print 'wrote tags to: %s' % ( filename )
-    except:
-        print 'informative debug output: something went wrong.. :/'
+        else:
+            counter_left += 1            
+    except Exception, e:
+        print 'informative debug output: something went wrong.. : %s' % e
         counter_left = counter_left + 1
 
 print ''

Modified: libgpod/branches/upstream/current/bindings/python/examples/tag_genre_from_audioscrobber.py
===================================================================
--- libgpod/branches/upstream/current/bindings/python/examples/tag_genre_from_audioscrobber.py	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/examples/tag_genre_from_audioscrobber.py	2007-06-27 21:44:37 UTC (rev 198)
@@ -20,7 +20,7 @@
 ##  License along with this code; if not, write to the Free Software
 ##  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-##  $Id: tag_genre_from_audioscrobber.py,v 1.1 2006/04/07 14:51:40 nicholas Exp $
+##  $Id: tag_genre_from_audioscrobber.py 1228 2006-04-07 14:51:40Z nicholas $
 
 
 import os, os.path

Modified: libgpod/branches/upstream/current/bindings/python/examples/toy_around.py
===================================================================
--- libgpod/branches/upstream/current/bindings/python/examples/toy_around.py	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/examples/toy_around.py	2007-06-27 21:44:37 UTC (rev 198)
@@ -20,7 +20,7 @@
 ##  License along with this code; if not, write to the Free Software
 ##  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-##  $Id: toy_around.py,v 1.1 2006/04/07 14:51:40 nicholas Exp $
+##  $Id: toy_around.py 1228 2006-04-07 14:51:40Z nicholas $
 
 
 # this file is just a little example I use for testing, it doesn't

Modified: libgpod/branches/upstream/current/bindings/python/gpod.i.in
===================================================================
--- libgpod/branches/upstream/current/bindings/python/gpod.i.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/gpod.i.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,7 +1,7 @@
 /* File : gpod.i.in */
 
 /*
- Copyright (C) 2005 Nick Piper <nick-gtkpod at nickpiper co uk>
+ Copyright (C) 2007 Nick Piper <nick-gtkpod at nickpiper co uk>
  Part of the gtkpod project.
  
  URL: http://www.gtkpod.org/
@@ -21,7 +21,7 @@
  License along with this code; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
- $Id: gpod.i.in,v 1.3 2007/01/14 20:29:38 nicholas Exp $
+ $Id: gpod.i.in 1433 2007-05-13 17:30:27Z tmzullinger $
 
 Please send any fixes, improvements or suggestions to
 <nick-gtkpod at nickpiper co uk>.
@@ -46,7 +46,9 @@
 #include "db-itunes-parser.h" 
 #include "db-parse-context.h" 
 #include "itdb.h" 
+#include "itdb_device.h" 
 #include "itdb_private.h"
+#include <gdk-pixbuf/gdk-pixbuf.h>
 
 /* include prototypes for all functions so builds using
  * -Wmissing-prototypes don't fail. */
@@ -59,8 +61,17 @@
 PyObject* sw_get_playlist_tracks(Itdb_Playlist *pl);
 PyObject* sw_set_track_userdata(Itdb_Track *track, PyObject *data);
 PyObject* sw_get_track_userdata(Itdb_Track *track);
-PyObject *sw__track_extra_duplicate (PyObject *data);
+PyObject* sw__track_extra_duplicate (PyObject *data);
+PyObject* sw_get_photoalbums(Itdb_PhotoDB *db);
+PyObject* sw_get_photoalbum(GList *list, gint index);
+PyObject* sw_get_photos(Itdb_PhotoDB *db);
+PyObject* sw_get_photo(GList *list, gint index);
+PyObject* sw_get_artwork_thumbnails(Itdb_Artwork *artwork);
+PyObject* sw_get_photoalbum_members(Itdb_PhotoAlbum *album);
+PyObject* sw_ipod_device_to_dict(Itdb_Device *device);
+PyObject* sw_save_itdb_thumb(Itdb_PhotoDB *itdb, Itdb_Thumb *thumb, const gchar *filename);
 void sw__track_extra_destroy (PyObject *data);
+void hash_table_to_pydict(gpointer key, gpointer value, gpointer user_data);
 void SWIG_init(void);
 
 PyObject* sw_get_tracks(Itdb_iTunesDB *itdb) {
@@ -91,7 +102,7 @@
    return NULL;
   }
   position = g_list_nth(list, index);
-  return SWIG_NewPointerObj((void*)(position->data), SWIGTYPE_p__SPLRule, 0);
+  return SWIG_NewPointerObj((void*)(position->data), SWIGTYPE_p__Itdb_SPLRule, 0);
  }
 
 PyObject* sw_get_playlist(GList *list, gint index) {
@@ -169,10 +180,127 @@
      return Py_None;
    }
  }
+
+ PyObject* sw_get_photoalbums(Itdb_PhotoDB *db) {
+  PyObject    *list;
+  gint        i;
+  GList       *l;
+  list = PyList_New(g_list_length(db->photoalbums));
+  for (l = db->photoalbums, i = 0; l; l = l->next, ++i) {
+    PyList_SET_ITEM(list, i, SWIG_NewPointerObj((void*)(l->data),
+SWIGTYPE_p__Itdb_PhotoAlbum, 0));
+  }
+  return list;
+ }
+
+ PyObject* sw_get_artwork_thumbnails(Itdb_Artwork *artwork) {
+  PyObject    *list;
+  gint        i;
+  GList       *l;
+  list = PyList_New(g_list_length(artwork->thumbnails));
+  for (l = artwork->thumbnails, i = 0; l; l = l->next, ++i) {
+    PyList_SET_ITEM(list, i, SWIG_NewPointerObj((void*)(l->data), SWIGTYPE_p__Itdb_Thumb, 0));
+  }
+  return list;
+ }
+
+
+PyObject* sw_get_photoalbum(GList *list, gint index) {
+  GList *position;
+  if ( (index >= g_list_length(list)) || index < 0 ) {
+   PyErr_SetString(PyExc_IndexError, "Value out of range");
+   return NULL;
+  }
+  position = g_list_nth(list, index);
+  return SWIG_NewPointerObj((void*)(position->data), SWIGTYPE_p__Itdb_PhotoAlbum, 0);
+ }
+
+ PyObject* sw_get_photoalbum_members(Itdb_PhotoAlbum *album) {
+  PyObject    *list;
+  gint        i;
+  GList       *l;
+  list = PyList_New(g_list_length(album->members));
+  for (l = album->members, i = 0; l; l = l->next, ++i) {
+    gint photo_id = GPOINTER_TO_INT(l->data);
+    PyList_SET_ITEM(list, i, PyInt_FromLong((long)photo_id));
+  }
+  return list;
+ }
+
+ PyObject* sw_get_photos(Itdb_PhotoDB *db) {
+  PyObject    *list;
+  gint        i;
+  GList       *l;
+  list = PyList_New(g_list_length(db->photos));
+  for (l = db->photos, i = 0; l; l = l->next, ++i) {
+    PyList_SET_ITEM(list, i, SWIG_NewPointerObj((void*)(l->data),
+SWIGTYPE_p__Itdb_Artwork, 0));
+  }
+  return list;
+ }
+
+PyObject* sw_get_photo(GList *list, gint index) {
+  GList *position;
+  if ( (index >= g_list_length(list)) || index < 0 ) {
+   PyErr_SetString(PyExc_IndexError, "Value out of range");
+   return NULL;
+  }
+  position = g_list_nth(list, index);
+  return SWIG_NewPointerObj((void*)(position->data), SWIGTYPE_p__Itdb_Artwork, 0);
+ }
+
+ void hash_table_to_pydict(gpointer key,
+			   gpointer value,
+			   gpointer user_data) {
+   PyDict_SetItemString((PyObject *)user_data, 
+			(char *)key,
+			PyString_FromString(value));
+ }
+
+ PyObject* sw_ipod_device_to_dict(Itdb_Device *device) {
+   PyObject* sysinfo;
+   if (device == NULL) {
+     Py_INCREF(Py_None);
+     return Py_None;
+   } else {
+     sysinfo = PyDict_New();
+     g_hash_table_foreach(device->sysinfo, 
+			  hash_table_to_pydict, 
+			  (gpointer) sysinfo);
+     return Py_BuildValue("{s:s,s:i,s:i,s:O}",
+			  "mountpoint",
+			  device->mountpoint,
+			  "musicdirs",
+			  device->musicdirs,
+			  "byte_order",
+			  device->byte_order,
+			  "sysinfo",
+			  sysinfo);
+   }
+ }
+
+ PyObject* sw_save_itdb_thumb(Itdb_PhotoDB *itdb, Itdb_Thumb *thumb, const gchar *filename) {
+   GdkPixbuf *pixbuf;
+	
+   pixbuf = itdb_thumb_get_gdk_pixbuf (itdb->device, thumb);
+   
+   if (pixbuf != NULL) {
+     gdk_pixbuf_save (pixbuf, filename, "png", NULL, NULL);
+     gdk_pixbuf_unref (pixbuf);
+     Py_INCREF(Py_True);
+     return Py_True;
+   } else {
+     Py_INCREF(Py_False);
+     return Py_False;
+   }
+ }
  
- 
 %}
 
+%init %{
+   g_type_init ();
+%}
+
 %include "gpod_doc.i"
 
 # be nicer to decode these utf8 strings into Unicode objects in the C
@@ -180,6 +308,8 @@
 # them utf8 encoded Strings.
 typedef char gchar;
 
+# treat time_t as long
+typedef long time_t;
 
 %typemap(in) guint8 {
    unsigned long ival;
@@ -287,6 +417,10 @@
    $result = PyLong_FromUnsignedLong($1);
 }
 
+%typemap(out) gint16 {
+   $result = PyLong_FromLong($1);
+}
+
 %typemap(out) guint8 {
    $result = PyInt_FromLong($1);
 }
@@ -306,5 +440,13 @@
 PyObject* sw_get_playlist_tracks(Itdb_Playlist *pl);
 PyObject* sw_set_track_userdata(Itdb_Track *track, PyObject *data);
 PyObject* sw_get_track_userdata(Itdb_Track *track);
+PyObject* sw_get_photoalbums(Itdb_PhotoDB *db);
+PyObject* sw_get_photoalbum(GList *list, gint index);
+PyObject* sw_get_photos(Itdb_PhotoDB *db);
+PyObject* sw_get_photo(GList *list, gint index);
+PyObject* sw_get_photoalbum_members(Itdb_PhotoAlbum *album);
+PyObject* sw_get_artwork_thumbnails(Itdb_Artwork *artwork);
+PyObject* sw_ipod_device_to_dict(Itdb_Device *device);
+PyObject* sw_save_itdb_thumb(Itdb_PhotoDB *itdb, Itdb_Thumb *thumb, const gchar *filename);
 
 %include "@top_srcdir@/src/itdb.h"

Modified: libgpod/branches/upstream/current/bindings/python/gpod_doc.i.in
===================================================================
--- libgpod/branches/upstream/current/bindings/python/gpod_doc.i.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/gpod_doc.i.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -19,14 +19,14 @@
 Returns: an Itdb_Track
 ") sw_get_track;
 
-%feature("autodoc", "sw_get_rule(GList list, gint index) -> SPLRule") sw_get_rule;
+%feature("autodoc", "sw_get_rule(GList list, gint index) -> Itdb_SPLRule") sw_get_rule;
 %feature("docstring", "
 Get a rule
 
 Parameters
 list: a GList
 index: position of the rule
-Returns: an SPLRule
+Returns: an Itdb_SPLRule
 ") sw_get_rule;
 
 %feature("autodoc", "sw_get_playlist(GList list, gint index) -> Itdb_Playlist") sw_get_playlist;

Modified: libgpod/branches/upstream/current/bindings/python/gtkpod.py
===================================================================
--- libgpod/branches/upstream/current/bindings/python/gtkpod.py	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/gtkpod.py	2007-06-27 21:44:37 UTC (rev 198)
@@ -2,17 +2,12 @@
 
 import sha
 import os
-import socket
 import types
-import locale
 
 # This file is originally stolen from pypod-0.5.0
 # http://superduper.net/index.py?page=pypod
-# I hope that's ok, both works are GPL.
+# and reworked significantly since then.
 
-hostname = socket.gethostname()
-defaultencoding = locale.getpreferredencoding()
-
 class ParseError(Exception):
     """Exception for parse errors."""
     pass
@@ -45,18 +40,9 @@
     file = open(filename, "w")
 
     def write_pair(name, value):
-        if isinstance(value,types.UnicodeType):
-            # encode as UTF-8
-            value = value.encode("utf-8")
-        elif isinstance(value,types.StringType):
-            # assume it's in our default locale, so decode
-            # then re-encode as UTF-8
-            value = unicode(value,
-                            defaultencoding).encode("utf-8")
-        else:
+        if type(value) not in (types.StringType, types.UnicodeType):
+            # e.g., an integer
             value = str(value)
-            
-            
         file.write("=".join([name, value]))
         file.write('\n')
 
@@ -67,23 +53,6 @@
         write_pair("id", track['id'])
         if not track['userdata']:
             track['userdata'] = {}
-        if track['ipod_path']:
-            track['userdata']['filename_ipod'] = track['ipod_path']
-        hash_name = 'sha1_hash'
-        try:
-            del track['userdata'][hash_name]
-        except KeyError:
-            # recent gpod uses sha1_hash, older uses md5_hash            
-            try:
-                del track['userdata'][hash_name]
-                hash_name = 'md5_hash'
-            except KeyError:
-                # we'll just write a sha1_hash then
-                pass
-        if track['userdata'].has_key('filename_locale') and not track['userdata'].has_key(hash_name):
-            if os.path.exists(track['userdata']['filename_locale']):
-                track['userdata'][hash_name] = sha1_hash(
-                    track['userdata']['filename_locale'])
         [write_pair(i[0],i[1]) for i in track['userdata'].items()]
 
     write_pair("id", "xxx")
@@ -98,52 +67,56 @@
 
     """
 
-    tracks_by_id  = {}
-    tracks_by_sha = {}    
-    id = 0
-    ext_hash_valid = True
-
-    for track in db:
-        track['userdata'] = {}
-
-    for track in db:
-        tracks_by_id[track['id']] = track
-
-    track = None
-    file = open(filename)
+    ext_hash_valid = False
     ext_data = {}
-    ext_block = None
-    for line in file:
+    
+    for line in open(filename).readlines():
         parts = line.strip().split("=", 1)
         if len(parts) != 2:
             print parts
         name, value = parts
         if name == "id":
-            if ext_block:
-                ext_data[id] = ext_block
-            if value != 'xxx':
-                id = int(value)
-                ext_block = {}
+            if value == 'xxx':
+                break
+            id = int(value)
+            ext_data[id] = {}
         elif name == "version":
             pass
         elif name == "itunesdb_hash":
-            if itunesdb_file and sha1_hash(itunesdb_file) != value:
-                ext_hash_valid = False
+            if itunesdb_file and sha1_hash(itunesdb_file) == value:
+                ext_hash_valid = True
         else:
-            ext_block[name] = value
+            # value is a string of undetermined encoding at the moment
+            ext_data[id][name] = value
 
+    # now add each extended info block to the track it goes with
+    # equiv. of fill_in_extended_info()
     if ext_hash_valid:
-        for id,ext_block in ext_data.items():
-            tracks_by_id[id]['userdata'] = ext_block
+        # the normal case
+        for track in db:
+            try:
+                track['userdata'] = ext_data[track['id']]
+            except KeyError:
+                # no userdata available...
+                track['userdata'] = {}
     else:
+        # the iTunesDB was changed, so id's will be wrong.
+        # match up using hash instead
+        tracks_by_sha = {}    
         for track in db:
             # make a dict to allow us to find each track by the sha1_hash
             tracks_by_sha[sha1_hash(track.ipod_filename())] = track
         for ext_block in ext_data.values():
             try:
-                track = tracks_by_sha[ext_block['sha1_hash']]
+                if ext_block.has_key('sha1_hash'):
+                    track = tracks_by_sha[ext_block['sha1_hash']]
+                elif ext_block.has_key('md5_hash'):
+                    # recent gpod uses sha1_hash, older uses md5_hash
+                    track = tracks_by_sha[ext_block['md5_hash']]                    
             except KeyError:
-                # recent gpod uses sha1_hash, older uses md5_hash
-                track = tracks_by_sha[ext_block['md5_hash']]                
+                # what should we do about this?
+                print "Failed to match hash from extended information file with one that we just calculated:"
+                print ext_block
+                continue
             track['userdata'] = ext_block
 

Modified: libgpod/branches/upstream/current/bindings/python/ipod.py
===================================================================
--- libgpod/branches/upstream/current/bindings/python/ipod.py	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/bindings/python/ipod.py	2007-06-27 21:44:37 UTC (rev 198)
@@ -7,10 +7,16 @@
 
 import gpod
 import types
-import eyeD3
+from mutagen.mp3 import MP3
+import mutagen.id3
 import gtkpod
 import os
+import locale
+import socket
+import datetime
 
+defaultencoding = locale.getpreferredencoding()
+
 class DatabaseException(RuntimeError):
     """Exception for database errors."""
     pass
@@ -19,6 +25,10 @@
     """Exception for track errors."""
     pass
 
+class PhotoException(RuntimeError):
+    """Exception for track errors."""
+    pass
+
 class Database:
     """An iTunes database.
 
@@ -159,7 +169,7 @@
                     pl.remove(item)
             if harddisk:
                 try:
-                    filename = item['userdata']['filename_locale']
+                    filename = item._userdata_into_default_locale('filename')
                 except KeyError, e:
                     raise TrackException("Unable to remove %s from hard disk, no filename available." % item)
                 os.unlink(filename)
@@ -238,7 +248,7 @@
         for track in self:
             try:
                 transferred = int(track['userdata']['transferred'])
-            except KeyError:
+            except (KeyError, TypeError):
                 transferred = 1
             if not transferred:
                 to_copy.append(track)
@@ -283,7 +293,7 @@
                            "chapterdata_raw","chapterdata_raw_length","artwork",
                            "usertype")
 
-    def __init__(self, filename=None, from_file=None,
+    def __init__(self, filename=None,
                  proxied_track=None, podcast=False, ownerdb=None):
         """Create a Track object.
 
@@ -298,41 +308,44 @@
 
         """
 
-        # XXX couldn't from_file and filename be merged? 
-        if from_file:
-            filename = from_file
         if filename:
             self._track = gpod.itdb_track_new()
-            self['userdata'] = {'filename_locale': filename,
-                                'transferred': 0}
+            self['userdata'] = {'transferred': 0,
+                                'hostname': socket.gethostname(),
+                                'charset':defaultencoding}
+            self['userdata']['pc_mtime'] = os.stat(filename).st_mtime
+            self._set_userdata_utf8('filename',filename)
+            possible_image = os.path.join(os.path.split(filename)[0],'folder.jpg')
+            if os.path.exists(possible_image):
+                self.set_thumbnail(possible_image)
             try:
-                audiofile = eyeD3.Mp3AudioFile(self['userdata']['filename_locale'])
-            except eyeD3.tag.InvalidAudioFormatException, e:
+                audiofile = MP3(self._userdata_into_default_locale('filename'))
+            except Exception, e:
                 raise TrackException(str(e))
-            tag = audiofile.getTag()
-            for func, attrib in (('getArtist','artist'),
-                                 ('getTitle','title'),
-                                 ('getBPM','BPM'),
-                                 ('getPlayCount','playcount'),
-                                 ('getAlbum','album')):
-                value = getattr(tag,func)()
-                if value:
-                    self[attrib] = value
-            try:
-                self['genre'] = tag.getGenre().name
-            except AttributeError:
-                pass
-            disc, of = tag.getDiscNum()
-            if disc is not None:
-                self['cd_nr'] = disc
-            if of is not None:
-                self['cds'] = of
-            n, of = tag.getTrackNum()
-            if n is not None:
-                self['track_nr'] = n
-            if of is not None:
-                self['tracks'] = of
-            self['tracklen'] = audiofile.getPlayTime() * 1000
+            for tag, attrib in (('TPE1','artist'),
+                                ('TIT2','title'),
+                                ('TBPM','BPM'),
+                                ('TCON','genre'),
+                                ('TALB','album'),
+                                ('TPOS',('cd_nr','cds')),
+                                ('TRCK',('track_nr','tracks'))):
+                try:
+                    value = audiofile[tag]
+                    if isinstance(value,mutagen.id3.NumericPartTextFrame):
+                        parts = map(int,value.text[0].split("/"))
+                        if len(parts) == 2:
+                            self[attrib[0]], self[attrib[1]] = parts
+                        elif len(parts) == 1:
+                            self[attrib[0]] = parts[0]                           
+                    elif isinstance(value,mutagen.id3.TextFrame):
+                        self[attrib] = value.text[0].encode('UTF-8','replace')
+                except KeyError:
+                    pass
+            if self['title'] is None:
+                self['title'] = os.path.splitext(
+                    os.path.split(filename)[1])[0].decode(
+                    defaultencoding).encode('UTF-8')
+            self['tracklen'] = int(audiofile.info.length * 1000)
             self.set_podcast(podcast)
         elif proxied_track:
             self._track = proxied_track
@@ -341,18 +354,49 @@
             self._track = gpod.itdb_track_new()
             self.set_podcast(podcast)
 
+    def _set_userdata_utf8(self, key, value):
+        self['userdata']['%s_locale' % key] = value
+        try:
+            self['userdata']['%s_utf8'   % key] = value.decode(self['userdata']['charset']).encode('UTF-8')
+        except UnicodeDecodeError, e:
+            # string clearly isn't advertised charset.  I prefer to
+            # not add the _utf8 version as we can't actually generate
+            # it. Maybe we'll have to populate a close-fit though.
+            pass
+
+    def _userdata_into_default_locale(self, key):
+        # to cope with broken filenames, we should trust the _locale version more,
+        # an even that may not really be in self['userdata']['charset']
+        if self['userdata']['charset'] == defaultencoding:
+            # don't try translate it or check it's actually valid, in case it isn't.
+            return self['userdata']['%s_locale' % key]
+        # our filesystem is in a different encoding to the filename, so
+        # try to convert it. The UTF-8 version is likely best to try first?
+        if self['userdata'].has_key('%s_utf8' % key):
+            unicode_value = self['userdata']['%s_utf8' % key].decode('UTF-8')
+        else:
+            unicode_value = self['userdata']['%s_locale' % key].decode(self['userdata']['charset'])
+        return unicode_value.encode(defaultencoding)
+
+    def set_thumbnail(self, filename):
+        gpod.itdb_track_set_thumbnails(self._track, filename)
+        self._set_userdata_utf8('thumbnail', filename)
+
     def copy_to_ipod(self):
         """Copy the track to the iPod."""
-        self['userdata']['md5_hash'] = gtkpod.sha1_hash(
-            self['userdata']['filename_locale'])
-        if not gpod.itdb_get_mountpoint(self._track.itdb):
+        self['userdata']['sha1_hash'] = gtkpod.sha1_hash(self._userdata_into_default_locale('filename'))
+        mp = gpod.itdb_get_mountpoint(self._track.itdb)
+        if not mp:
             return False
-        self['userdata']['transferred'] = 1
         if gpod.itdb_cp_track_to_ipod(self._track,
-                                      self['userdata']['filename_locale'], None) != 1:
+                                      self._userdata_into_default_locale('filename'),
+                                      None) != 1:
             raise TrackException('Unable to copy %s to iPod as %s' % (
-                self['userdata']['filename_locale'],
+                self._userdata_into_default_locale('filename'),
                 self))
+        fname = self.ipod_filename().replace(mp, '').replace(os.path.sep, ':')
+        self['userdata']['filename_ipod'] = fname
+        self['userdata']['transferred'] = 1
         return True
 
     def ipod_filename(self):
@@ -411,20 +455,17 @@
             raise KeyError('No such key: %s' % item)
 
     def __setitem__(self, item, value):
-        #print item, value
         if item == "userdata":
             gpod.sw_set_track_userdata(self._track, value)
             return
         if type(value) == types.UnicodeType:
-            value = value.encode()
+            value = value.encode('UTF-8','replace')
         if item in self._proxied_attributes:
             return setattr(self._track, item, value)
         else:
             raise KeyError('No such key: %s' % item)
 
-# XXX would this be better as a public variable so that the docs would
-# list valid sort order values?
-_playlist_sorting = {
+playlist_sorting = {
     1:'playlist',
     2:'unknown2',
     3:'songtitle',
@@ -608,14 +649,12 @@
 
     def get_sort(self):
         """Get the sort order for the playlist."""
-        return _playlist_sorting[self._pl.sortorder]
+        return playlist_sorting[self._pl.sortorder]
 
-    # XXX how does one find out what values are allowed for order without
-    # poking into this file?  (See similar question @ _playlist_order)
     def set_sort(self, order):
         """Set the sort order for the playlist."""
         order = order.lower()
-        for k, v in _playlist_sorting.items():
+        for k, v in playlist_sorting.items():
             if v == order:
                 self._pl.sortorder = v
                 return
@@ -685,3 +724,244 @@
             gpod.itdb_playlist_remove_track(self._pl, track._track)
         else:
             raise DatabaseException("Playlist %s does not contain %s" % (self, track))
+
+class PhotoDatabase:
+    """An iTunes Photo database"""
+    def __init__(self, mountpoint="/mnt/ipod"):
+        """Create a Photo database object"""
+        self._itdb = gpod.itdb_photodb_parse(mountpoint, None)
+        
+    def __str__(self):
+        return self.__repr__()
+
+    def __repr__(self):
+        return "<PhotoDatabase Mountpoint:%s Albums:%s Photos:%s>" % (
+            repr(self.device['mountpoint']),
+            gpod.sw_get_list_len(self._itdb.photoalbums),
+            len(self))
+
+    def close(self):
+        pass
+
+    def __len__(self):
+        return gpod.sw_get_list_len(self._itdb.photos)
+
+    def __getitem__(self, index):
+        if type(index) == types.SliceType:
+            return [self[i] for i in xrange(*index.indices(len(self)))]
+        else:
+            if index < 0:
+                index += len(self)
+            return Photo(proxied_photo=gpod.sw_get_photo(self._itdb.photos, index),
+                         ownerdb=self)
+    def get_device(self):
+        return gpod.sw_ipod_device_to_dict(self._itdb.device)        
+
+    def get_photoalbums(self):
+        """Get all photo albums."""
+        return _PhotoAlbums(self)
+
+    PhotoAlbums = property(get_photoalbums)
+    device      = property(get_device)
+
+class _PhotoAlbums:
+    def __init__(self, db):
+        self._db = db
+
+    def __len__(self):
+        return gpod.sw_get_list_len(self._db._itdb.photoalbums)
+
+    def __nonzero__(self):
+        return True
+
+    def __getitem__(self, index):
+        if type(index) == types.SliceType:
+            return [self[i] for i in xrange(*index.indices(len(self)))]
+        else:
+            if index < 0:
+                index += len(self)
+            return PhotoAlbum(self._db,
+                              proxied_photoalbum=gpod.sw_get_photoalbum(self._db._itdb.photoalbums,
+                                                                        index))
+
+    def __repr__(self):
+        return "<PhotoAlbums from %s>" % self._db
+
+    def __call__(self, name):
+        if type(name) in (types.TupleType, types.ListType):
+            return [self.__call__(name=i) for i in name]
+        else:
+            pa = gpod.itdb_photodb_photoalbum_by_name(self._db._itdb,
+                                                      name)
+            if pa:
+                return PhotoAlbum(self._db,
+                                  proxied_playlist=pa)
+            else:
+                raise KeyError("Album with name %s not found." % repr(name))
+
+
+class PhotoAlbum:
+    """A Photo Album in an iTunes database."""
+
+    def __init__(self, parent_db, title="New Album",
+                 pos=-1, proxied_photoalbum=None):
+
+        self._db = parent_db
+        if proxied_photoalbum:
+            self._pa = proxied_photoalbum
+        else:
+            raise NotImplemented("Can't create new Photo Albums yet")
+
+    def get_name(self):
+        """Get the name of the photo album."""
+        return self._pa.name
+
+    def set_name(self, name):
+        """Set the name for the photo album."""
+        self._pa.name = name
+
+    def get_album_type(self):
+        return self._pa.album_type
+
+    name       = property(get_name, set_name)
+    album_type = property(get_album_type)
+    
+    def __str__(self):
+        return self.__repr__()
+
+    def __repr__(self):
+        return "<PhotoAlbum Title:%s Photos:%d Type:%d>" % (
+            repr(self.name),
+            len(self),
+            self.album_type)
+
+    def __getitem__(self, index):
+        if type(index) == types.SliceType:
+            return [self[i] for i in xrange(*index.indices(len(self)))]
+        else:
+            if index < 0:
+                index += len(self)
+            return Photo(proxied_photo=gpod.sw_get_photo(self._pa.members, index),
+                         ownerdb=self._db)
+
+    def __len__(self):
+        return gpod.sw_get_list_len(self._pa.members)
+
+    def __nonzero__(self):
+        return True
+
+class Photo:
+    """A photo in an iTunes Photo database."""
+
+    _proxied_attributes = ("id","creation_date","digitized_date","artwork_size")  
+
+    def __init__(self, filename=None,
+                 proxied_photo=None, ownerdb=None):
+        """Create a Photo object."""
+
+        if filename:
+            # maybe use itdb_photodb_add_photo ?
+            raise NotImplemented("Can't create new Photos from files yet")
+        elif proxied_photo:
+            self._photo = proxied_photo
+            self._database = ownerdb
+        else:
+            self._photo = gpod.itdb_artwork_new()
+            
+    def __str__(self):
+        return self.__repr__()
+
+    def __repr__(self):
+        return "<Photo ID:%s Creation:'%s' Digitized:'%s' Size:%s>" % (
+            repr(self['id']),
+            self['creation_date'].strftime("%c"),
+            self['digitized_date'].strftime("%c"),
+            repr(self['artwork_size']))
+
+    def keys(self):
+        return list(self._proxied_attributes)
+
+    def items(self):
+        return [self[k] for k in self._proxied_attributes]
+
+    def pairs(self):
+        return [(k, self[k]) for k in self._proxied_attributes]        
+
+    def __getitem__(self, item):
+        if item in self._proxied_attributes:
+            attr = getattr(self._photo, item)
+            if item.endswith("_date"):
+                try:
+                    return datetime.datetime.fromtimestamp(attr)
+                except:
+                    return datetime.datetime.fromtimestamp(0)
+            else:
+                return attr
+        else:
+            raise KeyError('No such key: %s' % item)
+
+    def __setitem__(self, item, value):
+        if type(value) == types.UnicodeType:
+            value = value.encode('UTF-8','replace')
+        if item in self._proxied_attributes:
+            return setattr(self._photo, item, value)
+        else:
+            raise KeyError('No such key: %s' % item)
+    
+    def get_thumbnails(self):
+        return [Thumbnail(proxied_thumbnail=t, ownerphoto=self) for t in gpod.sw_get_artwork_thumbnails(self._photo)]
+
+    thumbnails = property(get_thumbnails)
+
+class Thumbnail:
+    """A thumbnail in an Photo."""
+
+    _proxied_attributes = ("type","filename","rotation","offset","size","width","height",
+                           "horizontal_padding", "vertical_padding")
+
+    def __init__(self, proxied_thumbnail=None, ownerphoto=None):
+        """Create a thumbnail object."""
+
+        if not proxied_thumbnail:
+            raise NotImplemented("Can't create new Thumbnails from scratch, create Photos instead")
+
+        self._thumbnail = proxied_thumbnail
+        self.__photo = ownerphoto # so the photo doesn't get gc'd
+            
+    def __str__(self):
+        return self.__repr__()
+
+    def __repr__(self):
+        return "<Thumbnail Filename:%s Size:%d Width:%d Height:%d>" % (
+            repr(self['filename']),
+            self['size'],
+            self['width'],
+            self['height'])
+
+    def keys(self):
+        return list(self._proxied_attributes)
+
+    def items(self):
+        return [self[k] for k in self._proxied_attributes]
+
+    def pairs(self):
+        return [(k, self[k]) for k in self._proxied_attributes]        
+
+    def __getitem__(self, item):
+        if item in self._proxied_attributes:
+            return getattr(self._thumbnail, item)
+        else:
+            raise KeyError('No such key: %s' % item)
+
+    def __setitem__(self, item, value):
+        if type(value) == types.UnicodeType:
+            value = value.encode('UTF-8','replace')
+        if item in self._proxied_attributes:
+            return setattr(self._thumbnail, item, value)
+        else:
+            raise KeyError('No such key: %s' % item)
+
+    def save_image(self,filename):
+        return gpod.sw_save_itdb_thumb(
+            self.__photo._database._itdb,
+            self._thumbnail,filename)

Added: libgpod/branches/upstream/current/bindings/python/tests/Makefile.am
===================================================================
--- libgpod/branches/upstream/current/bindings/python/tests/Makefile.am	                        (rev 0)
+++ libgpod/branches/upstream/current/bindings/python/tests/Makefile.am	2007-06-27 21:44:37 UTC (rev 198)
@@ -0,0 +1,11 @@
+EXTRA_DIST = resources
+
+dist-hook:
+	rm -rf `find $(distdir)/resources -type d -name .svn`
+
+if HAVE_PYTHON
+test:
+	LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
+	PYTHONPATH=$(top_builddir)/bindings/python:$(top_builddir)/bindings/python/.libs  \
+	$(PYTHON) tests.py
+endif

Added: libgpod/branches/upstream/current/bindings/python/tests/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/bindings/python/tests/Makefile.in	                        (rev 0)
+++ libgpod/branches/upstream/current/bindings/python/tests/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -0,0 +1,379 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDKPIXBUF_CFLAGS = @GDKPIXBUF_CFLAGS@
+GDKPIXBUF_LIBS = @GDKPIXBUF_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HAVE_GDKPIXBUF_FALSE = @HAVE_GDKPIXBUF_FALSE@
+HAVE_GDKPIXBUF_TRUE = @HAVE_GDKPIXBUF_TRUE@
+HAVE_PYTHON_FALSE = @HAVE_PYTHON_FALSE@
+HAVE_PYTHON_TRUE = @HAVE_PYTHON_TRUE@
+HAVE_TAGLIB_FALSE = @HAVE_TAGLIB_FALSE@
+HAVE_TAGLIB_TRUE = @HAVE_TAGLIB_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGPOD_CFLAGS = @LIBGPOD_CFLAGS@
+LIBGPOD_LIBS = @LIBGPOD_LIBS@
+LIBGPOD_SO_VERSION = @LIBGPOD_SO_VERSION@
+LIBGPOD_VERSION = @LIBGPOD_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SWIG = @SWIG@
+SWIG_LIB = @SWIG_LIB@
+TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
+TAGLIB_LIBS = @TAGLIB_LIBS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = resources
+subdir = bindings/python/tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  bindings/python/tests/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-info-am
+
+
+dist-hook:
+	rm -rf `find $(distdir)/resources -type d -name .svn`
+
+ at HAVE_PYTHON_TRUE@test:
+ at HAVE_PYTHON_TRUE@	LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
+ at HAVE_PYTHON_TRUE@	PYTHONPATH=$(top_builddir)/bindings/python:$(top_builddir)/bindings/python/.libs  \
+ at HAVE_PYTHON_TRUE@	$(PYTHON) tests.py
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: libgpod/branches/upstream/current/bindings/python/tests/resources/Artwork/ArtworkDB
===================================================================
(Binary files differ)


Property changes on: libgpod/branches/upstream/current/bindings/python/tests/resources/Artwork/ArtworkDB
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: libgpod/branches/upstream/current/bindings/python/tests/resources/iTunes/iTunesDB
===================================================================
(Binary files differ)


Property changes on: libgpod/branches/upstream/current/bindings/python/tests/resources/iTunes/iTunesDB
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: libgpod/branches/upstream/current/bindings/python/tests/resources/iTunes/iTunesDB.ext
===================================================================
--- libgpod/branches/upstream/current/bindings/python/tests/resources/iTunes/iTunesDB.ext	                        (rev 0)
+++ libgpod/branches/upstream/current/bindings/python/tests/resources/iTunes/iTunesDB.ext	2007-06-27 21:44:37 UTC (rev 198)
@@ -0,0 +1,3 @@
+itunesdb_hash=1d28bd4e9ec0980d34f36f9d39cdafd163e5cd36
+version=0.99.6DEV
+id=xxx

Added: libgpod/branches/upstream/current/bindings/python/tests/resources/tiny.mp3
===================================================================
(Binary files differ)


Property changes on: libgpod/branches/upstream/current/bindings/python/tests/resources/tiny.mp3
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: libgpod/branches/upstream/current/compile
===================================================================
--- libgpod/branches/upstream/current/compile	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/compile	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,9 +1,8 @@
 #! /bin/sh
+
 # Wrapper for compilers which do not understand `-c -o'.
 
-scriptversion=2005-05-14.22
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright 1999, 2000 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey at cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -18,125 +17,83 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
-# This file is maintained in Automake, please report
-# bugs to <bug-automake at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
+# Usage:
+# compile PROGRAM [ARGS]...
+# `-o FOO.o' is removed from the args passed to the actual compile.
 
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
+prog=$1
+shift
 
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-esac
-
 ofile=
 cfile=
-eat=
-
-for arg
-do
-  if test -n "$eat"; then
-    eat=
-  else
-    case $1 in
-      -o)
-	# configure might choose to run compile as `compile cc -o foo foo.c'.
-	# So we strip `-o arg' only if arg is an object.
-	eat=1
-	case $2 in
-	  *.o | *.obj)
-	    ofile=$2
-	    ;;
-	  *)
-	    set x "$@" -o "$2"
-	    shift
-	    ;;
-	esac
-	;;
-      *.c)
-	cfile=$1
-	set x "$@" "$1"
-	shift
-	;;
-      *)
-	set x "$@" "$1"
-	shift
-	;;
-    esac
-  fi
-  shift
+args=
+while test $# -gt 0; do
+   case "$1" in
+    -o)
+       # configure might choose to run compile as `compile cc -o foo foo.c'.
+       # So we do something ugly here.
+       ofile=$2
+       shift
+       case "$ofile" in
+	*.o | *.obj)
+	   ;;
+	*)
+	   args="$args -o $ofile"
+	   ofile=
+	   ;;
+       esac
+       ;;
+    *.c)
+       cfile=$1
+       args="$args $1"
+       ;;
+    *)
+       args="$args $1"
+       ;;
+   esac
+   shift
 done
 
 if test -z "$ofile" || test -z "$cfile"; then
-  # If no `-o' option was seen then we might have been invoked from a
-  # pattern rule where we don't need one.  That is ok -- this is a
-  # normal compilation that the losing compiler can handle.  If no
-  # `.c' file was seen then we are probably linking.  That is also
-  # ok.
-  exec "$@"
+   # If no `-o' option was seen then we might have been invoked from a
+   # pattern rule where we don't need one.  That is ok -- this is a
+   # normal compilation that the losing compiler can handle.  If no
+   # `.c' file was seen then we are probably linking.  That is also
+   # ok.
+   exec "$prog" $args
 fi
 
 # Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
 
 # Create the lock directory.
 # Note: use `[/.-]' here to ensure that we don't use the same name
 # that we are using for the .o file.  Also, base the name on the expected
 # object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
+lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
 while true; do
-  if mkdir "$lockdir" >/dev/null 2>&1; then
-    break
-  fi
-  sleep 1
+   if mkdir $lockdir > /dev/null 2>&1; then
+      break
+   fi
+   sleep 1
 done
 # FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
+trap "rmdir $lockdir; exit 1" 1 2 15
 
 # Run the compile.
-"$@"
-ret=$?
+"$prog" $args
+status=$?
 
 if test -f "$cofile"; then
-  mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  mv "${cofile}bj" "$ofile"
+   mv "$cofile" "$ofile"
 fi
 
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
+rmdir $lockdir
+exit $status

Modified: libgpod/branches/upstream/current/config.guess
===================================================================
--- libgpod/branches/upstream/current/config.guess	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/config.guess	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,10 +1,9 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-#   Inc.
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
-timestamp='2006-07-02'
+timestamp='2003-10-03'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -18,15 +17,13 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
-
 # Originally written by Per Bothner <per at bothner.com>.
 # Please send patches to <config-patches at gnu.org>.  Submit a context
 # diff and a properly formatted ChangeLog entry.
@@ -56,7 +53,7 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
@@ -69,11 +66,11 @@
 while test $# -gt 0 ; do
   case $1 in
     --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
+       echo "$timestamp" ; exit 0 ;;
     --version | -v )
-       echo "$version" ; exit ;;
+       echo "$version" ; exit 0 ;;
     --help | --h* | -h )
-       echo "$usage"; exit ;;
+       echo "$usage"; exit 0 ;;
     -- )     # Stop option processing
        shift; break ;;
     - )	# Use stdin as input.
@@ -107,7 +104,7 @@
 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
 trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
 : ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
  { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
  { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
@@ -126,7 +123,7 @@
 	;;
  ,,*)   CC_FOR_BUILD=$CC ;;
  ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+esac ;'
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi at noc.rutgers.edu 1994-08-24)
@@ -199,32 +196,50 @@
 	# contains redundant information, the shorter form:
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
 	echo "${machine}-${os}${release}"
-	exit ;;
+	exit 0 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    macppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
     *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
     alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
+	if test $UNAME_RELEASE = "V4.0"; then
 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
+	fi
 	# According to Compaq, /usr/sbin/psrinfo has been available on
 	# OSF/1 and Tru64 systems produced since 1995.  I hope that
 	# covers most systems running today.  This code pipes the CPU
@@ -262,49 +277,42 @@
 	    "EV7.9 (21364A)")
 		UNAME_MACHINE="alphaev79" ;;
 	esac
-	# A Pn.n version is a patched version.
 	# A Vn.n version is a released version.
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit 0 ;;
+    Alpha*:OpenVMS:*:*)
+	echo alpha-hp-vms
+	exit 0 ;;
     Alpha\ *:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# Should we change UNAME_MACHINE based on the output of uname instead
 	# of the specific Alpha model?
 	echo alpha-pc-interix
-	exit ;;
+	exit 0 ;;
     21064:Windows_NT:50:3)
 	echo alpha-dec-winnt3.5
-	exit ;;
+	exit 0 ;;
     Amiga*:UNIX_System_V:4.0:*)
 	echo m68k-unknown-sysv4
-	exit ;;
+	exit 0;;
     *:[Aa]miga[Oo][Ss]:*:*)
 	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
+	exit 0 ;;
     *:[Mm]orph[Oo][Ss]:*:*)
 	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
+	exit 0 ;;
     *:OS/390:*:*)
 	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-        echo powerpc-ibm-os400
-	exit ;;
+	exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
+	exit 0;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
 	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
+	exit 0;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
 	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
 	if test "`(/bin/universe) 2>/dev/null`" = att ; then
@@ -312,32 +320,32 @@
 	else
 		echo pyramid-pyramid-bsd
 	fi
-	exit ;;
+	exit 0 ;;
     NILE*:*:*:dcosx)
 	echo pyramid-pyramid-svr4
-	exit ;;
+	exit 0 ;;
     DRS?6000:unix:4.0:6*)
 	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7*)
 	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
+	    sparc) echo sparc-icl-nx7 && exit 0 ;;
 	esac ;;
     sun4H:SunOS:5.*:*)
 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
+	exit 0 ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
+	exit 0 ;;
     i86pc:SunOS:5.*:*)
 	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
+	exit 0 ;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
 	# it's likely to be more like Solaris than SunOS4.
 	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
+	exit 0 ;;
     sun4*:SunOS:*:*)
 	case "`/usr/bin/arch -k`" in
 	    Series*|S4*)
@@ -346,10 +354,10 @@
 	esac
 	# Japanese Language versions have a version number like `4.1.3-JL'.
 	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
+	exit 0 ;;
     sun3*:SunOS:*:*)
 	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     sun*:*:4.2BSD:*)
 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
 	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
@@ -361,10 +369,10 @@
 		echo sparc-sun-sunos${UNAME_RELEASE}
 		;;
 	esac
-	exit ;;
+	exit 0 ;;
     aushp:SunOS:*:*)
 	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
     # "atarist" or "atariste" at least should have a processor
@@ -375,40 +383,37 @@
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
         echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
 	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
+        exit 0 ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
         echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
         echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
+        exit 0 ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
         echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
+        exit 0 ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
         echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
+        exit 0 ;;
     powerpc:machten:*:*)
 	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     RISC*:Mach:*:*)
 	echo mips-dec-mach_bsd4.3
-	exit ;;
+	exit 0 ;;
     RISC*:ULTRIX:*:*)
 	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     VAX*:ULTRIX*:*:*)
 	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     2020:CLIX:*:* | 2430:CLIX:*:*)
 	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
 	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
@@ -432,33 +437,32 @@
 	  exit (-1);
 	}
 EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
+	$CC_FOR_BUILD -o $dummy $dummy.c \
+	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && exit 0
 	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     Motorola:PowerMAX_OS:*:*)
 	echo powerpc-motorola-powermax
-	exit ;;
+	exit 0 ;;
     Motorola:*:4.3:PL8-*)
 	echo powerpc-harris-powermax
-	exit ;;
+	exit 0 ;;
     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
 	echo powerpc-harris-powermax
-	exit ;;
+	exit 0 ;;
     Night_Hawk:Power_UNIX:*:*)
 	echo powerpc-harris-powerunix
-	exit ;;
+	exit 0 ;;
     m88k:CX/UX:7*:*)
 	echo m88k-harris-cxux7
-	exit ;;
+	exit 0 ;;
     m88k:*:4*:R4*)
 	echo m88k-motorola-sysv4
-	exit ;;
+	exit 0 ;;
     m88k:*:3*:R3*)
 	echo m88k-motorola-sysv3
-	exit ;;
+	exit 0 ;;
     AViiON:dgux:*:*)
         # DG/UX returns AViiON for all architectures
         UNAME_PROCESSOR=`/usr/bin/uname -p`
@@ -474,29 +478,29 @@
 	else
 	    echo i586-dg-dgux${UNAME_RELEASE}
 	fi
- 	exit ;;
+ 	exit 0 ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
 	echo m88k-dolphin-sysv3
-	exit ;;
+	exit 0 ;;
     M88*:*:R3*:*)
 	# Delta 88k system running SVR3
 	echo m88k-motorola-sysv3
-	exit ;;
+	exit 0 ;;
     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
 	echo m88k-tektronix-sysv3
-	exit ;;
+	exit 0 ;;
     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
 	echo m68k-tektronix-bsd
-	exit ;;
+	exit 0 ;;
     *:IRIX*:*:*)
 	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
+	exit 0 ;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
     i*86:AIX:*:*)
 	echo i386-ibm-aix
-	exit ;;
+	exit 0 ;;
     ia64:AIX:*:*)
 	if [ -x /usr/bin/oslevel ] ; then
 		IBM_REV=`/usr/bin/oslevel`
@@ -504,7 +508,7 @@
 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
 	fi
 	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
+	exit 0 ;;
     *:AIX:2:3)
 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
 		eval $set_cc_for_build
@@ -519,18 +523,14 @@
 			exit(0);
 			}
 EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
+		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+		echo rs6000-ibm-aix3.2.5
 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
 		echo rs6000-ibm-aix3.2.4
 	else
 		echo rs6000-ibm-aix3.2
 	fi
-	exit ;;
+	exit 0 ;;
     *:AIX:*:[45])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
@@ -544,28 +544,28 @@
 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
 	fi
 	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
+	exit 0 ;;
     *:AIX:*:*)
 	echo rs6000-ibm-aix
-	exit ;;
+	exit 0 ;;
     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
 	echo romp-ibm-bsd4.4
-	exit ;;
+	exit 0 ;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
 	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
+	exit 0 ;;                           # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
 	echo rs6000-bull-bosx
-	exit ;;
+	exit 0 ;;
     DPX/2?00:B.O.S.:*:*)
 	echo m68k-bull-sysv3
-	exit ;;
+	exit 0 ;;
     9000/[34]??:4.3bsd:1.*:*)
 	echo m68k-hp-bsd
-	exit ;;
+	exit 0 ;;
     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
 	echo m68k-hp-bsd4.4
-	exit ;;
+	exit 0 ;;
     9000/[34678]??:HP-UX:*:*)
 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
 	case "${UNAME_MACHINE}" in
@@ -627,19 +627,9 @@
 	esac
 	if [ ${HP_ARCH} = "hppa2.0w" ]
 	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep __LP64__ >/dev/null
+	    # avoid double evaluation of $set_cc_for_build
+	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
 	    then
 		HP_ARCH="hppa2.0w"
 	    else
@@ -647,11 +637,11 @@
 	    fi
 	fi
 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
+	exit 0 ;;
     ia64:HP-UX:*:*)
 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
 	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
+	exit 0 ;;
     3050*:HI-UX:*:*)
 	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
@@ -679,179 +669,153 @@
 	  exit (0);
 	}
 EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
+	$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
 	echo unknown-hitachi-hiuxwe2
-	exit ;;
+	exit 0 ;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
 	echo hppa1.1-hp-bsd
-	exit ;;
+	exit 0 ;;
     9000/8??:4.3bsd:*:*)
 	echo hppa1.0-hp-bsd
-	exit ;;
+	exit 0 ;;
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
 	echo hppa1.0-hp-mpeix
-	exit ;;
+	exit 0 ;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
 	echo hppa1.1-hp-osf
-	exit ;;
+	exit 0 ;;
     hp8??:OSF1:*:*)
 	echo hppa1.0-hp-osf
-	exit ;;
+	exit 0 ;;
     i*86:OSF1:*:*)
 	if [ -x /usr/sbin/sysversion ] ; then
 	    echo ${UNAME_MACHINE}-unknown-osf1mk
 	else
 	    echo ${UNAME_MACHINE}-unknown-osf1
 	fi
-	exit ;;
+	exit 0 ;;
     parisc*:Lites*:*:*)
 	echo hppa1.1-hp-lites
-	exit ;;
+	exit 0 ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
 	echo c1-convex-bsd
-        exit ;;
+        exit 0 ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
 	if getsysinfo -f scalar_acc
 	then echo c32-convex-bsd
 	else echo c2-convex-bsd
 	fi
-        exit ;;
+        exit 0 ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
 	echo c34-convex-bsd
-        exit ;;
+        exit 0 ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
 	echo c38-convex-bsd
-        exit ;;
+        exit 0 ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
 	echo c4-convex-bsd
-        exit ;;
+        exit 0 ;;
     CRAY*Y-MP:*:*:*)
 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	exit 0 ;;
     CRAY*[A-Z]90:*:*:*)
 	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
 	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
 	      -e 's/\.[^.]*$/.X/'
-	exit ;;
+	exit 0 ;;
     CRAY*TS:*:*:*)
 	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	exit 0 ;;
     CRAY*T3E:*:*:*)
 	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	exit 0 ;;
     CRAY*SV1:*:*:*)
 	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	exit 0 ;;
     *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
         echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
-    5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
+        exit 0 ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     sparc*:BSD/OS:*:*)
 	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     *:BSD/OS:*:*)
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
+	exit 0 ;;
+    *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
+	# Determine whether the default compiler uses glibc.
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#if __GLIBC__ >= 2
+	LIBC=gnu
+	#else
+	LIBC=
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	# GNU/FreeBSD systems have a "k" prefix to indicate we are using
+	# FreeBSD's kernel, but not the complete OS.
+	case ${LIBC} in gnu) kernel_only='k' ;; esac
+	echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+	exit 0 ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
+	exit 0 ;;
     i*:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
+	exit 0 ;;
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    x86:Interix*:[3456]*)
-	echo i586-pc-interix${UNAME_RELEASE}
-	exit ;;
-    EM64T:Interix*:[3456]*)
-	echo x86_64-unknown-interix${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
+    x86:Interix*:[34]*)
+	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+	exit 0 ;;
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
 	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
+	exit 0 ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
 	# UNAME_MACHINE based on the output of uname instead of i386?
 	echo i586-pc-interix
-	exit ;;
+	exit 0 ;;
     i*:UWIN*:*)
 	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
+	exit 0 ;;
     p*:CYGWIN*:*)
 	echo powerpcle-unknown-cygwin
-	exit ;;
+	exit 0 ;;
     prep*:SunOS:5.*:*)
 	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
+	exit 0 ;;
     *:GNU:*:*)
-	# the GNU system
 	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-	exit ;;
+	exit 0 ;;
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
+	exit 0 ;;
     arm*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     cris:Linux:*:*)
 	echo cris-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-    	echo frv-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     ia64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     m68*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     mips:Linux:*:*)
 	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
@@ -868,12 +832,8 @@
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
 	;;
     mips64:Linux:*:*)
 	eval $set_cc_for_build
@@ -891,22 +851,15 @@
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
 	;;
-    or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
-	exit ;;
     ppc:Linux:*:*)
 	echo powerpc-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     ppc64:Linux:*:*)
 	echo powerpc64-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     alpha:Linux:*:*)
 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
 	  EV5)   UNAME_MACHINE=alphaev5 ;;
@@ -920,7 +873,7 @@
 	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
 	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
 	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit ;;
+	exit 0 ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -928,28 +881,25 @@
 	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
 	  *)    echo hppa-unknown-linux-gnu ;;
 	esac
-	exit ;;
+	exit 0 ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
 	echo hppa64-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     s390:Linux:*:* | s390x:Linux:*:*)
 	echo ${UNAME_MACHINE}-ibm-linux
-	exit ;;
+	exit 0 ;;
     sh64*:Linux:*:*)
     	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     sh*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
-	exit ;;
+	exit 0 ;;
     x86_64:Linux:*:*)
 	echo x86_64-unknown-linux-gnu
-	exit ;;
+	exit 0 ;;
     i*86:Linux:*:*)
 	# The BFD linker knows what the default object file format is, so
 	# first see if it will tell us. cd to the root directory to prevent
@@ -967,15 +917,15 @@
 		;;
 	  a.out-i386-linux)
 		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-		exit ;;
+		exit 0 ;;
 	  coff-i386)
 		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-		exit ;;
+		exit 0 ;;
 	  "")
 		# Either a pre-BFD a.out linker (linux-gnuoldld) or
 		# one that does not give us useful --help.
 		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-		exit ;;
+		exit 0 ;;
 	esac
 	# Determine whether the default compiler is a.out or elf
 	eval $set_cc_for_build
@@ -992,7 +942,7 @@
 	LIBC=gnulibc1
 	# endif
 	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+	#ifdef __INTEL_COMPILER
 	LIBC=gnu
 	#else
 	LIBC=gnuaout
@@ -1002,23 +952,16 @@
 	LIBC=dietlibc
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
 	;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
 	# earlier versions are messed up and put the nodename in both
 	# sysname and nodename.
 	echo i386-sequent-sysv4
-	exit ;;
+	exit 0 ;;
     i*86:UNIX_SV:4.2MP:2.*)
         # Unixware is an offshoot of SVR4, but it has its own version
         # number series starting with 2...
@@ -1026,27 +969,24 @@
 	# I just have to hope.  -- rms.
         # Use sysv4.2uw... so that sysv4* matches it.
 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
+	exit 0 ;;
     i*86:OS/2:*:*)
 	# If we were able to find `uname', then EMX Unix compatibility
 	# is probably installed.
 	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
+	exit 0 ;;
     i*86:XTS-300:*:STOP)
 	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
+	exit 0 ;;
     i*86:atheos:*:*)
 	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
+	exit 0 ;;
     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
 	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     i*86:*DOS:*:*)
 	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
+	exit 0 ;;
     i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
 	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
@@ -1054,16 +994,15 @@
 	else
 		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
 	fi
-	exit ;;
-    i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	exit 0 ;;
+    i*86:*:5:[78]*)
 	case `/bin/uname -X | grep "^Machine"` in
 	    *486*)	     UNAME_MACHINE=i486 ;;
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
 	esac
 	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
+	exit 0 ;;
     i*86:*:3.2:*)
 	if test -f /usr/options/cb.name; then
 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
@@ -1081,73 +1020,73 @@
 	else
 		echo ${UNAME_MACHINE}-pc-sysv32
 	fi
-	exit ;;
+	exit 0 ;;
     pc:*:*:*)
 	# Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
         # the processor, so we play safe by assuming i386.
 	echo i386-pc-msdosdjgpp
-        exit ;;
+        exit 0 ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
-	exit ;;
+	exit 0 ;;
     paragon:*:*:*)
 	echo i860-intel-osf1
-	exit ;;
+	exit 0 ;;
     i860:*:4.*:*) # i860-SVR4
 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
 	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
 	else # Add other i860-SVR4 vendors below as they are discovered.
 	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
 	fi
-	exit ;;
+	exit 0 ;;
     mini*:CTIX:SYS*5:*)
 	# "miniframe"
 	echo m68010-convergent-sysv
-	exit ;;
+	exit 0 ;;
     mc68k:UNIX:SYSTEM5:3.51m)
 	echo m68k-convergent-sysv
-	exit ;;
+	exit 0 ;;
     M680?0:D-NIX:5.3:*)
 	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	exit 0 ;;
+    M68*:*:R3V[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
 	OS_REL=''
 	test -r /etc/.relid \
 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
+          && echo i486-ncr-sysv4 && exit 0 ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
 	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     mc68030:UNIX_System_V:4.*:*)
 	echo m68k-atari-sysv4
-	exit ;;
+	exit 0 ;;
     TSUNAMI:LynxOS:2.*:*)
 	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     rs6000:LynxOS:2.*:*)
 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     SM[BE]S:UNIX_SV:*:*)
 	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     RM*:ReliantUNIX-*:*:*)
 	echo mips-sni-sysv4
-	exit ;;
+	exit 0 ;;
     RM*:SINIX-*:*:*)
 	echo mips-sni-sysv4
-	exit ;;
+	exit 0 ;;
     *:SINIX-*:*:*)
 	if uname -p 2>/dev/null >/dev/null ; then
 		UNAME_MACHINE=`(uname -p) 2>/dev/null`
@@ -1155,72 +1094,68 @@
 	else
 		echo ns32k-sni-sysv
 	fi
-	exit ;;
+	exit 0 ;;
     PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
                       # says <Richard.M.Bartel at ccMail.Census.GOV>
         echo i586-unisys-sysv4
-        exit ;;
+        exit 0 ;;
     *:UNIX_System_V:4*:FTX*)
 	# From Gerald Hewes <hewes at openmarket.com>.
 	# How about differentiating between stratus architectures? -djm
 	echo hppa1.1-stratus-sysv4
-	exit ;;
+	exit 0 ;;
     *:*:*:FTX*)
 	# From seanf at swdc.stratus.com.
 	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
+	exit 0 ;;
     *:VOS:*:*)
 	# From Paul.Green at stratus.com.
 	echo hppa1.1-stratus-vos
-	exit ;;
+	exit 0 ;;
     mc68*:A/UX:*:*)
 	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     news*:NEWS-OS:6*:*)
 	echo mips-sony-newsos6
-	exit ;;
+	exit 0 ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if [ -d /usr/nec ]; then
 	        echo mips-nec-sysv${UNAME_RELEASE}
 	else
 	        echo mips-unknown-sysv${UNAME_RELEASE}
 	fi
-        exit ;;
+        exit 0 ;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
 	echo powerpc-be-beos
-	exit ;;
+	exit 0 ;;
     BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
 	echo powerpc-apple-beos
-	exit ;;
+	exit 0 ;;
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
 	echo i586-pc-beos
-	exit ;;
+	exit 0 ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     SX-5:SUPER-UX:*:*)
 	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     SX-6:SUPER-UX:*:*)
 	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     Power*:Rhapsody:*:*)
 	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     *:Rhapsody:*:*)
 	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    unknown) UNAME_PROCESSOR=powerpc ;;
+	case `uname -p` in
+	    *86) UNAME_PROCESSOR=i686 ;;
+	    powerpc) UNAME_PROCESSOR=powerpc ;;
 	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
 	UNAME_PROCESSOR=`uname -p`
 	if test "$UNAME_PROCESSOR" = "x86"; then
@@ -1228,25 +1163,22 @@
 		UNAME_MACHINE=pc
 	fi
 	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     *:QNX:*:4*)
 	echo i386-pc-qnx
-	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
+	exit 0 ;;
+    NSR-[DGKLNPTVWY]:NONSTOP_KERNEL:*:*)
 	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     *:NonStop-UX:*:*)
 	echo mips-compaq-nonstopux
-	exit ;;
+	exit 0 ;;
     BS2000:POSIX*:*:*)
 	echo bs2000-siemens-sysv
-	exit ;;
+	exit 0 ;;
     DS/*:UNIX_System_V:*:*)
 	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
+	exit 0 ;;
     *:Plan9:*:*)
 	# "uname -m" is not consistent, so use $cputype instead. 386
 	# is converted to i386 for consistency with other x86
@@ -1257,47 +1189,28 @@
 	    UNAME_MACHINE="$cputype"
 	fi
 	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
+	exit 0 ;;
     *:TOPS-10:*:*)
 	echo pdp10-unknown-tops10
-	exit ;;
+	exit 0 ;;
     *:TENEX:*:*)
 	echo pdp10-unknown-tenex
-	exit ;;
+	exit 0 ;;
     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
 	echo pdp10-dec-tops20
-	exit ;;
+	exit 0 ;;
     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
 	echo pdp10-xkl-tops20
-	exit ;;
+	exit 0 ;;
     *:TOPS-20:*:*)
 	echo pdp10-unknown-tops20
-	exit ;;
+	exit 0 ;;
     *:ITS:*:*)
 	echo pdp10-unknown-its
-	exit ;;
+	exit 0 ;;
     SEI:*:*:SEIUX)
         echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
+	exit 0 ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1329,7 +1242,7 @@
 #endif
 
 #if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
+  printf ("arm-acorn-riscix"); exit (0);
 #endif
 
 #if defined (hp300) && !defined (hpux)
@@ -1418,12 +1331,11 @@
 }
 EOF
 
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
 
 # Apollos put the system type in the environment.
 
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
 
 # Convex versions that predate uname can use getsysinfo(1)
 
@@ -1432,22 +1344,22 @@
     case `getsysinfo -f cpu_type` in
     c1*)
 	echo c1-convex-bsd
-	exit ;;
+	exit 0 ;;
     c2*)
 	if getsysinfo -f scalar_acc
 	then echo c32-convex-bsd
 	else echo c2-convex-bsd
 	fi
-	exit ;;
+	exit 0 ;;
     c34*)
 	echo c34-convex-bsd
-	exit ;;
+	exit 0 ;;
     c38*)
 	echo c38-convex-bsd
-	exit ;;
+	exit 0 ;;
     c4*)
 	echo c4-convex-bsd
-	exit ;;
+	exit 0 ;;
     esac
 fi
 
@@ -1458,9 +1370,7 @@
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-and
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+    ftp://ftp.gnu.org/pub/gnu/config/
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be

Modified: libgpod/branches/upstream/current/config.sub
===================================================================
--- libgpod/branches/upstream/current/config.sub	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/config.sub	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,10 +1,9 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-#   Inc.
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
-timestamp='2006-07-02'
+timestamp='2003-08-18'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -22,15 +21,14 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
-
 # Please send patches to <config-patches at gnu.org>.  Submit a context
 # diff and a properly formatted ChangeLog entry.
 #
@@ -72,7 +70,7 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
@@ -85,11 +83,11 @@
 while test $# -gt 0 ; do
   case $1 in
     --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
+       echo "$timestamp" ; exit 0 ;;
     --version | -v )
-       echo "$version" ; exit ;;
+       echo "$version" ; exit 0 ;;
     --help | --h* | -h )
-       echo "$usage"; exit ;;
+       echo "$usage"; exit 0 ;;
     -- )     # Stop option processing
        shift; break ;;
     - )	# Use stdin as input.
@@ -101,7 +99,7 @@
     *local*)
        # First pass through any local machine types.
        echo $1
-       exit ;;
+       exit 0;;
 
     * )
        break ;;
@@ -120,9 +118,7 @@
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
+  nto-qnx* | linux-gnu* | linux-dietlibc | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
@@ -148,7 +144,7 @@
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
+	-apple | -axis)
 		os=
 		basic_machine=$1
 		;;
@@ -173,10 +169,6 @@
 	-hiux*)
 		os=-hiuxwe2
 		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
 	-sco5)
 		os=-sco3.2v5
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -193,10 +185,6 @@
 		# Don't forget version if it is 3.2v4 or newer.
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
 	-sco*)
 		os=-sco3.2v2
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -241,16 +229,14 @@
 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
 	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-	| bfin \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
 	| c4x | clipper \
 	| d10v | d30v | dlx | dsp16xx \
 	| fr30 | frv \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore \
+	| m32r | m68000 | m68k | m88k | mcore \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
@@ -259,7 +245,6 @@
 	| mips64vr4100 | mips64vr4100el \
 	| mips64vr4300 | mips64vr4300el \
 	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
 	| mipsisa32 | mipsisa32el \
 	| mipsisa32r2 | mipsisa32r2el \
 	| mipsisa64 | mipsisa64el \
@@ -268,23 +253,20 @@
 	| mipsisa64sr71k | mipsisa64sr71kel \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
-	| mt \
 	| msp430 \
-	| nios | nios2 \
 	| ns16k | ns32k \
-	| or32 \
+	| openrisc | or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
-	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu | strongarm \
+	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+	| strongarm \
 	| tahoe | thumb | tic4x | tic80 | tron \
 	| v850 | v850e \
 	| we32k \
-	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| x86 | xscale | xstormy16 | xtensa \
 	| z8k)
 		basic_machine=$basic_machine-unknown
 		;;
@@ -295,9 +277,6 @@
 		;;
 	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
 		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
 
 	# We use `pc' rather than `unknown'
 	# because (1) that's what they normally are, and
@@ -317,10 +296,10 @@
 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| bfin-* | bs2000-* \
+	| avr-* \
+	| bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | craynv-* | cydra-* \
+	| clipper-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
@@ -328,9 +307,9 @@
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
-	| m32c-* | m32r-* | m32rle-* \
+	| m32r-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| m88110-* | m88k-* | mcore-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
@@ -339,7 +318,6 @@
 	| mips64vr4100-* | mips64vr4100el-* \
 	| mips64vr4300-* | mips64vr4300el-* \
 	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
 	| mipsisa32-* | mipsisa32el-* \
 	| mipsisa32r2-* | mipsisa32r2el-* \
 	| mipsisa64-* | mipsisa64el-* \
@@ -347,28 +325,24 @@
 	| mipsisa64sb1-* | mipsisa64sb1el-* \
 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
 	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
 	| msp430-* \
-	| nios-* | nios2-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
+	| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
 	| pyramid-* \
 	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
 	| tahoe-* | thumb-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
 	| tron-* \
 	| v850-* | v850e-* | vax-* \
 	| we32k-* \
-	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
-	| xstormy16-* | xtensa-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+	| xtensa-* \
 	| ymp-* \
 	| z8k-*)
 		;;
@@ -388,9 +362,6 @@
 		basic_machine=a29k-amd
 		os=-udi
 		;;
-    	abacus)
-		basic_machine=abacus-unknown
-		;;
 	adobe68k)
 		basic_machine=m68010-adobe
 		os=-scout
@@ -408,9 +379,6 @@
 	amd64)
 		basic_machine=x86_64-pc
 		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
 	amdahl)
 		basic_machine=580-amdahl
 		os=-sysv
@@ -470,27 +438,12 @@
 		basic_machine=j90-cray
 		os=-unicos
 		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16c)
-		basic_machine=cr16c-unknown
-		os=-elf
-		;;
 	crds | unos)
 		basic_machine=m68k-crds
 		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
 	cris | cris-* | etrax*)
 		basic_machine=cris-axis
 		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
 	da30 | da30-*)
 		basic_machine=m68k-da30
 		;;
@@ -513,10 +466,6 @@
 		basic_machine=m88k-motorola
 		os=-sysv3
 		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
 	dpx20 | dpx20-*)
 		basic_machine=rs6000-bull
 		os=-bosx
@@ -695,6 +644,10 @@
 	mips3*)
 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
 		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
 	monitor)
 		basic_machine=m68k-rom68k
 		os=-coff
@@ -707,9 +660,6 @@
 		basic_machine=i386-pc
 		os=-msdos
 		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
 	mvs)
 		basic_machine=i370-ibm
 		os=-mvs
@@ -778,6 +728,10 @@
 	np1)
 		basic_machine=np1-gould
 		;;
+	nv1)
+		basic_machine=nv1-cray
+		os=-unicosmp
+		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
@@ -785,13 +739,10 @@
 		basic_machine=hppa1.1-oki
 		os=-proelf
 		;;
-	openrisc | openrisc-*)
+	or32 | or32-*)
 		basic_machine=or32-unknown
+		os=-coff
 		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
 	OSE68000 | ose68000)
 		basic_machine=m68000-ericsson
 		os=-ose
@@ -817,12 +768,6 @@
 	pc532 | pc532-*)
 		basic_machine=ns32k-pc532
 		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
 	pentium | p5 | k5 | k6 | nexgen | viac3)
 		basic_machine=i586-pc
 		;;
@@ -879,10 +824,6 @@
 		basic_machine=i586-unknown
 		os=-pw32
 		;;
-	rdos)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
 	rom68k)
 		basic_machine=m68k-rom68k
 		os=-coff
@@ -1022,10 +963,6 @@
 	tower | tower-32)
 		basic_machine=m68k-ncr
 		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
 	udi29k)
 		basic_machine=a29k-amd
 		os=-udi
@@ -1069,10 +1006,6 @@
 		basic_machine=hppa1.1-winbond
 		os=-proelf
 		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
 	xps | xps100)
 		basic_machine=xps100-honeywell
 		;;
@@ -1103,9 +1036,6 @@
 	romp)
 		basic_machine=romp-ibm
 		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
 	rs6000)
 		basic_machine=rs6000-ibm
 		;;
@@ -1122,10 +1052,13 @@
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparc | sparcv9 | sparcv9b)
 		basic_machine=sparc-sun
 		;;
 	cydra)
@@ -1198,23 +1131,19 @@
 	      | -aos* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
+	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* \
 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers*)
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1232,7 +1161,7 @@
 		os=`echo $os | sed -e 's|nto|nto-qnx|'`
 		;;
 	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
 	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
 		;;
 	-mac*)
@@ -1253,9 +1182,6 @@
 	-opened*)
 		os=-openedition
 		;;
-        -os400*)
-		os=-os400
-		;;
 	-wince*)
 		os=-wince
 		;;
@@ -1277,9 +1203,6 @@
 	-atheos*)
 		os=-atheos
 		;;
-	-syllable*)
-		os=-syllable
-		;;
 	-386bsd)
 		os=-bsd
 		;;
@@ -1302,9 +1225,6 @@
 	-sinix*)
 		os=-sysv4
 		;;
-        -tpf*)
-		os=-tpf
-		;;
 	-triton*)
 		os=-sysv3
 		;;
@@ -1341,9 +1261,6 @@
 	-kaos*)
 		os=-kaos
 		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
 	-none)
 		;;
 	*)
@@ -1366,9 +1283,6 @@
 # system, and we'll never get to this point.
 
 case $basic_machine in
-        spu-*)
-		os=-elf
-		;;
 	*-acorn)
 		os=-riscix1.2
 		;;
@@ -1378,9 +1292,9 @@
 	arm*-semi)
 		os=-aout
 		;;
-        c4x-* | tic4x-*)
-        	os=-coff
-		;;
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
 	# This must come before the *-dec entry.
 	pdp10-*)
 		os=-tops20
@@ -1424,15 +1338,9 @@
 	*-be)
 		os=-beos
 		;;
-	*-haiku)
-		os=-haiku
-		;;
 	*-ibm)
 		os=-aix
 		;;
-    	*-knuth)
-		os=-mmixware
-		;;
 	*-wec)
 		os=-proelf
 		;;
@@ -1565,15 +1473,9 @@
 			-mvs* | -opened*)
 				vendor=ibm
 				;;
-			-os400*)
-				vendor=ibm
-				;;
 			-ptx*)
 				vendor=sequent
 				;;
-			-tpf*)
-				vendor=ibm
-				;;
 			-vxsim* | -vxworks* | -windiss*)
 				vendor=wrs
 				;;
@@ -1598,7 +1500,7 @@
 esac
 
 echo $basic_machine$os
-exit
+exit 0
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)

Modified: libgpod/branches/upstream/current/configure
===================================================================
--- libgpod/branches/upstream/current/configure	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/configure	2007-06-27 21:44:37 UTC (rev 198)
@@ -818,16 +818,13 @@
 AUTOMAKE
 AUTOHEADER
 MAKEINFO
+AMTAR
 install_sh
 STRIP
 INSTALL_STRIP_PROGRAM
-mkdir_p
 AWK
 SET_MAKE
 am__leading_dot
-AMTAR
-am__tar
-am__untar
 ACLOCAL_AMFLAGS
 MAINTAINER_MODE_TRUE
 MAINTAINER_MODE_FALSE
@@ -854,6 +851,7 @@
 CXXDEPMODE
 am__fastdepCXX_TRUE
 am__fastdepCXX_FALSE
+SED
 build
 build_cpu
 build_vendor
@@ -916,6 +914,7 @@
 GETTEXT_PACKAGE
 USE_NLS
 MSGFMT
+MSGFMT_OPTS
 GMSGFMT
 XGETTEXT
 CATALOGS
@@ -1550,10 +1549,10 @@
 Optional Features:
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-maintainer-mode  enable make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-maintainer-mode enable make rules and dependencies not useful
+                          (and sometimes confusing) to the casual installer
+  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors
   --enable-shared[=PKGS]  build shared libraries [default=yes]
   --enable-static[=PKGS]  build static libraries [default=yes]
   --enable-fast-install[=PKGS]
@@ -2033,7 +2032,7 @@
 #   LIBGPOD_SO_VERSION - see comments
 #
 LIBGPOD_MAJOR_VERSION=0
-LIBGPOD_MINOR_VERSION=4
+LIBGPOD_MINOR_VERSION=5
 LIBGPOD_MICRO_VERSION=2
 # If you need a modifier for the version number.
 # Normally empty, but can be used to make "fixup" releases.
@@ -2046,12 +2045,12 @@
 #                 changes to the signature and the semantic)
 #  ? :+1 : ?   == just internal changes
 # CURRENT : REVISION : AGE
-LIBGPOD_SO_VERSION=1:0:0
+LIBGPOD_SO_VERSION=2:0:0
 
 
 
 
-am__api_version="1.9"
+am__api_version="1.7"
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
   if test -f "$ac_dir/install-sh"; then
@@ -2221,6 +2220,7 @@
 program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
 rm -f conftest.sed
 
+
 # expand $ac_aux_dir to an absolute path
 am_aux_dir=`cd $ac_aux_dir && pwd`
 
@@ -2234,39 +2234,6 @@
 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # We used to keeping the `.' as first argument, in order to
-  # allow $(mkdir_p) to be used without argument.  As in
-  #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.  However this is wrong
-  # for two reasons:
-  #  1. if the package is installed by a user who cannot write `.'
-  #     make install will fail,
-  #  2. the above comment should most certainly read
-  #     $(mkdir_p) $(DESTDIR)$(somedir)
-  #     so it does not work when $(somedir) is undefined and
-  #     $(DESTDIR) is not.
-  #  To support the latter case, we have to write
-  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
-  #  so the `.' trick is pointless.
-  mkdir_p='mkdir -p --'
-else
-  # On NextStep and OpenStep, the `mkdir' command does not
-  # recognize any option.  It will interpret all options as
-  # directories to create, and then abort because `.' already
-  # exists.
-  for d in ./-p ./--version;
-  do
-    test -d $d && rmdir $d
-  done
-  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-  if test -f "$ac_aux_dir/mkinstalldirs"; then
-    mkdir_p='$(mkinstalldirs)'
-  else
-    mkdir_p='$(install_sh) -d'
-  fi
-fi
-
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -2348,7 +2315,7 @@
 fi
 rmdir .tst 2>/dev/null
 
-# test to see if srcdir already configured
+ # test to see if srcdir already configured
 if test "`cd $srcdir && pwd`" != "`pwd`" &&
    test -f $srcdir/config.status; then
   { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
@@ -2396,6 +2363,9 @@
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
 install_sh=${install_sh-"$am_aux_dir/install-sh"}
 
 # Installed binaries are usually stripped using `strip' when the user
@@ -2504,17 +2474,10 @@
 
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
 
-AMTAR=${AMTAR-"${am_missing_run}tar"}
 
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
 
 
-
-
-
-
 ACLOCAL_AMFLAGS="$ACLOCAL_FLAGS"
 
 
@@ -3574,9 +3537,7 @@
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      : > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
@@ -3604,14 +3565,9 @@
        grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
         am_cv_CC_dependencies_compiler_type=$depmode
         break
       fi
@@ -4051,9 +4007,7 @@
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      : > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
@@ -4081,14 +4035,9 @@
        grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
         am_cv_CXX_dependencies_compiler_type=$depmode
         break
       fi
@@ -4140,6 +4089,7 @@
     done
   done
 done
+IFS=$as_save_IFS
 lt_ac_max=0
 lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -4174,6 +4124,7 @@
 fi
 
 SED=$lt_cv_path_SED
+
 { echo "$as_me:$LINENO: result: $SED" >&5
 echo "${ECHO_T}$SED" >&6; }
 
@@ -5227,7 +5178,7 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-freebsd* | dragonfly*)
+freebsd* | kfreebsd*-gnu | dragonfly*)
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
     case $host_cpu in
     i*86 )
@@ -5281,11 +5232,11 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd* | netbsdelf*-gnu)
+netbsd*)
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
   else
@@ -5401,7 +5352,7 @@
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5404 "configure"' > conftest.$ac_ext
+  echo '#line 5355 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -6444,7 +6395,7 @@
   lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
   lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
   ;;
-linux* | k*bsd*-gnu)
+linux*)
   if test "$host_cpu" = ia64; then
     symcode='[ABCDGIRSTW]'
     lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
@@ -7250,11 +7201,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7253: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7204: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7257: \$? = $ac_status" >&5
+   echo "$as_me:7208: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7412,7 +7363,7 @@
       lt_prog_compiler_static='-Bstatic'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux*)
       case $cc_basename in
       icc* | ecc*)
 	lt_prog_compiler_wl='-Wl,'
@@ -7518,11 +7469,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7521: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7472: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7525: \$? = $ac_status" >&5
+   echo "$as_me:7476: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7622,11 +7573,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7625: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7576: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7629: \$? = $ac_status" >&5
+   echo "$as_me:7580: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -7851,7 +7802,7 @@
       archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux*)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
 	tmp_addflag=
 	case $cc_basename,$host_cpu in
@@ -7877,13 +7828,12 @@
   $echo "local: *; };" >> $output_objdir/$libname.ver~
 	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
 	fi
-	link_all_deplibs=no
       else
 	ld_shlibs=no
       fi
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -8311,7 +8261,7 @@
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
+    freebsd* | kfreebsd*-gnu | dragonfly*)
       archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
       hardcode_libdir_flag_spec='-R$libdir'
       hardcode_direct=yes
@@ -8413,7 +8363,7 @@
       link_all_deplibs=yes
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -8903,6 +8853,18 @@
   dynamic_linker=no
   ;;
 
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -9058,7 +9020,7 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -9072,10 +9034,31 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 9041 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/^	 *//;s/#.*//;/^[^\/]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -9087,7 +9070,7 @@
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
-netbsdelf*-gnu)
+knetbsd*-gnu)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -9096,7 +9079,7 @@
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
+  dynamic_linker='GNU ld.so'
   ;;
 
 netbsd*)
@@ -9919,7 +9902,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9922 "configure"
+#line 9905 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10019,7 +10002,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10022 "configure"
+#line 10005 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11332,7 +11315,7 @@
   freebsd-elf*)
     archive_cmds_need_lc_CXX=no
     ;;
-  freebsd* | dragonfly*)
+  freebsd* | kfreebsd*-gnu | dragonfly*)
     # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
     # conventions
     ld_shlibs_CXX=yes
@@ -11491,7 +11474,7 @@
     hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
     hardcode_libdir_separator_CXX=:
     ;;
-  linux* | k*bsd*-gnu)
+  linux*)
     case $cc_basename in
       KCC*)
 	# Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -11593,7 +11576,7 @@
 	;;
     esac
     ;;
-  netbsd* | netbsdelf*-gnu)
+  netbsd*)
     if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
       archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
       wlarc=
@@ -12160,7 +12143,7 @@
 	    ;;
 	esac
 	;;
-      freebsd* | dragonfly*)
+      freebsd* | kfreebsd*-gnu | dragonfly*)
 	# FreeBSD uses GNU C++
 	;;
       hpux9* | hpux10* | hpux11*)
@@ -12203,7 +12186,7 @@
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu)
+      linux*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -12246,7 +12229,7 @@
 	    ;;
 	esac
 	;;
-      netbsd* | netbsdelf*-gnu)
+      netbsd*)
 	;;
       osf3* | osf4* | osf5*)
 	case $cc_basename in
@@ -12355,11 +12338,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12358: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12341: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:12362: \$? = $ac_status" >&5
+   echo "$as_me:12345: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -12459,11 +12442,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12462: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12445: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:12466: \$? = $ac_status" >&5
+   echo "$as_me:12449: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -12531,9 +12514,6 @@
   cygwin* | mingw*)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
-  linux* | k*bsd*-gnu)
-    link_all_deplibs_CXX=no
-  ;;
   *)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
@@ -12813,6 +12793,18 @@
   dynamic_linker=no
   ;;
 
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -12968,7 +12960,7 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -12982,10 +12974,31 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 12981 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/^	 *//;s/#.*//;/^[^\/]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -12997,7 +13010,7 @@
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
-netbsdelf*-gnu)
+knetbsd*-gnu)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -13006,7 +13019,7 @@
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
+  dynamic_linker='GNU ld.so'
   ;;
 
 netbsd*)
@@ -13914,7 +13927,7 @@
       lt_prog_compiler_static_F77='-Bstatic'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux*)
       case $cc_basename in
       icc* | ecc*)
 	lt_prog_compiler_wl_F77='-Wl,'
@@ -14020,11 +14033,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14023: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14036: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14027: \$? = $ac_status" >&5
+   echo "$as_me:14040: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -14124,11 +14137,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14127: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14140: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14131: \$? = $ac_status" >&5
+   echo "$as_me:14144: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14353,7 +14366,7 @@
       archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux*)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
 	tmp_addflag=
 	case $cc_basename,$host_cpu in
@@ -14379,13 +14392,12 @@
   $echo "local: *; };" >> $output_objdir/$libname.ver~
 	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
 	fi
-	link_all_deplibs_F77=no
       else
 	ld_shlibs_F77=no
       fi
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
 	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -14793,7 +14805,7 @@
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
+    freebsd* | kfreebsd*-gnu | dragonfly*)
       archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
       hardcode_libdir_flag_spec_F77='-R$libdir'
       hardcode_direct_F77=yes
@@ -14895,7 +14907,7 @@
       link_all_deplibs_F77=yes
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
 	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -15385,6 +15397,18 @@
   dynamic_linker=no
   ;;
 
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -15540,7 +15564,7 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -15554,10 +15578,31 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 15585 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/^	 *//;s/#.*//;/^[^\/]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -15569,7 +15614,7 @@
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
-netbsdelf*-gnu)
+knetbsd*-gnu)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -15578,7 +15623,7 @@
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
+  dynamic_linker='GNU ld.so'
   ;;
 
 netbsd*)
@@ -16311,11 +16356,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16314: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16359: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16318: \$? = $ac_status" >&5
+   echo "$as_me:16363: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16473,7 +16518,7 @@
       lt_prog_compiler_static_GCJ='-Bstatic'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux*)
       case $cc_basename in
       icc* | ecc*)
 	lt_prog_compiler_wl_GCJ='-Wl,'
@@ -16579,11 +16624,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16582: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16627: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16586: \$? = $ac_status" >&5
+   echo "$as_me:16631: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16683,11 +16728,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16686: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16731: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:16690: \$? = $ac_status" >&5
+   echo "$as_me:16735: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -16912,7 +16957,7 @@
       archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux*)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
 	tmp_addflag=
 	case $cc_basename,$host_cpu in
@@ -16938,13 +16983,12 @@
   $echo "local: *; };" >> $output_objdir/$libname.ver~
 	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
 	fi
-	link_all_deplibs_GCJ=no
       else
 	ld_shlibs_GCJ=no
       fi
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
 	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -17372,7 +17416,7 @@
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
+    freebsd* | kfreebsd*-gnu | dragonfly*)
       archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
       hardcode_libdir_flag_spec_GCJ='-R$libdir'
       hardcode_direct_GCJ=yes
@@ -17474,7 +17518,7 @@
       link_all_deplibs_GCJ=yes
       ;;
 
-    netbsd* | netbsdelf*-gnu)
+    netbsd*)
       if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
 	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -17964,6 +18008,18 @@
   dynamic_linker=no
   ;;
 
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -18119,7 +18175,7 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -18133,10 +18189,31 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 18196 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/^	 *//;s/#.*//;/^[^\/]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -18148,7 +18225,7 @@
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
-netbsdelf*-gnu)
+knetbsd*-gnu)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -18157,7 +18234,7 @@
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
+  dynamic_linker='GNU ld.so'
   ;;
 
 netbsd*)
@@ -20566,7 +20643,7 @@
 
     fi
   fi
-     USE_NLS=yes
+         USE_NLS=yes
 
 
     gt_cv_have_gettext=no
@@ -21521,6 +21598,35 @@
 fi
 done
 
+	  MSGFMT_OPTS=
+	  { echo "$as_me:$LINENO: checking if msgfmt accepts -c" >&5
+echo $ECHO_N "checking if msgfmt accepts -c... $ECHO_C" >&6; }
+	  cat >conftest.foo <<_ACEOF
+
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo at bar.xx>\n"
+"Language-Team: C <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+_ACEOF
+if { (echo "$as_me:$LINENO: msgfmt -c -o /dev/null conftest.foo") >&5
+  (msgfmt -c -o /dev/null conftest.foo) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  MSGFMT_OPTS=-c; { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+echo "$as_me: failed input was:" >&5
+sed 's/^/| /' conftest.foo >&5
+fi
+
 	  # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 { echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -21966,7 +22072,7 @@
 
 
 PYTHON_MIN_VERSION=2.1.1
-PYTHON_EYED3_MIN_VERSION=0.6.6
+PYTHON_MUTAGEN_MIN_VERSION=1.8
 SWIG_MIN_VERSION=1.3.24
 
         am_display_PYTHON=python
@@ -22064,7 +22170,6 @@
    { (exit 1); exit 1; }; }
 fi
 
-      am_display_PYTHON=$PYTHON
     else
       # Otherwise, try each interpreter until we find one that satisfies
       # VERSION.
@@ -22074,9 +22179,13 @@
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-	for am_cv_pathless_PYTHON in python python2 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  prog="import sys, string
+	for am_cv_pathless_PYTHON in python python2 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 : ; do
+          if test "$am_cv_pathless_PYTHON" = : ; then
+            { { echo "$as_me:$LINENO: error: no suitable Python interpreter found" >&5
+echo "$as_me: error: no suitable Python interpreter found" >&2;}
+   { (exit 1); exit 1; }; }
+	  fi
+          prog="import sys, string
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
 minver = map(int, string.split('$PYTHON_MIN_VERSION', '.')) + [0, 0, 0]
@@ -22091,15 +22200,12 @@
   break
 fi
 
-	done
+        done
 fi
 { echo "$as_me:$LINENO: result: $am_cv_pathless_PYTHON" >&5
 echo "${ECHO_T}$am_cv_pathless_PYTHON" >&6; }
       # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
+      # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
 set dummy $am_cv_pathless_PYTHON; ac_word=$2
 { echo "$as_me:$LINENO: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
@@ -22139,18 +22245,11 @@
 fi
 
 
-      fi
       am_display_PYTHON=$am_cv_pathless_PYTHON
     fi
 
 
-  if test "$PYTHON" = :; then
-      { { echo "$as_me:$LINENO: error: no suitable Python interpreter found" >&5
-echo "$as_me: error: no suitable Python interpreter found" >&2;}
-   { (exit 1); exit 1; }; }
-  else
 
-
   { echo "$as_me:$LINENO: checking for $am_display_PYTHON version" >&5
 echo $ECHO_N "checking for $am_display_PYTHON version... $ECHO_C" >&6; }
 if test "${am_cv_python_version+set}" = set; then
@@ -22219,10 +22318,6 @@
 
 
 
-  fi
-
-
-
 { echo "$as_me:$LINENO: checking for python development headers" >&5
 echo $ECHO_N "checking for python development headers... $ECHO_C" >&6; }
 py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
@@ -22288,21 +22383,24 @@
 
 
 
-py_mod_var=`echo eyeD3`
-{ echo "$as_me:$LINENO: checking for python module eyeD3 >= $PYTHON_EYED3_MIN_VERSION" >&5
-echo $ECHO_N "checking for python module eyeD3 >= $PYTHON_EYED3_MIN_VERSION... $ECHO_C" >&6; }
+py_mod_var=`echo mutagen`
+{ echo "$as_me:$LINENO: checking for python module mutagen >= $PYTHON_MUTAGEN_MIN_VERSION" >&5
+echo $ECHO_N "checking for python module mutagen >= $PYTHON_MUTAGEN_MIN_VERSION... $ECHO_C" >&6; }
 if { as_var=py_cv_mod_$py_mod_var; eval "test \"\${$as_var+set}\" = set"; }; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 prog="
-import sys, string, eyeD3
-curverstr = eyeD3.eyeD3Version
+import sys, string, mutagen
+curverstr = mutagen.version_string
 # use method from AM_PYTHON_CHECK_VERSION
-minver = map(int, string.split('$PYTHON_EYED3_MIN_VERSION', '.')) + [0, 0, 0]
+minver = map(int, string.split('$PYTHON_MUTAGEN_MIN_VERSION', '.'))
+length = len(minver)
+minver += [0, 0, 0]
 minverhex = 0
 for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i]
-curver = map(int, string.split(curverstr, '.')) + [0, 0, 0]
+curver = map(int, string.split(curverstr, '.')[:length])
+curver += [0, 0, 0]
 curverhex = 0
 for i in xrange(0, 4): curverhex = (curverhex << 8) + curver[i]
 if (curverhex >= minverhex):
@@ -22463,7 +22561,7 @@
   enableval=$enable_more_warnings; set_more_warnings="$enableval"
 else
 
-if test -d "$srcdir/{arch}" || test -d "$srcdir/CVS"; then
+if test -d "$srcdir/{arch}" || test -d "$srcdir/.svn"; then
 	set_more_warnings=yes
 else
 	set_more_warnings=no
@@ -22550,7 +22648,7 @@
 
 
 
-ac_config_files="$ac_config_files Makefile bindings/Makefile bindings/python/gpod.i bindings/python/Makefile bindings/python/examples/Makefile docs/Makefile docs/reference/Makefile docs/reference/version.xml m4/Makefile po/Makefile.in src/Makefile tests/Makefile libgpod-1.0.pc"
+ac_config_files="$ac_config_files Makefile bindings/Makefile bindings/python/gpod.i bindings/python/Makefile bindings/python/examples/Makefile bindings/python/tests/Makefile docs/Makefile docs/reference/Makefile docs/reference/version.xml m4/Makefile po/Makefile.in src/Makefile tests/Makefile libgpod-1.0.pc"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -23196,6 +23294,7 @@
     "bindings/python/gpod.i") CONFIG_FILES="$CONFIG_FILES bindings/python/gpod.i" ;;
     "bindings/python/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/python/Makefile" ;;
     "bindings/python/examples/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/python/examples/Makefile" ;;
+    "bindings/python/tests/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/python/tests/Makefile" ;;
     "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "docs/reference/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;;
     "docs/reference/version.xml") CONFIG_FILES="$CONFIG_FILES docs/reference/version.xml" ;;
@@ -23317,16 +23416,13 @@
 AUTOMAKE!$AUTOMAKE$ac_delim
 AUTOHEADER!$AUTOHEADER$ac_delim
 MAKEINFO!$MAKEINFO$ac_delim
+AMTAR!$AMTAR$ac_delim
 install_sh!$install_sh$ac_delim
 STRIP!$STRIP$ac_delim
 INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
-mkdir_p!$mkdir_p$ac_delim
 AWK!$AWK$ac_delim
 SET_MAKE!$SET_MAKE$ac_delim
 am__leading_dot!$am__leading_dot$ac_delim
-AMTAR!$AMTAR$ac_delim
-am__tar!$am__tar$ac_delim
-am__untar!$am__untar$ac_delim
 ACLOCAL_AMFLAGS!$ACLOCAL_AMFLAGS$ac_delim
 MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
 MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
@@ -23353,6 +23449,7 @@
 CXXDEPMODE!$CXXDEPMODE$ac_delim
 am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
 am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
+SED!$SED$ac_delim
 build!$build$ac_delim
 build_cpu!$build_cpu$ac_delim
 build_vendor!$build_vendor$ac_delim
@@ -23364,6 +23461,8 @@
 GREP!$GREP$ac_delim
 EGREP!$EGREP$ac_delim
 CPP!$CPP$ac_delim
+LN_S!$LN_S$ac_delim
+ECHO!$ECHO$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -23405,8 +23504,6 @@
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
-LN_S!$LN_S$ac_delim
-ECHO!$ECHO$ac_delim
 AR!$AR$ac_delim
 RANLIB!$RANLIB$ac_delim
 CXXCPP!$CXXCPP$ac_delim
@@ -23456,6 +23553,7 @@
 GETTEXT_PACKAGE!$GETTEXT_PACKAGE$ac_delim
 USE_NLS!$USE_NLS$ac_delim
 MSGFMT!$MSGFMT$ac_delim
+MSGFMT_OPTS!$MSGFMT_OPTS$ac_delim
 GMSGFMT!$GMSGFMT$ac_delim
 XGETTEXT!$XGETTEXT$ac_delim
 CATALOGS!$CATALOGS$ac_delim
@@ -23492,7 +23590,7 @@
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 85; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 84; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
@@ -23964,21 +24062,27 @@
   else
     continue
   fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
   test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
   # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-  # simplest approach to changing $(DEPDIR) to its actual value in the
-  # expansion.
-  for file in `sed -n "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+	s/\\\\$//
+	p
+	n
+	/\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
     # Make sure the directory exists.
     test -f "$dirpart/$file" && continue

Modified: libgpod/branches/upstream/current/configure.ac
===================================================================
--- libgpod/branches/upstream/current/configure.ac	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/configure.ac	2007-06-27 21:44:37 UTC (rev 198)
@@ -10,7 +10,7 @@
 #   LIBGPOD_SO_VERSION - see comments
 #
 LIBGPOD_MAJOR_VERSION=0
-LIBGPOD_MINOR_VERSION=4
+LIBGPOD_MINOR_VERSION=5
 LIBGPOD_MICRO_VERSION=2
 # If you need a modifier for the version number. 
 # Normally empty, but can be used to make "fixup" releases.
@@ -24,7 +24,7 @@
 #                 changes to the signature and the semantic)
 #  ? :+1 : ?   == just internal changes
 # CURRENT : REVISION : AGE
-LIBGPOD_SO_VERSION=1:0:0
+LIBGPOD_SO_VERSION=2:0:0
 
 AC_SUBST(LIBGPOD_SO_VERSION)
 AC_SUBST(LIBGPOD_VERSION)
@@ -111,7 +111,7 @@
 dnl **************************************************
 
 PYTHON_MIN_VERSION=2.1.1
-PYTHON_EYED3_MIN_VERSION=0.6.6
+PYTHON_MUTAGEN_MIN_VERSION=1.8
 SWIG_MIN_VERSION=1.3.24
 LIBGPOD_CHECK_PYTHON($PYTHON_MIN_VERSION)
 
@@ -122,7 +122,7 @@
 AC_ARG_ENABLE(more-warnings,
 [  --enable-more-warnings  Maximum compiler warnings],
 set_more_warnings="$enableval",[
-if test -d "$srcdir/{arch}" || test -d "$srcdir/CVS"; then
+if test -d "$srcdir/{arch}" || test -d "$srcdir/.svn"; then
 	set_more_warnings=yes
 else
 	set_more_warnings=no
@@ -170,6 +170,7 @@
 bindings/python/gpod.i
 bindings/python/Makefile
 bindings/python/examples/Makefile
+bindings/python/tests/Makefile
 docs/Makefile
 docs/reference/Makefile
 docs/reference/version.xml

Modified: libgpod/branches/upstream/current/depcomp
===================================================================
--- libgpod/branches/upstream/current/depcomp	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/depcomp	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,10 +1,8 @@
 #! /bin/sh
+
 # depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
 
-scriptversion=2005-07-09.11
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2, or (at your option)
@@ -17,8 +15,8 @@
 
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -27,45 +25,22 @@
 
 # Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
 
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
 fi
+# `libtool' can also be set to `yes' or `no'.
 
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+if test -z "$depfile"; then
+   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+   dir=`echo "$object" | sed 's,/.*$,/,'`
+   if test "$dir" = "$object"; then
+      dir=
+   fi
+   # FIXME: should be _deps on DOS.
+   depfile="$dir.deps/$base"
+fi
+
 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
 rm -f "$tmpdepfile"
@@ -287,43 +262,27 @@
    base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
    if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mecanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir.libs/$base.d"
       "$@" -Wc,-MD
    else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
       "$@" -MD
    fi
 
    stat=$?
    if test $stat -eq 0; then :
    else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      rm -f "$tmpdepfile1" "$tmpdepfile2"
       exit $stat
    fi
 
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   else
+      tmpdepfile="$tmpdepfile2"
+   fi
    if test -f "$tmpdepfile"; then
       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
       # That's a tab and a space in the [].
@@ -467,8 +426,7 @@
   done
 
   "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
     sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
@@ -519,12 +477,3 @@
 esac
 
 exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:

Modified: libgpod/branches/upstream/current/docs/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/docs/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -13,6 +13,7 @@
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -20,6 +21,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = ..
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -33,31 +35,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
-subdir = docs
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -157,6 +135,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -178,6 +157,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -198,8 +178,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -225,7 +203,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -240,39 +217,29 @@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 SUBDIRS = reference
+subdir = docs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+DIST_SUBDIRS = $(SUBDIRS)
 all: all-recursive
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  docs/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  docs/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
 
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -290,13 +257,7 @@
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@set fnord $$MAKEFLAGS; amf=$$2; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -308,7 +269,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -316,13 +277,7 @@
 
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@set fnord $$MAKEFLAGS; amf=$$2; \
 	dot_seen=no; \
 	case "$@" in \
 	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -343,7 +298,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -354,6 +309,14 @@
 	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -362,22 +325,19 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	mkid -fID $$unique
-tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
-	  empty_fix=.; \
 	else \
 	  include_option=--include; \
-	  empty_fix=; \
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
+	    test -f $$subdir/TAGS && \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -387,11 +347,10 @@
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -414,7 +373,11 @@
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -427,7 +390,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -442,17 +405,15 @@
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -462,6 +423,7 @@
 all-am: Makefile
 installdirs: installdirs-recursive
 installdirs-am:
+
 install: install-recursive
 install-exec: install-exec-recursive
 install-data: install-data-recursive
@@ -481,7 +443,7 @@
 clean-generic:
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -499,8 +461,6 @@
 
 dvi-am:
 
-html: html-recursive
-
 info: info-recursive
 
 info-am:
@@ -535,18 +495,22 @@
 
 uninstall-info: uninstall-info-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-generic clean-libtool clean-recursive ctags \
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-recursive ctags \
 	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-exec install-exec-am install-info \
-	install-info-am install-man install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic maintainer-clean-recursive \
-	mostlyclean mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am uninstall-info-am
+	distclean-recursive distclean-tags distdir dvi dvi-am \
+	dvi-recursive info info-am info-recursive install install-am \
+	install-data install-data-am install-data-recursive \
+	install-exec install-exec-am install-exec-recursive \
+	install-info install-info-am install-info-recursive install-man \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+	pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-recursive
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.

Modified: libgpod/branches/upstream/current/docs/reference/Makefile.am
===================================================================
--- libgpod/branches/upstream/current/docs/reference/Makefile.am	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/Makefile.am	2007-06-27 21:44:37 UTC (rev 198)
@@ -25,7 +25,7 @@
 
 # Extra options to supply to gtkdoc-scan.
 # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" 
-SCAN_OPTIONS=
+SCAN_OPTIONS=--deprecated-guards="LIBGPOD_DISABLE_DEPRECATED"
 
 # Extra options to supply to gtkdoc-mkdb.
 # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
@@ -75,3 +75,7 @@
 
 # Other files to distribute
 EXTRA_DIST += version.xml.in
+
+# Build the documentation when creating tarballs
+dist-hook-local:
+	$(MAKE) all

Modified: libgpod/branches/upstream/current/docs/reference/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/docs/reference/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -19,6 +19,7 @@
 ####################################
 # Everything below here is generic #
 ####################################
+
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -26,6 +27,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = ../..
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -39,23 +41,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/version.xml.in $(top_srcdir)/gtk-doc.make
-subdir = docs/reference
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = version.xml
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -155,6 +141,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -176,6 +163,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -196,8 +184,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -223,7 +209,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -263,7 +248,7 @@
 
 # Extra options to supply to gtkdoc-scan.
 # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" 
-SCAN_OPTIONS = 
+SCAN_OPTIONS = --deprecated-guards="LIBGPOD_DISABLE_DEPRECATED"
 
 # Extra options to supply to gtkdoc-mkdb.
 # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
@@ -308,6 +293,7 @@
 INCLUDES = 
 GTKDOC_LIBS = 
 @GTK_DOC_USE_LIBTOOL_FALSE at GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+
 @GTK_DOC_USE_LIBTOOL_TRUE at GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
 @GTK_DOC_USE_LIBTOOL_FALSE at GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
 @GTK_DOC_USE_LIBTOOL_TRUE at GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
@@ -318,17 +304,25 @@
 # searched for in VPATH/GPATH.
 #
 GPATH = $(srcdir)
+
 TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
 
+
 # This includes the standard gtk-doc make rules, copied by gtkdocize.
 
 # Other files to distribute
-EXTRA_DIST = $(content_files) $(HTML_IMAGES) $(DOC_MAIN_SGML_FILE) \
-	$(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt \
-	version.xml.in
+EXTRA_DIST = \
+	$(content_files)		\
+	$(HTML_IMAGES)			\
+	$(DOC_MAIN_SGML_FILE)		\
+	$(DOC_MODULE)-sections.txt	\
+	$(DOC_MODULE)-overrides.txt\
+version.xml.in
+
 DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
 	   $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
 
+
 SCANOBJ_FILES = \
 	$(DOC_MODULE).args 	 \
 	$(DOC_MODULE).hierarchy  \
@@ -336,40 +330,25 @@
 	$(DOC_MODULE).prerequisites \
 	$(DOC_MODULE).signals
 
+
 CLEANFILES = $(SCANOBJ_FILES) $(DOC_MODULE)-unused.txt $(DOC_STAMPS)
+subdir = docs/reference
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = version.xml
+DIST_SOURCES =
+DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/gtk-doc.make \
+	Makefile.am version.xml.in
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  docs/reference/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/gtk-doc.make $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  docs/reference/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+version.xml: $(top_builddir)/config.status version.xml.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 mostlyclean-libtool:
@@ -387,9 +366,13 @@
 ctags: CTAGS
 CTAGS:
 
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
 distdir: $(DISTFILES)
-	$(mkdir_p) $(distdir)/../..
+	$(mkinstalldirs) $(distdir)/../..
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
 	list='$(DISTFILES)'; for file in $$list; do \
@@ -401,7 +384,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -422,6 +405,7 @@
 check-am: all-am
 check: check-am
 all-am: Makefile all-local
+
 installdirs:
 install: install-am
 install-exec: install-exec-am
@@ -443,7 +427,7 @@
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -460,8 +444,6 @@
 
 dvi-am:
 
-html: html-am
-
 info: info-am
 
 info-am:
@@ -496,13 +478,12 @@
 uninstall-am: uninstall-info-am uninstall-local
 
 .PHONY: all all-am all-local check check-am clean clean-generic \
-	clean-libtool clean-local dist-hook distclean \
-	distclean-generic distclean-libtool distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-data-local install-exec \
-	install-exec-am install-info install-info-am install-man \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic \
+	clean-libtool clean-local distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-data-local \
+	install-exec install-exec-am install-info install-info-am \
+	install-man install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
 	maintainer-clean-local mostlyclean mostlyclean-generic \
 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
 	uninstall-info-am uninstall-local
@@ -518,6 +499,8 @@
 scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
 	@echo 'gtk-doc: Scanning header files'
 	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && \
+	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
 	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
 	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
 	else \
@@ -526,11 +509,9 @@
                test -f $$i || touch $$i ; \
 	    done \
 	fi
-	cd $(srcdir) && \
-	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
 	touch scan-build.stamp
 
-$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
 	@true
 
 #### templates ####
@@ -609,12 +590,16 @@
 	mkdir $(distdir)/html
 	-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
 	-cp $(srcdir)/xml/*.xml $(distdir)/xml
-	-cp $(srcdir)/html/* $(distdir)/html
+	cp $(srcdir)/html/* $(distdir)/html
 	if test -f $(srcdir)/$(DOC_MODULE).types; then \
 	  cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
 	fi
 
 .PHONY : dist-hook-local docs
+
+# Build the documentation when creating tarballs
+dist-hook-local:
+	$(MAKE) all
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:

Modified: libgpod/branches/upstream/current/docs/reference/html/ch01.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/ch01.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/ch01.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>iPod database components</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="prev" href="libgpod-Low-level-functions.html" title="Low-level functions">
 <link rel="next" href="libgpod-Tracks.html" title="Tracks">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -24,7 +24,7 @@
 </tr></table>
 <div class="chapter" lang="en">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="id273614"></a>iPod database components</h2></div></div></div>
+<a name="id2721009"></a>iPod database components</h2></div></div></div>
 <div class="toc"><dl>
 <dt>
 <span class="refentrytitle"><a href="libgpod-Tracks.html">Tracks</a></span><span class="refpurpose"> &#8212; Data structure to store metadata about an iPod track</span>

Modified: libgpod/branches/upstream/current/docs/reference/html/index.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/index.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/index.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,11 +3,11 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>libgpod Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <meta name="description" content="This manual documents the interfaces of the libgpod library and has some short notes to help get you up to speed with using the library. Please see the programs in the tests/ directory of the source distribution for some usage examples. A more complete example can be found in the source for Gtkpod. You can also ask questions on the developer's mailing list: gtkpod-devel at lists.sourceforge.net.">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="next" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -35,10 +35,10 @@
 	&#160;&#160;</p></div></div>
 </div>
 </div></div>
-<div><p class="releaseinfo">for libgpod <span>0.4.2RC1</span></p></div>
+<div><p class="releaseinfo">for libgpod <span>0.5.2</span></p></div>
 <div><p class="copyright">Copyright &#169; 2006 Christophe Fergeau</p></div>
 <div><div class="legalnotice">
-<a name="id270288"></a><p>Permission is granted to copy, distribute and/or modify
+<a name="id2725790"></a><p>Permission is granted to copy, distribute and/or modify
       this document under the terms of the <em class="citetitle">GNU Free
       Documentation License</em>, Version 1.1 or any later
       version published by the Free Software Foundation with no
@@ -63,7 +63,7 @@
       library.
       </p>
 <p>
-      Please see the programs in the <a href="http://gtkpod.cvs.sourceforge.net/gtkpod/libgpod/tests/" target="_top">tests/</a>
+      Please see the programs in the <a href="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/tests/" target="_top">tests/</a>
       directory of the source distribution for some usage examples.  A more
       complete example can be found in the source for <a href="http://www.gtkpod.org" target="_top"> Gtkpod</a>.  You can also ask questions
       on the developer's mailing list: <a href="mailto:gtkpod-devel at lists.sourceforge.net" target="_top">gtkpod-devel at lists.sourceforge.net</a>.

Modified: libgpod/branches/upstream/current/docs/reference/html/index.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/index.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/index.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -39,11 +39,15 @@
 <ANCHOR id="itdb-shuffle-write" href="libgpod/libgpod-Low-level-functions.html#itdb-shuffle-write">
 <ANCHOR id="itdb-shuffle-write-file" href="libgpod/libgpod-Low-level-functions.html#itdb-shuffle-write-file">
 <ANCHOR id="itdb-cp" href="libgpod/libgpod-Low-level-functions.html#itdb-cp">
+<ANCHOR id="itdb-cp-get-dest-filename" href="libgpod/libgpod-Low-level-functions.html#itdb-cp-get-dest-filename">
+<ANCHOR id="itdb-cp-finalize" href="libgpod/libgpod-Low-level-functions.html#itdb-cp-finalize">
 <ANCHOR id="itdb-parse-file" href="libgpod/libgpod-Low-level-functions.html#itdb-parse-file">
 <ANCHOR id="itdb-write-file" href="libgpod/libgpod-Low-level-functions.html#itdb-write-file">
 <ANCHOR id="itdb-duplicate" href="libgpod/libgpod-Low-level-functions.html#itdb-duplicate">
 <ANCHOR id="libgpod-Tracks" href="libgpod/libgpod-Tracks.html">
 <ANCHOR id="Itdb-Track" href="libgpod/libgpod-Tracks.html#Itdb-Track">
+<ANCHOR id="Itdb-Mediatype" href="libgpod/libgpod-Tracks.html#Itdb-Mediatype">
+<ANCHOR id="ITDB-RATING-STEP:CAPS" href="libgpod/libgpod-Tracks.html#ITDB-RATING-STEP:CAPS">
 <ANCHOR id="itdb-track-new" href="libgpod/libgpod-Tracks.html#itdb-track-new">
 <ANCHOR id="itdb-track-free" href="libgpod/libgpod-Tracks.html#itdb-track-free">
 <ANCHOR id="itdb-track-add" href="libgpod/libgpod-Tracks.html#itdb-track-add">
@@ -56,8 +60,8 @@
 <ANCHOR id="itdb-track-id-tree-by-id" href="libgpod/libgpod-Tracks.html#itdb-track-id-tree-by-id">
 <ANCHOR id="itdb-track-set-thumbnails" href="libgpod/libgpod-Tracks.html#itdb-track-set-thumbnails">
 <ANCHOR id="itdb-track-set-thumbnails-from-data" href="libgpod/libgpod-Tracks.html#itdb-track-set-thumbnails-from-data">
+<ANCHOR id="itdb-track-set-thumbnails-from-pixbuf" href="libgpod/libgpod-Tracks.html#itdb-track-set-thumbnails-from-pixbuf">
 <ANCHOR id="itdb-track-remove-thumbnails" href="libgpod/libgpod-Tracks.html#itdb-track-remove-thumbnails">
-<ANCHOR id="ITDB-RATING-STEP:CAPS" href="libgpod/libgpod-Tracks.html#ITDB-RATING-STEP:CAPS">
 <ANCHOR id="libgpod-Playlists" href="libgpod/libgpod-Playlists.html">
 <ANCHOR id="Itdb-Playlist" href="libgpod/libgpod-Playlists.html#Itdb-Playlist">
 <ANCHOR id="ItdbPlaylistSortOrder" href="libgpod/libgpod-Playlists.html#ItdbPlaylistSortOrder">
@@ -85,16 +89,19 @@
 <ANCHOR id="itdb-playlist-by-name" href="libgpod/libgpod-Playlists.html#itdb-playlist-by-name">
 <ANCHOR id="itdb-playlist-randomize" href="libgpod/libgpod-Playlists.html#itdb-playlist-randomize">
 <ANCHOR id="libgpod-Smart-Playlists" href="libgpod/libgpod-Smart-Playlists.html">
-<ANCHOR id="SPLPref" href="libgpod/libgpod-Smart-Playlists.html#SPLPref">
-<ANCHOR id="SPLRule" href="libgpod/libgpod-Smart-Playlists.html#SPLRule">
-<ANCHOR id="SPLRules" href="libgpod/libgpod-Smart-Playlists.html#SPLRules">
-<ANCHOR id="SPLAction" href="libgpod/libgpod-Smart-Playlists.html#SPLAction">
-<ANCHOR id="SPLFieldType" href="libgpod/libgpod-Smart-Playlists.html#SPLFieldType">
-<ANCHOR id="SPLActionType" href="libgpod/libgpod-Smart-Playlists.html#SPLActionType">
-<ANCHOR id="SPLField" href="libgpod/libgpod-Smart-Playlists.html#SPLField">
-<ANCHOR id="SPLDATE-IDENTIFIER:CAPS" href="libgpod/libgpod-Smart-Playlists.html#SPLDATE-IDENTIFIER:CAPS">
-<ANCHOR id="SPL-MAXSTRINGLENGTH:CAPS" href="libgpod/libgpod-Smart-Playlists.html#SPL-MAXSTRINGLENGTH:CAPS">
-<ANCHOR id="SPL-STRING-MAXLEN:CAPS" href="libgpod/libgpod-Smart-Playlists.html#SPL-STRING-MAXLEN:CAPS">
+<ANCHOR id="Itdb-SPLPref" href="libgpod/libgpod-Smart-Playlists.html#Itdb-SPLPref">
+<ANCHOR id="Itdb-SPLRule" href="libgpod/libgpod-Smart-Playlists.html#Itdb-SPLRule">
+<ANCHOR id="Itdb-SPLRules" href="libgpod/libgpod-Smart-Playlists.html#Itdb-SPLRules">
+<ANCHOR id="ItdbLimitSort" href="libgpod/libgpod-Smart-Playlists.html#ItdbLimitSort">
+<ANCHOR id="ItdbLimitType" href="libgpod/libgpod-Smart-Playlists.html#ItdbLimitType">
+<ANCHOR id="ItdbSPLAction" href="libgpod/libgpod-Smart-Playlists.html#ItdbSPLAction">
+<ANCHOR id="ItdbSPLActionLast" href="libgpod/libgpod-Smart-Playlists.html#ItdbSPLActionLast">
+<ANCHOR id="ItdbSPLActionType" href="libgpod/libgpod-Smart-Playlists.html#ItdbSPLActionType">
+<ANCHOR id="ItdbSPLField" href="libgpod/libgpod-Smart-Playlists.html#ItdbSPLField">
+<ANCHOR id="ItdbSPLFieldType" href="libgpod/libgpod-Smart-Playlists.html#ItdbSPLFieldType">
+<ANCHOR id="ItdbSPLMatch" href="libgpod/libgpod-Smart-Playlists.html#ItdbSPLMatch">
+<ANCHOR id="ITDB-SPL-DATE-IDENTIFIER:CAPS" href="libgpod/libgpod-Smart-Playlists.html#ITDB-SPL-DATE-IDENTIFIER:CAPS">
+<ANCHOR id="ITDB-SPL-STRING-MAXLEN:CAPS" href="libgpod/libgpod-Smart-Playlists.html#ITDB-SPL-STRING-MAXLEN:CAPS">
 <ANCHOR id="itdb-splr-get-field-type" href="libgpod/libgpod-Smart-Playlists.html#itdb-splr-get-field-type">
 <ANCHOR id="itdb-splr-get-action-type" href="libgpod/libgpod-Smart-Playlists.html#itdb-splr-get-action-type">
 <ANCHOR id="itdb-splr-validate" href="libgpod/libgpod-Smart-Playlists.html#itdb-splr-validate">
@@ -116,6 +123,7 @@
 <ANCHOR id="itdb-artwork-free" href="libgpod/libgpod-Artwork.html#itdb-artwork-free">
 <ANCHOR id="itdb-artwork-add-thumbnail" href="libgpod/libgpod-Artwork.html#itdb-artwork-add-thumbnail">
 <ANCHOR id="itdb-artwork-add-thumbnail-from-data" href="libgpod/libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-data">
+<ANCHOR id="itdb-artwork-add-thumbnail-from-pixbuf" href="libgpod/libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-pixbuf">
 <ANCHOR id="itdb-artwork-remove-thumbnail" href="libgpod/libgpod-Artwork.html#itdb-artwork-remove-thumbnail">
 <ANCHOR id="itdb-artwork-remove-thumbnails" href="libgpod/libgpod-Artwork.html#itdb-artwork-remove-thumbnails">
 <ANCHOR id="itdb-artwork-get-thumb-by-type" href="libgpod/libgpod-Artwork.html#itdb-artwork-get-thumb-by-type">
@@ -134,6 +142,8 @@
 <ANCHOR id="itdb-device-set-sysinfo" href="libgpod/libgpod-Device.html#itdb-device-set-sysinfo">
 <ANCHOR id="itdb-device-write-sysinfo" href="libgpod/libgpod-Device.html#itdb-device-write-sysinfo">
 <ANCHOR id="itdb-device-get-ipod-info" href="libgpod/libgpod-Device.html#itdb-device-get-ipod-info">
+<ANCHOR id="itdb-device-supports-artwork" href="libgpod/libgpod-Device.html#itdb-device-supports-artwork">
+<ANCHOR id="itdb-device-supports-photo" href="libgpod/libgpod-Device.html#itdb-device-supports-photo">
 <ANCHOR id="itdb-info-get-ipod-info-table" href="libgpod/libgpod-Device.html#itdb-info-get-ipod-info-table">
 <ANCHOR id="itdb-info-get-ipod-generation-string" href="libgpod/libgpod-Device.html#itdb-info-get-ipod-generation-string">
 <ANCHOR id="itdb-info-get-ipod-model-name-string" href="libgpod/libgpod-Device.html#itdb-info-get-ipod-model-name-string">
@@ -147,6 +157,7 @@
 <ANCHOR id="Itdb-PhotoDB" href="libgpod/libgpod-Photo-database.html#Itdb-PhotoDB">
 <ANCHOR id="itdb-photodb-add-photo" href="libgpod/libgpod-Photo-database.html#itdb-photodb-add-photo">
 <ANCHOR id="itdb-photodb-add-photo-from-data" href="libgpod/libgpod-Photo-database.html#itdb-photodb-add-photo-from-data">
+<ANCHOR id="itdb-photodb-add-photo-from-pixbuf" href="libgpod/libgpod-Photo-database.html#itdb-photodb-add-photo-from-pixbuf">
 <ANCHOR id="itdb-photodb-create" href="libgpod/libgpod-Photo-database.html#itdb-photodb-create">
 <ANCHOR id="itdb-photodb-free" href="libgpod/libgpod-Photo-database.html#itdb-photodb-free">
 <ANCHOR id="itdb-photodb-parse" href="libgpod/libgpod-Photo-database.html#itdb-photodb-parse">

Modified: libgpod/branches/upstream/current/docs/reference/html/itunesdb.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/itunesdb.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/itunesdb.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Part&#160;I.&#160;iPod database</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="index.html" title="libgpod Reference Manual">
 <link rel="prev" href="index.html" title="libgpod Reference Manual">
 <link rel="next" href="libgpod-The-Itdb-iTunesDB-structure.html" title="iPod database reading/writing">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-Artwork.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-Artwork.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-Artwork.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Artwork</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="ch01.html" title="iPod database components">
 <link rel="prev" href="libgpod-Smart-Playlists.html" title="Smart Playlists">
 <link rel="next" href="libgpod-Device.html" title="Device">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="libgpod-Device.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id328167" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2789163" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id355172" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2816867" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-Artwork"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id328167"></a><span class="refentrytitle">Artwork</span>
+<a name="id2789163"></a><span class="refentrytitle">Artwork</span>
 </h2>
 <p>Artwork &#8212; Data structure to store iPod artwork (album covers)</p>
 </td>
@@ -44,40 +44,76 @@
 
 
 
-            <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>;
-            <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>;
-enum        <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a>;
-<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>* <a href="libgpod-Artwork.html#itdb-artwork-new">itdb_artwork_new</a>              (void);
-<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>* <a href="libgpod-Artwork.html#itdb-artwork-duplicate">itdb_artwork_duplicate</a>        (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);
-void        <a href="libgpod-Artwork.html#itdb-artwork-free">itdb_artwork_free</a>               (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);
-gboolean    <a href="libgpod-Artwork.html#itdb-artwork-add-thumbnail">itdb_artwork_add_thumbnail</a>      (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
-                                             <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
-                                             const gchar *filename,
-                                             gint rotation,
-                                             GError **error);
-gboolean    <a href="libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-data">itdb_artwork_add_thumbnail_from_data</a>
-                                            (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
-                                             <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
-                                             const guchar *image_data,
-                                             gsize image_data_len,
-                                             gint rotation,
-                                             GError **error);
-void        <a href="libgpod-Artwork.html#itdb-artwork-remove-thumbnail">itdb_artwork_remove_thumbnail</a>   (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
-                                             <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
-void        <a href="libgpod-Artwork.html#itdb-artwork-remove-thumbnails">itdb_artwork_remove_thumbnails</a>  (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);
-<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>* <a href="libgpod-Artwork.html#itdb-artwork-get-thumb-by-type">itdb_artwork_get_thumb_by_type</a>  (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
-                                             <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type);
-gpointer    <a href="libgpod-Artwork.html#itdb-thumb-get-gdk-pixbuf">itdb_thumb_get_gdk_pixbuf</a>       (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
-<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>* <a href="libgpod-Artwork.html#itdb-thumb-duplicate">itdb_thumb_duplicate</a>            (<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
-void        <a href="libgpod-Artwork.html#itdb-thumb-free">itdb_thumb_free</a>                 (<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
-<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>* <a href="libgpod-Artwork.html#itdb-thumb-new">itdb_thumb_new</a>                  (void);
-gchar*      <a href="libgpod-Artwork.html#itdb-thumb-get-filename">itdb_thumb_get_filename</a>         (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
+                    <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>;
+                    <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>;
+enum                <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a>;
+<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       <a href="libgpod-Artwork.html#itdb-artwork-new">itdb_artwork_new</a>                    (void);
+<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       <a href="libgpod-Artwork.html#itdb-artwork-duplicate">itdb_artwork_duplicate</a>              (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);
+void                <a href="libgpod-Artwork.html#itdb-artwork-free">itdb_artwork_free</a>                   (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Artwork.html#itdb-artwork-add-thumbnail">itdb_artwork_add_thumbnail</a>          (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-data">itdb_artwork_add_thumbnail_from_data</a>
+                                                        (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guchar"
+>guchar</a> *image_data,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
+>gsize</a> image_data_len,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-pixbuf">itdb_artwork_add_thumbnail_from_pixbuf</a>
+                                                        (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> pixbuf,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+void                <a href="libgpod-Artwork.html#itdb-artwork-remove-thumbnail">itdb_artwork_remove_thumbnail</a>       (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
+void                <a href="libgpod-Artwork.html#itdb-artwork-remove-thumbnails">itdb_artwork_remove_thumbnails</a>      (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);
+<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>*         <a href="libgpod-Artwork.html#itdb-artwork-get-thumb-by-type">itdb_artwork_get_thumb_by_type</a>      (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a>            <a href="libgpod-Artwork.html#itdb-thumb-get-gdk-pixbuf">itdb_thumb_get_gdk_pixbuf</a>           (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
+<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>*         <a href="libgpod-Artwork.html#itdb-thumb-duplicate">itdb_thumb_duplicate</a>                (<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
+void                <a href="libgpod-Artwork.html#itdb-thumb-free">itdb_thumb_free</a>                     (<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
+<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>*         <a href="libgpod-Artwork.html#itdb-thumb-new">itdb_thumb_new</a>                      (void);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Artwork.html#itdb-thumb-get-filename">itdb_thumb_get_filename</a>             (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id355172"></a><h2>Description</h2>
+<a name="id2816867"></a><h2>Description</h2>
 <p>
 These functions and structures are for adding, changing, and removing
 album/track artwork.  For working with photos, see the
@@ -85,25 +121,30 @@
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id355194"></a><h2>Details</h2>
+<a name="id2816891"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id355205"></a><h3>
+<a name="id2816902"></a><h3>
 <a name="Itdb-Artwork"></a>Itdb_Artwork</h3>
-<a class="indexterm" name="id355217"></a><pre class="programlisting">typedef struct {
+<a class="indexterm" name="id2816914"></a><pre class="programlisting">typedef struct {
     GList *thumbnails;     /* list of Itdb_Thumbs */
     guint32 id;            /* Artwork id used by photoalbums, starts at
 			    * 0x40... libgpod will set this on sync. */
     gint32  unk028;
     guint32 rating;        /* Rating from iPhoto * 20 (PhotoDB only) */
     gint32  unk036;
-    guint32 creation_date; /* Date the image file was created
+    time_t  creation_date;  /* Date the image file was created
 			      (creation date of image file (Mac type,
 			      PhotoDB only) */
-    guint32 digitized_date;/* Date the image was taken (EXIF
+    time_t  digitized_date;/* Date the image was taken (EXIF
 			      information, Mac type, PhotoDB only) */
     guint32 artwork_size;  /* Size in bytes of the original source
 			      image (PhotoDB only -- don't touch in
 			      case of ArtworkDB!) */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -118,15 +159,16 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id352692"></a><h3>
+<a name="id2797072"></a><h3>
 <a name="Itdb-Thumb"></a>Itdb_Thumb</h3>
-<a class="indexterm" name="id334618"></a><pre class="programlisting">typedef struct {
+<a class="indexterm" name="id2720239"></a><pre class="programlisting">typedef struct {
     ItdbThumbType type;
     gchar   *filename;
     guchar  *image_data;      /* holds the thumbnail data of
 				 non-transfered thumbnails when
 				 filename == NULL */
     gsize   image_data_len;   /* length of data */
+    gpointer pixbuf;
     gint    rotation;         /* angle (0, 90, 180, 270) to rotate the image */
     guint32 offset;
     guint32 size;
@@ -134,6 +176,11 @@
     gint16  height;
     gint16  horizontal_padding;
     gint16  vertical_padding;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
 } Itdb_Thumb;
 </pre>
 <p>
@@ -142,9 +189,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355244"></a><h3>
+<a name="id2780648"></a><h3>
 <a name="ItdbThumbType"></a>enum ItdbThumbType</h3>
-<a class="indexterm" name="id355256"></a><pre class="programlisting">typedef enum { 
+<a class="indexterm" name="id2816932"></a><pre class="programlisting">typedef enum { 
     ITDB_THUMB_COVER_SMALL,
     ITDB_THUMB_COVER_LARGE,
     ITDB_THUMB_PHOTO_SMALL,
@@ -159,9 +206,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355273"></a><h3>
+<a name="id2815494"></a><h3>
 <a name="itdb-artwork-new"></a>itdb_artwork_new ()</h3>
-<a class="indexterm" name="id355285"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>* itdb_artwork_new              (void);</pre>
+<a class="indexterm" name="id2815507"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       itdb_artwork_new                    (void);</pre>
 <p>
 Creates a new <a href="libgpod-Artwork.html#Itdb-Artwork"><span class="type">Itdb_Artwork</span></a></p>
 <p>
@@ -179,9 +226,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355346"></a><h3>
+<a name="id2815570"></a><h3>
 <a name="itdb-artwork-duplicate"></a>itdb_artwork_duplicate ()</h3>
-<a class="indexterm" name="id355359"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>* itdb_artwork_duplicate        (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);</pre>
+<a class="indexterm" name="id2815581"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       itdb_artwork_duplicate              (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);</pre>
 <p>
 Duplicates <em class="parameter"><code>artwork</code></em></p>
 <p>
@@ -205,9 +252,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id359808"></a><h3>
+<a name="id2815660"></a><h3>
 <a name="itdb-artwork-free"></a>itdb_artwork_free ()</h3>
-<a class="indexterm" name="id359819"></a><pre class="programlisting">void        itdb_artwork_free               (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);</pre>
+<a class="indexterm" name="id2815672"></a><pre class="programlisting">void                itdb_artwork_free                   (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);</pre>
 <p>
 Frees memory used by <em class="parameter"><code>artwork</code></em></p>
 <p>
@@ -224,13 +271,21 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id359872"></a><h3>
+<a name="id2819315"></a><h3>
 <a name="itdb-artwork-add-thumbnail"></a>itdb_artwork_add_thumbnail ()</h3>
-<a class="indexterm" name="id359882"></a><pre class="programlisting">gboolean    itdb_artwork_add_thumbnail      (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
-                                             <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
-                                             const gchar *filename,
-                                             gint rotation,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2819326"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_artwork_add_thumbnail          (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Appends a thumbnail of type <em class="parameter"><code>type</code></em> to existing thumbnails in <em class="parameter"><code>artwork</code></em>. No 
 data is read from <em class="parameter"><code>filename</code></em> yet, the file will be when <em class="parameter"><code>artwork</code></em> is saved to
@@ -269,7 +324,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -283,15 +340,25 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360057"></a><h3>
+<a name="id2819529"></a><h3>
 <a name="itdb-artwork-add-thumbnail-from-data"></a>itdb_artwork_add_thumbnail_from_data ()</h3>
-<a class="indexterm" name="id360067"></a><pre class="programlisting">gboolean    itdb_artwork_add_thumbnail_from_data
-                                            (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
-                                             <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
-                                             const guchar *image_data,
-                                             gsize image_data_len,
-                                             gint rotation,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2819541"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_artwork_add_thumbnail_from_data
+                                                        (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guchar"
+>guchar</a> *image_data,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
+>gsize</a> image_data_len,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Appends a thumbnail of type <em class="parameter"><code>type</code></em> to existing thumbnails in
 <em class="parameter"><code>artwork</code></em>. No data is processed yet. This will be done when <em class="parameter"><code>artwork</code></em>
@@ -336,7 +403,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -350,12 +419,85 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360254"></a><h3>
+<a name="id2822374"></a><h3>
+<a name="itdb-artwork-add-thumbnail-from-pixbuf"></a>itdb_artwork_add_thumbnail_from_pixbuf ()</h3>
+<a class="indexterm" name="id2822387"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_artwork_add_thumbnail_from_pixbuf
+                                                        (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> pixbuf,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
+<p>
+Appends a thumbnail of type <em class="parameter"><code>type</code></em> to existing thumbnails in <em class="parameter"><code>artwork</code></em>. No 
+data is generated from <em class="parameter"><code>pixbuf</code></em> yet, it will be done when <em class="parameter"><code>artwork</code></em> is saved 
+to disk. <em class="parameter"><code>pixbuf</code></em> is ref'ed by this function, but is not copied, so it should
+not be modified before the database is saved.
+</p>
+<p>
+For the rotation angle you can also use the gdk constants
+GDK_PIXBUF_ROTATE_NONE, ..._COUNTERCLOCKWISE, ..._UPSIDEDOWN AND
+..._CLOCKWISE.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><span class="term"><em class="parameter"><code>artwork</code></em>&#160;:</span></td>
+<td> an <span class="type">Itdb_Thumbnail</span>
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>type</code></em>&#160;:</span></td>
+<td> thumbnail size
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>pixbuf</code></em>&#160;:</span></td>
+<td> <a
+href="/usr/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf"
+><span class="type">GdkPixbuf</span></a> to use to create the thumbnail
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>rotation</code></em>&#160;:</span></td>
+<td> angle by which the image should be rotated
+counterclockwise. Valid values are 0, 90, 180 and 270.
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
+</td>
+</tr>
+<tr>
+<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> TRUE if the thumbnail could be successfully added, FALSE
+otherwise. <em class="parameter"><code>error</code></em> is set appropriately.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2822579"></a><h3>
 <a name="itdb-artwork-remove-thumbnail"></a>itdb_artwork_remove_thumbnail ()</h3>
-<a class="indexterm" name="id360264"></a><pre class="programlisting">void        itdb_artwork_remove_thumbnail   (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
-                                             <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
+<a class="indexterm" name="id2822591"></a><pre class="programlisting">void                itdb_artwork_remove_thumbnail       (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
 <p>
-Removes <em class="parameter"><code>thumb</code></em> from <em class="parameter"><code>artwork</code></em>. The memory used by <em class="parameter"><code>thumb</code></em> isn't freed.</p>
+Removes <em class="parameter"><code>thumb</code></em> from <em class="parameter"><code>artwork</code></em>. The memory used by <em class="parameter"><code>thumb</code></em> is freed.</p>
 <p>
 
 </p>
@@ -377,9 +519,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360354"></a><h3>
+<a name="id2822683"></a><h3>
 <a name="itdb-artwork-remove-thumbnails"></a>itdb_artwork_remove_thumbnails ()</h3>
-<a class="indexterm" name="id360364"></a><pre class="programlisting">void        itdb_artwork_remove_thumbnails  (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);</pre>
+<a class="indexterm" name="id2822695"></a><pre class="programlisting">void                itdb_artwork_remove_thumbnails      (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork);</pre>
 <p>
 Removes all thumbnails from <em class="parameter"><code>artwork</code></em></p>
 <p>
@@ -396,10 +538,10 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360417"></a><h3>
+<a name="id2822751"></a><h3>
 <a name="itdb-artwork-get-thumb-by-type"></a>itdb_artwork_get_thumb_by_type ()</h3>
-<a class="indexterm" name="id360428"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>* itdb_artwork_get_thumb_by_type  (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
-                                             <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type);</pre>
+<a class="indexterm" name="id2822763"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>*         itdb_artwork_get_thumb_by_type      (<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *artwork,
+                                                         <a href="libgpod-Artwork.html#ItdbThumbType">ItdbThumbType</a> type);</pre>
 <p>
 Searches <em class="parameter"><code>artwork</code></em> for an <a href="libgpod-Artwork.html#Itdb-Thumb"><span class="type">Itdb_Thumb</span></a> of type <em class="parameter"><code>type</code></em>.</p>
 <p>
@@ -429,14 +571,20 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360540"></a><h3>
+<a name="id2822878"></a><h3>
 <a name="itdb-thumb-get-gdk-pixbuf"></a>itdb_thumb_get_gdk_pixbuf ()</h3>
-<a class="indexterm" name="id360550"></a><pre class="programlisting">gpointer    itdb_thumb_get_gdk_pixbuf       (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
+<a class="indexterm" name="id2822889"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a>            itdb_thumb_get_gdk_pixbuf           (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
 <p>
-Converts <em class="parameter"><code>thumb</code></em> to a <span class="type">GdkPixbuf</span>.
+Converts <em class="parameter"><code>thumb</code></em> to a <a
+href="/usr/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf"
+><span class="type">GdkPixbuf</span></a>.
 Since we want to have gdk-pixbuf dependency optional, a generic
-gpointer is returned which you have to cast to a <span class="type">GdkPixbuf</span> using 
+gpointer is returned which you have to cast to a <a
+href="/usr/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf"
+><span class="type">GdkPixbuf</span></a> using 
 <code class="function">GDK_PIXBUF()</code> yourself.</p>
 <p>
 
@@ -456,7 +604,11 @@
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> a <span class="type">GdkPixbuf</span> that must be unreffed with <code class="function">gdk_pixbuf_unref()</code>
+<td> a <a
+href="/usr/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf"
+><span class="type">GdkPixbuf</span></a> that must be unreffed with <a
+href="/usr/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-refcounting.html#gdk-pixbuf-unref"
+><code class="function">gdk_pixbuf_unref()</code></a>
 after use, or NULL if the creation of the gdk-pixbuf failed or if 
 libgpod was compiled without gdk-pixbuf support.
 </td>
@@ -466,9 +618,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360676"></a><h3>
+<a name="id2823020"></a><h3>
 <a name="itdb-thumb-duplicate"></a>itdb_thumb_duplicate ()</h3>
-<a class="indexterm" name="id360686"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>* itdb_thumb_duplicate            (<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
+<a class="indexterm" name="id2823030"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>*         itdb_thumb_duplicate                (<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
 <p>
 Duplicates the data contained in <em class="parameter"><code>thumb</code></em></p>
 <p>
@@ -493,9 +645,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360762"></a><h3>
+<a name="id2823108"></a><h3>
 <a name="itdb-thumb-free"></a>itdb_thumb_free ()</h3>
-<a class="indexterm" name="id360773"></a><pre class="programlisting">void        itdb_thumb_free                 (<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
+<a class="indexterm" name="id2823118"></a><pre class="programlisting">void                itdb_thumb_free                     (<a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
 <p>
 Frees the memory used by <em class="parameter"><code>thumb</code></em></p>
 <p>
@@ -512,9 +664,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360826"></a><h3>
+<a name="id2823173"></a><h3>
 <a name="itdb-thumb-new"></a>itdb_thumb_new ()</h3>
-<a class="indexterm" name="id360836"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>* itdb_thumb_new                  (void);</pre>
+<a class="indexterm" name="id2823183"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a>*         itdb_thumb_new                      (void);</pre>
 <p>
 Creates a new <a href="libgpod-Artwork.html#Itdb-Thumb"><span class="type">Itdb_Thumb</span></a></p>
 <p>
@@ -532,10 +684,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id360891"></a><h3>
+<a name="id2823239"></a><h3>
 <a name="itdb-thumb-get-filename"></a>itdb_thumb_get_filename ()</h3>
-<a class="indexterm" name="id360901"></a><pre class="programlisting">gchar*      itdb_thumb_get_filename         (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
+<a class="indexterm" name="id2823249"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_thumb_get_filename             (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         <a href="libgpod-Artwork.html#Itdb-Thumb">Itdb_Thumb</a> *thumb);</pre>
 <p>
 Get filename of thumbnail. If it's a thumbnail on the iPod, return
 the full path to the ithmb file. Otherwise return the full path to
@@ -567,7 +721,7 @@
 </div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id360988"></a><h2>See Also</h2>
+<a name="id2823340"></a><h2>See Also</h2>
 <p>
 <a href="photodb.html" title="Part&#160;II.&#160;Photo database">Photo database</a>
 </p>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-Device.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-Device.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-Device.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Device</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="ch01.html" title="iPod database components">
 <link rel="prev" href="libgpod-Artwork.html" title="Artwork">
 <link rel="next" href="photodb.html" title="Part&#160;II.&#160;Photo database">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="photodb.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id269835" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2800414" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id355105" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2817033" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-Device"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id269835"></a><span class="refentrytitle">Device</span>
+<a name="id2800414"></a><span class="refentrytitle">Device</span>
 </h2>
 <p>Device &#8212; Data structure holding information about the iPod (model, mount point, etc.)</p>
 </td>
@@ -44,49 +44,83 @@
 
 
 
-            <a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a>;
-<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a>* <a href="libgpod-Device.html#itdb-device-new">itdb_device_new</a>                (void);
-void        <a href="libgpod-Device.html#itdb-device-free">itdb_device_free</a>                (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);
-void        <a href="libgpod-Device.html#itdb-device-set-mountpoint">itdb_device_set_mountpoint</a>      (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             const gchar *mp);
-gboolean    <a href="libgpod-Device.html#itdb-device-read-sysinfo">itdb_device_read_sysinfo</a>        (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);
-gchar*      <a href="libgpod-Device.html#itdb-device-get-sysinfo">itdb_device_get_sysinfo</a>         (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             const gchar *field);
-void        <a href="libgpod-Device.html#itdb-device-set-sysinfo">itdb_device_set_sysinfo</a>         (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             const gchar *field,
-                                             const gchar *value);
-gboolean    <a href="libgpod-Device.html#itdb-device-write-sysinfo">itdb_device_write_sysinfo</a>       (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             GError **error);
-const <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>* <a href="libgpod-Device.html#itdb-device-get-ipod-info">itdb_device_get_ipod_info</a>
-                                            (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);
-const <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>* <a href="libgpod-Device.html#itdb-info-get-ipod-info-table">itdb_info_get_ipod_info_table</a>
-                                            (void);
-const gchar* <a href="libgpod-Device.html#itdb-info-get-ipod-generation-string">itdb_info_get_ipod_generation_string</a>
-                                            (<a href="libgpod-Device.html#Itdb-IpodGeneration">Itdb_IpodGeneration</a> generation);
-const gchar* <a href="libgpod-Device.html#itdb-info-get-ipod-model-name-string">itdb_info_get_ipod_model_name_string</a>
-                                            (<a href="libgpod-Device.html#Itdb-IpodModel">Itdb_IpodModel</a> model);
-gboolean    <a href="libgpod-Device.html#itdb-init-ipod">itdb_init_ipod</a>                  (const gchar *mountpoint,
-                                             const gchar *model_number,
-                                             const gchar *ipod_name,
-                                             GError **error);
-enum        <a href="libgpod-Device.html#Itdb-IpodGeneration">Itdb_IpodGeneration</a>;
-            <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>;
-enum        <a href="libgpod-Device.html#Itdb-IpodModel">Itdb_IpodModel</a>;
-            <a href="libgpod-Device.html#Itdb-ArtworkFormat">Itdb_ArtworkFormat</a>;
+                    <a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a>;
+<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a>*        <a href="libgpod-Device.html#itdb-device-new">itdb_device_new</a>                     (void);
+void                <a href="libgpod-Device.html#itdb-device-free">itdb_device_free</a>                    (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);
+void                <a href="libgpod-Device.html#itdb-device-set-mountpoint">itdb_device_set_mountpoint</a>          (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Device.html#itdb-device-read-sysinfo">itdb_device_read_sysinfo</a>            (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Device.html#itdb-device-get-sysinfo">itdb_device_get_sysinfo</a>             (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *field);
+void                <a href="libgpod-Device.html#itdb-device-set-sysinfo">itdb_device_set_sysinfo</a>             (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *field,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *value);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Device.html#itdb-device-write-sysinfo">itdb_device_write_sysinfo</a>           (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+const <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>* <a href="libgpod-Device.html#itdb-device-get-ipod-info">itdb_device_get_ipod_info</a>          (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Device.html#itdb-device-supports-artwork">itdb_device_supports_artwork</a>        (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Device.html#itdb-device-supports-photo">itdb_device_supports_photo</a>          (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);
+const <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>* <a href="libgpod-Device.html#itdb-info-get-ipod-info-table">itdb_info_get_ipod_info_table</a>      (void);
+const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*        <a href="libgpod-Device.html#itdb-info-get-ipod-generation-string">itdb_info_get_ipod_generation_string</a>
+                                                        (<a href="libgpod-Device.html#Itdb-IpodGeneration">Itdb_IpodGeneration</a> generation);
+const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*        <a href="libgpod-Device.html#itdb-info-get-ipod-model-name-string">itdb_info_get_ipod_model_name_string</a>
+                                                        (<a href="libgpod-Device.html#Itdb-IpodModel">Itdb_IpodModel</a> model);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Device.html#itdb-init-ipod">itdb_init_ipod</a>                      (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *model_number,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *ipod_name,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+enum                <a href="libgpod-Device.html#Itdb-IpodGeneration">Itdb_IpodGeneration</a>;
+                    <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>;
+enum                <a href="libgpod-Device.html#Itdb-IpodModel">Itdb_IpodModel</a>;
+                    <a href="libgpod-Device.html#Itdb-ArtworkFormat">Itdb_ArtworkFormat</a>;
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id355105"></a><h2>Description</h2>
+<a name="id2817033"></a><h2>Description</h2>
 <p>
 These functions are for reading and setting information about the iPod.
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id358894"></a><h2>Details</h2>
+<a name="id2817049"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id358905"></a><h3>
+<a name="id2817060"></a><h3>
 <a name="Itdb-Device"></a>Itdb_Device</h3>
-<a class="indexterm" name="id358917"></a><pre class="programlisting">typedef struct {
+<a class="indexterm" name="id2817072"></a><pre class="programlisting">typedef struct {
     gchar *mountpoint;    /* mountpoint of the iPod */
     gint   musicdirs;     /* number of /iPod_Control/Music/F.. dirs */
     guint  byte_order;    /* G_LITTLE_ENDIAN "regular" endianness 
@@ -97,6 +131,9 @@
 			   * in Device/SysInfo */
     gboolean sysinfo_changed; /* Has the sysinfo hash been changed by
 				 the user (itdb_set_sysinfo) */
+    gint timezone_shift;  /* difference in seconds between the current
+                           * timezone and UTC
+                           */
 } Itdb_Device;
 </pre>
 <p>
@@ -105,9 +142,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id339125"></a><h3>
+<a name="id2805799"></a><h3>
 <a name="itdb-device-new"></a>itdb_device_new ()</h3>
-<a class="indexterm" name="id315771"></a><pre class="programlisting"><a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a>* itdb_device_new                (void);</pre>
+<a class="indexterm" name="id2781208"></a><pre class="programlisting"><a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a>*        itdb_device_new                     (void);</pre>
 <p>
 Creates a new <a href="libgpod-Device.html#Itdb-Device"><span class="type">Itdb_Device</span></a> structure</p>
 <p>
@@ -125,9 +162,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358980"></a><h3>
+<a name="id2821546"></a><h3>
 <a name="itdb-device-free"></a>itdb_device_free ()</h3>
-<a class="indexterm" name="id358992"></a><pre class="programlisting">void        itdb_device_free                (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);</pre>
+<a class="indexterm" name="id2821559"></a><pre class="programlisting">void                itdb_device_free                    (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);</pre>
 <p>
 Frees memory used by <em class="parameter"><code>device</code></em></p>
 <p>
@@ -144,10 +181,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id359052"></a><h3>
+<a name="id2821620"></a><h3>
 <a name="itdb-device-set-mountpoint"></a>itdb_device_set_mountpoint ()</h3>
-<a class="indexterm" name="id359065"></a><pre class="programlisting">void        itdb_device_set_mountpoint      (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             const gchar *mp);</pre>
+<a class="indexterm" name="id2821631"></a><pre class="programlisting">void                itdb_device_set_mountpoint          (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp);</pre>
 <p>
 Sets the mountpoint of <em class="parameter"><code>device</code></em> to <em class="parameter"><code>mp</code></em> and update the cached device 
 information (in particular, re-read the SysInfo file)</p>
@@ -172,9 +211,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id361489"></a><h3>
+<a name="id2821722"></a><h3>
 <a name="itdb-device-read-sysinfo"></a>itdb_device_read_sysinfo ()</h3>
-<a class="indexterm" name="id361499"></a><pre class="programlisting">gboolean    itdb_device_read_sysinfo        (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);</pre>
+<a class="indexterm" name="id2821733"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_device_read_sysinfo            (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);</pre>
 <p>
 Reads the SysInfo file and stores information in device-&gt;sysinfo for
 later use.</p>
@@ -199,10 +240,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id361559"></a><h3>
+<a name="id2821856"></a><h3>
 <a name="itdb-device-get-sysinfo"></a>itdb_device_get_sysinfo ()</h3>
-<a class="indexterm" name="id361569"></a><pre class="programlisting">gchar*      itdb_device_get_sysinfo         (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             const gchar *field);</pre>
+<a class="indexterm" name="id2821867"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_device_get_sysinfo             (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *field);</pre>
 <p>
 Retrieve specified field from the SysInfo file.</p>
 <p>
@@ -224,7 +269,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> the information associated with <em class="parameter"><code>field</code></em>, or NULL if <em class="parameter"><code>field</code></em>
-couldn't be found. <code class="function">g_free()</code> after use
+couldn't be found. <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use
 </td>
 </tr>
 </tbody>
@@ -232,14 +279,18 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id361665"></a><h3>
+<a name="id2821977"></a><h3>
 <a name="itdb-device-set-sysinfo"></a>itdb_device_set_sysinfo ()</h3>
-<a class="indexterm" name="id361675"></a><pre class="programlisting">void        itdb_device_set_sysinfo         (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             const gchar *field,
-                                             const gchar *value);</pre>
+<a class="indexterm" name="id2821988"></a><pre class="programlisting">void                itdb_device_set_sysinfo             (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *field,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *value);</pre>
 <p>
 Set specified field. It can later be written to the iPod using
-itdb_device_read_sysinfo</p>
+<a href="libgpod-Device.html#itdb-device-write-sysinfo"><code class="function">itdb_device_write_sysinfo()</code></a></p>
 <p>
 
 </p>
@@ -266,10 +317,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id361761"></a><h3>
+<a name="id2824188"></a><h3>
 <a name="itdb-device-write-sysinfo"></a>itdb_device_write_sysinfo ()</h3>
-<a class="indexterm" name="id361771"></a><pre class="programlisting">gboolean    itdb_device_write_sysinfo       (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2824198"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_device_write_sysinfo           (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Fills the SysInfo file with information in device-&gt;sysinfo. Note:
 no directories are created if not already existent.</p>
@@ -286,7 +341,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -299,10 +356,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id361855"></a><h3>
+<a name="id2824286"></a><h3>
 <a name="itdb-device-get-ipod-info"></a>itdb_device_get_ipod_info ()</h3>
-<a class="indexterm" name="id361866"></a><pre class="programlisting">const <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>* itdb_device_get_ipod_info
-                                            (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);</pre>
+<a class="indexterm" name="id2824297"></a><pre class="programlisting">const <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>* itdb_device_get_ipod_info          (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);</pre>
 <p>
 Retrieve the <a href="libgpod-Device.html#Itdb-IpodInfo"><span class="type">Itdb_IpodInfo</span></a> entry for this iPod</p>
 <p>
@@ -326,10 +382,67 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id361939"></a><h3>
+<a name="id2824370"></a><h3>
+<a name="itdb-device-supports-artwork"></a>itdb_device_supports_artwork ()</h3>
+<a class="indexterm" name="id2824380"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_device_supports_artwork        (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);</pre>
+<p>
+Indicates whether <em class="parameter"><code>device</code></em> can display artwork or not. When dealing
+with a non-art capable ipod, no artwork data will be written to the
+iPod so you can spare calls to the artwork handling methods.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><span class="term"><em class="parameter"><code>device</code></em>&#160;:</span></td>
+<td> an <a href="libgpod-Device.html#Itdb-Device"><span class="type">Itdb_Device</span></a>
+</td>
+</tr>
+<tr>
+<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> true if <em class="parameter"><code>device</code></em> can display artwork.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2824453"></a><h3>
+<a name="itdb-device-supports-photo"></a>itdb_device_supports_photo ()</h3>
+<a class="indexterm" name="id2824464"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_device_supports_photo          (<a href="libgpod-Device.html#Itdb-Device">Itdb_Device</a> *device);</pre>
+<p>
+Indicates whether <em class="parameter"><code>device</code></em> can display photos or not.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><span class="term"><em class="parameter"><code>device</code></em>&#160;:</span></td>
+<td> an <a href="libgpod-Device.html#Itdb-Device"><span class="type">Itdb_Device</span></a>
+</td>
+</tr>
+<tr>
+<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> true if <em class="parameter"><code>device</code></em> can display photos.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2824534"></a><h3>
 <a name="itdb-info-get-ipod-info-table"></a>itdb_info_get_ipod_info_table ()</h3>
-<a class="indexterm" name="id361949"></a><pre class="programlisting">const <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>* itdb_info_get_ipod_info_table
-                                            (void);</pre>
+<a class="indexterm" name="id2824547"></a><pre class="programlisting">const <a href="libgpod-Device.html#Itdb-IpodInfo">Itdb_IpodInfo</a>* itdb_info_get_ipod_info_table      (void);</pre>
 <p>
 Return a pointer to the start of valid iPod model descriptions,
 which is an array of <a href="libgpod-Device.html#Itdb-IpodInfo"><span class="type">Itdb_IpodInfo</span></a> entries.</p>
@@ -347,10 +460,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id361999"></a><h3>
+<a name="id2824598"></a><h3>
 <a name="itdb-info-get-ipod-generation-string"></a>itdb_info_get_ipod_generation_string ()</h3>
-<a class="indexterm" name="id362010"></a><pre class="programlisting">const gchar* itdb_info_get_ipod_generation_string
-                                            (<a href="libgpod-Device.html#Itdb-IpodGeneration">Itdb_IpodGeneration</a> generation);</pre>
+<a class="indexterm" name="id2824611"></a><pre class="programlisting">const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*        itdb_info_get_ipod_generation_string
+                                                        (<a href="libgpod-Device.html#Itdb-IpodGeneration">Itdb_IpodGeneration</a> generation);</pre>
 <p>
 Return the iPod's generic generation name, like "First Generation",
 "Mobile Phone"...</p>
@@ -368,7 +483,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> a pointer to the generation name. This is a static
-string and must not be <code class="function">g_free()</code>d.
+string and must not be <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a>d.
 </td>
 </tr>
 </tbody>
@@ -376,10 +493,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id362080"></a><h3>
+<a name="id2824685"></a><h3>
 <a name="itdb-info-get-ipod-model-name-string"></a>itdb_info_get_ipod_model_name_string ()</h3>
-<a class="indexterm" name="id362091"></a><pre class="programlisting">const gchar* itdb_info_get_ipod_model_name_string
-                                            (<a href="libgpod-Device.html#Itdb-IpodModel">Itdb_IpodModel</a> model);</pre>
+<a class="indexterm" name="id2824698"></a><pre class="programlisting">const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*        itdb_info_get_ipod_model_name_string
+                                                        (<a href="libgpod-Device.html#Itdb-IpodModel">Itdb_IpodModel</a> model);</pre>
 <p>
 Return the iPod's generic model name, like "Color", "Nano"...</p>
 <p>
@@ -396,7 +515,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> a pointer to the model name. This is a static string
-and must not be <code class="function">g_free()</code>d.
+and must not be <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a>d.
 </td>
 </tr>
 </tbody>
@@ -404,12 +525,22 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id362160"></a><h3>
+<a name="id2824771"></a><h3>
 <a name="itdb-init-ipod"></a>itdb_init_ipod ()</h3>
-<a class="indexterm" name="id362170"></a><pre class="programlisting">gboolean    itdb_init_ipod                  (const gchar *mountpoint,
-                                             const gchar *model_number,
-                                             const gchar *ipod_name,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2824781"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_init_ipod                      (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *model_number,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *ipod_name,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Initialise an iPod device from scratch. The function attempts to
 create a blank database, complete with master playlist and device
@@ -439,7 +570,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td>        return location for a <span class="type">GError</span> or NULL
+<td>        return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -453,9 +586,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id362288"></a><h3>
+<a name="id2824906"></a><h3>
 <a name="Itdb-IpodGeneration"></a>enum Itdb_IpodGeneration</h3>
-<a class="indexterm" name="id362298"></a><pre class="programlisting">typedef enum {
+<a class="indexterm" name="id2824916"></a><pre class="programlisting">typedef enum {
     ITDB_IPOD_GENERATION_UNKNOWN,
     ITDB_IPOD_GENERATION_FIRST,
     ITDB_IPOD_GENERATION_SECOND,
@@ -472,23 +605,27 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id362314"></a><h3>
+<a name="id2824935"></a><h3>
 <a name="Itdb-IpodInfo"></a>Itdb_IpodInfo</h3>
-<a class="indexterm" name="id362325"></a><pre class="programlisting">typedef struct {
-       /* model_number is abbreviated: if the first character is not
-	  numeric, it is ommited. e.g. "MA350 -&gt; A350", "M9829 -&gt; 9829" */
-	const gchar *model_number;
-        const double capacity;  /* in GB */
-	const Itdb_IpodModel ipod_model;
-	const Itdb_IpodGeneration ipod_generation;
-        /* Number of music (Fnn) dirs created by iTunes. The exact
-	   number seems to be version dependent. Therefore, the
-	   numbers here represent a mixture of reported values and
-	   common sense. Note: this number does not necessarily
-	   represent the number of dirs present on a particular
-	   iPod. It is used when setting up a new iPod from
-	   scratch. */
-        const guint musicdirs;
+<a class="indexterm" name="id2824946"></a><pre class="programlisting">typedef struct {
+    /* model_number is abbreviated: if the first character is not
+       numeric, it is ommited. e.g. "MA350 -&gt; A350", "M9829 -&gt; 9829" */
+    const gchar *model_number;
+    const double capacity;  /* in GB */
+    const Itdb_IpodModel ipod_model;
+    const Itdb_IpodGeneration ipod_generation;
+    /* Number of music (Fnn) dirs created by iTunes. The exact number
+       seems to be version dependent. Therefore, the numbers here
+       represent a mixture of reported values and common sense. Note:
+       this number does not necessarily represent the number of dirs
+       present on a particular iPod. It is used when setting up a new
+       iPod from scratch. */
+    const guint musicdirs;
+    /* reserved for future use */
+    const gint32 reserved_int1;
+    const gint32 reserved_int2;
+    gconstpointer reserved1;
+    gconstpointer reserved2;
 } Itdb_IpodInfo;
 </pre>
 <p>
@@ -497,9 +634,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id362344"></a><h3>
+<a name="id2824974"></a><h3>
 <a name="Itdb-IpodModel"></a>enum Itdb_IpodModel</h3>
-<a class="indexterm" name="id362355"></a><pre class="programlisting">typedef enum {
+<a class="indexterm" name="id2824984"></a><pre class="programlisting">typedef enum {
     ITDB_IPOD_MODEL_INVALID,
     ITDB_IPOD_MODEL_UNKNOWN,
     ITDB_IPOD_MODEL_COLOR,
@@ -530,9 +667,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id362374"></a><h3>
+<a name="id2825010"></a><h3>
 <a name="Itdb-ArtworkFormat"></a>Itdb_ArtworkFormat</h3>
-<a class="indexterm" name="id362385"></a><pre class="programlisting">typedef struct {
+<a class="indexterm" name="id2825020"></a><pre class="programlisting">typedef struct {
 	ItdbThumbType type;
 	gint16 width;
 	gint16 height;

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-File-handling-functions.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-File-handling-functions.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-File-handling-functions.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>File handling functions</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="prev" href="libgpod-The-Itdb-iTunesDB-structure.html" title="iPod database reading/writing">
 <link rel="next" href="libgpod-Time-handling.html" title="Time handling">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="libgpod-Time-handling.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id321287" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2719866" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id317334" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2806422" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-File-handling-functions"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id321287"></a><span class="refentrytitle">File handling functions</span>
+<a name="id2719866"></a><span class="refentrytitle">File handling functions</span>
 </h2>
 <p>File handling functions &#8212; Managing files on the iPod</p>
 </td>
@@ -44,47 +44,73 @@
 
 
 
-gboolean    <a href="libgpod-File-handling-functions.html#itdb-cp-track-to-ipod">itdb_cp_track_to_ipod</a>           (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             gchar *filename,
-                                             GError **error);
-void        <a href="libgpod-File-handling-functions.html#itdb-filename-fs2ipod">itdb_filename_fs2ipod</a>           (gchar *filename);
-void        <a href="libgpod-File-handling-functions.html#itdb-filename-ipod2fs">itdb_filename_ipod2fs</a>           (gchar *ipod_file);
-gchar*      <a href="libgpod-File-handling-functions.html#itdb-filename-on-ipod">itdb_filename_on_ipod</a>           (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
-gint        <a href="libgpod-File-handling-functions.html#itdb-musicdirs-number">itdb_musicdirs_number</a>           (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-gboolean    <a href="libgpod-File-handling-functions.html#itdb-rename-files">itdb_rename_files</a>               (const gchar *mp,
-                                             GError **error);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-File-handling-functions.html#itdb-cp-track-to-ipod">itdb_cp_track_to_ipod</a>               (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+void                <a href="libgpod-File-handling-functions.html#itdb-filename-fs2ipod">itdb_filename_fs2ipod</a>               (<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename);
+void                <a href="libgpod-File-handling-functions.html#itdb-filename-ipod2fs">itdb_filename_ipod2fs</a>               (<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *ipod_file);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-File-handling-functions.html#itdb-filename-on-ipod">itdb_filename_on_ipod</a>               (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a>                <a href="libgpod-File-handling-functions.html#itdb-musicdirs-number">itdb_musicdirs_number</a>               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-File-handling-functions.html#itdb-rename-files">itdb_rename_files</a>                   (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id317334"></a><h2>Description</h2>
+<a name="id2806422"></a><h2>Description</h2>
 <p>
 These functions are for copying, renaming, and getting information about the
 files and directories on the iPod
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id317350"></a><h2>Details</h2>
+<a name="id2806440"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id317361"></a><h3>
+<a name="id2806450"></a><h3>
 <a name="itdb-cp-track-to-ipod"></a>itdb_cp_track_to_ipod ()</h3>
-<a class="indexterm" name="id317373"></a><pre class="programlisting">gboolean    itdb_cp_track_to_ipod           (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             gchar *filename,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2806462"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_cp_track_to_ipod               (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Copy one track to the iPod. The PC filename is <em class="parameter"><code>filename</code></em>
 and is taken literally.
 </p>
 <p>
-The mountpoint of the iPod (in local encoding) is expected in
-track-&gt;itdb-&gt;mountpoint.
+The mountpoint of the iPod (in local encoding) must have been set
+with <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-set-mountpoint"><code class="function">itdb_set_mountpoint()</code></a> (done automatically when reading an
+iTunesDB).
 </p>
 <p>
 If <em class="parameter"><code>track</code></em>-&gt;transferred is set to TRUE, nothing is done. Upon
 successful transfer <em class="parameter"><code>track</code></em>-&gt;transferred is set to TRUE.
 </p>
 <p>
-For storage, the directories "f00 ... fnn" will be
-cycled through.
+For storage, the directories "f00 ... fnn" will be used randomly.
 </p>
 <p>
 The filename is constructed as "gtkpod"&lt;random number&gt; and copied
@@ -116,7 +142,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -130,9 +158,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id346156"></a><h3>
+<a name="id2804328"></a><h3>
 <a name="itdb-filename-fs2ipod"></a>itdb_filename_fs2ipod ()</h3>
-<a class="indexterm" name="id346168"></a><pre class="programlisting">void        itdb_filename_fs2ipod           (gchar *filename);</pre>
+<a class="indexterm" name="id2804339"></a><pre class="programlisting">void                itdb_filename_fs2ipod               (<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename);</pre>
 <p>
 Convert string from casual PC file name to iPod iTunesDB format using ':' 
 instead of G_DIR_SEPARATOR_S (ie slashes on Unix-like systems). <em class="parameter"><code>ipod_file</code></em>
@@ -151,9 +181,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id346224"></a><h3>
+<a name="id2804398"></a><h3>
 <a name="itdb-filename-ipod2fs"></a>itdb_filename_ipod2fs ()</h3>
-<a class="indexterm" name="id346236"></a><pre class="programlisting">void        itdb_filename_ipod2fs           (gchar *ipod_file);</pre>
+<a class="indexterm" name="id2804409"></a><pre class="programlisting">void                itdb_filename_ipod2fs               (<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *ipod_file);</pre>
 <p>
 Convert string from from iPod iTunesDB format to casual PC file name
 using G_DIR_SEPARATOR (ie slashes on Unix-like systems) instead of ':'.
@@ -172,9 +204,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id346292"></a><h3>
+<a name="id2804468"></a><h3>
 <a name="itdb-filename-on-ipod"></a>itdb_filename_on_ipod ()</h3>
-<a class="indexterm" name="id346303"></a><pre class="programlisting">gchar*      itdb_filename_on_ipod           (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
+<a class="indexterm" name="id2804479"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_filename_on_ipod               (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
 <p>
 Return the full iPod filename as stored in <em class="parameter"><code>track</code></em>.
 </p>
@@ -200,7 +234,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> full filename to <em class="parameter"><code>track</code></em> on the iPod or NULL if no
-filename is set in <em class="parameter"><code>track</code></em>. Must be freed with <code class="function">g_free()</code> after use.
+filename is set in <em class="parameter"><code>track</code></em>. Must be freed with <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -208,9 +244,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347941"></a><h3>
+<a name="id2799573"></a><h3>
 <a name="itdb-musicdirs-number"></a>itdb_musicdirs_number ()</h3>
-<a class="indexterm" name="id347952"></a><pre class="programlisting">gint        itdb_musicdirs_number           (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2799584"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a>                itdb_musicdirs_number               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Determine the number of F.. directories in iPod_Control/Music.
 </p>
@@ -239,10 +277,16 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id348023"></a><h3>
+<a name="id2799659"></a><h3>
 <a name="itdb-rename-files"></a>itdb_rename_files ()</h3>
-<a class="indexterm" name="id348035"></a><pre class="programlisting">gboolean    itdb_rename_files               (const gchar *mp,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2799672"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_rename_files                   (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Renames/removes some files on the iPod (Playcounts, OTG
 semaphore). May have to be called if you write the iTunesDB not
@@ -261,7 +305,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-Low-level-functions.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-Low-level-functions.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-Low-level-functions.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Low-level functions</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="prev" href="libgpod-Time-handling.html" title="Time handling">
 <link rel="next" href="ch01.html" title="iPod database components">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="ch01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id342329" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2784659" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id315035" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2776600" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-Low-level-functions"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id342329"></a><span class="refentrytitle">Low-level functions</span>
+<a name="id2784659"></a><span class="refentrytitle">Low-level functions</span>
 </h2>
 <p>Low-level functions &#8212; Low-level functions which shouldn't be needed in normal situations</p>
 </td>
@@ -44,50 +44,160 @@
 
 
 
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-control-dir">itdb_get_control_dir</a>            (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-itunes-dir">itdb_get_itunes_dir</a>             (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-music-dir">itdb_get_music_dir</a>              (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-artwork-dir">itdb_get_artwork_dir</a>            (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-device-dir">itdb_get_device_dir</a>             (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-photos-dir">itdb_get_photos_dir</a>             (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-itunesdb-path">itdb_get_itunesdb_path</a>          (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-itunessd-path">itdb_get_itunessd_path</a>          (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-artworkdb-path">itdb_get_artworkdb_path</a>         (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-photodb-path">itdb_get_photodb_path</a>           (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-photos-thumb-dir">itdb_get_photos_thumb_dir</a>       (const gchar *mountpoint);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-get-path">itdb_get_path</a>                   (const gchar *dir,
-                                             const gchar *file);
-gchar*      <a href="libgpod-Low-level-functions.html#itdb-resolve-path">itdb_resolve_path</a>               (const gchar *root,
-                                             const gchar * const *components);
-gboolean    <a href="libgpod-Low-level-functions.html#itdb-shuffle-write">itdb_shuffle_write</a>              (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             GError **error);
-gboolean    <a href="libgpod-Low-level-functions.html#itdb-shuffle-write-file">itdb_shuffle_write_file</a>         (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             const gchar *filename,
-                                             GError **error);
-gboolean    <a href="libgpod-Low-level-functions.html#itdb-cp">itdb_cp</a>                         (const gchar *from_file,
-                                             const gchar *to_file,
-                                             GError **error);
-<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>* <a href="libgpod-Low-level-functions.html#itdb-parse-file">itdb_parse_file</a>              (const gchar *filename,
-                                             GError **error);
-gboolean    <a href="libgpod-Low-level-functions.html#itdb-write-file">itdb_write_file</a>                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             const gchar *filename,
-                                             GError **error);
-<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>* <a href="libgpod-Low-level-functions.html#itdb-duplicate">itdb_duplicate</a>               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-control-dir">itdb_get_control_dir</a>                (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-itunes-dir">itdb_get_itunes_dir</a>                 (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-music-dir">itdb_get_music_dir</a>                  (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-artwork-dir">itdb_get_artwork_dir</a>                (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-device-dir">itdb_get_device_dir</a>                 (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-photos-dir">itdb_get_photos_dir</a>                 (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-itunesdb-path">itdb_get_itunesdb_path</a>              (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-itunessd-path">itdb_get_itunessd_path</a>              (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-artworkdb-path">itdb_get_artworkdb_path</a>             (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-photodb-path">itdb_get_photodb_path</a>               (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-photos-thumb-dir">itdb_get_photos_thumb_dir</a>           (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-get-path">itdb_get_path</a>                       (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *dir,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *file);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-resolve-path">itdb_resolve_path</a>                   (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *root,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> * const *components);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Low-level-functions.html#itdb-shuffle-write">itdb_shuffle_write</a>                  (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Low-level-functions.html#itdb-shuffle-write-file">itdb_shuffle_write_file</a>             (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Low-level-functions.html#itdb-cp">itdb_cp</a>                             (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *from_file,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *to_file,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              <a href="libgpod-Low-level-functions.html#itdb-cp-get-dest-filename">itdb_cp_get_dest_filename</a>           (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         <a href="libgpod-Low-level-functions.html#itdb-cp-finalize">itdb_cp_finalize</a>                    (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *dest_filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>*      <a href="libgpod-Low-level-functions.html#itdb-parse-file">itdb_parse_file</a>                     (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Low-level-functions.html#itdb-write-file">itdb_write_file</a>                     (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>*      <a href="libgpod-Low-level-functions.html#itdb-duplicate">itdb_duplicate</a>                      (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id315035"></a><h2>Description</h2>
+<a name="id2776600"></a><h2>Description</h2>
 <p>
 These functions are not normally needed but are avalable to allow for finer
 control over the iPod database.
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id315052"></a><h2>Details</h2>
+<a name="id2776617"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id315063"></a><h3>
+<a name="id2776628"></a><h3>
 <a name="itdb-get-control-dir"></a>itdb_get_control_dir ()</h3>
-<a class="indexterm" name="id315075"></a><pre class="programlisting">gchar*      itdb_get_control_dir            (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2776639"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_control_dir                (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Get the i*_Control directory. Observed values are 'iPod_Control'
 for standard iPods and 'iTunes/iTunes_Control' for mobile
@@ -106,7 +216,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> path to the control dir or NULL of non-existent. Must
-<code class="function">g_free()</code> after use.
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -114,9 +226,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id315144"></a><h3>
+<a name="id2770876"></a><h3>
 <a name="itdb-get-itunes-dir"></a>itdb_get_itunes_dir ()</h3>
-<a class="indexterm" name="id315156"></a><pre class="programlisting">gchar*      itdb_get_itunes_dir             (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2770889"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_itunes_dir                 (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve the iTunes directory (containing the iTunesDB) by first
 calling <a href="libgpod-Low-level-functions.html#itdb-get-control-dir"><code class="function">itdb_get_control_dir()</code></a> and then adding 'iTunes'</p>
@@ -134,7 +250,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> path to the iTunes directory or NULL of non-existent.
-Must <code class="function">g_free()</code> after use.
+Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -142,9 +260,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id350796"></a><h3>
+<a name="id2770969"></a><h3>
 <a name="itdb-get-music-dir"></a>itdb_get_music_dir ()</h3>
-<a class="indexterm" name="id350807"></a><pre class="programlisting">gchar*      itdb_get_music_dir              (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2770981"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_music_dir                  (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve the Music directory (containing the Fnn dirs) by first
 calling <a href="libgpod-Low-level-functions.html#itdb-get-control-dir"><code class="function">itdb_get_control_dir()</code></a> and then adding 'Music'</p>
@@ -162,7 +284,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> path to the Music directory or NULL of
-non-existent. Must <code class="function">g_free()</code> after use.
+non-existent. Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -170,9 +294,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id350884"></a><h3>
+<a name="id2771061"></a><h3>
 <a name="itdb-get-artwork-dir"></a>itdb_get_artwork_dir ()</h3>
-<a class="indexterm" name="id350896"></a><pre class="programlisting">gchar*      itdb_get_artwork_dir            (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2771072"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_artwork_dir                (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve the Artwork directory (containing the ArtworDB) by
 first calling <a href="libgpod-Low-level-functions.html#itdb-get-control-dir"><code class="function">itdb_get_control_dir()</code></a> and then adding 'Artwork'</p>
@@ -190,7 +318,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> path to the Artwork directory or NULL of
-non-existent. Must <code class="function">g_free()</code> after use.
+non-existent. Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -198,9 +328,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id350975"></a><h3>
+<a name="id2811831"></a><h3>
 <a name="itdb-get-device-dir"></a>itdb_get_device_dir ()</h3>
-<a class="indexterm" name="id350987"></a><pre class="programlisting">gchar*      itdb_get_device_dir             (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2811841"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_device_dir                 (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve the Device directory (containing the SysInfo file) by
 first calling <a href="libgpod-Low-level-functions.html#itdb-get-control-dir"><code class="function">itdb_get_control_dir()</code></a> and then adding 'Device'</p>
@@ -218,7 +352,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> path to the Device directory or NULL of
-non-existent. Must <code class="function">g_free()</code> after use.
+non-existent. Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -226,9 +362,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351066"></a><h3>
+<a name="id2811914"></a><h3>
 <a name="itdb-get-photos-dir"></a>itdb_get_photos_dir ()</h3>
-<a class="indexterm" name="id351078"></a><pre class="programlisting">gchar*      itdb_get_photos_dir             (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2811924"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_photos_dir                 (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve the Photo directory by
 first calling <a href="libgpod-Low-level-functions.html#itdb-get-control-dir"><code class="function">itdb_get_control_dir()</code></a> and then adding 'Photos'</p>
@@ -246,7 +386,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> path to the Artwork directory or NULL of
-non-existent. Must <code class="function">g_free()</code> after use.
+non-existent. Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -254,9 +396,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351129"></a><h3>
+<a name="id2812000"></a><h3>
 <a name="itdb-get-itunesdb-path"></a>itdb_get_itunesdb_path ()</h3>
-<a class="indexterm" name="id351139"></a><pre class="programlisting">gchar*      itdb_get_itunesdb_path          (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2812011"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_itunesdb_path              (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve a path to the iTunesDB</p>
 <p>
@@ -272,7 +418,9 @@
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> path to the iTunesDB or NULL if non-existent. Must <code class="function">g_free()</code>
+<td> path to the iTunesDB or NULL if non-existent. Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a>
 after use.
 </td>
 </tr>
@@ -281,9 +429,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351200"></a><h3>
+<a name="id2812081"></a><h3>
 <a name="itdb-get-itunessd-path"></a>itdb_get_itunessd_path ()</h3>
-<a class="indexterm" name="id351210"></a><pre class="programlisting">gchar*      itdb_get_itunessd_path          (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2812092"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_itunessd_path              (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve a path to the iTunesSD</p>
 <p>
@@ -299,7 +451,9 @@
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> path to the iTunesSD or NULL if non-existent. Must <code class="function">g_free()</code>
+<td> path to the iTunesSD or NULL if non-existent. Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a>
 after use.
 </td>
 </tr>
@@ -308,9 +462,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351271"></a><h3>
+<a name="id2812163"></a><h3>
 <a name="itdb-get-artworkdb-path"></a>itdb_get_artworkdb_path ()</h3>
-<a class="indexterm" name="id351282"></a><pre class="programlisting">gchar*      itdb_get_artworkdb_path         (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2812174"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_artworkdb_path             (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve a path to the ArtworkDB</p>
 <p>
@@ -326,7 +484,9 @@
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> path to the ArtworkDB or NULL if non-existent. Must <code class="function">g_free()</code> 
+<td> path to the ArtworkDB or NULL if non-existent. Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> 
 after use.
 </td>
 </tr>
@@ -335,9 +495,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351342"></a><h3>
+<a name="id2812244"></a><h3>
 <a name="itdb-get-photodb-path"></a>itdb_get_photodb_path ()</h3>
-<a class="indexterm" name="id351353"></a><pre class="programlisting">gchar*      itdb_get_photodb_path           (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2812256"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_photodb_path               (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve a path to the Photo DB</p>
 <p>
@@ -354,7 +518,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> path to the PhotoDB or NULL if non-existent. Must
-<code class="function">g_free()</code> after use.
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -362,9 +528,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351414"></a><h3>
+<a name="id2812326"></a><h3>
 <a name="itdb-get-photos-thumb-dir"></a>itdb_get_photos_thumb_dir ()</h3>
-<a class="indexterm" name="id351424"></a><pre class="programlisting">gchar*      itdb_get_photos_thumb_dir       (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2812338"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_photos_thumb_dir           (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Retrieve the Photo Thumbnail directory by
 first calling <a href="libgpod-Low-level-functions.html#itdb-get-control-dir"><code class="function">itdb_get_control_dir()</code></a> and then adding 'Photos/Thumbs'</p>
@@ -382,7 +552,9 @@
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> path to the Artwork directory or NULL of
-non-existent. Must <code class="function">g_free()</code> after use.
+non-existent. Must <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a> after use.
 </td>
 </tr>
 </tbody>
@@ -390,10 +562,16 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351494"></a><h3>
+<a name="id2812418"></a><h3>
 <a name="itdb-get-path"></a>itdb_get_path ()</h3>
-<a class="indexterm" name="id351505"></a><pre class="programlisting">gchar*      itdb_get_path                   (const gchar *dir,
-                                             const gchar *file);</pre>
+<a class="indexterm" name="id2812431"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_get_path                       (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *dir,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *file);</pre>
 <p>
 Retrieve a path to the <em class="parameter"><code>file</code></em> in <em class="parameter"><code>dir</code></em></p>
 <p>
@@ -414,7 +592,9 @@
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> path to the <em class="parameter"><code>file</code></em> or NULL if non-existent. Must be <code class="function">g_free()</code>'d 
+<td> path to the <em class="parameter"><code>file</code></em> or NULL if non-existent. Must be <a
+href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"
+><code class="function">g_free()</code></a>'d 
 after use.
 </td>
 </tr>
@@ -423,10 +603,16 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351599"></a><h3>
+<a name="id2812539"></a><h3>
 <a name="itdb-resolve-path"></a>itdb_resolve_path ()</h3>
-<a class="indexterm" name="id351609"></a><pre class="programlisting">gchar*      itdb_resolve_path               (const gchar *root,
-                                             const gchar * const *components);</pre>
+<a class="indexterm" name="id2812552"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_resolve_path                   (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *root,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> * const *components);</pre>
 <p>
 Resolve the path to a track on the iPod
 </p>
@@ -462,10 +648,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351686"></a><h3>
+<a name="id2812620"></a><h3>
 <a name="itdb-shuffle-write"></a>itdb_shuffle_write ()</h3>
-<a class="indexterm" name="id351696"></a><pre class="programlisting">gboolean    itdb_shuffle_write              (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2812630"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_shuffle_write                  (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Write out an iTunesSD for the Shuffle.
 First reassigns unique IDs to all tracks.
@@ -488,7 +678,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -502,11 +694,17 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351793"></a><h3>
+<a name="id2812732"></a><h3>
 <a name="itdb-shuffle-write-file"></a>itdb_shuffle_write_file ()</h3>
-<a class="indexterm" name="id351803"></a><pre class="programlisting">gboolean    itdb_shuffle_write_file         (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             const gchar *filename,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2812743"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_shuffle_write_file             (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Do the actual writing to the iTunesSD</p>
 <p>
@@ -527,7 +725,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -541,11 +741,19 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id351911"></a><h3>
+<a name="id2812854"></a><h3>
 <a name="itdb-cp"></a>itdb_cp ()</h3>
-<a class="indexterm" name="id351921"></a><pre class="programlisting">gboolean    itdb_cp                         (const gchar *from_file,
-                                             const gchar *to_file,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2812864"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_cp                             (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *from_file,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *to_file,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Copy file "from_file" to "to_file".</p>
 <p>
@@ -566,7 +774,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -580,10 +790,153 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id352022"></a><h3>
+<a name="id2812970"></a><h3>
+<a name="itdb-cp-get-dest-filename"></a>itdb_cp_get_dest_filename ()</h3>
+<a class="indexterm" name="id2812981"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*              itdb_cp_get_dest_filename           (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
+<p>
+Creates a valid filename on the iPod where to copy <em class="parameter"><code>filename</code></em>.
+</p>
+<p>
+You must either provide <em class="parameter"><code>track</code></em> or <em class="parameter"><code>mountpoint</code></em>. Providing <em class="parameter"><code>track</code></em> is
+not thread-safe (accesses track-&gt;itdb-&gt;device and may even write to
+track-&gt;itdb-&gt;device). Providing <em class="parameter"><code>mountpoint</code></em> is thread-safe but
+slightly slower because the number of music directories is counted
+each time the function is called.
+</p>
+<p>
+You can use #<a href="libgpod-Low-level-functions.html#itdb-cp"><code class="function">itdb_cp()</code></a> to copy the track to the iPod or implement
+your own copy function. After the file was copied you have to call
+#<a href="libgpod-Low-level-functions.html#itdb-cp-finalize"><code class="function">itdb_cp_finalize()</code></a> to obtain relevant update information for
+<a href="libgpod-Tracks.html#Itdb-Track"><span class="type">Itdb_Track</span></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><span class="term"><em class="parameter"><code>track</code></em>&#160;:</span></td>
+<td> track to transfer or NULL
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>mountpoint</code></em>&#160;:</span></td>
+<td> mountpoint of your iPod or NULL
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> the source file
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
+</td>
+</tr>
+<tr>
+<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a valid filename on the iPod to where <em class="parameter"><code>filename</code></em> can
+be copied or NULL in case of an error. In that case <em class="parameter"><code>error</code></em> is set
+accordingly. You must free the filename when it is no longer
+needed.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2813176"></a><h3>
+<a name="itdb-cp-finalize"></a>itdb_cp_finalize ()</h3>
+<a class="indexterm" name="id2813186"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         itdb_cp_finalize                    (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *dest_filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
+<p>
+Updates information in <em class="parameter"><code>track</code></em> necessary for the iPod. You must
+either supply <em class="parameter"><code>track</code></em> or <em class="parameter"><code>mountpoint</code></em>. If <em class="parameter"><code>track</code></em> == NULL, a new track
+structure is created that must be freed with #<a href="libgpod-Tracks.html#itdb-track-free"><code class="function">itdb_track_free()</code></a>
+when it is no longer needed.
+</p>
+<p>
+The following fields are updated:
+</p>
+<p>
+- ipod_path
+- filetype_marker
+- transferred
+- size</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><span class="term"><em class="parameter"><code>track</code></em>&#160;:</span></td>
+<td> track to update or NULL
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>mountpoint</code></em>&#160;:</span></td>
+<td> mountpoint of your iPod or NULL
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>dest_filename</code></em>&#160;:</span></td>
+<td> the name of the file on the iPod copied to
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
+</td>
+</tr>
+<tr>
+<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> on success a pointer to the <a href="libgpod-Tracks.html#Itdb-Track"><span class="type">Itdb_Track</span></a> item passed
+or a new <a href="libgpod-Tracks.html#Itdb-Track"><span class="type">Itdb_Track</span></a> item if <em class="parameter"><code>track</code></em> was NULL. In the latter case
+you must free the memory using #<a href="libgpod-Tracks.html#itdb-track-free"><code class="function">itdb_track_free()</code></a> when the item is
+no longer used. If an error occurs NULL is returned and <em class="parameter"><code>error</code></em> is
+set accordingly. Errors occur when <em class="parameter"><code>dest_filename</code></em> cannot be
+accessed or the mountpoint is not set.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2813387"></a><h3>
 <a name="itdb-parse-file"></a>itdb_parse_file ()</h3>
-<a class="indexterm" name="id352032"></a><pre class="programlisting"><a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>* itdb_parse_file              (const gchar *filename,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2813397"></a><pre class="programlisting"><a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>*      itdb_parse_file                     (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Same as <code class="function">itunesdb_parse()</code>, but filename is specified directly.</p>
 <p>
@@ -599,15 +952,17 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> a newly allocated <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> struct holding the tracks and
-the playlists present on the iPod at <em class="parameter"><code>mp</code></em>, NULL if <em class="parameter"><code>mp</code></em> isn't an iPod mount
-point. If non-NULL, the <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> is to be freed with <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-free"><code class="function">itdb_free()</code></a> when
-it's no longer needed
+the playlists present in <em class="parameter"><code>filename</code></em>, NULL if <em class="parameter"><code>filename</code></em> isn't a parsable 
+iTunesDB file. If non-NULL, the <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> is to be freed with 
+<a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-free"><code class="function">itdb_free()</code></a> when it's no longer needed
 </td>
 </tr>
 </tbody>
@@ -615,11 +970,17 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id352150"></a><h3>
+<a name="id2813520"></a><h3>
 <a name="itdb-write-file"></a>itdb_write_file ()</h3>
-<a class="indexterm" name="id352160"></a><pre class="programlisting">gboolean    itdb_write_file                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             const gchar *filename,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2813530"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_write_file                     (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Write the content of <em class="parameter"><code>itdb</code></em> to <em class="parameter"><code>filename</code></em>. If <em class="parameter"><code>filename</code></em> is NULL, it attempts
 to write to itdb-&gt;filename.</p>
@@ -641,7 +1002,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -654,9 +1017,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id352283"></a><h3>
+<a name="id2813657"></a><h3>
 <a name="itdb-duplicate"></a>itdb_duplicate ()</h3>
-<a class="indexterm" name="id352294"></a><pre class="programlisting"><a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>* itdb_duplicate               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2813667"></a><pre class="programlisting"><a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>*      itdb_duplicate                      (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Duplicate <em class="parameter"><code>itdb</code></em> 
 FIXME: not implemented yet</p>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-Photo-database.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-Photo-database.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-Photo-database.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,11 +3,11 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Photo database</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="photodb.html" title="Part&#160;II.&#160;Photo database">
 <link rel="prev" href="photodb.html" title="Part&#160;II.&#160;Photo database">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -22,16 +22,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td>&#160;</td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id333726" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2783323" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id361166" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2821218" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-Photo-database"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id333726"></a><span class="refentrytitle">Photo database</span>
+<a name="id2783323"></a><span class="refentrytitle">Photo database</span>
 </h2>
 <p>Photo database &#8212; Functions to create, read, write the photo database</p>
 </td>
@@ -43,48 +43,95 @@
 
 
 
-            <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>;
-            <a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>;
-<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>* <a href="libgpod-Photo-database.html#itdb-photodb-add-photo">itdb_photodb_add_photo</a>        (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             const gchar *filename,
-                                             gint position,
-                                             gint rotation,
-                                             GError **error);
-<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>* <a href="libgpod-Photo-database.html#itdb-photodb-add-photo-from-data">itdb_photodb_add_photo_from_data</a>
-                                            (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             const guchar *image_data,
-                                             gsize image_data_len,
-                                             gint position,
-                                             gint rotation,
-                                             GError **error);
-<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>* <a href="libgpod-Photo-database.html#itdb-photodb-create">itdb_photodb_create</a>           (const gchar *mountpoint);
-void        <a href="libgpod-Photo-database.html#itdb-photodb-free">itdb_photodb_free</a>               (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *photodb);
-<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>* <a href="libgpod-Photo-database.html#itdb-photodb-parse">itdb_photodb_parse</a>            (const gchar *mp,
-                                             GError **error);
-void        <a href="libgpod-Photo-database.html#itdb-photodb-photoalbum-add-photo">itdb_photodb_photoalbum_add_photo</a>
-                                            (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
-                                             <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *photo,
-                                             gint position);
-<a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>* <a href="libgpod-Photo-database.html#itdb-photodb-photoalbum-by-name">itdb_photodb_photoalbum_by_name</a>
-                                            (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             const gchar *albumname);
-<a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>* <a href="libgpod-Photo-database.html#itdb-photodb-photoalbum-create">itdb_photodb_photoalbum_create</a>
-                                            (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             const gchar *albumname,
-                                             gint pos);
-void        <a href="libgpod-Photo-database.html#itdb-photodb-photoalbum-remove">itdb_photodb_photoalbum_remove</a>  (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
-                                             gboolean remove_pics);
-void        <a href="libgpod-Photo-database.html#itdb-photodb-remove-photo">itdb_photodb_remove_photo</a>       (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
-                                             <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *photo);
-gboolean    <a href="libgpod-Photo-database.html#itdb-photodb-write">itdb_photodb_write</a>              (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *photodb,
-                                             GError **error);
+                    <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>;
+                    <a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>;
+<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       <a href="libgpod-Photo-database.html#itdb-photodb-add-photo">itdb_photodb_add_photo</a>              (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> position,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       <a href="libgpod-Photo-database.html#itdb-photodb-add-photo-from-data">itdb_photodb_add_photo_from_data</a>    (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guchar"
+>guchar</a> *image_data,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
+>gsize</a> image_data_len,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> position,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       <a href="libgpod-Photo-database.html#itdb-photodb-add-photo-from-pixbuf">itdb_photodb_add_photo_from_pixbuf</a>  (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> pixbuf,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> position,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>*       <a href="libgpod-Photo-database.html#itdb-photodb-create">itdb_photodb_create</a>                 (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);
+void                <a href="libgpod-Photo-database.html#itdb-photodb-free">itdb_photodb_free</a>                   (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *photodb);
+<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>*       <a href="libgpod-Photo-database.html#itdb-photodb-parse">itdb_photodb_parse</a>                  (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+void                <a href="libgpod-Photo-database.html#itdb-photodb-photoalbum-add-photo">itdb_photodb_photoalbum_add_photo</a>   (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
+                                                         <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *photo,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> position);
+<a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>*    <a href="libgpod-Photo-database.html#itdb-photodb-photoalbum-by-name">itdb_photodb_photoalbum_by_name</a>     (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *albumname);
+<a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>*    <a href="libgpod-Photo-database.html#itdb-photodb-photoalbum-create">itdb_photodb_photoalbum_create</a>      (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *albumname,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> pos);
+void                <a href="libgpod-Photo-database.html#itdb-photodb-photoalbum-remove">itdb_photodb_photoalbum_remove</a>      (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a> remove_pics);
+void                <a href="libgpod-Photo-database.html#itdb-photodb-remove-photo">itdb_photodb_remove_photo</a>           (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
+                                                         <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *photo);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Photo-database.html#itdb-photodb-write">itdb_photodb_write</a>                  (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *photodb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id361166"></a><h2>Description</h2>
+<a name="id2821218"></a><h2>Description</h2>
 <p>
 These functions are for creating, reading, and writing the photo
 database.
@@ -146,7 +193,7 @@
 </p>
 <p>
 For example, "MA450" would stand for an 80 GB 6th generation iPod Video. See
-<a href="http://gtkpod.cvs.sourceforge.net/*checkout*/gtkpod/libgpod/src/itdb_device.c" target="_top">itdb_device.c</a>
+<a href="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/src/itdb_device.c" target="_top">itdb_device.c</a>
 for a list of supported models.
 </p>
 <p>
@@ -154,17 +201,17 @@
 saved (<a href="libgpod-Device.html#itdb-device-write-sysinfo"><code class="function">itdb_device_write_sysinfo()</code></a> is called).
 </p>
 <p>
-Have a look at the <a href="http://gtkpod.cvs.sourceforge.net/*checkout*/gtkpod/libgpod/tests/test-photos.c" target="_top">test-photos</a>
-test program in the <a href="http://gtkpod.cvs.sourceforge.net/gtkpod/libgpod/tests/" target="_top">tests/</a>
+Have a look at the <a href="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/tests/test-photos.c" target="_top">test-photos</a>
+test program in the <a href="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/tests/" target="_top">tests/</a>
 directory of the libgpod source for an example of how to use the interface.
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id361398"></a><h2>Details</h2>
+<a name="id2774248"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id363725"></a><h3>
+<a name="id2774258"></a><h3>
 <a name="Itdb-PhotoAlbum"></a>Itdb_PhotoAlbum</h3>
-<a class="indexterm" name="id363735"></a><pre class="programlisting">typedef struct {
+<a class="indexterm" name="id2774271"></a><pre class="programlisting">typedef struct {
     gchar *name;                 /* name of photoalbum in UTF8            */
     GList *members;              /* photos in album (Itdb_Artwork *)      */
     guint8 album_type;           /* 0x01 for master (Photo Library),
@@ -191,6 +238,11 @@
     /* set automatically at time of writing the PhotoDB */
     gint32  album_id;
     gint32  prev_album_id;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -205,12 +257,17 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id342310"></a><h3>
+<a name="id2768434"></a><h3>
 <a name="Itdb-PhotoDB"></a>Itdb_PhotoDB</h3>
-<a class="indexterm" name="id319157"></a><pre class="programlisting">typedef struct {
+<a class="indexterm" name="id2793186"></a><pre class="programlisting">typedef struct {
     GList *photos;      /* (Itdb_Artwork *)     */
     GList *photoalbums; /* (Itdb_PhotoAlbum *)  */
     Itdb_Device *device;/* iPod device info     */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -225,13 +282,21 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id363768"></a><h3>
+<a name="id2771914"></a><h3>
 <a name="itdb-photodb-add-photo"></a>itdb_photodb_add_photo ()</h3>
-<a class="indexterm" name="id363778"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>* itdb_photodb_add_photo        (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             const gchar *filename,
-                                             gint position,
-                                             gint rotation,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2774330"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       itdb_photodb_add_photo              (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> position,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Add a photo to the PhotoDB. The photo is automatically added to the
 first Photoalbum, which by default contains a list of all photos in
@@ -271,7 +336,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -284,15 +351,24 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id363925"></a><h3>
+<a name="id2826764"></a><h3>
 <a name="itdb-photodb-add-photo-from-data"></a>itdb_photodb_add_photo_from_data ()</h3>
-<a class="indexterm" name="id363936"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>* itdb_photodb_add_photo_from_data
-                                            (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             const guchar *image_data,
-                                             gsize image_data_len,
-                                             gint position,
-                                             gint rotation,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2826775"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       itdb_photodb_add_photo_from_data    (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guchar"
+>guchar</a> *image_data,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
+>gsize</a> image_data_len,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> position,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Add a photo to the PhotoDB. The photo is automatically added to the
 first Photoalbum, which by default contains a list of all photos in
@@ -338,7 +414,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -351,9 +429,82 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364103"></a><h3>
+<a name="id2826953"></a><h3>
+<a name="itdb-photodb-add-photo-from-pixbuf"></a>itdb_photodb_add_photo_from_pixbuf ()</h3>
+<a class="indexterm" name="id2826965"></a><pre class="programlisting"><a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a>*       itdb_photodb_add_photo_from_pixbuf  (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> pixbuf,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> position,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> rotation,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
+<p>
+Add a photo to the PhotoDB. The photo is automatically added to the
+first Photoalbum, which by default contains a list of all photos in
+the database. If no Photoalbums exist one is created automatically.
+</p>
+<p>
+For the rotation angle you can also use the gdk constants
+GDK_PIXBUF_ROTATE_NONE, ..._COUNTERCLOCKWISE, ..._UPSIDEDOWN AND
+..._CLOCKWISE.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><span class="term"><em class="parameter"><code>db</code></em>&#160;:</span></td>
+<td> the <a href="libgpod-Photo-database.html#Itdb-PhotoDB"><span class="type">Itdb_PhotoDB</span></a> to add the photo to.
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>pixbuf</code></em>&#160;:</span></td>
+<td> a <a
+href="/usr/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf"
+><span class="type">GdkPixbuf</span></a> to use as the image data
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>position</code></em>&#160;:</span></td>
+<td> position where to insert the new photo (-1 to append at
+the end)
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>rotation</code></em>&#160;:</span></td>
+<td> angle by which the image should be rotated
+counterclockwise. Valid values are 0, 90, 180 and 270.
+</td>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
+</td>
+</tr>
+<tr>
+<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a pointer to the added photo.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2827127"></a><h3>
 <a name="itdb-photodb-create"></a>itdb_photodb_create ()</h3>
-<a class="indexterm" name="id364113"></a><pre class="programlisting"><a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>* itdb_photodb_create           (const gchar *mountpoint);</pre>
+<a class="indexterm" name="id2827137"></a><pre class="programlisting"><a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>*       itdb_photodb_create                 (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mountpoint);</pre>
 <p>
 Creates a new Itdb_PhotoDB. If mountpoint is NULL, you will have to
 set it manually later by calling <a href="libgpod-Device.html#itdb-device-set-mountpoint"><code class="function">itdb_device_set_mountpoint()</code></a>.</p>
@@ -380,9 +531,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364184"></a><h3>
+<a name="id2827212"></a><h3>
 <a name="itdb-photodb-free"></a>itdb_photodb_free ()</h3>
-<a class="indexterm" name="id364194"></a><pre class="programlisting">void        itdb_photodb_free               (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *photodb);</pre>
+<a class="indexterm" name="id2827222"></a><pre class="programlisting">void                itdb_photodb_free                   (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *photodb);</pre>
 <p>
 Free the memory taken by <em class="parameter"><code>photodb</code></em>.</p>
 <p>
@@ -399,10 +550,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364249"></a><h3>
+<a name="id2827278"></a><h3>
 <a name="itdb-photodb-parse"></a>itdb_photodb_parse ()</h3>
-<a class="indexterm" name="id364259"></a><pre class="programlisting"><a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>* itdb_photodb_parse            (const gchar *mp,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2827288"></a><pre class="programlisting"><a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a>*       itdb_photodb_parse                  (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Parses the photo database of an iPod mounted at <em class="parameter"><code>mp</code></em>.</p>
 <p>
@@ -431,13 +586,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364335"></a><h3>
+<a name="id2827369"></a><h3>
 <a name="itdb-photodb-photoalbum-add-photo"></a>itdb_photodb_photoalbum_add_photo ()</h3>
-<a class="indexterm" name="id364346"></a><pre class="programlisting">void        itdb_photodb_photoalbum_add_photo
-                                            (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
-                                             <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *photo,
-                                             gint position);</pre>
+<a class="indexterm" name="id2827382"></a><pre class="programlisting">void                itdb_photodb_photoalbum_add_photo   (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
+                                                         <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *photo,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> position);</pre>
 <p>
 Adds a photo already in the library to the specified album
 <em class="parameter"><code>album</code></em>. Photos are automatically added to the first album (Photo
@@ -476,11 +632,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364486"></a><h3>
+<a name="id2827530"></a><h3>
 <a name="itdb-photodb-photoalbum-by-name"></a>itdb_photodb_photoalbum_by_name ()</h3>
-<a class="indexterm" name="id364497"></a><pre class="programlisting"><a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>* itdb_photodb_photoalbum_by_name
-                                            (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             const gchar *albumname);</pre>
+<a class="indexterm" name="id2827542"></a><pre class="programlisting"><a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>*    itdb_photodb_photoalbum_by_name     (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *albumname);</pre>
 <p>
 Find the first photoalbum with a given name or the Photo Library
 Album if called with no name.</p>
@@ -512,12 +669,15 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364582"></a><h3>
+<a name="id2827632"></a><h3>
 <a name="itdb-photodb-photoalbum-create"></a>itdb_photodb_photoalbum_create ()</h3>
-<a class="indexterm" name="id364592"></a><pre class="programlisting"><a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>* itdb_photodb_photoalbum_create
-                                            (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             const gchar *albumname,
-                                             gint pos);</pre>
+<a class="indexterm" name="id2827644"></a><pre class="programlisting"><a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a>*    itdb_photodb_photoalbum_create      (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *albumname,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> pos);</pre>
 <p>
 Create and add a new photoalbum.</p>
 <p>
@@ -552,11 +712,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364683"></a><h3>
+<a name="id2827740"></a><h3>
 <a name="itdb-photodb-photoalbum-remove"></a>itdb_photodb_photoalbum_remove ()</h3>
-<a class="indexterm" name="id364694"></a><pre class="programlisting">void        itdb_photodb_photoalbum_remove  (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
-                                             gboolean remove_pics);</pre>
+<a class="indexterm" name="id2827752"></a><pre class="programlisting">void                itdb_photodb_photoalbum_remove      (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a> remove_pics);</pre>
 <p>
 Remove <em class="parameter"><code>album</code></em> from the Photo Database. If remove_pics is TRUE,
 remove all photos contained in <em class="parameter"><code>album</code></em> from the Photo Database.
@@ -591,11 +753,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364795"></a><h3>
+<a name="id2827860"></a><h3>
 <a name="itdb-photodb-remove-photo"></a>itdb_photodb_remove_photo ()</h3>
-<a class="indexterm" name="id364805"></a><pre class="programlisting">void        itdb_photodb_remove_photo       (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
-                                             <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
-                                             <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *photo);</pre>
+<a class="indexterm" name="id2827871"></a><pre class="programlisting">void                itdb_photodb_remove_photo           (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *db,
+                                                         <a href="libgpod-Photo-database.html#Itdb-PhotoAlbum">Itdb_PhotoAlbum</a> *album,
+                                                         <a href="libgpod-Artwork.html#Itdb-Artwork">Itdb_Artwork</a> *photo);</pre>
 <p>
 Remove photo. If <em class="parameter"><code>album</code></em> is not the first photoalbum, the photo will
 be removed from that album only. If <em class="parameter"><code>album</code></em> is NULL or the first
@@ -633,10 +795,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id364925"></a><h3>
+<a name="id2827998"></a><h3>
 <a name="itdb-photodb-write"></a>itdb_photodb_write ()</h3>
-<a class="indexterm" name="id364936"></a><pre class="programlisting">gboolean    itdb_photodb_write              (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *photodb,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2828009"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_photodb_write                  (<a href="libgpod-Photo-database.html#Itdb-PhotoDB">Itdb_PhotoDB</a> *photodb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Write out a PhotoDB.
 </p>
@@ -655,7 +821,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-Playlists.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-Playlists.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-Playlists.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Playlists</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="ch01.html" title="iPod database components">
 <link rel="prev" href="libgpod-Tracks.html" title="Tracks">
 <link rel="next" href="libgpod-Smart-Playlists.html" title="Smart Playlists">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="libgpod-Smart-Playlists.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id317904" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2776981" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id349822" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2809659" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-Playlists"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id317904"></a><span class="refentrytitle">Playlists</span>
+<a name="id2776981"></a><span class="refentrytitle">Playlists</span>
 </h2>
 <p>Playlists &#8212; Data structure to represent an iPod playlist</p>
 </td>
@@ -44,48 +44,75 @@
 
 
 
-            <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>;
-enum        <a href="libgpod-Playlists.html#ItdbPlaylistSortOrder">ItdbPlaylistSortOrder</a>;
-<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* <a href="libgpod-Playlists.html#itdb-playlist-new">itdb_playlist_new</a>            (const gchar *title,
-                                             gboolean spl);
-void        <a href="libgpod-Playlists.html#itdb-playlist-free">itdb_playlist_free</a>              (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* <a href="libgpod-Playlists.html#itdb-playlist-duplicate">itdb_playlist_duplicate</a>      (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-void        <a href="libgpod-Playlists.html#itdb-playlist-add">itdb_playlist_add</a>               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             gint32 pos);
-void        <a href="libgpod-Playlists.html#itdb-playlist-move">itdb_playlist_move</a>              (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             guint32 pos);
-void        <a href="libgpod-Playlists.html#itdb-playlist-remove">itdb_playlist_remove</a>            (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-void        <a href="libgpod-Playlists.html#itdb-playlist-unlink">itdb_playlist_unlink</a>            (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-void        <a href="libgpod-Playlists.html#itdb-playlist-add-track">itdb_playlist_add_track</a>         (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             gint32 pos);
-void        <a href="libgpod-Playlists.html#itdb-playlist-remove-track">itdb_playlist_remove_track</a>      (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
-gboolean    <a href="libgpod-Playlists.html#itdb-playlist-contains-track">itdb_playlist_contains_track</a>    (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
-guint32     <a href="libgpod-Playlists.html#itdb-playlist-contain-track-number">itdb_playlist_contain_track_number</a>
-                                            (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *tr);
-guint32     <a href="libgpod-Playlists.html#itdb-playlist-tracks-number">itdb_playlist_tracks_number</a>     (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* <a href="libgpod-Playlists.html#itdb-playlist-mpl">itdb_playlist_mpl</a>            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-gboolean    <a href="libgpod-Playlists.html#itdb-playlist-is-mpl">itdb_playlist_is_mpl</a>            (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-void        <a href="libgpod-Playlists.html#itdb-playlist-set-mpl">itdb_playlist_set_mpl</a>           (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* <a href="libgpod-Playlists.html#itdb-playlist-podcasts">itdb_playlist_podcasts</a>       (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-gboolean    <a href="libgpod-Playlists.html#itdb-playlist-is-podcasts">itdb_playlist_is_podcasts</a>       (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-void        <a href="libgpod-Playlists.html#itdb-playlist-set-podcasts">itdb_playlist_set_podcasts</a>      (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-gboolean    <a href="libgpod-Playlists.html#itdb-playlist-exists">itdb_playlist_exists</a>            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
-<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* <a href="libgpod-Playlists.html#itdb-playlist-by-id">itdb_playlist_by_id</a>          (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             guint64 id);
-<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* <a href="libgpod-Playlists.html#itdb-playlist-by-nr">itdb_playlist_by_nr</a>          (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             guint32 num);
-<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* <a href="libgpod-Playlists.html#itdb-playlist-by-name">itdb_playlist_by_name</a>        (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             gchar *name);
-void        <a href="libgpod-Playlists.html#itdb-playlist-randomize">itdb_playlist_randomize</a>         (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+                    <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>;
+enum                <a href="libgpod-Playlists.html#ItdbPlaylistSortOrder">ItdbPlaylistSortOrder</a>;
+<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      <a href="libgpod-Playlists.html#itdb-playlist-new">itdb_playlist_new</a>                   (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *title,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a> spl);
+void                <a href="libgpod-Playlists.html#itdb-playlist-free">itdb_playlist_free</a>                  (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      <a href="libgpod-Playlists.html#itdb-playlist-duplicate">itdb_playlist_duplicate</a>             (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+void                <a href="libgpod-Playlists.html#itdb-playlist-add">itdb_playlist_add</a>                   (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint32"
+>gint32</a> pos);
+void                <a href="libgpod-Playlists.html#itdb-playlist-move">itdb_playlist_move</a>                  (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a> pos);
+void                <a href="libgpod-Playlists.html#itdb-playlist-remove">itdb_playlist_remove</a>                (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+void                <a href="libgpod-Playlists.html#itdb-playlist-unlink">itdb_playlist_unlink</a>                (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+void                <a href="libgpod-Playlists.html#itdb-playlist-add-track">itdb_playlist_add_track</a>             (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint32"
+>gint32</a> pos);
+void                <a href="libgpod-Playlists.html#itdb-playlist-remove-track">itdb_playlist_remove_track</a>          (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Playlists.html#itdb-playlist-contains-track">itdb_playlist_contains_track</a>        (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             <a href="libgpod-Playlists.html#itdb-playlist-contain-track-number">itdb_playlist_contain_track_number</a>  (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *tr);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             <a href="libgpod-Playlists.html#itdb-playlist-tracks-number">itdb_playlist_tracks_number</a>         (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      <a href="libgpod-Playlists.html#itdb-playlist-mpl">itdb_playlist_mpl</a>                   (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Playlists.html#itdb-playlist-is-mpl">itdb_playlist_is_mpl</a>                (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+void                <a href="libgpod-Playlists.html#itdb-playlist-set-mpl">itdb_playlist_set_mpl</a>               (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      <a href="libgpod-Playlists.html#itdb-playlist-podcasts">itdb_playlist_podcasts</a>              (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Playlists.html#itdb-playlist-is-podcasts">itdb_playlist_is_podcasts</a>           (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+void                <a href="libgpod-Playlists.html#itdb-playlist-set-podcasts">itdb_playlist_set_podcasts</a>          (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Playlists.html#itdb-playlist-exists">itdb_playlist_exists</a>                (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
+<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      <a href="libgpod-Playlists.html#itdb-playlist-by-id">itdb_playlist_by_id</a>                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"
+>guint64</a> id);
+<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      <a href="libgpod-Playlists.html#itdb-playlist-by-nr">itdb_playlist_by_nr</a>                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a> num);
+<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      <a href="libgpod-Playlists.html#itdb-playlist-by-name">itdb_playlist_by_name</a>               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *name);
+void                <a href="libgpod-Playlists.html#itdb-playlist-randomize">itdb_playlist_randomize</a>             (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id349822"></a><h2>Description</h2>
+<a name="id2809659"></a><h2>Description</h2>
 <p>
 These functions and structures allow for adding and removing playlists,
 adding and removing tracks from playlists, sorting playlists, finding tracks in
@@ -93,11 +120,11 @@
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id349839"></a><h2>Details</h2>
+<a name="id2809677"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id349849"></a><h3>
+<a name="id2809688"></a><h3>
 <a name="Itdb-Playlist"></a>Itdb_Playlist</h3>
-<a class="indexterm" name="id349861"></a><pre class="programlisting">typedef struct {
+<a class="indexterm" name="id2809701"></a><pre class="programlisting">typedef struct {
     Itdb_iTunesDB *itdb;  /* pointer to iTunesDB (for convenience) */
     gchar *name;          /* name of playlist in UTF8              */
     guint8 type;          /* ITDB_PL_TYPE_NORM/_MPL                */
@@ -107,14 +134,19 @@
     gint  num;            /* number of tracks in playlist          */
     GList *members;       /* tracks in playlist (Track *)          */
     gboolean is_spl;      /* smart playlist?                       */
-    guint32 timestamp;    /* timestamp of playlist creation        */
+    time_t timestamp;     /* timestamp of playlist creation        */
     guint64 id;           /* playlist ID                           */
     guint32 sortorder;    /* How to sort playlist -- see below     */
     guint32 podcastflag;  /* ITDB_PL_FLAG_NORM/_PODCAST            */
-    SPLPref splpref;      /* smart playlist prefs                  */
-    SPLRules splrules;    /* rules for smart playlists             */
-    gpointer reserved1;   /* reserved for MHOD100 implementation   */
-    gpointer reserved2;   /* reserved for MHOD100 implementation   */
+    Itdb_SPLPref splpref;      /* smart playlist prefs                  */
+    Itdb_SPLRules splrules;    /* rules for smart playlists             */
+    gpointer reserved100; /* reserved for MHOD100 implementation   */
+    gpointer reserved101; /* reserved for MHOD100 implementation   */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -129,9 +161,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id327508"></a><h3>
+<a name="id2792174"></a><h3>
 <a name="ItdbPlaylistSortOrder"></a>enum ItdbPlaylistSortOrder</h3>
-<a class="indexterm" name="id327413"></a><pre class="programlisting">typedef enum
+<a class="indexterm" name="id2780291"></a><pre class="programlisting">typedef enum
 {
     ITDB_PSO_MANUAL = 1,
 /*    ITDB_PSO_UNKNOWN = 2, */
@@ -169,10 +201,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id349891"></a><h3>
+<a name="id2796950"></a><h3>
 <a name="itdb-playlist-new"></a>itdb_playlist_new ()</h3>
-<a class="indexterm" name="id355786"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* itdb_playlist_new            (const gchar *title,
-                                             gboolean spl);</pre>
+<a class="indexterm" name="id2811490"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      itdb_playlist_new                   (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *title,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a> spl);</pre>
 <p>
 Creates a new playlist. If <em class="parameter"><code>spl</code></em> is TRUE, a smart
 playlist is generated. pl-&gt;id is set by <a href="libgpod-Playlists.html#itdb-playlist-add"><code class="function">itdb_playlist_add()</code></a> when the 
@@ -204,9 +240,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355889"></a><h3>
+<a name="id2811609"></a><h3>
 <a name="itdb-playlist-free"></a>itdb_playlist_free ()</h3>
-<a class="indexterm" name="id355900"></a><pre class="programlisting">void        itdb_playlist_free              (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2811622"></a><pre class="programlisting">void                itdb_playlist_free                  (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Frees the memory used by playlist <em class="parameter"><code>pl</code></em>.</p>
 <p>
@@ -223,9 +259,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355954"></a><h3>
+<a name="id2811684"></a><h3>
 <a name="itdb-playlist-duplicate"></a>itdb_playlist_duplicate ()</h3>
-<a class="indexterm" name="id355964"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* itdb_playlist_duplicate      (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2811696"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      itdb_playlist_duplicate             (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Duplicates an existing playlist. pl_dup-&gt;id is set to zero, so that
 it will be set to a unique value when adding it to an <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a>. The
@@ -252,11 +288,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356051"></a><h3>
+<a name="id2817418"></a><h3>
 <a name="itdb-playlist-add"></a>itdb_playlist_add ()</h3>
-<a class="indexterm" name="id356062"></a><pre class="programlisting">void        itdb_playlist_add               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             gint32 pos);</pre>
+<a class="indexterm" name="id2817428"></a><pre class="programlisting">void                itdb_playlist_add                   (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint32"
+>gint32</a> pos);</pre>
 <p>
 Adds playlist <em class="parameter"><code>pl</code></em> to the database <em class="parameter"><code>itdb</code></em> at position <em class="parameter"><code>pos</code></em> (-1 for
 "append to end"). A unique id is created if pl-&gt;id is equal to
@@ -288,10 +326,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356192"></a><h3>
+<a name="id2817564"></a><h3>
 <a name="itdb-playlist-move"></a>itdb_playlist_move ()</h3>
-<a class="indexterm" name="id356203"></a><pre class="programlisting">void        itdb_playlist_move              (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             guint32 pos);</pre>
+<a class="indexterm" name="id2817575"></a><pre class="programlisting">void                itdb_playlist_move                  (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a> pos);</pre>
 <p>
 Moves playlist <em class="parameter"><code>pl</code></em> to position <em class="parameter"><code>pos</code></em></p>
 <p>
@@ -315,9 +355,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356279"></a><h3>
+<a name="id2817653"></a><h3>
 <a name="itdb-playlist-remove"></a>itdb_playlist_remove ()</h3>
-<a class="indexterm" name="id356290"></a><pre class="programlisting">void        itdb_playlist_remove            (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2817664"></a><pre class="programlisting">void                itdb_playlist_remove                (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Removes <em class="parameter"><code>pl</code></em> from the <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> it's associated with 
 and frees memory</p>
@@ -335,9 +375,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356350"></a><h3>
+<a name="id2817725"></a><h3>
 <a name="itdb-playlist-unlink"></a>itdb_playlist_unlink ()</h3>
-<a class="indexterm" name="id356361"></a><pre class="programlisting">void        itdb_playlist_unlink            (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2817736"></a><pre class="programlisting">void                itdb_playlist_unlink                (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Remove <em class="parameter"><code>pl</code></em> from the <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> it's associated with but do not free 
 memory. pl-&gt;itdb is set to NULL after this function returns</p>
@@ -355,11 +395,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356422"></a><h3>
+<a name="id2817799"></a><h3>
 <a name="itdb-playlist-add-track"></a>itdb_playlist_add_track ()</h3>
-<a class="indexterm" name="id356433"></a><pre class="programlisting">void        itdb_playlist_add_track         (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             gint32 pos);</pre>
+<a class="indexterm" name="id2817810"></a><pre class="programlisting">void                itdb_playlist_add_track             (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint32"
+>gint32</a> pos);</pre>
 <p>
 Adds <em class="parameter"><code>track</code></em> to <em class="parameter"><code>pl</code></em> at position <em class="parameter"><code>pos</code></em> (-1 for "append to
 end")</p>
@@ -389,10 +431,10 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356545"></a><h3>
+<a name="id2817925"></a><h3>
 <a name="itdb-playlist-remove-track"></a>itdb_playlist_remove_track ()</h3>
-<a class="indexterm" name="id356555"></a><pre class="programlisting">void        itdb_playlist_remove_track      (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
+<a class="indexterm" name="id2817936"></a><pre class="programlisting">void                itdb_playlist_remove_track          (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
 <p>
 Removes <em class="parameter"><code>track</code></em> from <em class="parameter"><code>pl</code></em>. If <em class="parameter"><code>pl</code></em> is NULL, removes <em class="parameter"><code>track</code></em> from the
 master playlist. If <em class="parameter"><code>track</code></em> can't be found in <em class="parameter"><code>pl</code></em>, nothing happens. If after
@@ -419,10 +461,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356675"></a><h3>
+<a name="id2818059"></a><h3>
 <a name="itdb-playlist-contains-track"></a>itdb_playlist_contains_track ()</h3>
-<a class="indexterm" name="id356686"></a><pre class="programlisting">gboolean    itdb_playlist_contains_track    (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
+<a class="indexterm" name="id2818070"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_playlist_contains_track        (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
 <p>
 Checks if <em class="parameter"><code>track</code></em> is in <em class="parameter"><code>pl</code></em>.</p>
 <p>
@@ -451,10 +495,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356789"></a><h3>
+<a name="id2818175"></a><h3>
 <a name="itdb-playlist-contain-track-number"></a>itdb_playlist_contain_track_number ()</h3>
-<a class="indexterm" name="id356800"></a><pre class="programlisting">guint32     itdb_playlist_contain_track_number
-                                            (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *tr);</pre>
+<a class="indexterm" name="id2818186"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             itdb_playlist_contain_track_number  (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *tr);</pre>
 <p>
 Counts the number of playlist <em class="parameter"><code>track</code></em> is a member of (not including the 
 master playlist)</p>
@@ -479,9 +524,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356869"></a><h3>
+<a name="id2818259"></a><h3>
 <a name="itdb-playlist-tracks-number"></a>itdb_playlist_tracks_number ()</h3>
-<a class="indexterm" name="id356879"></a><pre class="programlisting">guint32     itdb_playlist_tracks_number     (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2818270"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             itdb_playlist_tracks_number         (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Counts the number of tracks in <em class="parameter"><code>pl</code></em></p>
 <p>
@@ -505,9 +552,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id356942"></a><h3>
+<a name="id2818335"></a><h3>
 <a name="itdb-playlist-mpl"></a>itdb_playlist_mpl ()</h3>
-<a class="indexterm" name="id356953"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* itdb_playlist_mpl            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2818345"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      itdb_playlist_mpl                   (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Gets the master playlist of <em class="parameter"><code>itdb</code></em></p>
 <p>
@@ -531,9 +578,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357021"></a><h3>
+<a name="id2818415"></a><h3>
 <a name="itdb-playlist-is-mpl"></a>itdb_playlist_is_mpl ()</h3>
-<a class="indexterm" name="id357031"></a><pre class="programlisting">gboolean    itdb_playlist_is_mpl            (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2818425"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_playlist_is_mpl                (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Checks if <em class="parameter"><code>pl</code></em> is the master playlist</p>
 <p>
@@ -557,9 +606,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357100"></a><h3>
+<a name="id2818496"></a><h3>
 <a name="itdb-playlist-set-mpl"></a>itdb_playlist_set_mpl ()</h3>
-<a class="indexterm" name="id357111"></a><pre class="programlisting">void        itdb_playlist_set_mpl           (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2818506"></a><pre class="programlisting">void                itdb_playlist_set_mpl               (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Sets <em class="parameter"><code>pl</code></em> to be a master playlist</p>
 <p>
@@ -576,9 +625,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357165"></a><h3>
+<a name="id2818562"></a><h3>
 <a name="itdb-playlist-podcasts"></a>itdb_playlist_podcasts ()</h3>
-<a class="indexterm" name="id357176"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* itdb_playlist_podcasts       (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2818572"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      itdb_playlist_podcasts              (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Gets the podcasts playlist of <em class="parameter"><code>itdb</code></em></p>
 <p>
@@ -602,9 +651,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357244"></a><h3>
+<a name="id2818643"></a><h3>
 <a name="itdb-playlist-is-podcasts"></a>itdb_playlist_is_podcasts ()</h3>
-<a class="indexterm" name="id357254"></a><pre class="programlisting">gboolean    itdb_playlist_is_podcasts       (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2818654"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_playlist_is_podcasts           (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Checks if <em class="parameter"><code>pl</code></em> is the podcasts playlist</p>
 <p>
@@ -628,9 +679,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357323"></a><h3>
+<a name="id2818725"></a><h3>
 <a name="itdb-playlist-set-podcasts"></a>itdb_playlist_set_podcasts ()</h3>
-<a class="indexterm" name="id357334"></a><pre class="programlisting">void        itdb_playlist_set_podcasts      (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2818736"></a><pre class="programlisting">void                itdb_playlist_set_podcasts          (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Set <em class="parameter"><code>pl</code></em> to be a podcasts playlist</p>
 <p>
@@ -647,10 +698,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357388"></a><h3>
+<a name="id2818791"></a><h3>
 <a name="itdb-playlist-exists"></a>itdb_playlist_exists ()</h3>
-<a class="indexterm" name="id357399"></a><pre class="programlisting">gboolean    itdb_playlist_exists            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2818802"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_playlist_exists                (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Checks if <em class="parameter"><code>pl</code></em> is present in <em class="parameter"><code>db</code></em></p>
 <p>
@@ -679,10 +732,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357501"></a><h3>
+<a name="id2818907"></a><h3>
 <a name="itdb-playlist-by-id"></a>itdb_playlist_by_id ()</h3>
-<a class="indexterm" name="id357512"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* itdb_playlist_by_id          (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             guint64 id);</pre>
+<a class="indexterm" name="id2818917"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      itdb_playlist_by_id                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"
+>guint64</a> id);</pre>
 <p>
 Looks up a playlist whose ID is <em class="parameter"><code>id</code></em></p>
 <p>
@@ -712,10 +767,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357604"></a><h3>
+<a name="id2819014"></a><h3>
 <a name="itdb-playlist-by-nr"></a>itdb_playlist_by_nr ()</h3>
-<a class="indexterm" name="id357614"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* itdb_playlist_by_nr          (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             guint32 num);</pre>
+<a class="indexterm" name="id2819024"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      itdb_playlist_by_nr                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a> num);</pre>
 <p>
 Gets the playlist at the given position in <em class="parameter"><code>itdb</code></em></p>
 <p>
@@ -744,10 +801,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357707"></a><h3>
+<a name="id2819121"></a><h3>
 <a name="itdb-playlist-by-name"></a>itdb_playlist_by_name ()</h3>
-<a class="indexterm" name="id357717"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>* itdb_playlist_by_name        (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             gchar *name);</pre>
+<a class="indexterm" name="id2819131"></a><pre class="programlisting"><a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a>*      itdb_playlist_by_name               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *name);</pre>
 <p>
 Searches a playlist whose name is <em class="parameter"><code>name</code></em> in <em class="parameter"><code>itdb</code></em></p>
 <p>
@@ -777,9 +836,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357814"></a><h3>
+<a name="id2819233"></a><h3>
 <a name="itdb-playlist-randomize"></a>itdb_playlist_randomize ()</h3>
-<a class="indexterm" name="id357825"></a><pre class="programlisting">void        itdb_playlist_randomize         (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
+<a class="indexterm" name="id2819244"></a><pre class="programlisting">void                itdb_playlist_randomize             (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl);</pre>
 <p>
 Randomizes <em class="parameter"><code>pl</code></em></p>
 <p>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-Smart-Playlists.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-Smart-Playlists.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-Smart-Playlists.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Smart Playlists</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="ch01.html" title="iPod database components">
 <link rel="prev" href="libgpod-Playlists.html" title="Playlists">
 <link rel="next" href="libgpod-Artwork.html" title="Artwork">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="libgpod-Artwork.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id350713" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2801290" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id313091" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2773774" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-Smart-Playlists"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id350713"></a><span class="refentrytitle">Smart Playlists</span>
+<a name="id2801290"></a><span class="refentrytitle">Smart Playlists</span>
 </h2>
 <p>Smart Playlists &#8212; Data structure to represent an iPod smart playlist</p>
 </td>
@@ -44,48 +44,57 @@
 
 
 
-            <a href="libgpod-Smart-Playlists.html#SPLPref">SPLPref</a>;
-            <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a>;
-            <a href="libgpod-Smart-Playlists.html#SPLRules">SPLRules</a>;
-enum        <a href="libgpod-Smart-Playlists.html#SPLAction">SPLAction</a>;
-enum        <a href="libgpod-Smart-Playlists.html#SPLFieldType">SPLFieldType</a>;
-enum        <a href="libgpod-Smart-Playlists.html#SPLActionType">SPLActionType</a>;
-enum        <a href="libgpod-Smart-Playlists.html#SPLField">SPLField</a>;
-#define     <a href="libgpod-Smart-Playlists.html#SPLDATE-IDENTIFIER:CAPS">SPLDATE_IDENTIFIER</a>
-#define     <a href="libgpod-Smart-Playlists.html#SPL-MAXSTRINGLENGTH:CAPS">SPL_MAXSTRINGLENGTH</a>
-#define     <a href="libgpod-Smart-Playlists.html#SPL-STRING-MAXLEN:CAPS">SPL_STRING_MAXLEN</a>
-<a href="libgpod-Smart-Playlists.html#SPLFieldType">SPLFieldType</a> <a href="libgpod-Smart-Playlists.html#itdb-splr-get-field-type">itdb_splr_get_field_type</a>       (const <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr);
-<a href="libgpod-Smart-Playlists.html#SPLActionType">SPLActionType</a> <a href="libgpod-Smart-Playlists.html#itdb-splr-get-action-type">itdb_splr_get_action_type</a>     (const <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr);
-void        <a href="libgpod-Smart-Playlists.html#itdb-splr-validate">itdb_splr_validate</a>              (<a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr);
-void        <a href="libgpod-Smart-Playlists.html#itdb-splr-remove">itdb_splr_remove</a>                (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr);
-<a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a>*    <a href="libgpod-Smart-Playlists.html#itdb-splr-new">itdb_splr_new</a>                   (void);
-void        <a href="libgpod-Smart-Playlists.html#itdb-splr-add">itdb_splr_add</a>                   (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr,
-                                             gint pos);
-<a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a>*    <a href="libgpod-Smart-Playlists.html#itdb-splr-add-new">itdb_splr_add_new</a>               (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             gint pos);
-void        <a href="libgpod-Smart-Playlists.html#itdb-spl-copy-rules">itdb_spl_copy_rules</a>             (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *dest,
-                                             <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *src);
-gboolean    <a href="libgpod-Smart-Playlists.html#itdb-splr-eval">itdb_splr_eval</a>                  (<a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
-void        <a href="libgpod-Smart-Playlists.html#itdb-spl-update">itdb_spl_update</a>                 (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *spl);
-void        <a href="libgpod-Smart-Playlists.html#itdb-spl-update-all">itdb_spl_update_all</a>             (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-void        <a href="libgpod-Smart-Playlists.html#itdb-spl-update-live">itdb_spl_update_live</a>            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+                    <a href="libgpod-Smart-Playlists.html#Itdb-SPLPref">Itdb_SPLPref</a>;
+                    <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a>;
+                    <a href="libgpod-Smart-Playlists.html#Itdb-SPLRules">Itdb_SPLRules</a>;
+enum                <a href="libgpod-Smart-Playlists.html#ItdbLimitSort">ItdbLimitSort</a>;
+enum                <a href="libgpod-Smart-Playlists.html#ItdbLimitType">ItdbLimitType</a>;
+enum                <a href="libgpod-Smart-Playlists.html#ItdbSPLAction">ItdbSPLAction</a>;
+enum                <a href="libgpod-Smart-Playlists.html#ItdbSPLActionLast">ItdbSPLActionLast</a>;
+enum                <a href="libgpod-Smart-Playlists.html#ItdbSPLActionType">ItdbSPLActionType</a>;
+enum                <a href="libgpod-Smart-Playlists.html#ItdbSPLField">ItdbSPLField</a>;
+enum                <a href="libgpod-Smart-Playlists.html#ItdbSPLFieldType">ItdbSPLFieldType</a>;
+enum                <a href="libgpod-Smart-Playlists.html#ItdbSPLMatch">ItdbSPLMatch</a>;
+#define             <a href="libgpod-Smart-Playlists.html#ITDB-SPL-DATE-IDENTIFIER:CAPS">ITDB_SPL_DATE_IDENTIFIER</a>
+#define             <a href="libgpod-Smart-Playlists.html#ITDB-SPL-STRING-MAXLEN:CAPS">ITDB_SPL_STRING_MAXLEN</a>
+<a href="libgpod-Smart-Playlists.html#ItdbSPLFieldType">ItdbSPLFieldType</a>    <a href="libgpod-Smart-Playlists.html#itdb-splr-get-field-type">itdb_splr_get_field_type</a>            (const <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr);
+<a href="libgpod-Smart-Playlists.html#ItdbSPLActionType">ItdbSPLActionType</a>   <a href="libgpod-Smart-Playlists.html#itdb-splr-get-action-type">itdb_splr_get_action_type</a>           (const <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr);
+void                <a href="libgpod-Smart-Playlists.html#itdb-splr-validate">itdb_splr_validate</a>                  (<a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr);
+void                <a href="libgpod-Smart-Playlists.html#itdb-splr-remove">itdb_splr_remove</a>                    (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr);
+<a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a>*       <a href="libgpod-Smart-Playlists.html#itdb-splr-new">itdb_splr_new</a>                       (void);
+void                <a href="libgpod-Smart-Playlists.html#itdb-splr-add">itdb_splr_add</a>                       (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> pos);
+<a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a>*       <a href="libgpod-Smart-Playlists.html#itdb-splr-add-new">itdb_splr_add_new</a>                   (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> pos);
+void                <a href="libgpod-Smart-Playlists.html#itdb-spl-copy-rules">itdb_spl_copy_rules</a>                 (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *dest,
+                                                         <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *src);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Smart-Playlists.html#itdb-splr-eval">itdb_splr_eval</a>                      (<a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
+void                <a href="libgpod-Smart-Playlists.html#itdb-spl-update">itdb_spl_update</a>                     (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *spl);
+void                <a href="libgpod-Smart-Playlists.html#itdb-spl-update-all">itdb_spl_update_all</a>                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+void                <a href="libgpod-Smart-Playlists.html#itdb-spl-update-live">itdb_spl_update_live</a>                (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id313091"></a><h2>Description</h2>
+<a name="id2773774"></a><h2>Description</h2>
 <p>
 These functions and structures are for dealing with smart playlists.
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id355636"></a><h2>Details</h2>
+<a name="id2773790"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id355647"></a><h3>
-<a name="SPLPref"></a>SPLPref</h3>
-<a class="indexterm" name="id355659"></a><pre class="programlisting">typedef struct {
+<a name="id2773801"></a><h3>
+<a name="Itdb-SPLPref"></a>Itdb_SPLPref</h3>
+<a class="indexterm" name="id2773814"></a><pre class="programlisting">typedef struct {
     guint8  liveupdate;        /* "live Updating" check box */
     guint8  checkrules;        /* "Match X of the following
 				  conditions" check box */
@@ -94,9 +103,13 @@
     guint32 limitsort;         /* See types defined above */
     guint32 limitvalue;        /* The value typed next to "Limit
 				  type" */
-    guint8  matchcheckedonly;  /* "Match only checked songs" check
-				  box */
-} SPLPref;
+    guint8  matchcheckedonly;  /* "Match only checked songs" check box */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
+} Itdb_SPLPref;
 </pre>
 <p>
 
@@ -104,9 +117,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id331879"></a><h3>
-<a name="SPLRule"></a>SPLRule</h3>
-<a class="indexterm" name="id326503"></a><pre class="programlisting">typedef struct {
+<a name="id2794442"></a><h3>
+<a name="Itdb-SPLRule"></a>Itdb_SPLRule</h3>
+<a class="indexterm" name="id2779177"></a><pre class="programlisting">typedef struct {
     guint32 field;
     guint32 action;
     gchar *string;             /* data in UTF8  */
@@ -131,7 +144,12 @@
     guint32 unk060;
     guint32 unk064;
     guint32 unk068;
-} SPLRule;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
+} Itdb_SPLRule;
 </pre>
 <p>
 
@@ -139,14 +157,19 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355680"></a><h3>
-<a name="SPLRules"></a>SPLRules</h3>
-<a class="indexterm" name="id355690"></a><pre class="programlisting">typedef struct {
+<a name="id2795180"></a><h3>
+<a name="Itdb-SPLRules"></a>Itdb_SPLRules</h3>
+<a class="indexterm" name="id2773852"></a><pre class="programlisting">typedef struct {
     guint32 unk004;
-    guint32 match_operator;  /* "All" (logical AND): SPLMATCH_AND,
-				"Any" (logical OR): SPLMATCH_OR */
+    guint32 match_operator;  /* "All" (logical AND): Itdb_SPLMATCH_AND,
+				"Any" (logical OR): Itdb_SPLMATCH_OR */
     GList *rules;
-} SPLRules;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
+} Itdb_SPLRules;
 </pre>
 <p>
 
@@ -154,38 +177,79 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355706"></a><h3>
-<a name="SPLAction"></a>enum SPLAction</h3>
-<a class="indexterm" name="id355718"></a><pre class="programlisting">typedef enum {
-    SPLACTION_IS_INT = 0x00000001,          /* "Is Set" in iTunes */
-    SPLACTION_IS_GREATER_THAN = 0x00000010, /* "Is After" in iTunes */
-    SPLACTION_IS_LESS_THAN = 0x00000040,    /* "Is Before" in iTunes */
-    SPLACTION_IS_IN_THE_RANGE = 0x00000100,
-    SPLACTION_IS_IN_THE_LAST = 0x00000200,
+<a name="id2773873"></a><h3>
+<a name="ItdbLimitSort"></a>enum ItdbLimitSort</h3>
+<a class="indexterm" name="id2773886"></a><pre class="programlisting">typedef enum {
+    ITDB_LIMITSORT_RANDOM = 0x02,
+    ITDB_LIMITSORT_SONG_NAME = 0x03,
+    ITDB_LIMITSORT_ALBUM = 0x04,
+    ITDB_LIMITSORT_ARTIST = 0x05,
+    ITDB_LIMITSORT_GENRE = 0x07,
+    ITDB_LIMITSORT_MOST_RECENTLY_ADDED = 0x10,
+    ITDB_LIMITSORT_LEAST_RECENTLY_ADDED = 0x80000010, /* See note above */
+    ITDB_LIMITSORT_MOST_OFTEN_PLAYED = 0x14,
+    ITDB_LIMITSORT_LEAST_OFTEN_PLAYED = 0x80000014,   /* See note above */
+    ITDB_LIMITSORT_MOST_RECENTLY_PLAYED = 0x15,
+    ITDB_LIMITSORT_LEAST_RECENTLY_PLAYED = 0x80000015,/* See note above */
+    ITDB_LIMITSORT_HIGHEST_RATING = 0x17,
+    ITDB_LIMITSORT_LOWEST_RATING = 0x80000017,        /* See note above */
+} ItdbLimitSort;
+</pre>
+<p>
 
-    SPLACTION_IS_STRING = 0x01000001,
-    SPLACTION_CONTAINS = 0x01000002,
-    SPLACTION_STARTS_WITH = 0x01000004,
-    SPLACTION_ENDS_WITH = 0x01000008,
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2773913"></a><h3>
+<a name="ItdbLimitType"></a>enum ItdbLimitType</h3>
+<a class="indexterm" name="id2773925"></a><pre class="programlisting">typedef enum {
+    ITDB_LIMITTYPE_MINUTES = 0x01,
+    ITDB_LIMITTYPE_MB      = 0x02,
+    ITDB_LIMITTYPE_SONGS   = 0x03,
+    ITDB_LIMITTYPE_HOURS   = 0x04,
+    ITDB_LIMITTYPE_GB      = 0x05
+} ItdbLimitType;
+</pre>
+<p>
 
-    SPLACTION_IS_NOT_INT = 0x02000001,     /* "Is Not Set" in iTunes */
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2773944"></a><h3>
+<a name="ItdbSPLAction"></a>enum ItdbSPLAction</h3>
+<a class="indexterm" name="id2773956"></a><pre class="programlisting">typedef enum {
+    ITDB_SPLACTION_IS_INT = 0x00000001,          /* "Is Set" in iTunes */
+    ITDB_SPLACTION_IS_GREATER_THAN = 0x00000010, /* "Is After" in iTunes */
+    ITDB_SPLACTION_IS_LESS_THAN = 0x00000040,    /* "Is Before" in iTunes */
+    ITDB_SPLACTION_IS_IN_THE_RANGE = 0x00000100,
+    ITDB_SPLACTION_IS_IN_THE_LAST = 0x00000200,
+    ITDB_SPLACTION_BINARY_AND = 0x00000400,
 
+    ITDB_SPLACTION_IS_STRING = 0x01000001,
+    ITDB_SPLACTION_CONTAINS = 0x01000002,
+    ITDB_SPLACTION_STARTS_WITH = 0x01000004,
+    ITDB_SPLACTION_ENDS_WITH = 0x01000008,
+
+    ITDB_SPLACTION_IS_NOT_INT = 0x02000001,     /* "Is Not Set" in iTunes */
+
     /* Note: Not available in iTunes 4.5 (untested on iPod) */
-    SPLACTION_IS_NOT_GREATER_THAN = 0x02000010,
+    ITDB_SPLACTION_IS_NOT_GREATER_THAN = 0x02000010,
     /* Note: Not available in iTunes 4.5 (untested on iPod) */
-    SPLACTION_IS_NOT_LESS_THAN = 0x02000040,
+    ITDB_SPLACTION_IS_NOT_LESS_THAN = 0x02000040,
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_IS_NOT_IN_THE_RANGE = 0x02000100,
+    ITDB_SPLACTION_IS_NOT_IN_THE_RANGE = 0x02000100,
 
-    SPLACTION_IS_NOT_IN_THE_LAST = 0x02000200,
-    SPLACTION_IS_NOT = 0x03000001,
-    SPLACTION_DOES_NOT_CONTAIN = 0x03000002,
+    ITDB_SPLACTION_IS_NOT_IN_THE_LAST = 0x02000200,
+    ITDB_SPLACTION_IS_NOT = 0x03000001,
+    ITDB_SPLACTION_DOES_NOT_CONTAIN = 0x03000002,
 
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_DOES_NOT_START_WITH = 0x03000004,
+    ITDB_SPLACTION_DOES_NOT_START_WITH = 0x03000004,
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_DOES_NOT_END_WITH = 0x03000008,
-} SPLAction;
+    ITDB_SPLACTION_DOES_NOT_END_WITH = 0x03000008,
+} ItdbSPLAction;
 </pre>
 <p>
 
@@ -193,17 +257,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355744"></a><h3>
-<a name="SPLFieldType"></a>enum SPLFieldType</h3>
-<a class="indexterm" name="id355756"></a><pre class="programlisting">typedef enum
-{
-    splft_string = 1,
-    splft_int,
-    splft_boolean,
-    splft_date,
-    splft_playlist,
-    splft_unknown
-} SPLFieldType;
+<a name="id2773995"></a><h3>
+<a name="ItdbSPLActionLast"></a>enum ItdbSPLActionLast</h3>
+<a class="indexterm" name="id2774008"></a><pre class="programlisting">typedef enum {
+    ITDB_SPLACTION_LAST_DAYS_VALUE = 86400,    /* nr of secs in 24 hours */
+    ITDB_SPLACTION_LAST_WEEKS_VALUE = 604800,  /* nr of secs in 7 days   */
+    ITDB_SPLACTION_LAST_MONTHS_VALUE = 2628000,/* nr of secs in 30.4167
+					     days ~= 1 month */
+} ItdbSPLActionLast;
 </pre>
 <p>
 
@@ -211,21 +272,22 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id355772"></a><h3>
-<a name="SPLActionType"></a>enum SPLActionType</h3>
-<a class="indexterm" name="id330703"></a><pre class="programlisting">typedef enum
+<a name="id2813902"></a><h3>
+<a name="ItdbSPLActionType"></a>enum ItdbSPLActionType</h3>
+<a class="indexterm" name="id2813915"></a><pre class="programlisting">typedef enum
 {
-    splat_string = 1,
-    splat_int,
-    splat_date,
-    splat_range_int,
-    splat_range_date,
-    splat_inthelast,
-    splat_playlist,
-    splat_none,
-    splat_invalid,
-    splat_unknown
-} SPLActionType;
+    ITDB_SPLAT_STRING = 1,
+    ITDB_SPLAT_INT,
+    ITDB_SPLAT_DATE,
+    ITDB_SPLAT_RANGE_INT,
+    ITDB_SPLAT_RANGE_DATE,
+    ITDB_SPLAT_INTHELAST,
+    ITDB_SPLAT_PLAYLIST,
+    ITDB_SPLAT_NONE,
+    ITDB_SPLAT_INVALID,
+    ITDB_SPLAT_UNKNOWN,
+    ITDB_SPLAT_BINARY_AND
+} ItdbSPLActionType;
 </pre>
 <p>
 
@@ -233,46 +295,52 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id330720"></a><h3>
-<a name="SPLField"></a>enum SPLField</h3>
-<a class="indexterm" name="id330732"></a><pre class="programlisting">typedef enum {
-    SPLFIELD_SONG_NAME = 0x02,    /* String */
-    SPLFIELD_ALBUM = 0x03,        /* String */
-    SPLFIELD_ARTIST = 0x04,       /* String */
-    SPLFIELD_BITRATE = 0x05,      /* Int (e.g. from/to = 128) */
-    SPLFIELD_SAMPLE_RATE = 0x06,  /* Int  (e.g. from/to = 44100) */
-    SPLFIELD_YEAR = 0x07,         /* Int  (e.g. from/to = 2004) */
-    SPLFIELD_GENRE = 0x08,        /* String */
-    SPLFIELD_KIND = 0x09,         /* String */
-    SPLFIELD_DATE_MODIFIED = 0x0a,/* Int/Mac Timestamp (e.g. from/to =
+<a name="id2813935"></a><h3>
+<a name="ItdbSPLField"></a>enum ItdbSPLField</h3>
+<a class="indexterm" name="id2813947"></a><pre class="programlisting">typedef enum {
+    ITDB_SPLFIELD_SONG_NAME = 0x02,    /* String */
+    ITDB_SPLFIELD_ALBUM = 0x03,        /* String */
+    ITDB_SPLFIELD_ARTIST = 0x04,       /* String */
+    ITDB_SPLFIELD_BITRATE = 0x05,      /* Int (e.g. from/to = 128) */
+    ITDB_SPLFIELD_SAMPLE_RATE = 0x06,  /* Int  (e.g. from/to = 44100) */
+    ITDB_SPLFIELD_YEAR = 0x07,         /* Int  (e.g. from/to = 2004) */
+    ITDB_SPLFIELD_GENRE = 0x08,        /* String */
+    ITDB_SPLFIELD_KIND = 0x09,         /* String */
+    ITDB_SPLFIELD_DATE_MODIFIED = 0x0a,/* Int/Mac Timestamp (e.g. from/to =
                                      bcf93280 == is before 6/19/2004)*/
-    SPLFIELD_TRACKNUMBER = 0x0b,  /* Int (e.g. from = 1, to = 2) */
-    SPLFIELD_SIZE = 0x0c,         /* Int (e.g. from/to = 0x00600000
+    ITDB_SPLFIELD_TRACKNUMBER = 0x0b,  /* Int (e.g. from = 1, to = 2) */
+    ITDB_SPLFIELD_SIZE = 0x0c,         /* Int (e.g. from/to = 0x00600000
 				     for 6MB) */
-    SPLFIELD_TIME = 0x0d,         /* Int (e.g. from/to = 83999 for
+    ITDB_SPLFIELD_TIME = 0x0d,         /* Int (e.g. from/to = 83999 for
 				     1:23/83 seconds) */
-    SPLFIELD_COMMENT = 0x0e,      /* String */
-    SPLFIELD_DATE_ADDED = 0x10,   /* Int/Mac Timestamp (e.g. from/to =
+    ITDB_SPLFIELD_COMMENT = 0x0e,      /* String */
+    ITDB_SPLFIELD_DATE_ADDED = 0x10,   /* Int/Mac Timestamp (e.g. from/to =
                                      bcfa83ff == is after 6/19/2004) */
-    SPLFIELD_COMPOSER = 0x12,     /* String */
-    SPLFIELD_PLAYCOUNT = 0x16,    /* Int  (e.g. from/to = 1) */
-    SPLFIELD_LAST_PLAYED = 0x17,  /* Int/Mac Timestamp (e.g. from =
+    ITDB_SPLFIELD_COMPOSER = 0x12,     /* String */
+    ITDB_SPLFIELD_PLAYCOUNT = 0x16,    /* Int  (e.g. from/to = 1) */
+    ITDB_SPLFIELD_LAST_PLAYED = 0x17,  /* Int/Mac Timestamp (e.g. from =
                                      bcfa83ff (6/19/2004) to =
                                      0xbcfbd57f (6/20/2004)) */
-    SPLFIELD_DISC_NUMBER = 0x18,  /* Int  (e.g. from/to = 1) */
-    SPLFIELD_RATING = 0x19,       /* Int/Stars Rating (e.g. from/to =
+    ITDB_SPLFIELD_DISC_NUMBER = 0x18,  /* Int  (e.g. from/to = 1) */
+    ITDB_SPLFIELD_RATING = 0x19,       /* Int/Stars Rating (e.g. from/to =
                                      60 (3 stars)) */
-    SPLFIELD_COMPILATION = 0x1f,  /* Int (e.g. is set -&gt;
-				     SPLACTION_IS_INT/from=1,
+    ITDB_SPLFIELD_COMPILATION = 0x1f,  /* Int (e.g. is set -&gt;
+				     ITDB_SPLACTION_IS_INT/from=1,
 				     is not set -&gt;
-				     SPLACTION_IS_NOT_INT/from=1) */
-    SPLFIELD_BPM = 0x23,          /* Int  (e.g. from/to = 60) */
-    SPLFIELD_GROUPING = 0x27,     /* String */
-    SPLFIELD_PLAYLIST = 0x28,     /* XXX - Unknown...not parsed
+				     ITDB_SPLACTION_IS_NOT_INT/from=1) */
+    ITDB_SPLFIELD_BPM = 0x23,          /* Int  (e.g. from/to = 60) */
+    ITDB_SPLFIELD_GROUPING = 0x27,     /* String */
+    ITDB_SPLFIELD_PLAYLIST = 0x28,     /* FIXME - Unknown...not parsed
 				     correctly...from/to = 0xb6fbad5f
-				     for * "Purchased Music".  Extra
-				     data after * "to"... */
-} SPLField;
+				     for "Purchased Music".  Extra
+				     data after "to"... */
+    ITDB_SPLFIELD_VIDEO_KIND = 0x3c,   /* Logic Int */
+    ITDB_SPLFIELD_TVSHOW = 0x3e,       /* String */
+    ITDB_SPLFIELD_SEASON_NR = 0x3f,    /* Int */
+    ITDB_SPLFIELD_SKIPCOUNT = 0x44,    /* Int */
+    ITDB_SPLFIELD_LAST_SKIPPED = 0x45, /* Int/Mac Timestamp */
+    ITDB_SPLFIELD_ALBUMARTIST = 0x47   /* String */
+} ItdbSPLField;
 </pre>
 <p>
 
@@ -280,9 +348,18 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id330764"></a><h3>
-<a name="SPLDATE-IDENTIFIER:CAPS"></a>SPLDATE_IDENTIFIER</h3>
-<a class="indexterm" name="id330776"></a><pre class="programlisting">#define SPLDATE_IDENTIFIER (G_GINT64_CONSTANT (0x2dae2dae2dae2daeU))
+<a name="id2814001"></a><h3>
+<a name="ItdbSPLFieldType"></a>enum ItdbSPLFieldType</h3>
+<a class="indexterm" name="id2814013"></a><pre class="programlisting">typedef enum
+{
+    ITDB_SPLFT_STRING = 1,
+    ITDB_SPLFT_INT,
+    ITDB_SPLFT_BOOLEAN,
+    ITDB_SPLFT_DATE,
+    ITDB_SPLFT_PLAYLIST,
+    ITDB_SPLFT_UNKNOWN,
+    ITDB_SPLFT_BINARY_AND
+} ItdbSPLFieldType;
 </pre>
 <p>
 
@@ -290,9 +367,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id330792"></a><h3>
-<a name="SPL-MAXSTRINGLENGTH:CAPS"></a>SPL_MAXSTRINGLENGTH</h3>
-<a class="indexterm" name="id330804"></a><pre class="programlisting">#define SPL_MAXSTRINGLENGTH 255
+<a name="id2814031"></a><h3>
+<a name="ItdbSPLMatch"></a>enum ItdbSPLMatch</h3>
+<a class="indexterm" name="id2814044"></a><pre class="programlisting">typedef enum { /* types for match_operator */
+    ITDB_SPLMATCH_AND = 0, /* AND rule - all of the rules must be true in
+			 order for the combined rule to be applied */
+    ITDB_SPLMATCH_OR = 1   /* OR rule */
+} ItdbSPLMatch;
 </pre>
 <p>
 
@@ -300,9 +381,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id330819"></a><h3>
-<a name="SPL-STRING-MAXLEN:CAPS"></a>SPL_STRING_MAXLEN</h3>
-<a class="indexterm" name="id330831"></a><pre class="programlisting">#define SPL_STRING_MAXLEN 255
+<a name="id2814063"></a><h3>
+<a name="ITDB-SPL-DATE-IDENTIFIER:CAPS"></a>ITDB_SPL_DATE_IDENTIFIER</h3>
+<a class="indexterm" name="id2814074"></a><pre class="programlisting">#define ITDB_SPL_DATE_IDENTIFIER (G_GINT64_CONSTANT (0x2dae2dae2dae2daeU))
 </pre>
 <p>
 
@@ -310,9 +391,19 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id330847"></a><h3>
+<a name="id2814090"></a><h3>
+<a name="ITDB-SPL-STRING-MAXLEN:CAPS"></a>ITDB_SPL_STRING_MAXLEN</h3>
+<a class="indexterm" name="id2814102"></a><pre class="programlisting">#define ITDB_SPL_STRING_MAXLEN 255
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2814117"></a><h3>
 <a name="itdb-splr-get-field-type"></a>itdb_splr_get_field_type ()</h3>
-<a class="indexterm" name="id330859"></a><pre class="programlisting"><a href="libgpod-Smart-Playlists.html#SPLFieldType">SPLFieldType</a> itdb_splr_get_field_type       (const <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr);</pre>
+<a class="indexterm" name="id2814128"></a><pre class="programlisting"><a href="libgpod-Smart-Playlists.html#ItdbSPLFieldType">ItdbSPLFieldType</a>    itdb_splr_get_field_type            (const <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr);</pre>
 <p>
 Gets the type of the field of the <em class="parameter"><code>splr</code></em> rule</p>
 <p>
@@ -323,12 +414,12 @@
 <tbody>
 <tr>
 <td><span class="term"><em class="parameter"><code>splr</code></em>&#160;:</span></td>
-<td> an <a href="libgpod-Smart-Playlists.html#SPLRule"><span class="type">SPLRule</span></a>
+<td> an <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule"><span class="type">Itdb_SPLRule</span></a>
 </td>
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> an <a href="libgpod-Smart-Playlists.html#SPLFieldType"><span class="type">SPLFieldType</span></a> corresponding to <em class="parameter"><code>splr</code></em> field type 
+<td> an <span class="type">Itdb_SPLFieldType</span> corresponding to <em class="parameter"><code>splr</code></em> field type 
 (string, int, date, ...)
 </td>
 </tr>
@@ -337,9 +428,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id330946"></a><h3>
+<a name="id2819637"></a><h3>
 <a name="itdb-splr-get-action-type"></a>itdb_splr_get_action_type ()</h3>
-<a class="indexterm" name="id357890"></a><pre class="programlisting"><a href="libgpod-Smart-Playlists.html#SPLActionType">SPLActionType</a> itdb_splr_get_action_type     (const <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr);</pre>
+<a class="indexterm" name="id2819647"></a><pre class="programlisting"><a href="libgpod-Smart-Playlists.html#ItdbSPLActionType">ItdbSPLActionType</a>   itdb_splr_get_action_type           (const <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr);</pre>
 <p>
 Gets the type of the action associated with <em class="parameter"><code>splr</code></em>.</p>
 <p>
@@ -350,7 +441,7 @@
 <tbody>
 <tr>
 <td><span class="term"><em class="parameter"><code>splr</code></em>&#160;:</span></td>
-<td> an <a href="libgpod-Smart-Playlists.html#SPLRule"><span class="type">SPLRule</span></a>
+<td> an <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule"><span class="type">Itdb_SPLRule</span></a>
 </td>
 </tr>
 <tr>
@@ -363,9 +454,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id357954"></a><h3>
+<a name="id2819714"></a><h3>
 <a name="itdb-splr-validate"></a>itdb_splr_validate ()</h3>
-<a class="indexterm" name="id357964"></a><pre class="programlisting">void        itdb_splr_validate              (<a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr);</pre>
+<a class="indexterm" name="id2819724"></a><pre class="programlisting">void                itdb_splr_validate                  (<a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr);</pre>
 <p>
 Validates a rule</p>
 <p>
@@ -375,17 +466,17 @@
 <col align="left" valign="top">
 <tbody><tr>
 <td><span class="term"><em class="parameter"><code>splr</code></em>&#160;:</span></td>
-<td> an <a href="libgpod-Smart-Playlists.html#SPLRule"><span class="type">SPLRule</span></a>
+<td> an <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule"><span class="type">Itdb_SPLRule</span></a>
 </td>
 </tr></tbody>
 </table></div>
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358013"></a><h3>
+<a name="id2819775"></a><h3>
 <a name="itdb-splr-remove"></a>itdb_splr_remove ()</h3>
-<a class="indexterm" name="id358024"></a><pre class="programlisting">void        itdb_splr_remove                (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr);</pre>
+<a class="indexterm" name="id2819785"></a><pre class="programlisting">void                itdb_splr_remove                    (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr);</pre>
 <p>
 Removes the smart playlist rule <em class="parameter"><code>splr</code></em> from playlist <em class="parameter"><code>pl</code></em>. The memory used by
 <em class="parameter"><code>splr</code></em> is freed.</p>
@@ -402,7 +493,7 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>splr</code></em>&#160;:</span></td>
-<td> an SPLRule
+<td> an Itdb_SPLRule
 </td>
 </tr>
 </tbody>
@@ -410,9 +501,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358106"></a><h3>
+<a name="id2819870"></a><h3>
 <a name="itdb-splr-new"></a>itdb_splr_new ()</h3>
-<a class="indexterm" name="id358117"></a><pre class="programlisting"><a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a>*    itdb_splr_new                   (void);</pre>
+<a class="indexterm" name="id2819880"></a><pre class="programlisting"><a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a>*       itdb_splr_new                       (void);</pre>
 <p>
 Creates a new default smart rule</p>
 <p>
@@ -422,7 +513,7 @@
 <col align="left" valign="top">
 <tbody><tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> a new <a href="libgpod-Smart-Playlists.html#SPLRule"><span class="type">SPLRule</span></a> that must be freed with <code class="function">itdb_splr_free()</code> when 
+<td> a new <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule"><span class="type">Itdb_SPLRule</span></a> that must be freed with <code class="function">itdb_splr_free()</code> when 
 no longer needed
 </td>
 </tr></tbody>
@@ -430,11 +521,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358166"></a><h3>
+<a name="id2819931"></a><h3>
 <a name="itdb-splr-add"></a>itdb_splr_add ()</h3>
-<a class="indexterm" name="id358176"></a><pre class="programlisting">void        itdb_splr_add                   (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             <a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr,
-                                             gint pos);</pre>
+<a class="indexterm" name="id2819941"></a><pre class="programlisting">void                itdb_splr_add                       (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> pos);</pre>
 <p>
 Adds the smart rule <em class="parameter"><code>splr</code></em> to <em class="parameter"><code>pl</code></em> at position <em class="parameter"><code>pos</code></em>. If <em class="parameter"><code>pos</code></em> is -1, <em class="parameter"><code>splr</code></em> gets
 appended to the end. After this call, <em class="parameter"><code>splr</code></em> memory is managed by <em class="parameter"><code>pl</code></em>, so 
@@ -452,7 +545,7 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>splr</code></em>&#160;:</span></td>
-<td> an <a href="libgpod-Smart-Playlists.html#SPLRule"><span class="type">SPLRule</span></a>
+<td> an <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule"><span class="type">Itdb_SPLRule</span></a>
 </td>
 </tr>
 <tr>
@@ -465,10 +558,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358311"></a><h3>
+<a name="id2820080"></a><h3>
 <a name="itdb-splr-add-new"></a>itdb_splr_add_new ()</h3>
-<a class="indexterm" name="id358322"></a><pre class="programlisting"><a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a>*    itdb_splr_add_new               (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
-                                             gint pos);</pre>
+<a class="indexterm" name="id2820091"></a><pre class="programlisting"><a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a>*       itdb_splr_add_new                   (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *pl,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"
+>gint</a> pos);</pre>
 <p>
 Creates a new smart rule and inserts it at position <em class="parameter"><code>pos</code></em> in <em class="parameter"><code>pl</code></em>. If <em class="parameter"><code>pos</code></em> is
 -1, the new rule gets appended to the end.</p>
@@ -490,7 +585,7 @@
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> pointer to the newly created <a href="libgpod-Smart-Playlists.html#SPLRule"><span class="type">SPLRule</span></a>. Its memory is handled 
+<td> pointer to the newly created <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule"><span class="type">Itdb_SPLRule</span></a>. Its memory is handled 
 by <em class="parameter"><code>pl</code></em> though, so you don't need to explicitly call <code class="function">itdb_splr_free()</code> on it
 </td>
 </tr>
@@ -499,10 +594,10 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358434"></a><h3>
+<a name="id2820208"></a><h3>
 <a name="itdb-spl-copy-rules"></a>itdb_spl_copy_rules ()</h3>
-<a class="indexterm" name="id358444"></a><pre class="programlisting">void        itdb_spl_copy_rules             (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *dest,
-                                             <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *src);</pre>
+<a class="indexterm" name="id2820218"></a><pre class="programlisting">void                itdb_spl_copy_rules                 (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *dest,
+                                                         <a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *src);</pre>
 <p>
 Copy all relevant information for smart playlist from playlist <em class="parameter"><code>src</code></em>
 to playlist <em class="parameter"><code>dest</code></em>. If <em class="parameter"><code>dest</code></em> is already a smart playlist, the existing data
@@ -528,10 +623,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358533"></a><h3>
+<a name="id2820312"></a><h3>
 <a name="itdb-splr-eval"></a>itdb_splr_eval ()</h3>
-<a class="indexterm" name="id358543"></a><pre class="programlisting">gboolean    itdb_splr_eval                  (<a href="libgpod-Smart-Playlists.html#SPLRule">SPLRule</a> *splr,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
+<a class="indexterm" name="id2820322"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_splr_eval                      (<a href="libgpod-Smart-Playlists.html#Itdb-SPLRule">Itdb_SPLRule</a> *splr,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
 <p>
 Evaluates <em class="parameter"><code>splr</code></em>'s truth against <em class="parameter"><code>track</code></em>. track-&gt;itdb must be set.</p>
 <p>
@@ -542,7 +639,7 @@
 <tbody>
 <tr>
 <td><span class="term"><em class="parameter"><code>splr</code></em>&#160;:</span></td>
-<td> an <a href="libgpod-Smart-Playlists.html#SPLRule"><span class="type">SPLRule</span></a>
+<td> an <a href="libgpod-Smart-Playlists.html#Itdb-SPLRule"><span class="type">Itdb_SPLRule</span></a>
 </td>
 </tr>
 <tr>
@@ -560,9 +657,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358647"></a><h3>
+<a name="id2820428"></a><h3>
 <a name="itdb-spl-update"></a>itdb_spl_update ()</h3>
-<a class="indexterm" name="id358657"></a><pre class="programlisting">void        itdb_spl_update                 (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *spl);</pre>
+<a class="indexterm" name="id2820438"></a><pre class="programlisting">void                itdb_spl_update                     (<a href="libgpod-Playlists.html#Itdb-Playlist">Itdb_Playlist</a> *spl);</pre>
 <p>
 Updates the content of the smart playlist <em class="parameter"><code>spl</code></em> (meant to be called if the 
 tracks stored in the <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> associated with <em class="parameter"><code>spl</code></em> have changed 
@@ -582,9 +679,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358730"></a><h3>
+<a name="id2820514"></a><h3>
 <a name="itdb-spl-update-all"></a>itdb_spl_update_all ()</h3>
-<a class="indexterm" name="id358740"></a><pre class="programlisting">void        itdb_spl_update_all             (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2820524"></a><pre class="programlisting">void                itdb_spl_update_all                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Updates all smart playlists contained in <em class="parameter"><code>itdb</code></em></p>
 <p>
@@ -601,9 +698,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id358793"></a><h3>
+<a name="id2820578"></a><h3>
 <a name="itdb-spl-update-live"></a>itdb_spl_update_live ()</h3>
-<a class="indexterm" name="id358804"></a><pre class="programlisting">void        itdb_spl_update_live            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2820589"></a><pre class="programlisting">void                itdb_spl_update_live                (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Updates all 'live' smart playlists contained in <em class="parameter"><code>itdb</code></em>, ie those which have 
 the 'live updating' flag set</p>
@@ -621,7 +718,7 @@
 </div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id358859"></a><h2>See Also</h2>
+<a name="id2820647"></a><h2>See Also</h2>
 <p>
 <a href="libgpod-Playlists.html" title="Playlists">Playlists</a>
 </p>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-The-Itdb-iTunesDB-structure.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-The-Itdb-iTunesDB-structure.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-The-Itdb-iTunesDB-structure.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>iPod database reading/writing</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="prev" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="next" href="libgpod-File-handling-functions.html" title="File handling functions">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="libgpod-File-handling-functions.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id323631" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2780501" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id270938" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2721122" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-The-Itdb-iTunesDB-structure"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id323631"></a><span class="refentrytitle">iPod database reading/writing</span>
+<a name="id2780501"></a><span class="refentrytitle">iPod database reading/writing</span>
 </h2>
 <p>iPod database reading/writing &#8212; Functions to create, read, write the iPod database</p>
 </td>
@@ -44,26 +44,49 @@
 
 
 
-            <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>;
-void        (<a href="libgpod-The-Itdb-iTunesDB-structure.html#ItdbUserDataDestroyFunc">*ItdbUserDataDestroyFunc</a>)      (gpointer userdata);
-gpointer    (<a href="libgpod-The-Itdb-iTunesDB-structure.html#ItdbUserDataDuplicateFunc">*ItdbUserDataDuplicateFunc</a>)    (gpointer userdata);
-<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>* <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-new">itdb_new</a>                     (void);
-void        <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-free">itdb_free</a>                       (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>* <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-parse">itdb_parse</a>                   (const gchar *mp,
-                                             GError **error);
-gboolean    <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-write">itdb_write</a>                      (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             GError **error);
-void        <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-set-mountpoint">itdb_set_mountpoint</a>             (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             const gchar *mp);
-const gchar* <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-get-mountpoint">itdb_get_mountpoint</a>            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-guint32     <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-tracks-number">itdb_tracks_number</a>              (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-guint32     <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-tracks-number-nontransferred">itdb_tracks_number_nontransferred</a>
-                                            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-guint32     <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-playlists-number">itdb_playlists_number</a>           (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+                    <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>;
+void                (<a href="libgpod-The-Itdb-iTunesDB-structure.html#ItdbUserDataDestroyFunc">*ItdbUserDataDestroyFunc</a>)          (<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> userdata);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a>            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#ItdbUserDataDuplicateFunc">*ItdbUserDataDuplicateFunc</a>)        (<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> userdata);
+<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>*      <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-new">itdb_new</a>                            (void);
+void                <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-free">itdb_free</a>                           (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>*      <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-parse">itdb_parse</a>                          (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-write">itdb_write</a>                          (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);
+void                <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-set-mountpoint">itdb_set_mountpoint</a>                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp);
+const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*        <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-get-mountpoint">itdb_get_mountpoint</a>                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-tracks-number">itdb_tracks_number</a>                  (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-tracks-number-nontransferred">itdb_tracks_number_nontransferred</a>   (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             <a href="libgpod-The-Itdb-iTunesDB-structure.html#itdb-playlists-number">itdb_playlists_number</a>               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id270938"></a><h2>Description</h2>
+<a name="id2721122"></a><h2>Description</h2>
 <p>
 These functions are for creating, reading, writing, and deleting the iPod
 database and getting the total number of tracks and playlists.
@@ -150,17 +173,22 @@
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id332997"></a><h2>Details</h2>
+<a name="id2784175"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id333007"></a><h3>
+<a name="id2784186"></a><h3>
 <a name="Itdb-iTunesDB"></a>Itdb_iTunesDB</h3>
-<a class="indexterm" name="id333019"></a><pre class="programlisting">typedef struct {
+<a class="indexterm" name="id2784198"></a><pre class="programlisting">typedef struct {
     GList *tracks;
     GList *playlists;
     gchar *filename;    /* filename of iTunesDB */
     Itdb_Device *device;/* iPod device info     */
     guint32 version;
     guint64 id;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -175,9 +203,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id333038"></a><h3>
+<a name="id2793351"></a><h3>
 <a name="ItdbUserDataDestroyFunc"></a>ItdbUserDataDestroyFunc ()</h3>
-<a class="indexterm" name="id333051"></a><pre class="programlisting">void        (*ItdbUserDataDestroyFunc)      (gpointer userdata);</pre>
+<a class="indexterm" name="id2784225"></a><pre class="programlisting">void                (*ItdbUserDataDestroyFunc)          (<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> userdata);</pre>
 <p>
 
 </p>
@@ -194,9 +224,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id333095"></a><h3>
+<a name="id2784271"></a><h3>
 <a name="ItdbUserDataDuplicateFunc"></a>ItdbUserDataDuplicateFunc ()</h3>
-<a class="indexterm" name="id333108"></a><pre class="programlisting">gpointer    (*ItdbUserDataDuplicateFunc)    (gpointer userdata);</pre>
+<a class="indexterm" name="id2784282"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a>            (*ItdbUserDataDuplicateFunc)        (<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> userdata);</pre>
 <p>
 
 </p>
@@ -220,9 +254,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347091"></a><h3>
+<a name="id2725075"></a><h3>
 <a name="itdb-new"></a>itdb_new ()</h3>
-<a class="indexterm" name="id347101"></a><pre class="programlisting"><a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>* itdb_new                     (void);</pre>
+<a class="indexterm" name="id2725087"></a><pre class="programlisting"><a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>*      itdb_new                            (void);</pre>
 <p>
 Creates a new Itdb_iTunesDB with the unknowns filled in to reasonable
 values.</p>
@@ -241,9 +275,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347144"></a><h3>
+<a name="id2725139"></a><h3>
 <a name="itdb-free"></a>itdb_free ()</h3>
-<a class="indexterm" name="id347154"></a><pre class="programlisting">void        itdb_free                       (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2725151"></a><pre class="programlisting">void                itdb_free                           (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Free the memory taken by <em class="parameter"><code>itdb</code></em>.</p>
 <p>
@@ -260,10 +294,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347209"></a><h3>
+<a name="id2725214"></a><h3>
 <a name="itdb-parse"></a>itdb_parse ()</h3>
-<a class="indexterm" name="id347219"></a><pre class="programlisting"><a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>* itdb_parse                   (const gchar *mp,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2725226"></a><pre class="programlisting"><a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a>*      itdb_parse                          (const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Parse the Itdb_iTunesDB of the iPod located at <em class="parameter"><code>mp</code></em></p>
 <p>
@@ -279,7 +317,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -295,10 +335,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347331"></a><h3>
+<a name="id2807365"></a><h3>
 <a name="itdb-write"></a>itdb_write ()</h3>
-<a class="indexterm" name="id347342"></a><pre class="programlisting">gboolean    itdb_write                      (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             GError **error);</pre>
+<a class="indexterm" name="id2807375"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_write                          (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+>GError</a> **error);</pre>
 <p>
 Write out an iTunesDB. It reassigns unique IDs to all tracks. 
 An existing "Play Counts" file is renamed to "Play Counts.bak" if
@@ -318,7 +362,9 @@
 </tr>
 <tr>
 <td><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
-<td> return location for a <span class="type">GError</span> or NULL
+<td> return location for a <a
+href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
+><span class="type">GError</span></a> or NULL
 </td>
 </tr>
 <tr>
@@ -332,10 +378,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347432"></a><h3>
+<a name="id2807470"></a><h3>
 <a name="itdb-set-mountpoint"></a>itdb_set_mountpoint ()</h3>
-<a class="indexterm" name="id347442"></a><pre class="programlisting">void        itdb_set_mountpoint             (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             const gchar *mp);</pre>
+<a class="indexterm" name="id2807481"></a><pre class="programlisting">void                itdb_set_mountpoint                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *mp);</pre>
 <p>
 Sets the mountpoint of <em class="parameter"><code>db</code></em>. Always use this function to set the mountpoint
 of an <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> as it will reset the number of available 
@@ -362,9 +410,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347527"></a><h3>
+<a name="id2807570"></a><h3>
 <a name="itdb-get-mountpoint"></a>itdb_get_mountpoint ()</h3>
-<a class="indexterm" name="id347538"></a><pre class="programlisting">const gchar* itdb_get_mountpoint            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2807580"></a><pre class="programlisting">const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a>*        itdb_get_mountpoint                 (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Retrieve a reference to the mountpoint of <em class="parameter"><code>itdb</code></em></p>
 <p>
@@ -389,9 +439,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347607"></a><h3>
+<a name="id2807651"></a><h3>
 <a name="itdb-tracks-number"></a>itdb_tracks_number ()</h3>
-<a class="indexterm" name="id347618"></a><pre class="programlisting">guint32     itdb_tracks_number              (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2807662"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             itdb_tracks_number                  (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Counts the number of tracks stored in <em class="parameter"><code>itdb</code></em></p>
 <p>
@@ -415,10 +467,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347686"></a><h3>
+<a name="id2807731"></a><h3>
 <a name="itdb-tracks-number-nontransferred"></a>itdb_tracks_number_nontransferred ()</h3>
-<a class="indexterm" name="id347696"></a><pre class="programlisting">guint32     itdb_tracks_number_nontransferred
-                                            (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2807745"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             itdb_tracks_number_nontransferred   (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Counts the number of non-transferred tracks in <em class="parameter"><code>itdb</code></em></p>
 <p>
@@ -444,9 +497,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id347772"></a><h3>
+<a name="id2807823"></a><h3>
 <a name="itdb-playlists-number"></a>itdb_playlists_number ()</h3>
-<a class="indexterm" name="id347783"></a><pre class="programlisting">guint32     itdb_playlists_number           (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2807833"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a>             itdb_playlists_number               (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Counts the number of playlists stored in <em class="parameter"><code>itdb</code></em></p>
 <p>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-Time-handling.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-Time-handling.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-Time-handling.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Time handling</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="prev" href="libgpod-File-handling-functions.html" title="File handling functions">
 <link rel="next" href="libgpod-Low-level-functions.html" title="Low-level functions">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="libgpod-Low-level-functions.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id329214" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2806583" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id321635" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2799839" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-Time-handling"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id329214"></a><span class="refentrytitle">Time handling</span>
+<a name="id2806583"></a><span class="refentrytitle">Time handling</span>
 </h2>
 <p>Time handling &#8212; Helper functions to convert between Epoch time and Mac (iPod) time</p>
 </td>
@@ -44,26 +44,36 @@
 
 
 
-guint64     <a href="libgpod-Time-handling.html#itdb-time-get-mac-time">itdb_time_get_mac_time</a>          (void);
-time_t      <a href="libgpod-Time-handling.html#itdb-time-mac-to-host">itdb_time_mac_to_host</a>           (guint64 mactime);
-guint64     <a href="libgpod-Time-handling.html#itdb-time-host-to-mac">itdb_time_host_to_mac</a>           (time_t time);
+time_t              <a href="libgpod-Time-handling.html#itdb-time-get-mac-time">itdb_time_get_mac_time</a>              (void);
+time_t              <a href="libgpod-Time-handling.html#itdb-time-mac-to-host">itdb_time_mac_to_host</a>               (time_t time);
+time_t              <a href="libgpod-Time-handling.html#itdb-time-host-to-mac">itdb_time_host_to_mac</a>               (time_t time);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id321635"></a><h2>Description</h2>
+<a name="id2799839"></a><h2>Description</h2>
 <p>
-The functions provide conversion between Epoch time and Mac (iPod) time
+The functions provide conversion between Epoch time and Mac (iPod) time. These 
+functions are now obsolete and should no longer be used, libgpod automatically
+converts to/from Epoch time and iPod time when writing/reading the iPod 
+databases
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id321651"></a><h2>Details</h2>
+<a name="id2799859"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id321661"></a><h3>
+<a name="id2799870"></a><h3>
 <a name="itdb-time-get-mac-time"></a>itdb_time_get_mac_time ()</h3>
-<a class="indexterm" name="id321673"></a><pre class="programlisting">guint64     itdb_time_get_mac_time          (void);</pre>
+<a class="indexterm" name="id2799883"></a><pre class="programlisting">time_t              itdb_time_get_mac_time              (void);</pre>
+<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Warning</h3>
+<p><code class="literal">itdb_time_get_mac_time</code> is deprecated and should not be used in newly-written code. kept for compatibility with older code, directly use 
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Date-and-Time-Functions.html#g-get-current-time"
+><code class="function">g_get_current_time()</code></a> or time(NULL) instead</p>
+</div>
 <p>
-Gets the current time expressed in 'Mac' unit (ie in number of seconds since
-1/1/1904).</p>
+Gets the current time in a format appropriate for storing in the libgpod
+data structures</p>
 <p>
 
 </p>
@@ -71,21 +81,24 @@
 <col align="left" valign="top">
 <tbody><tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> current time in 'Mac' unit.
+<td> current time
+
 </td>
 </tr></tbody>
 </table></div>
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id316273"></a><h3>
+<a name="id2799947"></a><h3>
 <a name="itdb-time-mac-to-host"></a>itdb_time_mac_to_host ()</h3>
-<a class="indexterm" name="id316285"></a><pre class="programlisting">time_t      itdb_time_mac_to_host           (guint64 mactime);</pre>
+<a class="indexterm" name="id2803945"></a><pre class="programlisting">time_t              itdb_time_mac_to_host               (time_t time);</pre>
+<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Warning</h3>
+<p><code class="literal">itdb_time_mac_to_host</code> is deprecated and should not be used in newly-written code. It's been kept for compatibility with older code, but this
+function is now a no-op</p>
+</div>
 <p>
-Convert a Mac timestamp to host system time stamp -- modify
-this function if necessary to port to host systems with different
-start of Epoch.
-A "0" time will not be converted.</p>
+Converts a timestamp from libgpod format to host system timestamp.</p>
 <p>
 
 </p>
@@ -93,13 +106,14 @@
 <col align="left" valign="top">
 <tbody>
 <tr>
-<td><span class="term"><em class="parameter"><code>mactime</code></em>&#160;:</span></td>
-<td> time expressed in 'Mac' unit
+<td><span class="term"><em class="parameter"><code>time</code></em>&#160;:</span></td>
+<td> time expressed in libgpod format
 </td>
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
 <td> timestamp for the host system
+
 </td>
 </tr>
 </tbody>
@@ -107,13 +121,16 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id316888"></a><h3>
+<a name="id2804019"></a><h3>
 <a name="itdb-time-host-to-mac"></a>itdb_time_host_to_mac ()</h3>
-<a class="indexterm" name="id316898"></a><pre class="programlisting">guint64     itdb_time_host_to_mac           (time_t time);</pre>
+<a class="indexterm" name="id2804032"></a><pre class="programlisting">time_t              itdb_time_host_to_mac               (time_t time);</pre>
+<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Warning</h3>
+<p><code class="literal">itdb_time_host_to_mac</code> is deprecated and should not be used in newly-written code. It's been kept for compatibility with older code, but this
+function is now a no-op</p>
+</div>
 <p>
-Convert host system timestamp to Mac time stamp -- modify
-this function if necessary to port to host systems with different
-start of Epoch</p>
+Convert host system timestamp to libgpod format timestamp</p>
 <p>
 
 </p>
@@ -127,7 +144,8 @@
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> a Mac timestamp
+<td> a libgpod timestamp
+
 </td>
 </tr>
 </tbody>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod-Tracks.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod-Tracks.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod-Tracks.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Tracks</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="ch01.html" title="iPod database components">
 <link rel="prev" href="ch01.html" title="iPod database components">
 <link rel="next" href="libgpod-Playlists.html" title="Playlists">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">
@@ -23,16 +23,16 @@
 <th width="100%" align="center">libgpod Reference Manual</th>
 <td><a accesskey="n" href="libgpod-Playlists.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
-<tr><td colspan="5" class="shortcuts"><nobr><a href="#id315541" class="shortcut">Top</a>
+<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2783483" class="shortcut">Top</a>
                   &#160;|&#160;
-                  <a href="#id312127" class="shortcut">Description</a></nobr></td></tr>
+                  <a href="#id2778427" class="shortcut">Description</a></nobr></td></tr>
 </table>
 <div class="refentry" lang="en">
 <a name="libgpod-Tracks"></a><div class="titlepage"></div>
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2>
-<a name="id315541"></a><span class="refentrytitle">Tracks</span>
+<a name="id2783483"></a><span class="refentrytitle">Tracks</span>
 </h2>
 <p>Tracks &#8212; Data structure to store metadata about an iPod track</p>
 </td>
@@ -44,60 +44,89 @@
 
 
 
-            <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>;
-<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>* <a href="libgpod-Tracks.html#itdb-track-new">itdb_track_new</a>                  (void);
-void        <a href="libgpod-Tracks.html#itdb-track-free">itdb_track_free</a>                 (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
-void        <a href="libgpod-Tracks.html#itdb-track-add">itdb_track_add</a>                  (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             gint32 pos);
-void        <a href="libgpod-Tracks.html#itdb-track-remove">itdb_track_remove</a>               (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
-void        <a href="libgpod-Tracks.html#itdb-track-unlink">itdb_track_unlink</a>               (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
-<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>* <a href="libgpod-Tracks.html#itdb-track-duplicate">itdb_track_duplicate</a>            (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *tr);
-<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>* <a href="libgpod-Tracks.html#itdb-track-by-id">itdb_track_by_id</a>                (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             guint32 id);
-GTree*      <a href="libgpod-Tracks.html#itdb-track-id-tree-create">itdb_track_id_tree_create</a>       (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
-void        <a href="libgpod-Tracks.html#itdb-track-id-tree-destroy">itdb_track_id_tree_destroy</a>      (GTree *idtree);
-<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>* <a href="libgpod-Tracks.html#itdb-track-id-tree-by-id">itdb_track_id_tree_by_id</a>        (GTree *idtree,
-                                             guint32 id);
-gboolean    <a href="libgpod-Tracks.html#itdb-track-set-thumbnails">itdb_track_set_thumbnails</a>       (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             const gchar *filename);
-gboolean    <a href="libgpod-Tracks.html#itdb-track-set-thumbnails-from-data">itdb_track_set_thumbnails_from_data</a>
-                                            (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             const guchar *image_data,
-                                             gsize image_data_len);
-void        <a href="libgpod-Tracks.html#itdb-track-remove-thumbnails">itdb_track_remove_thumbnails</a>    (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
-#define     <a href="libgpod-Tracks.html#ITDB-RATING-STEP:CAPS">ITDB_RATING_STEP</a>
+                    <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>;
+enum                <a href="libgpod-Tracks.html#Itdb-Mediatype">Itdb_Mediatype</a>;
+#define             <a href="libgpod-Tracks.html#ITDB-RATING-STEP:CAPS">ITDB_RATING_STEP</a>
+<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         <a href="libgpod-Tracks.html#itdb-track-new">itdb_track_new</a>                      (void);
+void                <a href="libgpod-Tracks.html#itdb-track-free">itdb_track_free</a>                     (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
+void                <a href="libgpod-Tracks.html#itdb-track-add">itdb_track_add</a>                      (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint32"
+>gint32</a> pos);
+void                <a href="libgpod-Tracks.html#itdb-track-remove">itdb_track_remove</a>                   (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
+void                <a href="libgpod-Tracks.html#itdb-track-unlink">itdb_track_unlink</a>                   (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
+<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         <a href="libgpod-Tracks.html#itdb-track-duplicate">itdb_track_duplicate</a>                (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *tr);
+<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         <a href="libgpod-Tracks.html#itdb-track-by-id">itdb_track_by_id</a>                    (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a> id);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+>GTree</a>*              <a href="libgpod-Tracks.html#itdb-track-id-tree-create">itdb_track_id_tree_create</a>           (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);
+void                <a href="libgpod-Tracks.html#itdb-track-id-tree-destroy">itdb_track_id_tree_destroy</a>          (<a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+>GTree</a> *idtree);
+<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         <a href="libgpod-Tracks.html#itdb-track-id-tree-by-id">itdb_track_id_tree_by_id</a>            (<a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+>GTree</a> *idtree,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a> id);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Tracks.html#itdb-track-set-thumbnails">itdb_track_set_thumbnails</a>           (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Tracks.html#itdb-track-set-thumbnails-from-data">itdb_track_set_thumbnails_from_data</a> (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guchar"
+>guchar</a> *image_data,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
+>gsize</a> image_data_len);
+<a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            <a href="libgpod-Tracks.html#itdb-track-set-thumbnails-from-pixbuf">itdb_track_set_thumbnails_from_pixbuf</a>
+                                                        (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> pixbuf);
+void                <a href="libgpod-Tracks.html#itdb-track-remove-thumbnails">itdb_track_remove_thumbnails</a>        (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);
 </pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id312127"></a><h2>Description</h2>
+<a name="id2778427"></a><h2>Description</h2>
 <p>
 These functions and structures are for storing and retrieving
 information about an iPod track.
 </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id312143"></a><h2>Details</h2>
+<a name="id2769358"></a><h2>Details</h2>
 <div class="refsect2" lang="en">
-<a name="id312154"></a><h3>
+<a name="id2769369"></a><h3>
 <a name="Itdb-Track"></a>Itdb_Track</h3>
-<a class="indexterm" name="id350431"></a><pre class="programlisting">typedef struct {
-  Itdb_iTunesDB *itdb;       /* pointer to iTunesDB (for convenience) */
-  gchar   *title;            /* title (utf8)           */
-  gchar   *ipod_path;        /* name of file on iPod: uses ":"
-				instead of "/"                        */
-  gchar   *album;            /* album (utf8)           */
-  gchar   *artist;           /* artist (utf8)          */
-  gchar   *genre;            /* genre (utf8)           */
-  gchar   *filetype;         /* eg. "MP3-File"...(utf8)*/
-  gchar   *comment;          /* comment (utf8)         */
-  gchar   *category;         /* Category for podcast   */
-  gchar   *composer;         /* Composer (utf8)        */
-  gchar   *grouping;         /* ? (utf8)               */
+<a class="indexterm" name="id2769381"></a><pre class="programlisting">typedef struct {
+  Itdb_iTunesDB *itdb;       /* pointer to iTunesDB (for convenience)   */
+  gchar   *title;            /* title (utf8)                            */
+  gchar   *ipod_path;        /* name of file on iPod: uses ":" instead
+				of "/" and is relative to mountpoint    */
+  gchar   *album;            /* album (utf8)                            */
+  gchar   *artist;           /* artist (utf8)                           */
+  gchar   *genre;            /* genre (utf8)                            */
+  gchar   *filetype;         /* eg. "MP3-File"...(utf8)                 */
+  gchar   *comment;          /* comment (utf8)                          */
+  gchar   *category;         /* Category for podcast                    */
+  gchar   *composer;         /* Composer (utf8)                         */
+  gchar   *grouping;         /* ? (utf8)                                */
   gchar   *description;      /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *podcasturl;       /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *podcastrss;       /* see note for MHOD_ID in itdb_itunesdb.c */
-  gchar   *chapterdata;      /* see note for MHOD_ID in itdb_itunesdb.c */
+  gpointer chapterdata;      /* not yet supported. Help welcome.        */
   gchar   *subtitle;         /* see note for MHOD_ID in itdb_itunesdb.c */
 /* the following 6 are new in libgpod 0.4.2... */
   gchar   *tvshow;           /* see note for MHOD_ID in itdb_itunesdb.c */
@@ -105,55 +134,74 @@
   gchar   *tvnetwork;        /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *albumartist;      /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *keywords;         /* see note for MHOD_ID in itdb_itunesdb.c */
-  gchar   *reserved;         /* will probably be used for artistthe     */
-/* ... to here */
-  guint32 id;                /* unique ID of track     */
-  gint32  size;              /* size of file in bytes  */
-  gint32  tracklen;          /* Length of track in ms  */
-  gint32  cd_nr;             /* CD number              */
-  gint32  cds;               /* number of CDs          */
-  gint32  track_nr;          /* track number           */
-  gint32  tracks;            /* number of tracks       */
-  gint32  bitrate;           /* bitrate                */
-  guint16 samplerate;        /* samplerate (CD: 44100) */
+/* the following 6 are new in libgpod 0.5.0... */
+  /* You can set these strings to override the standard
+     sortorder. When set they take precedence over the default
+     'artist', 'album'... fields.
+
+     For example, in the case of an artist name like "The Artist",
+     iTunes will set sort_artist to "Artist, The" followed by five
+     0x01 characters. Why five 0x01 characters are added is not
+     completely understood.
+
+     If you do not set the sort_artist field, libgpod will pre-sort
+     the lists displayed by the iPod according to "Artist, The",
+     without setting the field.
+  */
+  gchar   *sort_artist;      /* artist (for sorting)                    */
+  gchar   *sort_title;       /* title (for sorting)                     */
+  gchar   *sort_album;       /* album (for sorting)                     */
+  gchar   *sort_albumartist; /* album artist (for sorting)              */
+  gchar   *sort_composer;    /* composer (for sorting)                  */
+  gchar   *sort_tvshow;      /* tv show (for sorting)                   */
+/* new fields in libgpod 0.5.0 up to here */
+  guint32 id;                /* unique ID of track                      */
+  gint32  size;              /* size of file in bytes                   */
+  gint32  tracklen;          /* Length of track in ms                   */
+  gint32  cd_nr;             /* CD number                               */
+  gint32  cds;               /* number of CDs                           */
+  gint32  track_nr;          /* track number                            */
+  gint32  tracks;            /* number of tracks                        */
+  gint32  bitrate;           /* bitrate                                 */
+  guint16 samplerate;        /* samplerate (CD: 44100)                  */
   guint16 samplerate_low;    /* in the iTunesDB the samplerate is
                                 multiplied by 0x10000 -- these are the
-				lower 16 bit, which are usually 0 */
-  gint32  year;              /* year                   */
-  gint32  volume;            /* volume adjustment              */
-  guint32 soundcheck;        /* volume adjustment "soundcheck" */
-  guint32 time_added;        /* time when added (Mac type)          */
-  guint32 time_played;       /* time of last play (Mac type)        */
-  guint32 time_modified;     /* time of last modification (Mac type)*/
-  guint32 bookmark_time;     /* bookmark set for (AudioBook) in ms  */
-  guint32 rating;            /* star rating (stars * RATING_STEP (20))     */
-  guint32 playcount;         /* number of times track was played    */
+				lower 16 bit, which are usually 0       */
+  gint32  year;              /* year                                    */
+  gint32  volume;            /* volume adjustment                       */
+  guint32 soundcheck;        /* volume adjustment "soundcheck"          */
+  time_t  time_added;        /* time when added (Mac type)              */
+  time_t  time_modified;     /* time of last modification (Mac type)    */
+  time_t  time_played;       /* time of last play (Mac type)            */
+  guint32 bookmark_time;     /* bookmark set for (AudioBook) in ms      */
+  guint32 rating;            /* star rating (stars * RATING_STEP (20))  */
+  guint32 playcount;         /* number of times track was played        */
   guint32 playcount2;        /* Also stores the play count of the
 				song.  Don't know if it ever differs
 				from the above value. During sync itdb
 				sets playcount2 to the same value as
-				playcount. */
-  guint32 recent_playcount;  /* times track was played since last sync */
-  gboolean transferred;      /* has file been transferred to iPod?  */
-  gint16  BPM;               /* supposed to vary the playback speed */
+				playcount.                              */
+  guint32 recent_playcount;  /* times track was played since last sync  */
+  gboolean transferred;      /* has file been transferred to iPod?      */
+  gint16  BPM;               /* BPM (beats per minute) of this track    */
   guint8  app_rating;        /* star rating set by appl. (not
 			      * iPod). If the rating set on the iPod
 			        and the rating field above differ, the
 				original rating is copied here and the
 				new rating is stored above. */
   guint8  type1;             /* CBR MP3s and AAC are 0x00, VBR MP3s are
-			        0x01 */
-  guint8  type2;             /* MP3s are 0x01, AAC are 0x00 */
+			        0x01                                    */
+  guint8  type2;             /* MP3s are 0x01, AAC are 0x00             */
   guint8  compilation;
   guint32 starttime;
   guint32 stoptime;
   guint8  checked;           /* 0x0: checkmark on track is set 0x1: not set */
-  guint64 dbid;              /* unique database ID */
+  guint64 dbid;              /* unique database ID                      */
   guint32 drm_userid;        /* Apple Store/Audible User ID (for DRM'ed
-				files only, set to 0 otherwise). */
+				files only, set to 0 otherwise).        */
   guint32 visible;           /*  If this value is 1, the song is visible
 				 on the iPod. All other values cause
-				 the file to be hidden. */
+				 the file to be hidden.                 */
   guint32 filetype_marker;   /* This appears to always be 0 on hard
                                 drive based iPods, but for the
                                 iTunesDB that is written to an iPod
@@ -163,7 +211,7 @@
                                 0x4d503320 -&gt; 0x4d = 'M', 0x50 = 'P',
                                 0x33 = '3', 0x20 = &lt;space&gt;. (set to
 				the filename extension by itdb when
-				copying track to iPod)*/
+				copying track to iPod)                  */
   guint16 artwork_count;     /* The number of album artwork items
 				associated with this song. libgpod
 				updates this value when syncing */
@@ -172,23 +220,21 @@
 				converted to JPEG format. Observed in
 				iPodDB version 0x0b and with an iPod
 				Photo. libgpod updates this value when
-				syncing */
+				syncing                                 */
   float samplerate2;         /* The sample rate of the song expressed
 				as an IEEE 32 bit floating point
 				number.  It's uncertain why this is
 				here.  itdb will set this when adding
-				a track */
+				a track                                 */
 
   guint16 unk126;     /* unknown, but always seems to be 0xffff for
 			 MP3/AAC songs, 0x0 for uncompressed songs
 			 (like WAVE format), 0x1 for Audible. itdb
 			 will try to set this when adding a new track */
   guint32 unk132;     /* unknown */
-  guint32 time_released;/* date/time added to music store? definitely a
-			 timestamp, always appears to be a time of
-			 0700 GMT. For podcasts: release date as
-			 displayed next to the title in the Podcast
-			 playlist  */
+  time_t  time_released;/* date/time added to music store? 
+			   For podcasts: release date as displayed next to the 
+			   title in the Podcast playlist */
   guint16 unk144;     /* unknown, but MP3 songs appear to be always
 			 0x000c, AAC songs are always 0x0033, Audible
 			 files are 0x0029, WAV files are 0x0. itdb
@@ -301,6 +347,25 @@
   /* This is for Cover Art support */
   struct _Itdb_Artwork *artwork;
 
+  /* reserved for future use */
+  gint32 reserved_int1;
+  gint32 reserved_int2;
+  gint32 reserved_int3;
+  gint32 reserved_int4;
+  gint32 reserved_int5;
+  gint32 reserved_int6;
+  gpointer reserved1;
+  gpointer reserved2;
+  gpointer reserved3;
+  gpointer reserved4;
+  gpointer reserved5;
+  gpointer reserved6;
+
+  /* +++***+++***+++***+++***+++***+++***+++***+++***+++***+++***
+     When adding string fields don't forget to add them in
+     itdb_track_duplicate as well
+     +++***+++***+++***+++***+++***+++***+++***+++***+++***+++*** */
+
   /* below is for use by application */
   guint64 usertype;
   gpointer userdata;
@@ -315,9 +380,37 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id316213"></a><h3>
+<a name="id2789910"></a><h3>
+<a name="Itdb-Mediatype"></a>enum Itdb_Mediatype</h3>
+<a class="indexterm" name="id2776822"></a><pre class="programlisting">typedef enum
+{
+    ITDB_MEDIATYPE_AUDIO      = 0x0001,
+    ITDB_MEDIATYPE_MOVIE      = 0x0002,
+    ITDB_MEDIATYPE_PODCAST    = 0x0004,
+    ITDB_MEDIATYPE_AUDIOBOOK  = 0x0008,
+    ITDB_MEDIATYPE_MUSICVIDEO = 0x0020,
+    ITDB_MEDIATYPE_TVSHOW     = 0x0040,
+} Itdb_Mediatype;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2786708"></a><h3>
+<a name="ITDB-RATING-STEP:CAPS"></a>ITDB_RATING_STEP</h3>
+<a class="indexterm" name="id2786720"></a><pre class="programlisting">#define ITDB_RATING_STEP 20
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2786735"></a><h3>
 <a name="itdb-track-new"></a>itdb_track_new ()</h3>
-<a class="indexterm" name="id334690"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>* itdb_track_new                  (void);</pre>
+<a class="indexterm" name="id2774783"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         itdb_track_new                      (void);</pre>
 <p>
 Creates an empty <a href="libgpod-Tracks.html#Itdb-Track"><span class="type">Itdb_Track</span></a></p>
 <p>
@@ -335,9 +428,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id350582"></a><h3>
+<a name="id2769439"></a><h3>
 <a name="itdb-track-free"></a>itdb_track_free ()</h3>
-<a class="indexterm" name="id350594"></a><pre class="programlisting">void        itdb_track_free                 (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
+<a class="indexterm" name="id2769451"></a><pre class="programlisting">void                itdb_track_free                     (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
 <p>
 Frees the memory used by <em class="parameter"><code>track</code></em></p>
 <p>
@@ -354,11 +447,13 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id350654"></a><h3>
+<a name="id2769512"></a><h3>
 <a name="itdb-track-add"></a>itdb_track_add ()</h3>
-<a class="indexterm" name="id350666"></a><pre class="programlisting">void        itdb_track_add                  (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             gint32 pos);</pre>
+<a class="indexterm" name="id2769525"></a><pre class="programlisting">void                itdb_track_add                      (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint32"
+>gint32</a> pos);</pre>
 <p>
 Adds <em class="parameter"><code>track</code></em> to <em class="parameter"><code>itdb-&gt;tracks</code></em> at position <em class="parameter"><code>pos</code></em> (or at the end if pos
 is -1). The application is responsible to also add it to the master
@@ -390,9 +485,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id352865"></a><h3>
+<a name="id2814365"></a><h3>
 <a name="itdb-track-remove"></a>itdb_track_remove ()</h3>
-<a class="indexterm" name="id352876"></a><pre class="programlisting">void        itdb_track_remove               (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
+<a class="indexterm" name="id2814375"></a><pre class="programlisting">void                itdb_track_remove                   (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
 <p>
 Removes <em class="parameter"><code>track</code></em> from the <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> it's associated with, and frees the
 memory it uses. It doesn't remove the track from the playlists it may have
@@ -411,9 +506,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id352938"></a><h3>
+<a name="id2814440"></a><h3>
 <a name="itdb-track-unlink"></a>itdb_track_unlink ()</h3>
-<a class="indexterm" name="id352948"></a><pre class="programlisting">void        itdb_track_unlink               (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
+<a class="indexterm" name="id2814450"></a><pre class="programlisting">void                itdb_track_unlink                   (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
 <p>
 Removes <em class="parameter"><code>track</code></em> from the <a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB"><span class="type">Itdb_iTunesDB</span></a> it's associated with, but do not free
 memory. It doesn't remove the track from the playlists it may have been 
@@ -433,9 +528,9 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353011"></a><h3>
+<a name="id2814516"></a><h3>
 <a name="itdb-track-duplicate"></a>itdb_track_duplicate ()</h3>
-<a class="indexterm" name="id353021"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>* itdb_track_duplicate            (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *tr);</pre>
+<a class="indexterm" name="id2814526"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         itdb_track_duplicate                (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *tr);</pre>
 <p>
 Duplicates an existing track</p>
 <p>
@@ -459,10 +554,12 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353086"></a><h3>
+<a name="id2814592"></a><h3>
 <a name="itdb-track-by-id"></a>itdb_track_by_id ()</h3>
-<a class="indexterm" name="id353097"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>* itdb_track_by_id                (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
-                                             guint32 id);</pre>
+<a class="indexterm" name="id2814602"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         itdb_track_by_id                    (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a> id);</pre>
 <p>
 Looks up a track using its ID in <em class="parameter"><code>itdb</code></em>. 
 Looking up tracks by ID is not really a good idea because the IDs
@@ -499,9 +596,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353218"></a><h3>
+<a name="id2814729"></a><h3>
 <a name="itdb-track-id-tree-create"></a>itdb_track_id_tree_create ()</h3>
-<a class="indexterm" name="id353228"></a><pre class="programlisting">GTree*      itdb_track_id_tree_create       (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
+<a class="indexterm" name="id2814739"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+>GTree</a>*              itdb_track_id_tree_create           (<a href="libgpod-The-Itdb-iTunesDB-structure.html#Itdb-iTunesDB">Itdb_iTunesDB</a> *itdb);</pre>
 <p>
 Creates a balanced-binary tree for quick ID lookup that is used in
 <code class="function">itdb_track_by_id_tree()</code> function below</p>
@@ -518,7 +617,9 @@
 </tr>
 <tr>
 <td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
-<td> a <span class="type">GTree</span> indexed by track IDs to be freed with 
+<td> a <a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+><span class="type">GTree</span></a> indexed by track IDs to be freed with 
 <a href="libgpod-Tracks.html#itdb-track-id-tree-destroy"><code class="function">itdb_track_id_tree_destroy()</code></a> when no longer used
 </td>
 </tr>
@@ -527,9 +628,11 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353310"></a><h3>
+<a name="id2814824"></a><h3>
 <a name="itdb-track-id-tree-destroy"></a>itdb_track_id_tree_destroy ()</h3>
-<a class="indexterm" name="id353320"></a><pre class="programlisting">void        itdb_track_id_tree_destroy      (GTree *idtree);</pre>
+<a class="indexterm" name="id2814835"></a><pre class="programlisting">void                itdb_track_id_tree_destroy          (<a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+>GTree</a> *idtree);</pre>
 <p>
 Frees the memory used by <em class="parameter"><code>idtree</code></em></p>
 <p>
@@ -539,17 +642,23 @@
 <col align="left" valign="top">
 <tbody><tr>
 <td><span class="term"><em class="parameter"><code>idtree</code></em>&#160;:</span></td>
-<td> a <span class="type">GTree</span>
+<td> a <a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+><span class="type">GTree</span></a>
 </td>
 </tr></tbody>
 </table></div>
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353374"></a><h3>
+<a name="id2814889"></a><h3>
 <a name="itdb-track-id-tree-by-id"></a>itdb_track_id_tree_by_id ()</h3>
-<a class="indexterm" name="id353384"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>* itdb_track_id_tree_by_id        (GTree *idtree,
-                                             guint32 id);</pre>
+<a class="indexterm" name="id2814900"></a><pre class="programlisting"><a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a>*         itdb_track_id_tree_by_id            (<a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+>GTree</a> *idtree,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"
+>guint32</a> id);</pre>
 <p>
 Lookup an <a href="libgpod-Tracks.html#Itdb-Track"><span class="type">Itdb_Track</span></a> by <em class="parameter"><code>id</code></em> using <em class="parameter"><code>idtree</code></em> for faster lookup (compared to
 itdb_track_by_id)</p>
@@ -561,7 +670,9 @@
 <tbody>
 <tr>
 <td><span class="term"><em class="parameter"><code>idtree</code></em>&#160;:</span></td>
-<td> a <span class="type">GTree</span> created using <a href="libgpod-Tracks.html#itdb-track-id-tree-create"><code class="function">itdb_track_id_tree_create()</code></a>
+<td> a <a
+href="/usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html#GTree"
+><span class="type">GTree</span></a> created using <a href="libgpod-Tracks.html#itdb-track-id-tree-create"><code class="function">itdb_track_id_tree_create()</code></a>
 </td>
 </tr>
 <tr>
@@ -580,10 +691,14 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353497"></a><h3>
+<a name="id2815017"></a><h3>
 <a name="itdb-track-set-thumbnails"></a>itdb_track_set_thumbnails ()</h3>
-<a class="indexterm" name="id353508"></a><pre class="programlisting">gboolean    itdb_track_set_thumbnails       (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             const gchar *filename);</pre>
+<a class="indexterm" name="id2815028"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_track_set_thumbnails           (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"
+>gchar</a> *filename);</pre>
 <p>
 Uses the image contained in <em class="parameter"><code>filename</code></em> to generate iPod thumbnails. The image
 can be in any format supported by gdk-pixbuf. To save memory, the thumbnails
@@ -615,12 +730,17 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353599"></a><h3>
+<a name="id2815127"></a><h3>
 <a name="itdb-track-set-thumbnails-from-data"></a>itdb_track_set_thumbnails_from_data ()</h3>
-<a class="indexterm" name="id353610"></a><pre class="programlisting">gboolean    itdb_track_set_thumbnails_from_data
-                                            (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
-                                             const guchar *image_data,
-                                             gsize image_data_len);</pre>
+<a class="indexterm" name="id2815140"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_track_set_thumbnails_from_data (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         const <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guchar"
+>guchar</a> *image_data,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
+>gsize</a> image_data_len);</pre>
 <p>
 Uses <em class="parameter"><code>image_data</code></em> to generate iPod thumbnails. The image can be in
 any format supported by gdk-pixbuf. To save memory, the thumbnails
@@ -658,32 +778,63 @@
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353722"></a><h3>
-<a name="itdb-track-remove-thumbnails"></a>itdb_track_remove_thumbnails ()</h3>
-<a class="indexterm" name="id353732"></a><pre class="programlisting">void        itdb_track_remove_thumbnails    (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
+<a name="id2815258"></a><h3>
+<a name="itdb-track-set-thumbnails-from-pixbuf"></a>itdb_track_set_thumbnails_from_pixbuf ()</h3>
+<a class="indexterm" name="id2815271"></a><pre class="programlisting"><a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
+>gboolean</a>            itdb_track_set_thumbnails_from_pixbuf
+                                                        (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track,
+                                                         <a
+href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
+>gpointer</a> pixbuf);</pre>
 <p>
-Removes the thumbnails associated with <em class="parameter"><code>track</code></em></p>
+Uses <em class="parameter"><code>pixbuf</code></em> to generate iPod thumbnails. To save memory, the thumbnails
+will only be generated when necessary, ie when <code class="function">itdb_save()</code> or a
+similar function is called.</p>
 <p>
 
 </p>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
-<tbody><tr>
+<tbody>
+<tr>
 <td><span class="term"><em class="parameter"><code>track</code></em>&#160;:</span></td>
 <td> an <a href="libgpod-Tracks.html#Itdb-Track"><span class="type">Itdb_Track</span></a>
 </td>
-</tr></tbody>
+</tr>
+<tr>
+<td><span class="term"><em class="parameter"><code>pixbuf</code></em>&#160;:</span></td>
+<td> a <a
+href="/usr/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf"
+><span class="type">GdkPixbuf</span></a> used to generate the thumbnail
+</td>
+</tr>
+<tr>
+<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> TRUE if the thumbnail could be added, FALSE otherwise.
+</td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <hr>
 <div class="refsect2" lang="en">
-<a name="id353786"></a><h3>
-<a name="ITDB-RATING-STEP:CAPS"></a>ITDB_RATING_STEP</h3>
-<a class="indexterm" name="id353796"></a><pre class="programlisting">#define ITDB_RATING_STEP 20
-</pre>
+<a name="id2815376"></a><h3>
+<a name="itdb-track-remove-thumbnails"></a>itdb_track_remove_thumbnails ()</h3>
+<a class="indexterm" name="id2815388"></a><pre class="programlisting">void                itdb_track_remove_thumbnails        (<a href="libgpod-Tracks.html#Itdb-Track">Itdb_Track</a> *track);</pre>
 <p>
+Removes the thumbnails associated with <em class="parameter"><code>track</code></em></p>
+<p>
 
 </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><span class="term"><em class="parameter"><code>track</code></em>&#160;:</span></td>
+<td> an <a href="libgpod-Tracks.html#Itdb-Track"><span class="type">Itdb_Track</span></a>
+</td>
+</tr></tbody>
+</table></div>
 </div>
 </div>
 </div>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod.devhelp
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod.devhelp	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod.devhelp	2007-06-27 21:44:37 UTC (rev 198)
@@ -57,10 +57,14 @@
     <function name="itdb_shuffle_write ()" link="libgpod-Low-level-functions.html#itdb-shuffle-write"/>
     <function name="itdb_shuffle_write_file ()" link="libgpod-Low-level-functions.html#itdb-shuffle-write-file"/>
     <function name="itdb_cp ()" link="libgpod-Low-level-functions.html#itdb-cp"/>
+    <function name="itdb_cp_get_dest_filename ()" link="libgpod-Low-level-functions.html#itdb-cp-get-dest-filename"/>
+    <function name="itdb_cp_finalize ()" link="libgpod-Low-level-functions.html#itdb-cp-finalize"/>
     <function name="itdb_parse_file ()" link="libgpod-Low-level-functions.html#itdb-parse-file"/>
     <function name="itdb_write_file ()" link="libgpod-Low-level-functions.html#itdb-write-file"/>
     <function name="itdb_duplicate ()" link="libgpod-Low-level-functions.html#itdb-duplicate"/>
     <function name="Itdb_Track" link="libgpod-Tracks.html#Itdb-Track"/>
+    <function name="enum Itdb_Mediatype" link="libgpod-Tracks.html#Itdb-Mediatype"/>
+    <function name="ITDB_RATING_STEP" link="libgpod-Tracks.html#ITDB-RATING-STEP:CAPS"/>
     <function name="itdb_track_new ()" link="libgpod-Tracks.html#itdb-track-new"/>
     <function name="itdb_track_free ()" link="libgpod-Tracks.html#itdb-track-free"/>
     <function name="itdb_track_add ()" link="libgpod-Tracks.html#itdb-track-add"/>
@@ -73,8 +77,8 @@
     <function name="itdb_track_id_tree_by_id ()" link="libgpod-Tracks.html#itdb-track-id-tree-by-id"/>
     <function name="itdb_track_set_thumbnails ()" link="libgpod-Tracks.html#itdb-track-set-thumbnails"/>
     <function name="itdb_track_set_thumbnails_from_data ()" link="libgpod-Tracks.html#itdb-track-set-thumbnails-from-data"/>
+    <function name="itdb_track_set_thumbnails_from_pixbuf ()" link="libgpod-Tracks.html#itdb-track-set-thumbnails-from-pixbuf"/>
     <function name="itdb_track_remove_thumbnails ()" link="libgpod-Tracks.html#itdb-track-remove-thumbnails"/>
-    <function name="ITDB_RATING_STEP" link="libgpod-Tracks.html#ITDB-RATING-STEP:CAPS"/>
     <function name="Itdb_Playlist" link="libgpod-Playlists.html#Itdb-Playlist"/>
     <function name="enum ItdbPlaylistSortOrder" link="libgpod-Playlists.html#ItdbPlaylistSortOrder"/>
     <function name="itdb_playlist_new ()" link="libgpod-Playlists.html#itdb-playlist-new"/>
@@ -100,16 +104,19 @@
     <function name="itdb_playlist_by_nr ()" link="libgpod-Playlists.html#itdb-playlist-by-nr"/>
     <function name="itdb_playlist_by_name ()" link="libgpod-Playlists.html#itdb-playlist-by-name"/>
     <function name="itdb_playlist_randomize ()" link="libgpod-Playlists.html#itdb-playlist-randomize"/>
-    <function name="SPLPref" link="libgpod-Smart-Playlists.html#SPLPref"/>
-    <function name="SPLRule" link="libgpod-Smart-Playlists.html#SPLRule"/>
-    <function name="SPLRules" link="libgpod-Smart-Playlists.html#SPLRules"/>
-    <function name="enum SPLAction" link="libgpod-Smart-Playlists.html#SPLAction"/>
-    <function name="enum SPLFieldType" link="libgpod-Smart-Playlists.html#SPLFieldType"/>
-    <function name="enum SPLActionType" link="libgpod-Smart-Playlists.html#SPLActionType"/>
-    <function name="enum SPLField" link="libgpod-Smart-Playlists.html#SPLField"/>
-    <function name="SPLDATE_IDENTIFIER" link="libgpod-Smart-Playlists.html#SPLDATE-IDENTIFIER:CAPS"/>
-    <function name="SPL_MAXSTRINGLENGTH" link="libgpod-Smart-Playlists.html#SPL-MAXSTRINGLENGTH:CAPS"/>
-    <function name="SPL_STRING_MAXLEN" link="libgpod-Smart-Playlists.html#SPL-STRING-MAXLEN:CAPS"/>
+    <function name="Itdb_SPLPref" link="libgpod-Smart-Playlists.html#Itdb-SPLPref"/>
+    <function name="Itdb_SPLRule" link="libgpod-Smart-Playlists.html#Itdb-SPLRule"/>
+    <function name="Itdb_SPLRules" link="libgpod-Smart-Playlists.html#Itdb-SPLRules"/>
+    <function name="enum ItdbLimitSort" link="libgpod-Smart-Playlists.html#ItdbLimitSort"/>
+    <function name="enum ItdbLimitType" link="libgpod-Smart-Playlists.html#ItdbLimitType"/>
+    <function name="enum ItdbSPLAction" link="libgpod-Smart-Playlists.html#ItdbSPLAction"/>
+    <function name="enum ItdbSPLActionLast" link="libgpod-Smart-Playlists.html#ItdbSPLActionLast"/>
+    <function name="enum ItdbSPLActionType" link="libgpod-Smart-Playlists.html#ItdbSPLActionType"/>
+    <function name="enum ItdbSPLField" link="libgpod-Smart-Playlists.html#ItdbSPLField"/>
+    <function name="enum ItdbSPLFieldType" link="libgpod-Smart-Playlists.html#ItdbSPLFieldType"/>
+    <function name="enum ItdbSPLMatch" link="libgpod-Smart-Playlists.html#ItdbSPLMatch"/>
+    <function name="ITDB_SPL_DATE_IDENTIFIER" link="libgpod-Smart-Playlists.html#ITDB-SPL-DATE-IDENTIFIER:CAPS"/>
+    <function name="ITDB_SPL_STRING_MAXLEN" link="libgpod-Smart-Playlists.html#ITDB-SPL-STRING-MAXLEN:CAPS"/>
     <function name="itdb_splr_get_field_type ()" link="libgpod-Smart-Playlists.html#itdb-splr-get-field-type"/>
     <function name="itdb_splr_get_action_type ()" link="libgpod-Smart-Playlists.html#itdb-splr-get-action-type"/>
     <function name="itdb_splr_validate ()" link="libgpod-Smart-Playlists.html#itdb-splr-validate"/>
@@ -130,6 +137,7 @@
     <function name="itdb_artwork_free ()" link="libgpod-Artwork.html#itdb-artwork-free"/>
     <function name="itdb_artwork_add_thumbnail ()" link="libgpod-Artwork.html#itdb-artwork-add-thumbnail"/>
     <function name="itdb_artwork_add_thumbnail_from_data ()" link="libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-data"/>
+    <function name="itdb_artwork_add_thumbnail_from_pixbuf ()" link="libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-pixbuf"/>
     <function name="itdb_artwork_remove_thumbnail ()" link="libgpod-Artwork.html#itdb-artwork-remove-thumbnail"/>
     <function name="itdb_artwork_remove_thumbnails ()" link="libgpod-Artwork.html#itdb-artwork-remove-thumbnails"/>
     <function name="itdb_artwork_get_thumb_by_type ()" link="libgpod-Artwork.html#itdb-artwork-get-thumb-by-type"/>
@@ -147,6 +155,8 @@
     <function name="itdb_device_set_sysinfo ()" link="libgpod-Device.html#itdb-device-set-sysinfo"/>
     <function name="itdb_device_write_sysinfo ()" link="libgpod-Device.html#itdb-device-write-sysinfo"/>
     <function name="itdb_device_get_ipod_info ()" link="libgpod-Device.html#itdb-device-get-ipod-info"/>
+    <function name="itdb_device_supports_artwork ()" link="libgpod-Device.html#itdb-device-supports-artwork"/>
+    <function name="itdb_device_supports_photo ()" link="libgpod-Device.html#itdb-device-supports-photo"/>
     <function name="itdb_info_get_ipod_info_table ()" link="libgpod-Device.html#itdb-info-get-ipod-info-table"/>
     <function name="itdb_info_get_ipod_generation_string ()" link="libgpod-Device.html#itdb-info-get-ipod-generation-string"/>
     <function name="itdb_info_get_ipod_model_name_string ()" link="libgpod-Device.html#itdb-info-get-ipod-model-name-string"/>
@@ -159,6 +169,7 @@
     <function name="Itdb_PhotoDB" link="libgpod-Photo-database.html#Itdb-PhotoDB"/>
     <function name="itdb_photodb_add_photo ()" link="libgpod-Photo-database.html#itdb-photodb-add-photo"/>
     <function name="itdb_photodb_add_photo_from_data ()" link="libgpod-Photo-database.html#itdb-photodb-add-photo-from-data"/>
+    <function name="itdb_photodb_add_photo_from_pixbuf ()" link="libgpod-Photo-database.html#itdb-photodb-add-photo-from-pixbuf"/>
     <function name="itdb_photodb_create ()" link="libgpod-Photo-database.html#itdb-photodb-create"/>
     <function name="itdb_photodb_free ()" link="libgpod-Photo-database.html#itdb-photodb-free"/>
     <function name="itdb_photodb_parse ()" link="libgpod-Photo-database.html#itdb-photodb-parse"/>

Modified: libgpod/branches/upstream/current/docs/reference/html/libgpod.devhelp2
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/libgpod.devhelp2	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/libgpod.devhelp2	2007-06-27 21:44:37 UTC (rev 198)
@@ -38,9 +38,9 @@
     <keyword type="function" name="itdb_filename_on_ipod ()" link="libgpod-File-handling-functions.html#itdb-filename-on-ipod"/>
     <keyword type="function" name="itdb_musicdirs_number ()" link="libgpod-File-handling-functions.html#itdb-musicdirs-number"/>
     <keyword type="function" name="itdb_rename_files ()" link="libgpod-File-handling-functions.html#itdb-rename-files"/>
-    <keyword type="function" name="itdb_time_get_mac_time ()" link="libgpod-Time-handling.html#itdb-time-get-mac-time"/>
-    <keyword type="function" name="itdb_time_mac_to_host ()" link="libgpod-Time-handling.html#itdb-time-mac-to-host"/>
-    <keyword type="function" name="itdb_time_host_to_mac ()" link="libgpod-Time-handling.html#itdb-time-host-to-mac"/>
+    <keyword type="function" name="itdb_time_get_mac_time ()" link="libgpod-Time-handling.html#itdb-time-get-mac-time" deprecated=""/>
+    <keyword type="function" name="itdb_time_mac_to_host ()" link="libgpod-Time-handling.html#itdb-time-mac-to-host" deprecated=""/>
+    <keyword type="function" name="itdb_time_host_to_mac ()" link="libgpod-Time-handling.html#itdb-time-host-to-mac" deprecated=""/>
     <keyword type="function" name="itdb_get_control_dir ()" link="libgpod-Low-level-functions.html#itdb-get-control-dir"/>
     <keyword type="function" name="itdb_get_itunes_dir ()" link="libgpod-Low-level-functions.html#itdb-get-itunes-dir"/>
     <keyword type="function" name="itdb_get_music_dir ()" link="libgpod-Low-level-functions.html#itdb-get-music-dir"/>
@@ -57,10 +57,14 @@
     <keyword type="function" name="itdb_shuffle_write ()" link="libgpod-Low-level-functions.html#itdb-shuffle-write"/>
     <keyword type="function" name="itdb_shuffle_write_file ()" link="libgpod-Low-level-functions.html#itdb-shuffle-write-file"/>
     <keyword type="function" name="itdb_cp ()" link="libgpod-Low-level-functions.html#itdb-cp"/>
+    <keyword type="function" name="itdb_cp_get_dest_filename ()" link="libgpod-Low-level-functions.html#itdb-cp-get-dest-filename"/>
+    <keyword type="function" name="itdb_cp_finalize ()" link="libgpod-Low-level-functions.html#itdb-cp-finalize"/>
     <keyword type="function" name="itdb_parse_file ()" link="libgpod-Low-level-functions.html#itdb-parse-file"/>
     <keyword type="function" name="itdb_write_file ()" link="libgpod-Low-level-functions.html#itdb-write-file"/>
     <keyword type="function" name="itdb_duplicate ()" link="libgpod-Low-level-functions.html#itdb-duplicate"/>
     <keyword type="struct" name="Itdb_Track" link="libgpod-Tracks.html#Itdb-Track"/>
+    <keyword type="enum" name="enum Itdb_Mediatype" link="libgpod-Tracks.html#Itdb-Mediatype"/>
+    <keyword type="macro" name="ITDB_RATING_STEP" link="libgpod-Tracks.html#ITDB-RATING-STEP:CAPS"/>
     <keyword type="function" name="itdb_track_new ()" link="libgpod-Tracks.html#itdb-track-new"/>
     <keyword type="function" name="itdb_track_free ()" link="libgpod-Tracks.html#itdb-track-free"/>
     <keyword type="function" name="itdb_track_add ()" link="libgpod-Tracks.html#itdb-track-add"/>
@@ -73,8 +77,8 @@
     <keyword type="function" name="itdb_track_id_tree_by_id ()" link="libgpod-Tracks.html#itdb-track-id-tree-by-id"/>
     <keyword type="function" name="itdb_track_set_thumbnails ()" link="libgpod-Tracks.html#itdb-track-set-thumbnails"/>
     <keyword type="function" name="itdb_track_set_thumbnails_from_data ()" link="libgpod-Tracks.html#itdb-track-set-thumbnails-from-data"/>
+    <keyword type="function" name="itdb_track_set_thumbnails_from_pixbuf ()" link="libgpod-Tracks.html#itdb-track-set-thumbnails-from-pixbuf"/>
     <keyword type="function" name="itdb_track_remove_thumbnails ()" link="libgpod-Tracks.html#itdb-track-remove-thumbnails"/>
-    <keyword type="macro" name="ITDB_RATING_STEP" link="libgpod-Tracks.html#ITDB-RATING-STEP:CAPS"/>
     <keyword type="struct" name="Itdb_Playlist" link="libgpod-Playlists.html#Itdb-Playlist"/>
     <keyword type="enum" name="enum ItdbPlaylistSortOrder" link="libgpod-Playlists.html#ItdbPlaylistSortOrder"/>
     <keyword type="function" name="itdb_playlist_new ()" link="libgpod-Playlists.html#itdb-playlist-new"/>
@@ -100,16 +104,19 @@
     <keyword type="function" name="itdb_playlist_by_nr ()" link="libgpod-Playlists.html#itdb-playlist-by-nr"/>
     <keyword type="function" name="itdb_playlist_by_name ()" link="libgpod-Playlists.html#itdb-playlist-by-name"/>
     <keyword type="function" name="itdb_playlist_randomize ()" link="libgpod-Playlists.html#itdb-playlist-randomize"/>
-    <keyword type="struct" name="SPLPref" link="libgpod-Smart-Playlists.html#SPLPref"/>
-    <keyword type="struct" name="SPLRule" link="libgpod-Smart-Playlists.html#SPLRule"/>
-    <keyword type="struct" name="SPLRules" link="libgpod-Smart-Playlists.html#SPLRules"/>
-    <keyword type="enum" name="enum SPLAction" link="libgpod-Smart-Playlists.html#SPLAction"/>
-    <keyword type="enum" name="enum SPLFieldType" link="libgpod-Smart-Playlists.html#SPLFieldType"/>
-    <keyword type="enum" name="enum SPLActionType" link="libgpod-Smart-Playlists.html#SPLActionType"/>
-    <keyword type="enum" name="enum SPLField" link="libgpod-Smart-Playlists.html#SPLField"/>
-    <keyword type="macro" name="SPLDATE_IDENTIFIER" link="libgpod-Smart-Playlists.html#SPLDATE-IDENTIFIER:CAPS"/>
-    <keyword type="macro" name="SPL_MAXSTRINGLENGTH" link="libgpod-Smart-Playlists.html#SPL-MAXSTRINGLENGTH:CAPS"/>
-    <keyword type="macro" name="SPL_STRING_MAXLEN" link="libgpod-Smart-Playlists.html#SPL-STRING-MAXLEN:CAPS"/>
+    <keyword type="struct" name="Itdb_SPLPref" link="libgpod-Smart-Playlists.html#Itdb-SPLPref"/>
+    <keyword type="struct" name="Itdb_SPLRule" link="libgpod-Smart-Playlists.html#Itdb-SPLRule"/>
+    <keyword type="struct" name="Itdb_SPLRules" link="libgpod-Smart-Playlists.html#Itdb-SPLRules"/>
+    <keyword type="enum" name="enum ItdbLimitSort" link="libgpod-Smart-Playlists.html#ItdbLimitSort"/>
+    <keyword type="enum" name="enum ItdbLimitType" link="libgpod-Smart-Playlists.html#ItdbLimitType"/>
+    <keyword type="enum" name="enum ItdbSPLAction" link="libgpod-Smart-Playlists.html#ItdbSPLAction"/>
+    <keyword type="enum" name="enum ItdbSPLActionLast" link="libgpod-Smart-Playlists.html#ItdbSPLActionLast"/>
+    <keyword type="enum" name="enum ItdbSPLActionType" link="libgpod-Smart-Playlists.html#ItdbSPLActionType"/>
+    <keyword type="enum" name="enum ItdbSPLField" link="libgpod-Smart-Playlists.html#ItdbSPLField"/>
+    <keyword type="enum" name="enum ItdbSPLFieldType" link="libgpod-Smart-Playlists.html#ItdbSPLFieldType"/>
+    <keyword type="enum" name="enum ItdbSPLMatch" link="libgpod-Smart-Playlists.html#ItdbSPLMatch"/>
+    <keyword type="macro" name="ITDB_SPL_DATE_IDENTIFIER" link="libgpod-Smart-Playlists.html#ITDB-SPL-DATE-IDENTIFIER:CAPS"/>
+    <keyword type="macro" name="ITDB_SPL_STRING_MAXLEN" link="libgpod-Smart-Playlists.html#ITDB-SPL-STRING-MAXLEN:CAPS"/>
     <keyword type="function" name="itdb_splr_get_field_type ()" link="libgpod-Smart-Playlists.html#itdb-splr-get-field-type"/>
     <keyword type="function" name="itdb_splr_get_action_type ()" link="libgpod-Smart-Playlists.html#itdb-splr-get-action-type"/>
     <keyword type="function" name="itdb_splr_validate ()" link="libgpod-Smart-Playlists.html#itdb-splr-validate"/>
@@ -130,6 +137,7 @@
     <keyword type="function" name="itdb_artwork_free ()" link="libgpod-Artwork.html#itdb-artwork-free"/>
     <keyword type="function" name="itdb_artwork_add_thumbnail ()" link="libgpod-Artwork.html#itdb-artwork-add-thumbnail"/>
     <keyword type="function" name="itdb_artwork_add_thumbnail_from_data ()" link="libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-data"/>
+    <keyword type="function" name="itdb_artwork_add_thumbnail_from_pixbuf ()" link="libgpod-Artwork.html#itdb-artwork-add-thumbnail-from-pixbuf"/>
     <keyword type="function" name="itdb_artwork_remove_thumbnail ()" link="libgpod-Artwork.html#itdb-artwork-remove-thumbnail"/>
     <keyword type="function" name="itdb_artwork_remove_thumbnails ()" link="libgpod-Artwork.html#itdb-artwork-remove-thumbnails"/>
     <keyword type="function" name="itdb_artwork_get_thumb_by_type ()" link="libgpod-Artwork.html#itdb-artwork-get-thumb-by-type"/>
@@ -147,6 +155,8 @@
     <keyword type="function" name="itdb_device_set_sysinfo ()" link="libgpod-Device.html#itdb-device-set-sysinfo"/>
     <keyword type="function" name="itdb_device_write_sysinfo ()" link="libgpod-Device.html#itdb-device-write-sysinfo"/>
     <keyword type="function" name="itdb_device_get_ipod_info ()" link="libgpod-Device.html#itdb-device-get-ipod-info"/>
+    <keyword type="function" name="itdb_device_supports_artwork ()" link="libgpod-Device.html#itdb-device-supports-artwork"/>
+    <keyword type="function" name="itdb_device_supports_photo ()" link="libgpod-Device.html#itdb-device-supports-photo"/>
     <keyword type="function" name="itdb_info_get_ipod_info_table ()" link="libgpod-Device.html#itdb-info-get-ipod-info-table"/>
     <keyword type="function" name="itdb_info_get_ipod_generation_string ()" link="libgpod-Device.html#itdb-info-get-ipod-generation-string"/>
     <keyword type="function" name="itdb_info_get_ipod_model_name_string ()" link="libgpod-Device.html#itdb-info-get-ipod-model-name-string"/>
@@ -159,6 +169,7 @@
     <keyword type="struct" name="Itdb_PhotoDB" link="libgpod-Photo-database.html#Itdb-PhotoDB"/>
     <keyword type="function" name="itdb_photodb_add_photo ()" link="libgpod-Photo-database.html#itdb-photodb-add-photo"/>
     <keyword type="function" name="itdb_photodb_add_photo_from_data ()" link="libgpod-Photo-database.html#itdb-photodb-add-photo-from-data"/>
+    <keyword type="function" name="itdb_photodb_add_photo_from_pixbuf ()" link="libgpod-Photo-database.html#itdb-photodb-add-photo-from-pixbuf"/>
     <keyword type="function" name="itdb_photodb_create ()" link="libgpod-Photo-database.html#itdb-photodb-create"/>
     <keyword type="function" name="itdb_photodb_free ()" link="libgpod-Photo-database.html#itdb-photodb-free"/>
     <keyword type="function" name="itdb_photodb_parse ()" link="libgpod-Photo-database.html#itdb-photodb-parse"/>

Modified: libgpod/branches/upstream/current/docs/reference/html/photodb.html
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/photodb.html	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/photodb.html	2007-06-27 21:44:37 UTC (rev 198)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Part&#160;II.&#160;Photo database</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.71.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
 <link rel="start" href="index.html" title="libgpod Reference Manual">
 <link rel="up" href="index.html" title="libgpod Reference Manual">
 <link rel="prev" href="libgpod-Device.html" title="Device">
 <link rel="next" href="libgpod-Photo-database.html" title="Photo database">
-<meta name="generator" content="GTK-Doc V1.7 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 <link rel="part" href="itunesdb.html" title="Part&#160;I.&#160;iPod database">
 <link rel="chapter" href="ch01.html" title="iPod database components">

Modified: libgpod/branches/upstream/current/docs/reference/html/style.css
===================================================================
--- libgpod/branches/upstream/current/docs/reference/html/style.css	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/html/style.css	2007-06-27 21:44:37 UTC (rev 198)
@@ -19,7 +19,8 @@
 {
   vertical-align: top;
 }
-div a[name]
+/* this is needed so that the local anchors are displayed below the naviagtion */
+div.refnamediv a[name], div.refsect1 a[name]
 {
   position: relative;
   top: -4.5em;
@@ -54,7 +55,7 @@
   font-size: 80%;
 }
 
-div.refentry, div.chapter, div.part, div.book, div.index, div.glossary, div.sect1
+div.refentry, div.chapter, div.part, div.book, div.index, div.glossary, div.sect1, div.appendix, div.preface
 {
   position: relative;
   top: 3em;
@@ -86,3 +87,26 @@
   text-decoration: underline;
   color: #FF0000;
 }
+
+div.table table
+{
+  border-collapse: collapse;
+  border-spacing: 0px;
+  border-style: solid;
+  border-color: #777777;
+  border-width: 1px;
+}
+
+div.table table td, div.table table th
+{
+  border-style: solid;
+  border-color: #777777;
+  border-width: 1px;
+  padding: 3px;
+  vertical-align: top;
+}
+
+div.table table th
+{
+  background-color: #eeeeee;
+}

Modified: libgpod/branches/upstream/current/docs/reference/libgpod-docs.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/libgpod-docs.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/libgpod-docs.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -59,7 +59,7 @@
       </para>
       <para>
       Please see the programs in the <ulink type="http"
-      url="http://gtkpod.cvs.sourceforge.net/gtkpod/libgpod/tests/">tests/</ulink>
+      url="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/tests/">tests/</ulink>
       directory of the source distribution for some usage examples.  A more
       complete example can be found in the source for <ulink type="http"
       url="http://www.gtkpod.org"> Gtkpod</ulink>.  You can also ask questions

Modified: libgpod/branches/upstream/current/docs/reference/libgpod-sections.txt
===================================================================
--- libgpod/branches/upstream/current/docs/reference/libgpod-sections.txt	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/libgpod-sections.txt	2007-06-27 21:44:37 UTC (rev 198)
@@ -48,6 +48,8 @@
 itdb_shuffle_write
 itdb_shuffle_write_file
 itdb_cp
+itdb_cp_get_dest_filename
+itdb_cp_finalize
 itdb_parse_file
 itdb_write_file
 itdb_duplicate
@@ -65,6 +67,8 @@
 <FILE>track</FILE>
 <TITLE>Tracks</TITLE>
 Itdb_Track
+Itdb_Mediatype
+ITDB_RATING_STEP
 itdb_track_new
 itdb_track_free
 itdb_track_add
@@ -77,8 +81,8 @@
 itdb_track_id_tree_by_id
 itdb_track_set_thumbnails
 itdb_track_set_thumbnails_from_data
+itdb_track_set_thumbnails_from_pixbuf
 itdb_track_remove_thumbnails
-ITDB_RATING_STEP
 </SECTION>
 
 
@@ -118,16 +122,19 @@
 <SECTION>
 <FILE>smart-playlists</FILE>
 <TITLE>Smart Playlists</TITLE>
-SPLPref
-SPLRule
-SPLRules
-SPLAction
-SPLFieldType
-SPLActionType
-SPLField
-SPLDATE_IDENTIFIER
-SPL_MAXSTRINGLENGTH
-SPL_STRING_MAXLEN
+Itdb_SPLPref
+Itdb_SPLRule
+Itdb_SPLRules
+ItdbLimitSort
+ItdbLimitType
+ItdbSPLAction
+ItdbSPLActionLast
+ItdbSPLActionType
+ItdbSPLField
+ItdbSPLFieldType
+ItdbSPLMatch
+ITDB_SPL_DATE_IDENTIFIER
+ITDB_SPL_STRING_MAXLEN
 itdb_splr_get_field_type
 itdb_splr_get_action_type
 itdb_splr_validate
@@ -154,6 +161,8 @@
 itdb_device_set_sysinfo
 itdb_device_write_sysinfo
 itdb_device_get_ipod_info
+itdb_device_supports_artwork
+itdb_device_supports_photo
 itdb_info_get_ipod_info_table
 itdb_info_get_ipod_generation_string
 itdb_info_get_ipod_model_name_string
@@ -175,6 +184,7 @@
 itdb_artwork_free
 itdb_artwork_add_thumbnail
 itdb_artwork_add_thumbnail_from_data
+itdb_artwork_add_thumbnail_from_pixbuf
 itdb_artwork_remove_thumbnail
 itdb_artwork_remove_thumbnails
 itdb_artwork_get_thumb_by_type
@@ -192,6 +202,7 @@
 Itdb_PhotoDB
 itdb_photodb_add_photo
 itdb_photodb_add_photo_from_data
+itdb_photodb_add_photo_from_pixbuf
 itdb_photodb_create
 itdb_photodb_free
 itdb_photodb_parse
@@ -256,7 +267,6 @@
 MhodHeaderSmartPlaylistRule
 iTunesDB_MhsdHeader
 MhodHeader
-_MhodHeaderArtworkType1
 MhodHeaderArtworkType3
 playcount
 NO_PLAYCOUNT
@@ -279,20 +289,22 @@
 ITDB_FILE_ERROR
 itdb_file_error_quark
 itdb_get_artwork_info_from_type
+DbType
+Itdb_DB
 
-SPLACTION_LAST_HOURS_VALUE
-SPLACTION_LAST_MINUTES_VALUE
-SPLACTION_LAST_YEARS_VALUE
-SPLACTION_LAST_LUNARCYCLE_VALUE
-SPLACTION_LAST_SIDEREAL_DAY
-SPLACTION_LAST_SWATCH_BEAT
-SPLACTION_LAST_MOMENT
-SPLACTION_LAST_OSTENT
-SPLACTION_LAST_FORTNIGHT
-SPLACTION_LAST_VINAL
-SPLACTION_LAST_QUARTER
-SPLACTION_LAST_SOLAR_YEAR
-SPLACTION_LAST_SIDEREAL_YEAR
+ITDB_SPLACTION_LAST_HOURS_VALUE
+ITDB_SPLACTION_LAST_MINUTES_VALUE
+ITDB_SPLACTION_LAST_YEARS_VALUE
+ITDB_SPLACTION_LAST_LUNARCYCLE_VALUE
+ITDB_SPLACTION_LAST_SIDEREAL_DAY
+ITDB_SPLACTION_LAST_SWATCH_BEAT
+ITDB_SPLACTION_LAST_MOMENT
+ITDB_SPLACTION_LAST_OSTENT
+ITDB_SPLACTION_LAST_FORTNIGHT
+ITDB_SPLACTION_LAST_VINAL
+ITDB_SPLACTION_LAST_QUARTER
+ITDB_SPLACTION_LAST_SOLAR_YEAR
+ITDB_SPLACTION_LAST_SIDEREAL_YEAR
 
 </SECTION>
 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/artwork.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/artwork.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/artwork.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -32,6 +32,10 @@
 @creation_date: 
 @digitized_date: 
 @artwork_size: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 @usertype: 
 @userdata: 
 @userdata_duplicate: 
@@ -46,6 +50,7 @@
 @filename: 
 @image_data: 
 @image_data_len: 
+ at pixbuf: 
 @rotation: 
 @offset: 
 @size: 
@@ -53,6 +58,10 @@
 @height: 
 @horizontal_padding: 
 @vertical_padding: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 
 <!-- ##### ENUM ItdbThumbType ##### -->
 <para>
@@ -118,6 +127,19 @@
 @Returns: 
 
 
+<!-- ##### FUNCTION itdb_artwork_add_thumbnail_from_pixbuf ##### -->
+<para>
+
+</para>
+
+ at artwork: 
+ at type: 
+ at pixbuf: 
+ at rotation: 
+ at error: 
+ at Returns: 
+
+
 <!-- ##### FUNCTION itdb_artwork_remove_thumbnail ##### -->
 <para>
 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/device.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/device.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/device.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -27,6 +27,7 @@
 @byte_order: 
 @sysinfo: 
 @sysinfo_changed: 
+ at timezone_shift: 
 
 <!-- ##### FUNCTION itdb_device_new ##### -->
 <para>
@@ -101,6 +102,24 @@
 @Returns: 
 
 
+<!-- ##### FUNCTION itdb_device_supports_artwork ##### -->
+<para>
+
+</para>
+
+ at device: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION itdb_device_supports_photo ##### -->
+<para>
+
+</para>
+
+ at device: 
+ at Returns: 
+
+
 <!-- ##### FUNCTION itdb_info_get_ipod_info_table ##### -->
 <para>
 
@@ -163,6 +182,10 @@
 @ipod_model: 
 @ipod_generation: 
 @musicdirs: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 
 <!-- ##### ENUM Itdb_IpodModel ##### -->
 <para>

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-db.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-db.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-db.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -109,6 +109,10 @@
 @device: 
 @version: 
 @id: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 @usertype: 
 @userdata: 
 @userdata_duplicate: 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-lowlevel.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-lowlevel.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-lowlevel.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -169,6 +169,30 @@
 @Returns: 
 
 
+<!-- ##### FUNCTION itdb_cp_get_dest_filename ##### -->
+<para>
+
+</para>
+
+ at track: 
+ at mountpoint: 
+ at filename: 
+ at error: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION itdb_cp_finalize ##### -->
+<para>
+
+</para>
+
+ at track: 
+ at mountpoint: 
+ at dest_filename: 
+ at error: 
+ at Returns: 
+
+
 <!-- ##### FUNCTION itdb_parse_file ##### -->
 <para>
 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-time.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-time.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/itunesdb-time.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -6,7 +6,10 @@
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-The functions provide conversion between Epoch time and Mac (iPod) time
+The functions provide conversion between Epoch time and Mac (iPod) time. These 
+functions are now obsolete and should no longer be used, libgpod automatically
+converts to/from Epoch time and iPod time when writing/reading the iPod 
+databases
 </para>
 
 <!-- ##### SECTION See_Also ##### -->
@@ -30,7 +33,7 @@
 
 </para>
 
- at mactime: 
+ at time: 
 @Returns: 
 
 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/libgpod-unused.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/libgpod-unused.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/libgpod-unused.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -28,6 +28,96 @@
 </para>
 
 
+<!-- ##### MACRO ITDB_SPLACTION_LAST_FORTNIGHT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_HOURS_VALUE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_LUNARCYCLE_VALUE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_MINUTES_VALUE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_MOMENT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_OSTENT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_QUARTER ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_SIDEREAL_DAY ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_SIDEREAL_YEAR ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_SOLAR_YEAR ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_SWATCH_BEAT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_VINAL ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLACTION_LAST_YEARS_VALUE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPLDATE_IDENTIFIER ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO ITDB_SPL_MAXSTRINGLENGTH ##### -->
+<para>
+
+</para>
+
+
 <!-- ##### ENUM ItdbFileError ##### -->
 <para>
 
@@ -75,84 +165,156 @@
 @MODEL_TYPE_VIDEO_BLACK: 
 @MODEL_TYPE_MOBILE_1: 
 
-<!-- ##### MACRO SPLACTION_LAST_FORTNIGHT ##### -->
+<!-- ##### ENUM SPLAction ##### -->
 <para>
 
 </para>
 
+ at SPLACTION_IS_INT: 
+ at SPLACTION_IS_GREATER_THAN: 
+ at SPLACTION_IS_LESS_THAN: 
+ at SPLACTION_IS_IN_THE_RANGE: 
+ at SPLACTION_IS_IN_THE_LAST: 
+ at SPLACTION_BINARY_AND: 
+ at SPLACTION_IS_STRING: 
+ at SPLACTION_CONTAINS: 
+ at SPLACTION_STARTS_WITH: 
+ at SPLACTION_ENDS_WITH: 
+ at SPLACTION_IS_NOT_INT: 
+ at SPLACTION_IS_NOT_GREATER_THAN: 
+ at SPLACTION_IS_NOT_LESS_THAN: 
+ at SPLACTION_IS_NOT_IN_THE_RANGE: 
+ at SPLACTION_IS_NOT_IN_THE_LAST: 
+ at SPLACTION_IS_NOT: 
+ at SPLACTION_DOES_NOT_CONTAIN: 
+ at SPLACTION_DOES_NOT_START_WITH: 
+ at SPLACTION_DOES_NOT_END_WITH: 
 
-<!-- ##### MACRO SPLACTION_LAST_HOURS_VALUE ##### -->
+<!-- ##### ENUM SPLActionType ##### -->
 <para>
 
 </para>
 
+ at splat_string: 
+ at splat_int: 
+ at splat_date: 
+ at splat_range_int: 
+ at splat_range_date: 
+ at splat_inthelast: 
+ at splat_playlist: 
+ at splat_none: 
+ at splat_invalid: 
+ at splat_unknown: 
+ at splat_binary_and: 
 
-<!-- ##### MACRO SPLACTION_LAST_LUNARCYCLE_VALUE ##### -->
+<!-- ##### MACRO SPLDATE_IDENTIFIER ##### -->
 <para>
 
 </para>
 
 
-<!-- ##### MACRO SPLACTION_LAST_MINUTES_VALUE ##### -->
+<!-- ##### ENUM SPLField ##### -->
 <para>
 
 </para>
 
+ at SPLFIELD_SONG_NAME: 
+ at SPLFIELD_ALBUM: 
+ at SPLFIELD_ARTIST: 
+ at SPLFIELD_BITRATE: 
+ at SPLFIELD_SAMPLE_RATE: 
+ at SPLFIELD_YEAR: 
+ at SPLFIELD_GENRE: 
+ at SPLFIELD_KIND: 
+ at SPLFIELD_DATE_MODIFIED: 
+ at SPLFIELD_TRACKNUMBER: 
+ at SPLFIELD_SIZE: 
+ at SPLFIELD_TIME: 
+ at SPLFIELD_COMMENT: 
+ at SPLFIELD_DATE_ADDED: 
+ at SPLFIELD_COMPOSER: 
+ at SPLFIELD_PLAYCOUNT: 
+ at SPLFIELD_LAST_PLAYED: 
+ at SPLFIELD_DISC_NUMBER: 
+ at SPLFIELD_RATING: 
+ at SPLFIELD_COMPILATION: 
+ at SPLFIELD_BPM: 
+ at SPLFIELD_GROUPING: 
+ at SPLFIELD_PLAYLIST: 
+ at SPLFIELD_VIDEO_KIND: 
+ at SPLFIELD_TVSHOW: 
+ at SPLFIELD_SEASON_NR: 
+ at SPLFIELD_SKIPCOUNT: 
+ at SPLFIELD_LAST_SKIPPED: 
+ at SPLFIELD_ALBUMARTIST: 
 
-<!-- ##### MACRO SPLACTION_LAST_MOMENT ##### -->
+<!-- ##### ENUM SPLFieldType ##### -->
 <para>
 
 </para>
 
+ at splft_string: 
+ at splft_int: 
+ at splft_boolean: 
+ at splft_date: 
+ at splft_playlist: 
+ at splft_unknown: 
+ at splft_binary_and: 
 
-<!-- ##### MACRO SPLACTION_LAST_OSTENT ##### -->
+<!-- ##### STRUCT SPLPref ##### -->
 <para>
 
 </para>
 
+ at liveupdate: 
+ at checkrules: 
+ at checklimits: 
+ at limittype: 
+ at limitsort: 
+ at limitvalue: 
+ at matchcheckedonly: 
 
-<!-- ##### MACRO SPLACTION_LAST_QUARTER ##### -->
+<!-- ##### STRUCT SPLRule ##### -->
 <para>
 
 </para>
 
+ at field: 
+ at action: 
+ at string: 
+ at fromvalue: 
+ at fromdate: 
+ at fromunits: 
+ at tovalue: 
+ at todate: 
+ at tounits: 
+ at unk052: 
+ at unk056: 
+ at unk060: 
+ at unk064: 
+ at unk068: 
 
-<!-- ##### MACRO SPLACTION_LAST_SIDEREAL_DAY ##### -->
+<!-- ##### STRUCT SPLRules ##### -->
 <para>
 
 </para>
 
+ at unk004: 
+ at match_operator: 
+ at rules: 
 
-<!-- ##### MACRO SPLACTION_LAST_SIDEREAL_YEAR ##### -->
+<!-- ##### MACRO SPL_MAXSTRINGLENGTH ##### -->
 <para>
 
 </para>
 
 
-<!-- ##### MACRO SPLACTION_LAST_SOLAR_YEAR ##### -->
+<!-- ##### MACRO SPL_STRING_MAXLEN ##### -->
 <para>
 
 </para>
 
 
-<!-- ##### MACRO SPLACTION_LAST_SWATCH_BEAT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SPLACTION_LAST_VINAL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SPLACTION_LAST_YEARS_VALUE ##### -->
-<para>
-
-</para>
-
-
 <!-- ##### FUNCTION itdb_file_error_quark ##### -->
 <para>
 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/photodb.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/photodb.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/photodb.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -67,7 +67,7 @@
 <para>
 For example, "MA450" would stand for an 80 GB 6th generation iPod Video. See
 <ulink type="http"
-url="http://gtkpod.cvs.sourceforge.net/*checkout*/gtkpod/libgpod/src/itdb_device.c">itdb_device.c</ulink>
+url="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/src/itdb_device.c">itdb_device.c</ulink>
 for a list of supported models.
 </para>
 <para>
@@ -76,9 +76,9 @@
 </para>
 <para>
 Have a look at the <ulink type="http"
-url="http://gtkpod.cvs.sourceforge.net/*checkout*/gtkpod/libgpod/tests/test-photos.c">test-photos</ulink>
+url="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/tests/test-photos.c">test-photos</ulink>
 test program in the <ulink type="http"
-url="http://gtkpod.cvs.sourceforge.net/gtkpod/libgpod/tests/">tests/</ulink>
+url="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/tests/">tests/</ulink>
 directory of the libgpod source for an example of how to use the interface.
 </para>
 
@@ -112,6 +112,10 @@
 @unk048: 
 @album_id: 
 @prev_album_id: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 @usertype: 
 @userdata: 
 @userdata_duplicate: 
@@ -125,6 +129,10 @@
 @photos: 
 @photoalbums: 
 @device: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 @usertype: 
 @userdata: 
 @userdata_duplicate: 
@@ -157,6 +165,19 @@
 @Returns: 
 
 
+<!-- ##### FUNCTION itdb_photodb_add_photo_from_pixbuf ##### -->
+<para>
+
+</para>
+
+ at db: 
+ at pixbuf: 
+ at position: 
+ at rotation: 
+ at error: 
+ at Returns: 
+
+
 <!-- ##### FUNCTION itdb_photodb_create ##### -->
 <para>
 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/playlists.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/playlists.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/playlists.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -39,6 +39,10 @@
 @podcastflag: 
 @splpref: 
 @splrules: 
+ at reserved100: 
+ at reserved101: 
+ at reserved_int1: 
+ at reserved_int2: 
 @reserved1: 
 @reserved2: 
 @usertype: 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/smart-playlists.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/smart-playlists.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/smart-playlists.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -17,7 +17,7 @@
 <!-- ##### SECTION Stability_Level ##### -->
 
 
-<!-- ##### STRUCT SPLPref ##### -->
+<!-- ##### STRUCT Itdb_SPLPref ##### -->
 <para>
 
 </para>
@@ -29,8 +29,12 @@
 @limitsort: 
 @limitvalue: 
 @matchcheckedonly: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 
-<!-- ##### STRUCT SPLRule ##### -->
+<!-- ##### STRUCT Itdb_SPLRule ##### -->
 <para>
 
 </para>
@@ -49,8 +53,12 @@
 @unk060: 
 @unk064: 
 @unk068: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 
-<!-- ##### STRUCT SPLRules ##### -->
+<!-- ##### STRUCT Itdb_SPLRules ##### -->
 <para>
 
 </para>
@@ -58,109 +66,162 @@
 @unk004: 
 @match_operator: 
 @rules: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved1: 
+ at reserved2: 
 
-<!-- ##### ENUM SPLAction ##### -->
+<!-- ##### ENUM ItdbLimitSort ##### -->
 <para>
 
 </para>
 
- at SPLACTION_IS_INT: 
- at SPLACTION_IS_GREATER_THAN: 
- at SPLACTION_IS_LESS_THAN: 
- at SPLACTION_IS_IN_THE_RANGE: 
- at SPLACTION_IS_IN_THE_LAST: 
- at SPLACTION_IS_STRING: 
- at SPLACTION_CONTAINS: 
- at SPLACTION_STARTS_WITH: 
- at SPLACTION_ENDS_WITH: 
- at SPLACTION_IS_NOT_INT: 
- at SPLACTION_IS_NOT_GREATER_THAN: 
- at SPLACTION_IS_NOT_LESS_THAN: 
- at SPLACTION_IS_NOT_IN_THE_RANGE: 
- at SPLACTION_IS_NOT_IN_THE_LAST: 
- at SPLACTION_IS_NOT: 
- at SPLACTION_DOES_NOT_CONTAIN: 
- at SPLACTION_DOES_NOT_START_WITH: 
- at SPLACTION_DOES_NOT_END_WITH: 
+ at ITDB_LIMITSORT_RANDOM: 
+ at ITDB_LIMITSORT_SONG_NAME: 
+ at ITDB_LIMITSORT_ALBUM: 
+ at ITDB_LIMITSORT_ARTIST: 
+ at ITDB_LIMITSORT_GENRE: 
+ at ITDB_LIMITSORT_MOST_RECENTLY_ADDED: 
+ at ITDB_LIMITSORT_LEAST_RECENTLY_ADDED: 
+ at ITDB_LIMITSORT_MOST_OFTEN_PLAYED: 
+ at ITDB_LIMITSORT_LEAST_OFTEN_PLAYED: 
+ at ITDB_LIMITSORT_MOST_RECENTLY_PLAYED: 
+ at ITDB_LIMITSORT_LEAST_RECENTLY_PLAYED: 
+ at ITDB_LIMITSORT_HIGHEST_RATING: 
+ at ITDB_LIMITSORT_LOWEST_RATING: 
 
-<!-- ##### ENUM SPLFieldType ##### -->
+<!-- ##### ENUM ItdbLimitType ##### -->
 <para>
 
 </para>
 
- at splft_string: 
- at splft_int: 
- at splft_boolean: 
- at splft_date: 
- at splft_playlist: 
- at splft_unknown: 
+ at ITDB_LIMITTYPE_MINUTES: 
+ at ITDB_LIMITTYPE_MB: 
+ at ITDB_LIMITTYPE_SONGS: 
+ at ITDB_LIMITTYPE_HOURS: 
+ at ITDB_LIMITTYPE_GB: 
 
-<!-- ##### ENUM SPLActionType ##### -->
+<!-- ##### ENUM ItdbSPLAction ##### -->
 <para>
 
 </para>
 
- at splat_string: 
- at splat_int: 
- at splat_date: 
- at splat_range_int: 
- at splat_range_date: 
- at splat_inthelast: 
- at splat_playlist: 
- at splat_none: 
- at splat_invalid: 
- at splat_unknown: 
+ at ITDB_SPLACTION_IS_INT: 
+ at ITDB_SPLACTION_IS_GREATER_THAN: 
+ at ITDB_SPLACTION_IS_LESS_THAN: 
+ at ITDB_SPLACTION_IS_IN_THE_RANGE: 
+ at ITDB_SPLACTION_IS_IN_THE_LAST: 
+ at ITDB_SPLACTION_BINARY_AND: 
+ at ITDB_SPLACTION_IS_STRING: 
+ at ITDB_SPLACTION_CONTAINS: 
+ at ITDB_SPLACTION_STARTS_WITH: 
+ at ITDB_SPLACTION_ENDS_WITH: 
+ at ITDB_SPLACTION_IS_NOT_INT: 
+ at ITDB_SPLACTION_IS_NOT_GREATER_THAN: 
+ at ITDB_SPLACTION_IS_NOT_LESS_THAN: 
+ at ITDB_SPLACTION_IS_NOT_IN_THE_RANGE: 
+ at ITDB_SPLACTION_IS_NOT_IN_THE_LAST: 
+ at ITDB_SPLACTION_IS_NOT: 
+ at ITDB_SPLACTION_DOES_NOT_CONTAIN: 
+ at ITDB_SPLACTION_DOES_NOT_START_WITH: 
+ at ITDB_SPLACTION_DOES_NOT_END_WITH: 
 
-<!-- ##### ENUM SPLField ##### -->
+<!-- ##### ENUM ItdbSPLActionLast ##### -->
 <para>
 
 </para>
 
- at SPLFIELD_SONG_NAME: 
- at SPLFIELD_ALBUM: 
- at SPLFIELD_ARTIST: 
- at SPLFIELD_BITRATE: 
- at SPLFIELD_SAMPLE_RATE: 
- at SPLFIELD_YEAR: 
- at SPLFIELD_GENRE: 
- at SPLFIELD_KIND: 
- at SPLFIELD_DATE_MODIFIED: 
- at SPLFIELD_TRACKNUMBER: 
- at SPLFIELD_SIZE: 
- at SPLFIELD_TIME: 
- at SPLFIELD_COMMENT: 
- at SPLFIELD_DATE_ADDED: 
- at SPLFIELD_COMPOSER: 
- at SPLFIELD_PLAYCOUNT: 
- at SPLFIELD_LAST_PLAYED: 
- at SPLFIELD_DISC_NUMBER: 
- at SPLFIELD_RATING: 
- at SPLFIELD_COMPILATION: 
- at SPLFIELD_BPM: 
- at SPLFIELD_GROUPING: 
- at SPLFIELD_PLAYLIST: 
+ at ITDB_SPLACTION_LAST_DAYS_VALUE: 
+ at ITDB_SPLACTION_LAST_WEEKS_VALUE: 
+ at ITDB_SPLACTION_LAST_MONTHS_VALUE: 
 
-<!-- ##### MACRO SPLDATE_IDENTIFIER ##### -->
+<!-- ##### ENUM ItdbSPLActionType ##### -->
 <para>
 
 </para>
 
+ at ITDB_SPLAT_STRING: 
+ at ITDB_SPLAT_INT: 
+ at ITDB_SPLAT_DATE: 
+ at ITDB_SPLAT_RANGE_INT: 
+ at ITDB_SPLAT_RANGE_DATE: 
+ at ITDB_SPLAT_INTHELAST: 
+ at ITDB_SPLAT_PLAYLIST: 
+ at ITDB_SPLAT_NONE: 
+ at ITDB_SPLAT_INVALID: 
+ at ITDB_SPLAT_UNKNOWN: 
+ at ITDB_SPLAT_BINARY_AND: 
 
+<!-- ##### ENUM ItdbSPLField ##### -->
+<para>
 
-<!-- ##### MACRO SPL_MAXSTRINGLENGTH ##### -->
+</para>
+
+ at ITDB_SPLFIELD_SONG_NAME: 
+ at ITDB_SPLFIELD_ALBUM: 
+ at ITDB_SPLFIELD_ARTIST: 
+ at ITDB_SPLFIELD_BITRATE: 
+ at ITDB_SPLFIELD_SAMPLE_RATE: 
+ at ITDB_SPLFIELD_YEAR: 
+ at ITDB_SPLFIELD_GENRE: 
+ at ITDB_SPLFIELD_KIND: 
+ at ITDB_SPLFIELD_DATE_MODIFIED: 
+ at ITDB_SPLFIELD_TRACKNUMBER: 
+ at ITDB_SPLFIELD_SIZE: 
+ at ITDB_SPLFIELD_TIME: 
+ at ITDB_SPLFIELD_COMMENT: 
+ at ITDB_SPLFIELD_DATE_ADDED: 
+ at ITDB_SPLFIELD_COMPOSER: 
+ at ITDB_SPLFIELD_PLAYCOUNT: 
+ at ITDB_SPLFIELD_LAST_PLAYED: 
+ at ITDB_SPLFIELD_DISC_NUMBER: 
+ at ITDB_SPLFIELD_RATING: 
+ at ITDB_SPLFIELD_COMPILATION: 
+ at ITDB_SPLFIELD_BPM: 
+ at ITDB_SPLFIELD_GROUPING: 
+ at ITDB_SPLFIELD_PLAYLIST: 
+ at ITDB_SPLFIELD_VIDEO_KIND: 
+ at ITDB_SPLFIELD_TVSHOW: 
+ at ITDB_SPLFIELD_SEASON_NR: 
+ at ITDB_SPLFIELD_SKIPCOUNT: 
+ at ITDB_SPLFIELD_LAST_SKIPPED: 
+ at ITDB_SPLFIELD_ALBUMARTIST: 
+
+<!-- ##### ENUM ItdbSPLFieldType ##### -->
 <para>
 
 </para>
 
+ at ITDB_SPLFT_STRING: 
+ at ITDB_SPLFT_INT: 
+ at ITDB_SPLFT_BOOLEAN: 
+ at ITDB_SPLFT_DATE: 
+ at ITDB_SPLFT_PLAYLIST: 
+ at ITDB_SPLFT_UNKNOWN: 
+ at ITDB_SPLFT_BINARY_AND: 
 
+<!-- ##### ENUM ItdbSPLMatch ##### -->
+<para>
 
-<!-- ##### MACRO SPL_STRING_MAXLEN ##### -->
+</para>
+
+ at ITDB_SPLMATCH_AND: 
+ at ITDB_SPLMATCH_OR: 
+
+<!-- ##### MACRO ITDB_SPL_DATE_IDENTIFIER ##### -->
 <para>
 
 </para>
 
 
 
+<!-- ##### MACRO ITDB_SPL_STRING_MAXLEN ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### FUNCTION itdb_splr_get_field_type ##### -->
 <para>
 

Modified: libgpod/branches/upstream/current/docs/reference/tmpl/track.sgml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/tmpl/track.sgml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/tmpl/track.sgml	2007-06-27 21:44:37 UTC (rev 198)
@@ -44,7 +44,12 @@
 @tvnetwork: 
 @albumartist: 
 @keywords: 
- at reserved: 
+ at sort_artist: 
+ at sort_title: 
+ at sort_album: 
+ at sort_albumartist: 
+ at sort_composer: 
+ at sort_tvshow: 
 @id: 
 @size: 
 @tracklen: 
@@ -59,8 +64,8 @@
 @volume: 
 @soundcheck: 
 @time_added: 
+ at time_modified: 
 @time_played: 
- at time_modified: 
 @bookmark_time: 
 @rating: 
 @playcount: 
@@ -124,11 +129,42 @@
 @chapterdata_raw: 
 @chapterdata_raw_length: 
 @artwork: 
+ at reserved_int1: 
+ at reserved_int2: 
+ at reserved_int3: 
+ at reserved_int4: 
+ at reserved_int5: 
+ at reserved_int6: 
+ at reserved1: 
+ at reserved2: 
+ at reserved3: 
+ at reserved4: 
+ at reserved5: 
+ at reserved6: 
 @usertype: 
 @userdata: 
 @userdata_duplicate: 
 @userdata_destroy: 
 
+<!-- ##### ENUM Itdb_Mediatype ##### -->
+<para>
+
+</para>
+
+ at ITDB_MEDIATYPE_AUDIO: 
+ at ITDB_MEDIATYPE_MOVIE: 
+ at ITDB_MEDIATYPE_PODCAST: 
+ at ITDB_MEDIATYPE_AUDIOBOOK: 
+ at ITDB_MEDIATYPE_MUSICVIDEO: 
+ at ITDB_MEDIATYPE_TVSHOW: 
+
+<!-- ##### MACRO ITDB_RATING_STEP ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### FUNCTION itdb_track_new ##### -->
 <para>
 
@@ -238,18 +274,21 @@
 @Returns: 
 
 
-<!-- ##### FUNCTION itdb_track_remove_thumbnails ##### -->
+<!-- ##### FUNCTION itdb_track_set_thumbnails_from_pixbuf ##### -->
 <para>
 
 </para>
 
 @track: 
+ at pixbuf: 
+ at Returns: 
 
 
-<!-- ##### MACRO ITDB_RATING_STEP ##### -->
+<!-- ##### FUNCTION itdb_track_remove_thumbnails ##### -->
 <para>
 
 </para>
 
+ at track: 
 
 

Modified: libgpod/branches/upstream/current/docs/reference/xml/artwork.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/artwork.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/artwork.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,36 +21,42 @@
 
 
 
-            <link linkend="Itdb-Artwork">Itdb_Artwork</link>;
-            <link linkend="Itdb-Thumb">Itdb_Thumb</link>;
-enum        <link linkend="ItdbThumbType">ItdbThumbType</link>;
-<link linkend="Itdb-Artwork">Itdb_Artwork</link>* <link linkend="itdb-artwork-new">itdb_artwork_new</link>              (void);
-<link linkend="Itdb-Artwork">Itdb_Artwork</link>* <link linkend="itdb-artwork-duplicate">itdb_artwork_duplicate</link>        (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);
-<link linkend="void">void</link>        <link linkend="itdb-artwork-free">itdb_artwork_free</link>               (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-artwork-add-thumbnail">itdb_artwork_add_thumbnail</link>      (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
-                                             <link linkend="ItdbThumbType">ItdbThumbType</link> type,
-                                             const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="gint">gint</link> rotation,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-artwork-add-thumbnail-from-data">itdb_artwork_add_thumbnail_from_data</link>
-                                            (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
-                                             <link linkend="ItdbThumbType">ItdbThumbType</link> type,
-                                             const <link linkend="guchar">guchar</link> *image_data,
-                                             <link linkend="gsize">gsize</link> image_data_len,
-                                             <link linkend="gint">gint</link> rotation,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="void">void</link>        <link linkend="itdb-artwork-remove-thumbnail">itdb_artwork_remove_thumbnail</link>   (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
-                                             <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
-<link linkend="void">void</link>        <link linkend="itdb-artwork-remove-thumbnails">itdb_artwork_remove_thumbnails</link>  (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);
-<link linkend="Itdb-Thumb">Itdb_Thumb</link>* <link linkend="itdb-artwork-get-thumb-by-type">itdb_artwork_get_thumb_by_type</link>  (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
-                                             <link linkend="ItdbThumbType">ItdbThumbType</link> type);
-<link linkend="gpointer">gpointer</link>    <link linkend="itdb-thumb-get-gdk-pixbuf">itdb_thumb_get_gdk_pixbuf</link>       (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
-<link linkend="Itdb-Thumb">Itdb_Thumb</link>* <link linkend="itdb-thumb-duplicate">itdb_thumb_duplicate</link>            (<link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
-<link linkend="void">void</link>        <link linkend="itdb-thumb-free">itdb_thumb_free</link>                 (<link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
-<link linkend="Itdb-Thumb">Itdb_Thumb</link>* <link linkend="itdb-thumb-new">itdb_thumb_new</link>                  (void);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-thumb-get-filename">itdb_thumb_get_filename</link>         (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
+                    <link linkend="Itdb-Artwork">Itdb_Artwork</link>;
+                    <link linkend="Itdb-Thumb">Itdb_Thumb</link>;
+enum                <link linkend="ItdbThumbType">ItdbThumbType</link>;
+<link linkend="Itdb-Artwork">Itdb_Artwork</link>*       <link linkend="itdb-artwork-new">itdb_artwork_new</link>                    (void);
+<link linkend="Itdb-Artwork">Itdb_Artwork</link>*       <link linkend="itdb-artwork-duplicate">itdb_artwork_duplicate</link>              (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);
+<link linkend="void">void</link>                <link linkend="itdb-artwork-free">itdb_artwork_free</link>                   (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-artwork-add-thumbnail">itdb_artwork_add_thumbnail</link>          (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="ItdbThumbType">ItdbThumbType</link> type,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-artwork-add-thumbnail-from-data">itdb_artwork_add_thumbnail_from_data</link>
+                                                        (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="ItdbThumbType">ItdbThumbType</link> type,
+                                                         const <link linkend="guchar">guchar</link> *image_data,
+                                                         <link linkend="gsize">gsize</link> image_data_len,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-artwork-add-thumbnail-from-pixbuf">itdb_artwork_add_thumbnail_from_pixbuf</link>
+                                                        (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="ItdbThumbType">ItdbThumbType</link> type,
+                                                         <link linkend="gpointer">gpointer</link> pixbuf,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="void">void</link>                <link linkend="itdb-artwork-remove-thumbnail">itdb_artwork_remove_thumbnail</link>       (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
+<link linkend="void">void</link>                <link linkend="itdb-artwork-remove-thumbnails">itdb_artwork_remove_thumbnails</link>      (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);
+<link linkend="Itdb-Thumb">Itdb_Thumb</link>*         <link linkend="itdb-artwork-get-thumb-by-type">itdb_artwork_get_thumb_by_type</link>      (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="ItdbThumbType">ItdbThumbType</link> type);
+<link linkend="gpointer">gpointer</link>            <link linkend="itdb-thumb-get-gdk-pixbuf">itdb_thumb_get_gdk_pixbuf</link>           (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
+<link linkend="Itdb-Thumb">Itdb_Thumb</link>*         <link linkend="itdb-thumb-duplicate">itdb_thumb_duplicate</link>                (<link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
+<link linkend="void">void</link>                <link linkend="itdb-thumb-free">itdb_thumb_free</link>                     (<link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
+<link linkend="Itdb-Thumb">Itdb_Thumb</link>*         <link linkend="itdb-thumb-new">itdb_thumb_new</link>                      (void);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-thumb-get-filename">itdb_thumb_get_filename</link>             (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);
 </synopsis>
 </refsynopsisdiv>
 
@@ -82,14 +88,19 @@
     gint32  unk028;
     guint32 rating;        /* Rating from iPhoto * 20 (PhotoDB only) */
     gint32  unk036;
-    guint32 creation_date; /* Date the image file was created
+    time_t  creation_date;  /* Date the image file was created
 			      (creation date of image file (Mac type,
 			      PhotoDB only) */
-    guint32 digitized_date;/* Date the image was taken (EXIF
+    time_t  digitized_date;/* Date the image was taken (EXIF
 			      information, Mac type, PhotoDB only) */
     guint32 artwork_size;  /* Size in bytes of the original source
 			      image (PhotoDB only -- don't touch in
 			      case of ArtworkDB!) */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -110,6 +121,7 @@
 				 non-transfered thumbnails when
 				 filename == NULL */
     gsize   image_data_len;   /* length of data */
+    gpointer pixbuf;
     gint    rotation;         /* angle (0, 90, 180, 270) to rotate the image */
     guint32 offset;
     guint32 size;
@@ -117,6 +129,11 @@
     gint16  height;
     gint16  horizontal_padding;
     gint16  vertical_padding;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
 } Itdb_Thumb;
 </programlisting>
 <para>
@@ -138,7 +155,7 @@
 </para></refsect2>
 <refsect2>
 <title><anchor id="itdb-artwork-new" role="function"/>itdb_artwork_new ()</title>
-<indexterm><primary>itdb_artwork_new</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>* itdb_artwork_new              (void);</programlisting>
+<indexterm><primary>itdb_artwork_new</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>*       itdb_artwork_new                    (void);</programlisting>
 <para>
 Creates a new <link linkend="Itdb-Artwork"><type>Itdb_Artwork</type></link></para>
 <para>
@@ -150,7 +167,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-artwork-duplicate" role="function"/>itdb_artwork_duplicate ()</title>
-<indexterm><primary>itdb_artwork_duplicate</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>* itdb_artwork_duplicate        (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);</programlisting>
+<indexterm><primary>itdb_artwork_duplicate</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>*       itdb_artwork_duplicate              (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);</programlisting>
 <para>
 Duplicates <parameter>artwork</parameter></para>
 <para>
@@ -164,7 +181,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-artwork-free" role="function"/>itdb_artwork_free ()</title>
-<indexterm><primary>itdb_artwork_free</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_artwork_free               (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);</programlisting>
+<indexterm><primary>itdb_artwork_free</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_artwork_free                   (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);</programlisting>
 <para>
 Frees memory used by <parameter>artwork</parameter></para>
 <para>
@@ -176,11 +193,11 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-artwork-add-thumbnail" role="function"/>itdb_artwork_add_thumbnail ()</title>
-<indexterm><primary>itdb_artwork_add_thumbnail</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_artwork_add_thumbnail      (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
-                                             <link linkend="ItdbThumbType">ItdbThumbType</link> type,
-                                             const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="gint">gint</link> rotation,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_artwork_add_thumbnail</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_artwork_add_thumbnail          (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="ItdbThumbType">ItdbThumbType</link> type,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Appends a thumbnail of type <parameter>type</parameter> to existing thumbnails in <parameter>artwork</parameter>. No 
 data is read from <parameter>filename</parameter> yet, the file will be when <parameter>artwork</parameter> is saved to
@@ -215,13 +232,13 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-artwork-add-thumbnail-from-data" role="function"/>itdb_artwork_add_thumbnail_from_data ()</title>
-<indexterm><primary>itdb_artwork_add_thumbnail_from_data</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_artwork_add_thumbnail_from_data
-                                            (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
-                                             <link linkend="ItdbThumbType">ItdbThumbType</link> type,
-                                             const <link linkend="guchar">guchar</link> *image_data,
-                                             <link linkend="gsize">gsize</link> image_data_len,
-                                             <link linkend="gint">gint</link> rotation,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_artwork_add_thumbnail_from_data</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_artwork_add_thumbnail_from_data
+                                                        (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="ItdbThumbType">ItdbThumbType</link> type,
+                                                         const <link linkend="guchar">guchar</link> *image_data,
+                                                         <link linkend="gsize">gsize</link> image_data_len,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Appends a thumbnail of type <parameter>type</parameter> to existing thumbnails in
 <parameter>artwork</parameter>. No data is processed yet. This will be done when <parameter>artwork</parameter>
@@ -259,11 +276,52 @@
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
+<title><anchor id="itdb-artwork-add-thumbnail-from-pixbuf" role="function"/>itdb_artwork_add_thumbnail_from_pixbuf ()</title>
+<indexterm><primary>itdb_artwork_add_thumbnail_from_pixbuf</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_artwork_add_thumbnail_from_pixbuf
+                                                        (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="ItdbThumbType">ItdbThumbType</link> type,
+                                                         <link linkend="gpointer">gpointer</link> pixbuf,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Appends a thumbnail of type <parameter>type</parameter> to existing thumbnails in <parameter>artwork</parameter>. No 
+data is generated from <parameter>pixbuf</parameter> yet, it will be done when <parameter>artwork</parameter> is saved 
+to disk. <parameter>pixbuf</parameter> is ref'ed by this function, but is not copied, so it should
+not be modified before the database is saved.
+</para>
+<para>
+For the rotation angle you can also use the gdk constants
+GDK_PIXBUF_ROTATE_NONE, ..._COUNTERCLOCKWISE, ..._UPSIDEDOWN AND
+..._CLOCKWISE.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>artwork</parameter>&nbsp;:</term>
+<listitem><simpara> an <link linkend="Itdb-Thumbnail"><type>Itdb_Thumbnail</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>type</parameter>&nbsp;:</term>
+<listitem><simpara> thumbnail size
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>pixbuf</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link> to use to create the thumbnail
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>rotation</parameter>&nbsp;:</term>
+<listitem><simpara> angle by which the image should be rotated
+counterclockwise. Valid values are 0, 90, 180 and 270.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara> return location for a <link linkend="GError"><type>GError</type></link> or NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> TRUE if the thumbnail could be successfully added, FALSE
+otherwise. <parameter>error</parameter> is set appropriately.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
 <title><anchor id="itdb-artwork-remove-thumbnail" role="function"/>itdb_artwork_remove_thumbnail ()</title>
-<indexterm><primary>itdb_artwork_remove_thumbnail</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_artwork_remove_thumbnail   (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
-                                             <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
+<indexterm><primary>itdb_artwork_remove_thumbnail</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_artwork_remove_thumbnail       (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
 <para>
-Removes <parameter>thumb</parameter> from <parameter>artwork</parameter>. The memory used by <parameter>thumb</parameter> isn't freed.</para>
+Removes <parameter>thumb</parameter> from <parameter>artwork</parameter>. The memory used by <parameter>thumb</parameter> is freed.</para>
 <para>
 
 </para><variablelist role="params">
@@ -276,7 +334,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-artwork-remove-thumbnails" role="function"/>itdb_artwork_remove_thumbnails ()</title>
-<indexterm><primary>itdb_artwork_remove_thumbnails</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_artwork_remove_thumbnails  (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);</programlisting>
+<indexterm><primary>itdb_artwork_remove_thumbnails</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_artwork_remove_thumbnails      (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork);</programlisting>
 <para>
 Removes all thumbnails from <parameter>artwork</parameter></para>
 <para>
@@ -288,8 +346,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-artwork-get-thumb-by-type" role="function"/>itdb_artwork_get_thumb_by_type ()</title>
-<indexterm><primary>itdb_artwork_get_thumb_by_type</primary></indexterm><programlisting><link linkend="Itdb-Thumb">Itdb_Thumb</link>* itdb_artwork_get_thumb_by_type  (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
-                                             <link linkend="ItdbThumbType">ItdbThumbType</link> type);</programlisting>
+<indexterm><primary>itdb_artwork_get_thumb_by_type</primary></indexterm><programlisting><link linkend="Itdb-Thumb">Itdb_Thumb</link>*         itdb_artwork_get_thumb_by_type      (<link linkend="Itdb-Artwork">Itdb_Artwork</link> *artwork,
+                                                         <link linkend="ItdbThumbType">ItdbThumbType</link> type);</programlisting>
 <para>
 Searches <parameter>artwork</parameter> for an <link linkend="Itdb-Thumb"><type>Itdb_Thumb</type></link> of type <parameter>type</parameter>.</para>
 <para>
@@ -307,8 +365,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-thumb-get-gdk-pixbuf" role="function"/>itdb_thumb_get_gdk_pixbuf ()</title>
-<indexterm><primary>itdb_thumb_get_gdk_pixbuf</primary></indexterm><programlisting><link linkend="gpointer">gpointer</link>    itdb_thumb_get_gdk_pixbuf       (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
+<indexterm><primary>itdb_thumb_get_gdk_pixbuf</primary></indexterm><programlisting><link linkend="gpointer">gpointer</link>            itdb_thumb_get_gdk_pixbuf           (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
 <para>
 Converts <parameter>thumb</parameter> to a <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link>.
 Since we want to have gdk-pixbuf dependency optional, a generic
@@ -330,7 +388,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-thumb-duplicate" role="function"/>itdb_thumb_duplicate ()</title>
-<indexterm><primary>itdb_thumb_duplicate</primary></indexterm><programlisting><link linkend="Itdb-Thumb">Itdb_Thumb</link>* itdb_thumb_duplicate            (<link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
+<indexterm><primary>itdb_thumb_duplicate</primary></indexterm><programlisting><link linkend="Itdb-Thumb">Itdb_Thumb</link>*         itdb_thumb_duplicate                (<link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
 <para>
 Duplicates the data contained in <parameter>thumb</parameter></para>
 <para>
@@ -345,7 +403,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-thumb-free" role="function"/>itdb_thumb_free ()</title>
-<indexterm><primary>itdb_thumb_free</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_thumb_free                 (<link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
+<indexterm><primary>itdb_thumb_free</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_thumb_free                     (<link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
 <para>
 Frees the memory used by <parameter>thumb</parameter></para>
 <para>
@@ -357,7 +415,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-thumb-new" role="function"/>itdb_thumb_new ()</title>
-<indexterm><primary>itdb_thumb_new</primary></indexterm><programlisting><link linkend="Itdb-Thumb">Itdb_Thumb</link>* itdb_thumb_new                  (void);</programlisting>
+<indexterm><primary>itdb_thumb_new</primary></indexterm><programlisting><link linkend="Itdb-Thumb">Itdb_Thumb</link>*         itdb_thumb_new                      (void);</programlisting>
 <para>
 Creates a new <link linkend="Itdb-Thumb"><type>Itdb_Thumb</type></link></para>
 <para>
@@ -369,8 +427,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-thumb-get-filename" role="function"/>itdb_thumb_get_filename ()</title>
-<indexterm><primary>itdb_thumb_get_filename</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_thumb_get_filename         (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
+<indexterm><primary>itdb_thumb_get_filename</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_thumb_get_filename             (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         <link linkend="Itdb-Thumb">Itdb_Thumb</link> *thumb);</programlisting>
 <para>
 Get filename of thumbnail. If it's a thumbnail on the iPod, return
 the full path to the ithmb file. Otherwise return the full path to

Modified: libgpod/branches/upstream/current/docs/reference/xml/device.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/device.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/device.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,35 +21,35 @@
 
 
 
-            <link linkend="Itdb-Device">Itdb_Device</link>;
-<link linkend="Itdb-Device">Itdb_Device</link>* <link linkend="itdb-device-new">itdb_device_new</link>                (void);
-<link linkend="void">void</link>        <link linkend="itdb-device-free">itdb_device_free</link>                (<link linkend="Itdb-Device">Itdb_Device</link> *device);
-<link linkend="void">void</link>        <link linkend="itdb-device-set-mountpoint">itdb_device_set_mountpoint</link>      (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             const <link linkend="gchar">gchar</link> *mp);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-device-read-sysinfo">itdb_device_read_sysinfo</link>        (<link linkend="Itdb-Device">Itdb_Device</link> *device);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-device-get-sysinfo">itdb_device_get_sysinfo</link>         (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             const <link linkend="gchar">gchar</link> *field);
-<link linkend="void">void</link>        <link linkend="itdb-device-set-sysinfo">itdb_device_set_sysinfo</link>         (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             const <link linkend="gchar">gchar</link> *field,
-                                             const <link linkend="gchar">gchar</link> *value);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-device-write-sysinfo">itdb_device_write_sysinfo</link>       (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             <link linkend="GError">GError</link> **error);
-const <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>* <link linkend="itdb-device-get-ipod-info">itdb_device_get_ipod_info</link>
-                                            (<link linkend="Itdb-Device">Itdb_Device</link> *device);
-const <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>* <link linkend="itdb-info-get-ipod-info-table">itdb_info_get_ipod_info_table</link>
-                                            (void);
-const <link linkend="gchar">gchar</link>* <link linkend="itdb-info-get-ipod-generation-string">itdb_info_get_ipod_generation_string</link>
-                                            (<link linkend="Itdb-IpodGeneration">Itdb_IpodGeneration</link> generation);
-const <link linkend="gchar">gchar</link>* <link linkend="itdb-info-get-ipod-model-name-string">itdb_info_get_ipod_model_name_string</link>
-                                            (<link linkend="Itdb-IpodModel">Itdb_IpodModel</link> model);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-init-ipod">itdb_init_ipod</link>                  (const <link linkend="gchar">gchar</link> *mountpoint,
-                                             const <link linkend="gchar">gchar</link> *model_number,
-                                             const <link linkend="gchar">gchar</link> *ipod_name,
-                                             <link linkend="GError">GError</link> **error);
-enum        <link linkend="Itdb-IpodGeneration">Itdb_IpodGeneration</link>;
-            <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>;
-enum        <link linkend="Itdb-IpodModel">Itdb_IpodModel</link>;
-            <link linkend="Itdb-ArtworkFormat">Itdb_ArtworkFormat</link>;
+                    <link linkend="Itdb-Device">Itdb_Device</link>;
+<link linkend="Itdb-Device">Itdb_Device</link>*        <link linkend="itdb-device-new">itdb_device_new</link>                     (void);
+<link linkend="void">void</link>                <link linkend="itdb-device-free">itdb_device_free</link>                    (<link linkend="Itdb-Device">Itdb_Device</link> *device);
+<link linkend="void">void</link>                <link linkend="itdb-device-set-mountpoint">itdb_device_set_mountpoint</link>          (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         const <link linkend="gchar">gchar</link> *mp);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-device-read-sysinfo">itdb_device_read_sysinfo</link>            (<link linkend="Itdb-Device">Itdb_Device</link> *device);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-device-get-sysinfo">itdb_device_get_sysinfo</link>             (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         const <link linkend="gchar">gchar</link> *field);
+<link linkend="void">void</link>                <link linkend="itdb-device-set-sysinfo">itdb_device_set_sysinfo</link>             (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         const <link linkend="gchar">gchar</link> *field,
+                                                         const <link linkend="gchar">gchar</link> *value);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-device-write-sysinfo">itdb_device_write_sysinfo</link>           (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         <link linkend="GError">GError</link> **error);
+const <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>* <link linkend="itdb-device-get-ipod-info">itdb_device_get_ipod_info</link>          (<link linkend="Itdb-Device">Itdb_Device</link> *device);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-device-supports-artwork">itdb_device_supports_artwork</link>        (<link linkend="Itdb-Device">Itdb_Device</link> *device);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-device-supports-photo">itdb_device_supports_photo</link>          (<link linkend="Itdb-Device">Itdb_Device</link> *device);
+const <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>* <link linkend="itdb-info-get-ipod-info-table">itdb_info_get_ipod_info_table</link>      (void);
+const <link linkend="gchar">gchar</link>*        <link linkend="itdb-info-get-ipod-generation-string">itdb_info_get_ipod_generation_string</link>
+                                                        (<link linkend="Itdb-IpodGeneration">Itdb_IpodGeneration</link> generation);
+const <link linkend="gchar">gchar</link>*        <link linkend="itdb-info-get-ipod-model-name-string">itdb_info_get_ipod_model_name_string</link>
+                                                        (<link linkend="Itdb-IpodModel">Itdb_IpodModel</link> model);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-init-ipod">itdb_init_ipod</link>                      (const <link linkend="gchar">gchar</link> *mountpoint,
+                                                         const <link linkend="gchar">gchar</link> *model_number,
+                                                         const <link linkend="gchar">gchar</link> *ipod_name,
+                                                         <link linkend="GError">GError</link> **error);
+enum                <link linkend="Itdb-IpodGeneration">Itdb_IpodGeneration</link>;
+                    <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>;
+enum                <link linkend="Itdb-IpodModel">Itdb_IpodModel</link>;
+                    <link linkend="Itdb-ArtworkFormat">Itdb_ArtworkFormat</link>;
 </synopsis>
 </refsynopsisdiv>
 
@@ -83,6 +83,9 @@
 			   * in Device/SysInfo */
     gboolean sysinfo_changed; /* Has the sysinfo hash been changed by
 				 the user (itdb_set_sysinfo) */
+    gint timezone_shift;  /* difference in seconds between the current
+                           * timezone and UTC
+                           */
 } Itdb_Device;
 </programlisting>
 <para>
@@ -90,7 +93,7 @@
 </para></refsect2>
 <refsect2>
 <title><anchor id="itdb-device-new" role="function"/>itdb_device_new ()</title>
-<indexterm><primary>itdb_device_new</primary></indexterm><programlisting><link linkend="Itdb-Device">Itdb_Device</link>* itdb_device_new                (void);</programlisting>
+<indexterm><primary>itdb_device_new</primary></indexterm><programlisting><link linkend="Itdb-Device">Itdb_Device</link>*        itdb_device_new                     (void);</programlisting>
 <para>
 Creates a new <link linkend="Itdb-Device"><type>Itdb_Device</type></link> structure</para>
 <para>
@@ -102,7 +105,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-device-free" role="function"/>itdb_device_free ()</title>
-<indexterm><primary>itdb_device_free</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_device_free                (<link linkend="Itdb-Device">Itdb_Device</link> *device);</programlisting>
+<indexterm><primary>itdb_device_free</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_device_free                    (<link linkend="Itdb-Device">Itdb_Device</link> *device);</programlisting>
 <para>
 Frees memory used by <parameter>device</parameter></para>
 <para>
@@ -114,8 +117,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-device-set-mountpoint" role="function"/>itdb_device_set_mountpoint ()</title>
-<indexterm><primary>itdb_device_set_mountpoint</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_device_set_mountpoint      (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             const <link linkend="gchar">gchar</link> *mp);</programlisting>
+<indexterm><primary>itdb_device_set_mountpoint</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_device_set_mountpoint          (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         const <link linkend="gchar">gchar</link> *mp);</programlisting>
 <para>
 Sets the mountpoint of <parameter>device</parameter> to <parameter>mp</parameter> and update the cached device 
 information (in particular, re-read the SysInfo file)</para>
@@ -131,7 +134,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-device-read-sysinfo" role="function"/>itdb_device_read_sysinfo ()</title>
-<indexterm><primary>itdb_device_read_sysinfo</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_device_read_sysinfo        (<link linkend="Itdb-Device">Itdb_Device</link> *device);</programlisting>
+<indexterm><primary>itdb_device_read_sysinfo</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_device_read_sysinfo            (<link linkend="Itdb-Device">Itdb_Device</link> *device);</programlisting>
 <para>
 Reads the SysInfo file and stores information in device->sysinfo for
 later use.</para>
@@ -146,8 +149,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-device-get-sysinfo" role="function"/>itdb_device_get_sysinfo ()</title>
-<indexterm><primary>itdb_device_get_sysinfo</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_device_get_sysinfo         (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             const <link linkend="gchar">gchar</link> *field);</programlisting>
+<indexterm><primary>itdb_device_get_sysinfo</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_device_get_sysinfo             (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         const <link linkend="gchar">gchar</link> *field);</programlisting>
 <para>
 Retrieve specified field from the SysInfo file.</para>
 <para>
@@ -165,12 +168,12 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-device-set-sysinfo" role="function"/>itdb_device_set_sysinfo ()</title>
-<indexterm><primary>itdb_device_set_sysinfo</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_device_set_sysinfo         (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             const <link linkend="gchar">gchar</link> *field,
-                                             const <link linkend="gchar">gchar</link> *value);</programlisting>
+<indexterm><primary>itdb_device_set_sysinfo</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_device_set_sysinfo             (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         const <link linkend="gchar">gchar</link> *field,
+                                                         const <link linkend="gchar">gchar</link> *value);</programlisting>
 <para>
 Set specified field. It can later be written to the iPod using
-itdb_device_read_sysinfo</para>
+<link linkend="itdb-device-write-sysinfo"><function>itdb_device_write_sysinfo()</function></link></para>
 <para>
 
 </para><variablelist role="params">
@@ -186,8 +189,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-device-write-sysinfo" role="function"/>itdb_device_write_sysinfo ()</title>
-<indexterm><primary>itdb_device_write_sysinfo</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_device_write_sysinfo       (<link linkend="Itdb-Device">Itdb_Device</link> *device,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_device_write_sysinfo</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_device_write_sysinfo           (<link linkend="Itdb-Device">Itdb_Device</link> *device,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Fills the SysInfo file with information in device->sysinfo. Note:
 no directories are created if not already existent.</para>
@@ -205,8 +208,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-device-get-ipod-info" role="function"/>itdb_device_get_ipod_info ()</title>
-<indexterm><primary>itdb_device_get_ipod_info</primary></indexterm><programlisting>const <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>* itdb_device_get_ipod_info
-                                            (<link linkend="Itdb-Device">Itdb_Device</link> *device);</programlisting>
+<indexterm><primary>itdb_device_get_ipod_info</primary></indexterm><programlisting>const <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>* itdb_device_get_ipod_info          (<link linkend="Itdb-Device">Itdb_Device</link> *device);</programlisting>
 <para>
 Retrieve the <link linkend="Itdb-IpodInfo"><type>Itdb_IpodInfo</type></link> entry for this iPod</para>
 <para>
@@ -219,9 +221,38 @@
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
+<title><anchor id="itdb-device-supports-artwork" role="function"/>itdb_device_supports_artwork ()</title>
+<indexterm><primary>itdb_device_supports_artwork</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_device_supports_artwork        (<link linkend="Itdb-Device">Itdb_Device</link> *device);</programlisting>
+<para>
+Indicates whether <parameter>device</parameter> can display artwork or not. When dealing
+with a non-art capable ipod, no artwork data will be written to the
+iPod so you can spare calls to the artwork handling methods.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>device</parameter>&nbsp;:</term>
+<listitem><simpara> an <link linkend="Itdb-Device"><type>Itdb_Device</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> true if <parameter>device</parameter> can display artwork.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="itdb-device-supports-photo" role="function"/>itdb_device_supports_photo ()</title>
+<indexterm><primary>itdb_device_supports_photo</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_device_supports_photo          (<link linkend="Itdb-Device">Itdb_Device</link> *device);</programlisting>
+<para>
+Indicates whether <parameter>device</parameter> can display photos or not.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>device</parameter>&nbsp;:</term>
+<listitem><simpara> an <link linkend="Itdb-Device"><type>Itdb_Device</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> true if <parameter>device</parameter> can display photos.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
 <title><anchor id="itdb-info-get-ipod-info-table" role="function"/>itdb_info_get_ipod_info_table ()</title>
-<indexterm><primary>itdb_info_get_ipod_info_table</primary></indexterm><programlisting>const <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>* itdb_info_get_ipod_info_table
-                                            (void);</programlisting>
+<indexterm><primary>itdb_info_get_ipod_info_table</primary></indexterm><programlisting>const <link linkend="Itdb-IpodInfo">Itdb_IpodInfo</link>* itdb_info_get_ipod_info_table      (void);</programlisting>
 <para>
 Return a pointer to the start of valid iPod model descriptions,
 which is an array of <link linkend="Itdb-IpodInfo"><type>Itdb_IpodInfo</type></link> entries.</para>
@@ -233,8 +264,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-info-get-ipod-generation-string" role="function"/>itdb_info_get_ipod_generation_string ()</title>
-<indexterm><primary>itdb_info_get_ipod_generation_string</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* itdb_info_get_ipod_generation_string
-                                            (<link linkend="Itdb-IpodGeneration">Itdb_IpodGeneration</link> generation);</programlisting>
+<indexterm><primary>itdb_info_get_ipod_generation_string</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>*        itdb_info_get_ipod_generation_string
+                                                        (<link linkend="Itdb-IpodGeneration">Itdb_IpodGeneration</link> generation);</programlisting>
 <para>
 Return the iPod's generic generation name, like "First Generation",
 "Mobile Phone"...</para>
@@ -250,8 +281,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-info-get-ipod-model-name-string" role="function"/>itdb_info_get_ipod_model_name_string ()</title>
-<indexterm><primary>itdb_info_get_ipod_model_name_string</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* itdb_info_get_ipod_model_name_string
-                                            (<link linkend="Itdb-IpodModel">Itdb_IpodModel</link> model);</programlisting>
+<indexterm><primary>itdb_info_get_ipod_model_name_string</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>*        itdb_info_get_ipod_model_name_string
+                                                        (<link linkend="Itdb-IpodModel">Itdb_IpodModel</link> model);</programlisting>
 <para>
 Return the iPod's generic model name, like "Color", "Nano"...</para>
 <para>
@@ -266,10 +297,10 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-init-ipod" role="function"/>itdb_init_ipod ()</title>
-<indexterm><primary>itdb_init_ipod</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_init_ipod                  (const <link linkend="gchar">gchar</link> *mountpoint,
-                                             const <link linkend="gchar">gchar</link> *model_number,
-                                             const <link linkend="gchar">gchar</link> *ipod_name,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_init_ipod</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_init_ipod                      (const <link linkend="gchar">gchar</link> *mountpoint,
+                                                         const <link linkend="gchar">gchar</link> *model_number,
+                                                         const <link linkend="gchar">gchar</link> *ipod_name,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Initialise an iPod device from scratch. The function attempts to
 create a blank database, complete with master playlist and device
@@ -314,20 +345,24 @@
 <refsect2>
 <title><anchor id="Itdb-IpodInfo" role="struct"/>Itdb_IpodInfo</title>
 <indexterm><primary>Itdb_IpodInfo</primary></indexterm><programlisting>typedef struct {
-       /* model_number is abbreviated: if the first character is not
-	  numeric, it is ommited. e.g. "MA350 -&gt; A350", "M9829 -&gt; 9829" */
-	const gchar *model_number;
-        const double capacity;  /* in GB */
-	const Itdb_IpodModel ipod_model;
-	const Itdb_IpodGeneration ipod_generation;
-        /* Number of music (Fnn) dirs created by iTunes. The exact
-	   number seems to be version dependent. Therefore, the
-	   numbers here represent a mixture of reported values and
-	   common sense. Note: this number does not necessarily
-	   represent the number of dirs present on a particular
-	   iPod. It is used when setting up a new iPod from
-	   scratch. */
-        const guint musicdirs;
+    /* model_number is abbreviated: if the first character is not
+       numeric, it is ommited. e.g. "MA350 -&gt; A350", "M9829 -&gt; 9829" */
+    const gchar *model_number;
+    const double capacity;  /* in GB */
+    const Itdb_IpodModel ipod_model;
+    const Itdb_IpodGeneration ipod_generation;
+    /* Number of music (Fnn) dirs created by iTunes. The exact number
+       seems to be version dependent. Therefore, the numbers here
+       represent a mixture of reported values and common sense. Note:
+       this number does not necessarily represent the number of dirs
+       present on a particular iPod. It is used when setting up a new
+       iPod from scratch. */
+    const guint musicdirs;
+    /* reserved for future use */
+    const gint32 reserved_int1;
+    const gint32 reserved_int2;
+    gconstpointer reserved1;
+    gconstpointer reserved2;
 } Itdb_IpodInfo;
 </programlisting>
 <para>

Modified: libgpod/branches/upstream/current/docs/reference/xml/itunesdb-copying.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/itunesdb-copying.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/itunesdb-copying.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,15 +21,15 @@
 
 
 
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-cp-track-to-ipod">itdb_cp_track_to_ipod</link>           (<link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="void">void</link>        <link linkend="itdb-filename-fs2ipod">itdb_filename_fs2ipod</link>           (<link linkend="gchar">gchar</link> *filename);
-<link linkend="void">void</link>        <link linkend="itdb-filename-ipod2fs">itdb_filename_ipod2fs</link>           (<link linkend="gchar">gchar</link> *ipod_file);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-filename-on-ipod">itdb_filename_on_ipod</link>           (<link linkend="Itdb-Track">Itdb_Track</link> *track);
-<link linkend="gint">gint</link>        <link linkend="itdb-musicdirs-number">itdb_musicdirs_number</link>           (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-rename-files">itdb_rename_files</link>               (const <link linkend="gchar">gchar</link> *mp,
-                                             <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-cp-track-to-ipod">itdb_cp_track_to_ipod</link>               (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="void">void</link>                <link linkend="itdb-filename-fs2ipod">itdb_filename_fs2ipod</link>               (<link linkend="gchar">gchar</link> *filename);
+<link linkend="void">void</link>                <link linkend="itdb-filename-ipod2fs">itdb_filename_ipod2fs</link>               (<link linkend="gchar">gchar</link> *ipod_file);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-filename-on-ipod">itdb_filename_on_ipod</link>               (<link linkend="Itdb-Track">Itdb_Track</link> *track);
+<link linkend="gint">gint</link>                <link linkend="itdb-musicdirs-number">itdb_musicdirs_number</link>               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-rename-files">itdb_rename_files</link>                   (const <link linkend="gchar">gchar</link> *mp,
+                                                         <link linkend="GError">GError</link> **error);
 </synopsis>
 </refsynopsisdiv>
 
@@ -53,24 +53,24 @@
 <title role="details.title">Details</title>
 <refsect2>
 <title><anchor id="itdb-cp-track-to-ipod" role="function"/>itdb_cp_track_to_ipod ()</title>
-<indexterm><primary>itdb_cp_track_to_ipod</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_cp_track_to_ipod           (<link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_cp_track_to_ipod</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_cp_track_to_ipod               (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Copy one track to the iPod. The PC filename is <parameter>filename</parameter>
 and is taken literally.
 </para>
 <para>
-The mountpoint of the iPod (in local encoding) is expected in
-track-&gt;itdb-&gt;mountpoint.
+The mountpoint of the iPod (in local encoding) must have been set
+with <link linkend="itdb-set-mountpoint"><function>itdb_set_mountpoint()</function></link> (done automatically when reading an
+iTunesDB).
 </para>
 <para>
 If <parameter>track</parameter>-&gt;transferred is set to TRUE, nothing is done. Upon
 successful transfer <parameter>track</parameter>-&gt;transferred is set to TRUE.
 </para>
 <para>
-For storage, the directories "f00 ... fnn" will be
-cycled through.
+For storage, the directories "f00 ... fnn" will be used randomly.
 </para>
 <para>
 The filename is constructed as "gtkpod"&lt;random number&gt; and copied
@@ -102,7 +102,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-filename-fs2ipod" role="function"/>itdb_filename_fs2ipod ()</title>
-<indexterm><primary>itdb_filename_fs2ipod</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_filename_fs2ipod           (<link linkend="gchar">gchar</link> *filename);</programlisting>
+<indexterm><primary>itdb_filename_fs2ipod</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_filename_fs2ipod               (<link linkend="gchar">gchar</link> *filename);</programlisting>
 <para>
 Convert string from casual PC file name to iPod iTunesDB format using ':' 
 instead of G_DIR_SEPARATOR_S (ie slashes on Unix-like systems). <parameter>ipod_file</parameter>
@@ -116,7 +116,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-filename-ipod2fs" role="function"/>itdb_filename_ipod2fs ()</title>
-<indexterm><primary>itdb_filename_ipod2fs</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_filename_ipod2fs           (<link linkend="gchar">gchar</link> *ipod_file);</programlisting>
+<indexterm><primary>itdb_filename_ipod2fs</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_filename_ipod2fs               (<link linkend="gchar">gchar</link> *ipod_file);</programlisting>
 <para>
 Convert string from from iPod iTunesDB format to casual PC file name
 using G_DIR_SEPARATOR (ie slashes on Unix-like systems) instead of ':'.
@@ -130,7 +130,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-filename-on-ipod" role="function"/>itdb_filename_on_ipod ()</title>
-<indexterm><primary>itdb_filename_on_ipod</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_filename_on_ipod           (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
+<indexterm><primary>itdb_filename_on_ipod</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_filename_on_ipod               (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
 <para>
 Return the full iPod filename as stored in <parameter>track</parameter>.
 </para>
@@ -154,7 +154,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-musicdirs-number" role="function"/>itdb_musicdirs_number ()</title>
-<indexterm><primary>itdb_musicdirs_number</primary></indexterm><programlisting><link linkend="gint">gint</link>        itdb_musicdirs_number           (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_musicdirs_number</primary></indexterm><programlisting><link linkend="gint">gint</link>                itdb_musicdirs_number               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Determine the number of F.. directories in iPod_Control/Music.
 </para>
@@ -173,8 +173,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-rename-files" role="function"/>itdb_rename_files ()</title>
-<indexterm><primary>itdb_rename_files</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_rename_files               (const <link linkend="gchar">gchar</link> *mp,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_rename_files</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_rename_files                   (const <link linkend="gchar">gchar</link> *mp,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Renames/removes some files on the iPod (Playcounts, OTG
 semaphore). May have to be called if you write the iTunesDB not

Modified: libgpod/branches/upstream/current/docs/reference/xml/itunesdb-db.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/itunesdb-db.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/itunesdb-db.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,22 +21,21 @@
 
 
 
-            <link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>;
-<link linkend="void">void</link>        (<link linkend="ItdbUserDataDestroyFunc">*ItdbUserDataDestroyFunc</link>)      (<link linkend="gpointer">gpointer</link> userdata);
-<link linkend="gpointer">gpointer</link>    (<link linkend="ItdbUserDataDuplicateFunc">*ItdbUserDataDuplicateFunc</link>)    (<link linkend="gpointer">gpointer</link> userdata);
-<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>* <link linkend="itdb-new">itdb_new</link>                     (void);
-<link linkend="void">void</link>        <link linkend="itdb-free">itdb_free</link>                       (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>* <link linkend="itdb-parse">itdb_parse</link>                   (const <link linkend="gchar">gchar</link> *mp,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-write">itdb_write</link>                      (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="void">void</link>        <link linkend="itdb-set-mountpoint">itdb_set_mountpoint</link>             (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             const <link linkend="gchar">gchar</link> *mp);
-const <link linkend="gchar">gchar</link>* <link linkend="itdb-get-mountpoint">itdb_get_mountpoint</link>            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="guint32">guint32</link>     <link linkend="itdb-tracks-number">itdb_tracks_number</link>              (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="guint32">guint32</link>     <link linkend="itdb-tracks-number-nontransferred">itdb_tracks_number_nontransferred</link>
-                                            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="guint32">guint32</link>     <link linkend="itdb-playlists-number">itdb_playlists_number</link>           (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+                    <link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>;
+<link linkend="void">void</link>                (<link linkend="ItdbUserDataDestroyFunc">*ItdbUserDataDestroyFunc</link>)          (<link linkend="gpointer">gpointer</link> userdata);
+<link linkend="gpointer">gpointer</link>            (<link linkend="ItdbUserDataDuplicateFunc">*ItdbUserDataDuplicateFunc</link>)        (<link linkend="gpointer">gpointer</link> userdata);
+<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>*      <link linkend="itdb-new">itdb_new</link>                            (void);
+<link linkend="void">void</link>                <link linkend="itdb-free">itdb_free</link>                           (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>*      <link linkend="itdb-parse">itdb_parse</link>                          (const <link linkend="gchar">gchar</link> *mp,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-write">itdb_write</link>                          (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="void">void</link>                <link linkend="itdb-set-mountpoint">itdb_set_mountpoint</link>                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         const <link linkend="gchar">gchar</link> *mp);
+const <link linkend="gchar">gchar</link>*        <link linkend="itdb-get-mountpoint">itdb_get_mountpoint</link>                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="guint32">guint32</link>             <link linkend="itdb-tracks-number">itdb_tracks_number</link>                  (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="guint32">guint32</link>             <link linkend="itdb-tracks-number-nontransferred">itdb_tracks_number_nontransferred</link>   (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="guint32">guint32</link>             <link linkend="itdb-playlists-number">itdb_playlists_number</link>               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
 </synopsis>
 </refsynopsisdiv>
 
@@ -147,6 +146,11 @@
     Itdb_Device *device;/* iPod device info     */
     guint32 version;
     guint64 id;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -160,7 +164,7 @@
 </para></refsect2>
 <refsect2>
 <title><anchor id="ItdbUserDataDestroyFunc" role="function"/>ItdbUserDataDestroyFunc ()</title>
-<indexterm><primary>ItdbUserDataDestroyFunc</primary></indexterm><programlisting><link linkend="void">void</link>        (*ItdbUserDataDestroyFunc)      (<link linkend="gpointer">gpointer</link> userdata);</programlisting>
+<indexterm><primary>ItdbUserDataDestroyFunc</primary></indexterm><programlisting><link linkend="void">void</link>                (*ItdbUserDataDestroyFunc)          (<link linkend="gpointer">gpointer</link> userdata);</programlisting>
 <para>
 
 </para><variablelist role="params">
@@ -172,7 +176,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="ItdbUserDataDuplicateFunc" role="function"/>ItdbUserDataDuplicateFunc ()</title>
-<indexterm><primary>ItdbUserDataDuplicateFunc</primary></indexterm><programlisting><link linkend="gpointer">gpointer</link>    (*ItdbUserDataDuplicateFunc)    (<link linkend="gpointer">gpointer</link> userdata);</programlisting>
+<indexterm><primary>ItdbUserDataDuplicateFunc</primary></indexterm><programlisting><link linkend="gpointer">gpointer</link>            (*ItdbUserDataDuplicateFunc)        (<link linkend="gpointer">gpointer</link> userdata);</programlisting>
 <para>
 
 </para><variablelist role="params">
@@ -186,7 +190,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-new" role="function"/>itdb_new ()</title>
-<indexterm><primary>itdb_new</primary></indexterm><programlisting><link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>* itdb_new                     (void);</programlisting>
+<indexterm><primary>itdb_new</primary></indexterm><programlisting><link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>*      itdb_new                            (void);</programlisting>
 <para>
 Creates a new Itdb_iTunesDB with the unknowns filled in to reasonable
 values.</para>
@@ -199,7 +203,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-free" role="function"/>itdb_free ()</title>
-<indexterm><primary>itdb_free</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_free                       (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_free</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_free                           (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Free the memory taken by <parameter>itdb</parameter>.</para>
 <para>
@@ -211,8 +215,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-parse" role="function"/>itdb_parse ()</title>
-<indexterm><primary>itdb_parse</primary></indexterm><programlisting><link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>* itdb_parse                   (const <link linkend="gchar">gchar</link> *mp,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_parse</primary></indexterm><programlisting><link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>*      itdb_parse                          (const <link linkend="gchar">gchar</link> *mp,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Parse the Itdb_iTunesDB of the iPod located at <parameter>mp</parameter></para>
 <para>
@@ -232,8 +236,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-write" role="function"/>itdb_write ()</title>
-<indexterm><primary>itdb_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_write                      (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_write                          (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Write out an iTunesDB. It reassigns unique IDs to all tracks. 
 An existing "Play Counts" file is renamed to "Play Counts.bak" if
@@ -255,8 +259,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-set-mountpoint" role="function"/>itdb_set_mountpoint ()</title>
-<indexterm><primary>itdb_set_mountpoint</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_set_mountpoint             (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             const <link linkend="gchar">gchar</link> *mp);</programlisting>
+<indexterm><primary>itdb_set_mountpoint</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_set_mountpoint                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         const <link linkend="gchar">gchar</link> *mp);</programlisting>
 <para>
 Sets the mountpoint of <parameter>db</parameter>. Always use this function to set the mountpoint
 of an <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> as it will reset the number of available 
@@ -274,7 +278,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-mountpoint" role="function"/>itdb_get_mountpoint ()</title>
-<indexterm><primary>itdb_get_mountpoint</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* itdb_get_mountpoint            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_get_mountpoint</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>*        itdb_get_mountpoint                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Retrieve a reference to the mountpoint of <parameter>itdb</parameter></para>
 <para>
@@ -289,7 +293,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-tracks-number" role="function"/>itdb_tracks_number ()</title>
-<indexterm><primary>itdb_tracks_number</primary></indexterm><programlisting><link linkend="guint32">guint32</link>     itdb_tracks_number              (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_tracks_number</primary></indexterm><programlisting><link linkend="guint32">guint32</link>             itdb_tracks_number                  (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Counts the number of tracks stored in <parameter>itdb</parameter></para>
 <para>
@@ -303,8 +307,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-tracks-number-nontransferred" role="function"/>itdb_tracks_number_nontransferred ()</title>
-<indexterm><primary>itdb_tracks_number_nontransferred</primary></indexterm><programlisting><link linkend="guint32">guint32</link>     itdb_tracks_number_nontransferred
-                                            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_tracks_number_nontransferred</primary></indexterm><programlisting><link linkend="guint32">guint32</link>             itdb_tracks_number_nontransferred   (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Counts the number of non-transferred tracks in <parameter>itdb</parameter></para>
 <para>
@@ -320,7 +323,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlists-number" role="function"/>itdb_playlists_number ()</title>
-<indexterm><primary>itdb_playlists_number</primary></indexterm><programlisting><link linkend="guint32">guint32</link>     itdb_playlists_number           (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_playlists_number</primary></indexterm><programlisting><link linkend="guint32">guint32</link>             itdb_playlists_number               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Counts the number of playlists stored in <parameter>itdb</parameter></para>
 <para>

Modified: libgpod/branches/upstream/current/docs/reference/xml/itunesdb-lowlevel.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/itunesdb-lowlevel.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/itunesdb-lowlevel.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,35 +21,43 @@
 
 
 
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-control-dir">itdb_get_control_dir</link>            (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-itunes-dir">itdb_get_itunes_dir</link>             (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-music-dir">itdb_get_music_dir</link>              (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-artwork-dir">itdb_get_artwork_dir</link>            (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-device-dir">itdb_get_device_dir</link>             (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-photos-dir">itdb_get_photos_dir</link>             (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-itunesdb-path">itdb_get_itunesdb_path</link>          (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-itunessd-path">itdb_get_itunessd_path</link>          (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-artworkdb-path">itdb_get_artworkdb_path</link>         (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-photodb-path">itdb_get_photodb_path</link>           (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-photos-thumb-dir">itdb_get_photos_thumb_dir</link>       (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-get-path">itdb_get_path</link>                   (const <link linkend="gchar">gchar</link> *dir,
-                                             const <link linkend="gchar">gchar</link> *file);
-<link linkend="gchar">gchar</link>*      <link linkend="itdb-resolve-path">itdb_resolve_path</link>               (const <link linkend="gchar">gchar</link> *root,
-                                             const <link linkend="gchar">gchar</link> * const *components);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-shuffle-write">itdb_shuffle_write</link>              (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-shuffle-write-file">itdb_shuffle_write_file</link>         (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-cp">itdb_cp</link>                         (const <link linkend="gchar">gchar</link> *from_file,
-                                             const <link linkend="gchar">gchar</link> *to_file,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>* <link linkend="itdb-parse-file">itdb_parse_file</link>              (const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-write-file">itdb_write_file</link>                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>* <link linkend="itdb-duplicate">itdb_duplicate</link>               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-control-dir">itdb_get_control_dir</link>                (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-itunes-dir">itdb_get_itunes_dir</link>                 (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-music-dir">itdb_get_music_dir</link>                  (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-artwork-dir">itdb_get_artwork_dir</link>                (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-device-dir">itdb_get_device_dir</link>                 (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-photos-dir">itdb_get_photos_dir</link>                 (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-itunesdb-path">itdb_get_itunesdb_path</link>              (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-itunessd-path">itdb_get_itunessd_path</link>              (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-artworkdb-path">itdb_get_artworkdb_path</link>             (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-photodb-path">itdb_get_photodb_path</link>               (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-photos-thumb-dir">itdb_get_photos_thumb_dir</link>           (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-get-path">itdb_get_path</link>                       (const <link linkend="gchar">gchar</link> *dir,
+                                                         const <link linkend="gchar">gchar</link> *file);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-resolve-path">itdb_resolve_path</link>                   (const <link linkend="gchar">gchar</link> *root,
+                                                         const <link linkend="gchar">gchar</link> * const *components);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-shuffle-write">itdb_shuffle_write</link>                  (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-shuffle-write-file">itdb_shuffle_write_file</link>             (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-cp">itdb_cp</link>                             (const <link linkend="gchar">gchar</link> *from_file,
+                                                         const <link linkend="gchar">gchar</link> *to_file,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="gchar">gchar</link>*              <link linkend="itdb-cp-get-dest-filename">itdb_cp_get_dest_filename</link>           (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="gchar">gchar</link> *mountpoint,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="Itdb-Track">Itdb_Track</link>*         <link linkend="itdb-cp-finalize">itdb_cp_finalize</link>                    (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="gchar">gchar</link> *mountpoint,
+                                                         const <link linkend="gchar">gchar</link> *dest_filename,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>*      <link linkend="itdb-parse-file">itdb_parse_file</link>                     (const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-write-file">itdb_write_file</link>                     (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>*      <link linkend="itdb-duplicate">itdb_duplicate</link>                      (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
 </synopsis>
 </refsynopsisdiv>
 
@@ -73,7 +81,7 @@
 <title role="details.title">Details</title>
 <refsect2>
 <title><anchor id="itdb-get-control-dir" role="function"/>itdb_get_control_dir ()</title>
-<indexterm><primary>itdb_get_control_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_control_dir            (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_control_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_control_dir                (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Get the i*_Control directory. Observed values are 'iPod_Control'
 for standard iPods and 'iTunes/iTunes_Control' for mobile
@@ -90,7 +98,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-itunes-dir" role="function"/>itdb_get_itunes_dir ()</title>
-<indexterm><primary>itdb_get_itunes_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_itunes_dir             (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_itunes_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_itunes_dir                 (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve the iTunes directory (containing the iTunesDB) by first
 calling <link linkend="itdb-get-control-dir"><function>itdb_get_control_dir()</function></link> and then adding 'iTunes'</para>
@@ -106,7 +114,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-music-dir" role="function"/>itdb_get_music_dir ()</title>
-<indexterm><primary>itdb_get_music_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_music_dir              (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_music_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_music_dir                  (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve the Music directory (containing the Fnn dirs) by first
 calling <link linkend="itdb-get-control-dir"><function>itdb_get_control_dir()</function></link> and then adding 'Music'</para>
@@ -122,7 +130,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-artwork-dir" role="function"/>itdb_get_artwork_dir ()</title>
-<indexterm><primary>itdb_get_artwork_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_artwork_dir            (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_artwork_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_artwork_dir                (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve the Artwork directory (containing the ArtworDB) by
 first calling <link linkend="itdb-get-control-dir"><function>itdb_get_control_dir()</function></link> and then adding 'Artwork'</para>
@@ -138,7 +146,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-device-dir" role="function"/>itdb_get_device_dir ()</title>
-<indexterm><primary>itdb_get_device_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_device_dir             (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_device_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_device_dir                 (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve the Device directory (containing the SysInfo file) by
 first calling <link linkend="itdb-get-control-dir"><function>itdb_get_control_dir()</function></link> and then adding 'Device'</para>
@@ -154,7 +162,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-photos-dir" role="function"/>itdb_get_photos_dir ()</title>
-<indexterm><primary>itdb_get_photos_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_photos_dir             (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_photos_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_photos_dir                 (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve the Photo directory by
 first calling <link linkend="itdb-get-control-dir"><function>itdb_get_control_dir()</function></link> and then adding 'Photos'</para>
@@ -170,7 +178,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-itunesdb-path" role="function"/>itdb_get_itunesdb_path ()</title>
-<indexterm><primary>itdb_get_itunesdb_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_itunesdb_path          (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_itunesdb_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_itunesdb_path              (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve a path to the iTunesDB</para>
 <para>
@@ -185,7 +193,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-itunessd-path" role="function"/>itdb_get_itunessd_path ()</title>
-<indexterm><primary>itdb_get_itunessd_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_itunessd_path          (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_itunessd_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_itunessd_path              (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve a path to the iTunesSD</para>
 <para>
@@ -200,7 +208,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-artworkdb-path" role="function"/>itdb_get_artworkdb_path ()</title>
-<indexterm><primary>itdb_get_artworkdb_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_artworkdb_path         (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_artworkdb_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_artworkdb_path             (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve a path to the ArtworkDB</para>
 <para>
@@ -215,7 +223,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-photodb-path" role="function"/>itdb_get_photodb_path ()</title>
-<indexterm><primary>itdb_get_photodb_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_photodb_path           (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_photodb_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_photodb_path               (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve a path to the Photo DB</para>
 <para>
@@ -230,7 +238,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-photos-thumb-dir" role="function"/>itdb_get_photos_thumb_dir ()</title>
-<indexterm><primary>itdb_get_photos_thumb_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_photos_thumb_dir       (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_get_photos_thumb_dir</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_photos_thumb_dir           (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Retrieve the Photo Thumbnail directory by
 first calling <link linkend="itdb-get-control-dir"><function>itdb_get_control_dir()</function></link> and then adding 'Photos/Thumbs'</para>
@@ -246,8 +254,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-get-path" role="function"/>itdb_get_path ()</title>
-<indexterm><primary>itdb_get_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_get_path                   (const <link linkend="gchar">gchar</link> *dir,
-                                             const <link linkend="gchar">gchar</link> *file);</programlisting>
+<indexterm><primary>itdb_get_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_get_path                       (const <link linkend="gchar">gchar</link> *dir,
+                                                         const <link linkend="gchar">gchar</link> *file);</programlisting>
 <para>
 Retrieve a path to the <parameter>file</parameter> in <parameter>dir</parameter></para>
 <para>
@@ -265,8 +273,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-resolve-path" role="function"/>itdb_resolve_path ()</title>
-<indexterm><primary>itdb_resolve_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      itdb_resolve_path               (const <link linkend="gchar">gchar</link> *root,
-                                             const <link linkend="gchar">gchar</link> * const *components);</programlisting>
+<indexterm><primary>itdb_resolve_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_resolve_path                   (const <link linkend="gchar">gchar</link> *root,
+                                                         const <link linkend="gchar">gchar</link> * const *components);</programlisting>
 <para>
 Resolve the path to a track on the iPod
 </para>
@@ -290,8 +298,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-shuffle-write" role="function"/>itdb_shuffle_write ()</title>
-<indexterm><primary>itdb_shuffle_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_shuffle_write              (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_shuffle_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_shuffle_write                  (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Write out an iTunesSD for the Shuffle.
 First reassigns unique IDs to all tracks.
@@ -316,9 +324,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-shuffle-write-file" role="function"/>itdb_shuffle_write_file ()</title>
-<indexterm><primary>itdb_shuffle_write_file</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_shuffle_write_file         (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_shuffle_write_file</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_shuffle_write_file             (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Do the actual writing to the iTunesSD</para>
 <para>
@@ -339,9 +347,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-cp" role="function"/>itdb_cp ()</title>
-<indexterm><primary>itdb_cp</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_cp                         (const <link linkend="gchar">gchar</link> *from_file,
-                                             const <link linkend="gchar">gchar</link> *to_file,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_cp</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_cp                             (const <link linkend="gchar">gchar</link> *from_file,
+                                                         const <link linkend="gchar">gchar</link> *to_file,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Copy file "from_file" to "to_file".</para>
 <para>
@@ -361,9 +369,94 @@
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
+<title><anchor id="itdb-cp-get-dest-filename" role="function"/>itdb_cp_get_dest_filename ()</title>
+<indexterm><primary>itdb_cp_get_dest_filename</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*              itdb_cp_get_dest_filename           (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="gchar">gchar</link> *mountpoint,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Creates a valid filename on the iPod where to copy <parameter>filename</parameter>.
+</para>
+<para>
+You must either provide <parameter>track</parameter> or <parameter>mountpoint</parameter>. Providing <parameter>track</parameter> is
+not thread-safe (accesses track->itdb->device and may even write to
+track->itdb->device). Providing <parameter>mountpoint</parameter> is thread-safe but
+slightly slower because the number of music directories is counted
+each time the function is called.
+</para>
+<para>
+You can use #<link linkend="itdb-cp"><function>itdb_cp()</function></link> to copy the track to the iPod or implement
+your own copy function. After the file was copied you have to call
+#<link linkend="itdb-cp-finalize"><function>itdb_cp_finalize()</function></link> to obtain relevant update information for
+<link linkend="Itdb-Track"><type>Itdb_Track</type></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>track</parameter>&nbsp;:</term>
+<listitem><simpara> track to transfer or NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mountpoint</parameter>&nbsp;:</term>
+<listitem><simpara> mountpoint of your iPod or NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> the source file
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara> return location for a <link linkend="GError"><type>GError</type></link> or NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a valid filename on the iPod to where <parameter>filename</parameter> can
+be copied or NULL in case of an error. In that case <parameter>error</parameter> is set
+accordingly. You must free the filename when it is no longer
+needed.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="itdb-cp-finalize" role="function"/>itdb_cp_finalize ()</title>
+<indexterm><primary>itdb_cp_finalize</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>*         itdb_cp_finalize                    (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="gchar">gchar</link> *mountpoint,
+                                                         const <link linkend="gchar">gchar</link> *dest_filename,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Updates information in <parameter>track</parameter> necessary for the iPod. You must
+either supply <parameter>track</parameter> or <parameter>mountpoint</parameter>. If <parameter>track</parameter> == NULL, a new track
+structure is created that must be freed with #<link linkend="itdb-track-free"><function>itdb_track_free()</function></link>
+when it is no longer needed.
+</para>
+<para>
+The following fields are updated:
+</para>
+<para>
+- ipod_path
+- filetype_marker
+- transferred
+- size</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>track</parameter>&nbsp;:</term>
+<listitem><simpara> track to update or NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mountpoint</parameter>&nbsp;:</term>
+<listitem><simpara> mountpoint of your iPod or NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dest_filename</parameter>&nbsp;:</term>
+<listitem><simpara> the name of the file on the iPod copied to
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara> return location for a <link linkend="GError"><type>GError</type></link> or NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> on success a pointer to the <link linkend="Itdb-Track"><type>Itdb_Track</type></link> item passed
+or a new <link linkend="Itdb-Track"><type>Itdb_Track</type></link> item if <parameter>track</parameter> was NULL. In the latter case
+you must free the memory using #<link linkend="itdb-track-free"><function>itdb_track_free()</function></link> when the item is
+no longer used. If an error occurs NULL is returned and <parameter>error</parameter> is
+set accordingly. Errors occur when <parameter>dest_filename</parameter> cannot be
+accessed or the mountpoint is not set.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
 <title><anchor id="itdb-parse-file" role="function"/>itdb_parse_file ()</title>
-<indexterm><primary>itdb_parse_file</primary></indexterm><programlisting><link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>* itdb_parse_file              (const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_parse_file</primary></indexterm><programlisting><link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>*      itdb_parse_file                     (const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Same as <link linkend="itunesdb-parse"><function>itunesdb_parse()</function></link>, but filename is specified directly.</para>
 <para>
@@ -376,16 +469,16 @@
 <listitem><simpara> return location for a <link linkend="GError"><type>GError</type></link> or NULL
 </simpara></listitem></varlistentry>
 <varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly allocated <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> struct holding the tracks and
-the playlists present on the iPod at <parameter>mp</parameter>, NULL if <parameter>mp</parameter> isn't an iPod mount
-point. If non-NULL, the <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> is to be freed with <link linkend="itdb-free"><function>itdb_free()</function></link> when
-it's no longer needed
+the playlists present in <parameter>filename</parameter>, NULL if <parameter>filename</parameter> isn't a parsable 
+iTunesDB file. If non-NULL, the <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> is to be freed with 
+<link linkend="itdb-free"><function>itdb_free()</function></link> when it's no longer needed
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-write-file" role="function"/>itdb_write_file ()</title>
-<indexterm><primary>itdb_write_file</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_write_file                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_write_file</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_write_file                     (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Write the content of <parameter>itdb</parameter> to <parameter>filename</parameter>. If <parameter>filename</parameter> is NULL, it attempts
 to write to itdb-&gt;filename.</para>
@@ -406,7 +499,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-duplicate" role="function"/>itdb_duplicate ()</title>
-<indexterm><primary>itdb_duplicate</primary></indexterm><programlisting><link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>* itdb_duplicate               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_duplicate</primary></indexterm><programlisting><link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link>*      itdb_duplicate                      (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Duplicate <parameter>itdb</parameter> 
 FIXME: not implemented yet</para>

Modified: libgpod/branches/upstream/current/docs/reference/xml/itunesdb-time.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/itunesdb-time.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/itunesdb-time.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,9 +21,9 @@
 
 
 
-<link linkend="guint64">guint64</link>     <link linkend="itdb-time-get-mac-time">itdb_time_get_mac_time</link>          (void);
-<link linkend="time-t">time_t</link>      <link linkend="itdb-time-mac-to-host">itdb_time_mac_to_host</link>           (<link linkend="guint64">guint64</link> mactime);
-<link linkend="guint64">guint64</link>     <link linkend="itdb-time-host-to-mac">itdb_time_host_to_mac</link>           (<link linkend="time-t">time_t</link> time);
+<link linkend="time-t">time_t</link>              <link linkend="itdb-time-get-mac-time">itdb_time_get_mac_time</link>              (void);
+<link linkend="time-t">time_t</link>              <link linkend="itdb-time-mac-to-host">itdb_time_mac_to_host</link>               (<link linkend="time-t">time_t</link> time);
+<link linkend="time-t">time_t</link>              <link linkend="itdb-time-host-to-mac">itdb_time_host_to_mac</link>               (<link linkend="time-t">time_t</link> time);
 </synopsis>
 </refsynopsisdiv>
 
@@ -38,55 +38,62 @@
 <refsect1 role="desc">
 <title role="desc.title">Description</title>
 <para>
-The functions provide conversion between Epoch time and Mac (iPod) time
+The functions provide conversion between Epoch time and Mac (iPod) time. These 
+functions are now obsolete and should no longer be used, libgpod automatically
+converts to/from Epoch time and iPod time when writing/reading the iPod 
+databases
 </para>
 </refsect1>
 
 <refsect1 role="details">
 <title role="details.title">Details</title>
 <refsect2>
-<title><anchor id="itdb-time-get-mac-time" role="function"/>itdb_time_get_mac_time ()</title>
-<indexterm><primary>itdb_time_get_mac_time</primary></indexterm><programlisting><link linkend="guint64">guint64</link>     itdb_time_get_mac_time          (void);</programlisting>
+<title><anchor id="itdb-time-get-mac-time" role="function" condition="deprecated"/>itdb_time_get_mac_time ()</title>
+<indexterm role="deprecated"><primary>itdb_time_get_mac_time</primary></indexterm><programlisting><link linkend="time-t">time_t</link>              itdb_time_get_mac_time              (void);</programlisting>
+<warning><para><literal>itdb_time_get_mac_time</literal> is deprecated and should not be used in newly-written code. kept for compatibility with older code, directly use 
+<link linkend="g-get-current-time"><function>g_get_current_time()</function></link> or time(NULL) instead</para></warning>
 <para>
-Gets the current time expressed in 'Mac' unit (ie in number of seconds since
-1/1/1904).</para>
+Gets the current time in a format appropriate for storing in the libgpod
+data structures</para>
 <para>
 
 </para><variablelist role="params">
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> current time in 'Mac' unit.
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> current time
+
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
-<title><anchor id="itdb-time-mac-to-host" role="function"/>itdb_time_mac_to_host ()</title>
-<indexterm><primary>itdb_time_mac_to_host</primary></indexterm><programlisting><link linkend="time-t">time_t</link>      itdb_time_mac_to_host           (<link linkend="guint64">guint64</link> mactime);</programlisting>
+<title><anchor id="itdb-time-mac-to-host" role="function" condition="deprecated"/>itdb_time_mac_to_host ()</title>
+<indexterm role="deprecated"><primary>itdb_time_mac_to_host</primary></indexterm><programlisting><link linkend="time-t">time_t</link>              itdb_time_mac_to_host               (<link linkend="time-t">time_t</link> time);</programlisting>
+<warning><para><literal>itdb_time_mac_to_host</literal> is deprecated and should not be used in newly-written code. It's been kept for compatibility with older code, but this
+function is now a no-op</para></warning>
 <para>
-Convert a Mac timestamp to host system time stamp -- modify
-this function if necessary to port to host systems with different
-start of Epoch.
-A "0" time will not be converted.</para>
+Converts a timestamp from libgpod format to host system timestamp.</para>
 <para>
 
 </para><variablelist role="params">
-<varlistentry><term><parameter>mactime</parameter>&nbsp;:</term>
-<listitem><simpara> time expressed in 'Mac' unit
+<varlistentry><term><parameter>time</parameter>&nbsp;:</term>
+<listitem><simpara> time expressed in libgpod format
 </simpara></listitem></varlistentry>
 <varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> timestamp for the host system
+
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
-<title><anchor id="itdb-time-host-to-mac" role="function"/>itdb_time_host_to_mac ()</title>
-<indexterm><primary>itdb_time_host_to_mac</primary></indexterm><programlisting><link linkend="guint64">guint64</link>     itdb_time_host_to_mac           (<link linkend="time-t">time_t</link> time);</programlisting>
+<title><anchor id="itdb-time-host-to-mac" role="function" condition="deprecated"/>itdb_time_host_to_mac ()</title>
+<indexterm role="deprecated"><primary>itdb_time_host_to_mac</primary></indexterm><programlisting><link linkend="time-t">time_t</link>              itdb_time_host_to_mac               (<link linkend="time-t">time_t</link> time);</programlisting>
+<warning><para><literal>itdb_time_host_to_mac</literal> is deprecated and should not be used in newly-written code. It's been kept for compatibility with older code, but this
+function is now a no-op</para></warning>
 <para>
-Convert host system timestamp to Mac time stamp -- modify
-this function if necessary to port to host systems with different
-start of Epoch</para>
+Convert host system timestamp to libgpod format timestamp</para>
 <para>
 
 </para><variablelist role="params">
 <varlistentry><term><parameter>time</parameter>&nbsp;:</term>
 <listitem><simpara> time expressed in host unit
 </simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a Mac timestamp
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a libgpod timestamp
+
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 

Modified: libgpod/branches/upstream/current/docs/reference/xml/photodb.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/photodb.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/photodb.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,44 +21,45 @@
 
 
 
-            <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>;
-            <link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>;
-<link linkend="Itdb-Artwork">Itdb_Artwork</link>* <link linkend="itdb-photodb-add-photo">itdb_photodb_add_photo</link>        (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="gint">gint</link> position,
-                                             <link linkend="gint">gint</link> rotation,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="Itdb-Artwork">Itdb_Artwork</link>* <link linkend="itdb-photodb-add-photo-from-data">itdb_photodb_add_photo_from_data</link>
-                                            (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             const <link linkend="guchar">guchar</link> *image_data,
-                                             <link linkend="gsize">gsize</link> image_data_len,
-                                             <link linkend="gint">gint</link> position,
-                                             <link linkend="gint">gint</link> rotation,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>* <link linkend="itdb-photodb-create">itdb_photodb_create</link>           (const <link linkend="gchar">gchar</link> *mountpoint);
-<link linkend="void">void</link>        <link linkend="itdb-photodb-free">itdb_photodb_free</link>               (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *photodb);
-<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>* <link linkend="itdb-photodb-parse">itdb_photodb_parse</link>            (const <link linkend="gchar">gchar</link> *mp,
-                                             <link linkend="GError">GError</link> **error);
-<link linkend="void">void</link>        <link linkend="itdb-photodb-photoalbum-add-photo">itdb_photodb_photoalbum_add_photo</link>
-                                            (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
-                                             <link linkend="Itdb-Artwork">Itdb_Artwork</link> *photo,
-                                             <link linkend="gint">gint</link> position);
-<link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>* <link linkend="itdb-photodb-photoalbum-by-name">itdb_photodb_photoalbum_by_name</link>
-                                            (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             const <link linkend="gchar">gchar</link> *albumname);
-<link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>* <link linkend="itdb-photodb-photoalbum-create">itdb_photodb_photoalbum_create</link>
-                                            (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             const <link linkend="gchar">gchar</link> *albumname,
-                                             <link linkend="gint">gint</link> pos);
-<link linkend="void">void</link>        <link linkend="itdb-photodb-photoalbum-remove">itdb_photodb_photoalbum_remove</link>  (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
-                                             <link linkend="gboolean">gboolean</link> remove_pics);
-<link linkend="void">void</link>        <link linkend="itdb-photodb-remove-photo">itdb_photodb_remove_photo</link>       (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
-                                             <link linkend="Itdb-Artwork">Itdb_Artwork</link> *photo);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-photodb-write">itdb_photodb_write</link>              (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *photodb,
-                                             <link linkend="GError">GError</link> **error);
+                    <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>;
+                    <link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>;
+<link linkend="Itdb-Artwork">Itdb_Artwork</link>*       <link linkend="itdb-photodb-add-photo">itdb_photodb_add_photo</link>              (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="gint">gint</link> position,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="Itdb-Artwork">Itdb_Artwork</link>*       <link linkend="itdb-photodb-add-photo-from-data">itdb_photodb_add_photo_from_data</link>    (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         const <link linkend="guchar">guchar</link> *image_data,
+                                                         <link linkend="gsize">gsize</link> image_data_len,
+                                                         <link linkend="gint">gint</link> position,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="Itdb-Artwork">Itdb_Artwork</link>*       <link linkend="itdb-photodb-add-photo-from-pixbuf">itdb_photodb_add_photo_from_pixbuf</link>  (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         <link linkend="gpointer">gpointer</link> pixbuf,
+                                                         <link linkend="gint">gint</link> position,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>*       <link linkend="itdb-photodb-create">itdb_photodb_create</link>                 (const <link linkend="gchar">gchar</link> *mountpoint);
+<link linkend="void">void</link>                <link linkend="itdb-photodb-free">itdb_photodb_free</link>                   (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *photodb);
+<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>*       <link linkend="itdb-photodb-parse">itdb_photodb_parse</link>                  (const <link linkend="gchar">gchar</link> *mp,
+                                                         <link linkend="GError">GError</link> **error);
+<link linkend="void">void</link>                <link linkend="itdb-photodb-photoalbum-add-photo">itdb_photodb_photoalbum_add_photo</link>   (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
+                                                         <link linkend="Itdb-Artwork">Itdb_Artwork</link> *photo,
+                                                         <link linkend="gint">gint</link> position);
+<link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>*    <link linkend="itdb-photodb-photoalbum-by-name">itdb_photodb_photoalbum_by_name</link>     (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         const <link linkend="gchar">gchar</link> *albumname);
+<link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>*    <link linkend="itdb-photodb-photoalbum-create">itdb_photodb_photoalbum_create</link>      (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         const <link linkend="gchar">gchar</link> *albumname,
+                                                         <link linkend="gint">gint</link> pos);
+<link linkend="void">void</link>                <link linkend="itdb-photodb-photoalbum-remove">itdb_photodb_photoalbum_remove</link>      (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
+                                                         <link linkend="gboolean">gboolean</link> remove_pics);
+<link linkend="void">void</link>                <link linkend="itdb-photodb-remove-photo">itdb_photodb_remove_photo</link>           (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
+                                                         <link linkend="Itdb-Artwork">Itdb_Artwork</link> *photo);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-photodb-write">itdb_photodb_write</link>                  (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *photodb,
+                                                         <link linkend="GError">GError</link> **error);
 </synopsis>
 </refsynopsisdiv>
 
@@ -134,7 +135,7 @@
 <para>
 For example, "MA450" would stand for an 80 GB 6th generation iPod Video. See
 <ulink type="http"
-url="http://gtkpod.cvs.sourceforge.net/*checkout*/gtkpod/libgpod/src/itdb_device.c">itdb_device.c</ulink>
+url="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/src/itdb_device.c">itdb_device.c</ulink>
 for a list of supported models.
 </para>
 <para>
@@ -143,9 +144,9 @@
 </para>
 <para>
 Have a look at the <ulink type="http"
-url="http://gtkpod.cvs.sourceforge.net/*checkout*/gtkpod/libgpod/tests/test-photos.c">test-photos</ulink>
+url="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/tests/test-photos.c">test-photos</ulink>
 test program in the <ulink type="http"
-url="http://gtkpod.cvs.sourceforge.net/gtkpod/libgpod/tests/">tests/</ulink>
+url="http://gtkpod.svn.sourceforge.net/svnroot/gtkpod/libgpod/trunk/tests/">tests/</ulink>
 directory of the libgpod source for an example of how to use the interface.
 </para>
 </refsect1>
@@ -181,6 +182,11 @@
     /* set automatically at time of writing the PhotoDB */
     gint32  album_id;
     gint32  prev_album_id;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -198,6 +204,11 @@
     GList *photos;      /* (Itdb_Artwork *)     */
     GList *photoalbums; /* (Itdb_PhotoAlbum *)  */
     Itdb_Device *device;/* iPod device info     */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -211,11 +222,11 @@
 </para></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-add-photo" role="function"/>itdb_photodb_add_photo ()</title>
-<indexterm><primary>itdb_photodb_add_photo</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>* itdb_photodb_add_photo        (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             const <link linkend="gchar">gchar</link> *filename,
-                                             <link linkend="gint">gint</link> position,
-                                             <link linkend="gint">gint</link> rotation,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_photodb_add_photo</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>*       itdb_photodb_add_photo              (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         const <link linkend="gchar">gchar</link> *filename,
+                                                         <link linkend="gint">gint</link> position,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Add a photo to the PhotoDB. The photo is automatically added to the
 first Photoalbum, which by default contains a list of all photos in
@@ -250,13 +261,12 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-add-photo-from-data" role="function"/>itdb_photodb_add_photo_from_data ()</title>
-<indexterm><primary>itdb_photodb_add_photo_from_data</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>* itdb_photodb_add_photo_from_data
-                                            (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             const <link linkend="guchar">guchar</link> *image_data,
-                                             <link linkend="gsize">gsize</link> image_data_len,
-                                             <link linkend="gint">gint</link> position,
-                                             <link linkend="gint">gint</link> rotation,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_photodb_add_photo_from_data</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>*       itdb_photodb_add_photo_from_data    (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         const <link linkend="guchar">guchar</link> *image_data,
+                                                         <link linkend="gsize">gsize</link> image_data_len,
+                                                         <link linkend="gint">gint</link> position,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Add a photo to the PhotoDB. The photo is automatically added to the
 first Photoalbum, which by default contains a list of all photos in
@@ -294,8 +304,47 @@
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
+<title><anchor id="itdb-photodb-add-photo-from-pixbuf" role="function"/>itdb_photodb_add_photo_from_pixbuf ()</title>
+<indexterm><primary>itdb_photodb_add_photo_from_pixbuf</primary></indexterm><programlisting><link linkend="Itdb-Artwork">Itdb_Artwork</link>*       itdb_photodb_add_photo_from_pixbuf  (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         <link linkend="gpointer">gpointer</link> pixbuf,
+                                                         <link linkend="gint">gint</link> position,
+                                                         <link linkend="gint">gint</link> rotation,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Add a photo to the PhotoDB. The photo is automatically added to the
+first Photoalbum, which by default contains a list of all photos in
+the database. If no Photoalbums exist one is created automatically.
+</para>
+<para>
+For the rotation angle you can also use the gdk constants
+GDK_PIXBUF_ROTATE_NONE, ..._COUNTERCLOCKWISE, ..._UPSIDEDOWN AND
+..._CLOCKWISE.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
+<listitem><simpara> the <link linkend="Itdb-PhotoDB"><type>Itdb_PhotoDB</type></link> to add the photo to.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>pixbuf</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link> to use as the image data
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>position</parameter>&nbsp;:</term>
+<listitem><simpara> position where to insert the new photo (-1 to append at
+the end)
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>rotation</parameter>&nbsp;:</term>
+<listitem><simpara> angle by which the image should be rotated
+counterclockwise. Valid values are 0, 90, 180 and 270.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara> return location for a <link linkend="GError"><type>GError</type></link> or NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a pointer to the added photo.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
 <title><anchor id="itdb-photodb-create" role="function"/>itdb_photodb_create ()</title>
-<indexterm><primary>itdb_photodb_create</primary></indexterm><programlisting><link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>* itdb_photodb_create           (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
+<indexterm><primary>itdb_photodb_create</primary></indexterm><programlisting><link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>*       itdb_photodb_create                 (const <link linkend="gchar">gchar</link> *mountpoint);</programlisting>
 <para>
 Creates a new Itdb_PhotoDB. If mountpoint is NULL, you will have to
 set it manually later by calling <link linkend="itdb-device-set-mountpoint"><function>itdb_device_set_mountpoint()</function></link>.</para>
@@ -312,7 +361,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-free" role="function"/>itdb_photodb_free ()</title>
-<indexterm><primary>itdb_photodb_free</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_photodb_free               (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *photodb);</programlisting>
+<indexterm><primary>itdb_photodb_free</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_photodb_free                   (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *photodb);</programlisting>
 <para>
 Free the memory taken by <parameter>photodb</parameter>.</para>
 <para>
@@ -324,8 +373,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-parse" role="function"/>itdb_photodb_parse ()</title>
-<indexterm><primary>itdb_photodb_parse</primary></indexterm><programlisting><link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>* itdb_photodb_parse            (const <link linkend="gchar">gchar</link> *mp,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_photodb_parse</primary></indexterm><programlisting><link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link>*       itdb_photodb_parse                  (const <link linkend="gchar">gchar</link> *mp,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Parses the photo database of an iPod mounted at <parameter>mp</parameter>.</para>
 <para>
@@ -342,11 +391,10 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-photoalbum-add-photo" role="function"/>itdb_photodb_photoalbum_add_photo ()</title>
-<indexterm><primary>itdb_photodb_photoalbum_add_photo</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_photodb_photoalbum_add_photo
-                                            (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
-                                             <link linkend="Itdb-Artwork">Itdb_Artwork</link> *photo,
-                                             <link linkend="gint">gint</link> position);</programlisting>
+<indexterm><primary>itdb_photodb_photoalbum_add_photo</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_photodb_photoalbum_add_photo   (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
+                                                         <link linkend="Itdb-Artwork">Itdb_Artwork</link> *photo,
+                                                         <link linkend="gint">gint</link> position);</programlisting>
 <para>
 Adds a photo already in the library to the specified album
 <parameter>album</parameter>. Photos are automatically added to the first album (Photo
@@ -372,9 +420,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-photoalbum-by-name" role="function"/>itdb_photodb_photoalbum_by_name ()</title>
-<indexterm><primary>itdb_photodb_photoalbum_by_name</primary></indexterm><programlisting><link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>* itdb_photodb_photoalbum_by_name
-                                            (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             const <link linkend="gchar">gchar</link> *albumname);</programlisting>
+<indexterm><primary>itdb_photodb_photoalbum_by_name</primary></indexterm><programlisting><link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>*    itdb_photodb_photoalbum_by_name     (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         const <link linkend="gchar">gchar</link> *albumname);</programlisting>
 <para>
 Find the first photoalbum with a given name or the Photo Library
 Album if called with no name.</para>
@@ -394,10 +441,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-photoalbum-create" role="function"/>itdb_photodb_photoalbum_create ()</title>
-<indexterm><primary>itdb_photodb_photoalbum_create</primary></indexterm><programlisting><link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>* itdb_photodb_photoalbum_create
-                                            (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             const <link linkend="gchar">gchar</link> *albumname,
-                                             <link linkend="gint">gint</link> pos);</programlisting>
+<indexterm><primary>itdb_photodb_photoalbum_create</primary></indexterm><programlisting><link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link>*    itdb_photodb_photoalbum_create      (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         const <link linkend="gchar">gchar</link> *albumname,
+                                                         <link linkend="gint">gint</link> pos);</programlisting>
 <para>
 Create and add a new photoalbum.</para>
 <para>
@@ -418,9 +464,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-photoalbum-remove" role="function"/>itdb_photodb_photoalbum_remove ()</title>
-<indexterm><primary>itdb_photodb_photoalbum_remove</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_photodb_photoalbum_remove  (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
-                                             <link linkend="gboolean">gboolean</link> remove_pics);</programlisting>
+<indexterm><primary>itdb_photodb_photoalbum_remove</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_photodb_photoalbum_remove      (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
+                                                         <link linkend="gboolean">gboolean</link> remove_pics);</programlisting>
 <para>
 Remove <parameter>album</parameter> from the Photo Database. If remove_pics is TRUE,
 remove all photos contained in <parameter>album</parameter> from the Photo Database.
@@ -444,9 +490,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-remove-photo" role="function"/>itdb_photodb_remove_photo ()</title>
-<indexterm><primary>itdb_photodb_remove_photo</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_photodb_remove_photo       (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
-                                             <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
-                                             <link linkend="Itdb-Artwork">Itdb_Artwork</link> *photo);</programlisting>
+<indexterm><primary>itdb_photodb_remove_photo</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_photodb_remove_photo           (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *db,
+                                                         <link linkend="Itdb-PhotoAlbum">Itdb_PhotoAlbum</link> *album,
+                                                         <link linkend="Itdb-Artwork">Itdb_Artwork</link> *photo);</programlisting>
 <para>
 Remove photo. If <parameter>album</parameter> is not the first photoalbum, the photo will
 be removed from that album only. If <parameter>album</parameter> is NULL or the first
@@ -473,8 +519,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-photodb-write" role="function"/>itdb_photodb_write ()</title>
-<indexterm><primary>itdb_photodb_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_photodb_write              (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *photodb,
-                                             <link linkend="GError">GError</link> **error);</programlisting>
+<indexterm><primary>itdb_photodb_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_photodb_write                  (<link linkend="Itdb-PhotoDB">Itdb_PhotoDB</link> *photodb,
+                                                         <link linkend="GError">GError</link> **error);</programlisting>
 <para>
 Write out a PhotoDB.
 </para>

Modified: libgpod/branches/upstream/current/docs/reference/xml/playlists.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/playlists.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/playlists.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,44 +21,43 @@
 
 
 
-            <link linkend="Itdb-Playlist">Itdb_Playlist</link>;
-enum        <link linkend="ItdbPlaylistSortOrder">ItdbPlaylistSortOrder</link>;
-<link linkend="Itdb-Playlist">Itdb_Playlist</link>* <link linkend="itdb-playlist-new">itdb_playlist_new</link>            (const <link linkend="gchar">gchar</link> *title,
-                                             <link linkend="gboolean">gboolean</link> spl);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-free">itdb_playlist_free</link>              (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="Itdb-Playlist">Itdb_Playlist</link>* <link linkend="itdb-playlist-duplicate">itdb_playlist_duplicate</link>      (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-add">itdb_playlist_add</link>               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="gint32">gint32</link> pos);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-move">itdb_playlist_move</link>              (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="guint32">guint32</link> pos);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-remove">itdb_playlist_remove</link>            (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-unlink">itdb_playlist_unlink</link>            (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-add-track">itdb_playlist_add_track</link>         (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             <link linkend="gint32">gint32</link> pos);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-remove-track">itdb_playlist_remove_track</link>      (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-playlist-contains-track">itdb_playlist_contains_track</link>    (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track);
-<link linkend="guint32">guint32</link>     <link linkend="itdb-playlist-contain-track-number">itdb_playlist_contain_track_number</link>
-                                            (<link linkend="Itdb-Track">Itdb_Track</link> *tr);
-<link linkend="guint32">guint32</link>     <link linkend="itdb-playlist-tracks-number">itdb_playlist_tracks_number</link>     (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="Itdb-Playlist">Itdb_Playlist</link>* <link linkend="itdb-playlist-mpl">itdb_playlist_mpl</link>            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-playlist-is-mpl">itdb_playlist_is_mpl</link>            (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-set-mpl">itdb_playlist_set_mpl</link>           (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="Itdb-Playlist">Itdb_Playlist</link>* <link linkend="itdb-playlist-podcasts">itdb_playlist_podcasts</link>       (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-playlist-is-podcasts">itdb_playlist_is_podcasts</link>       (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-set-podcasts">itdb_playlist_set_podcasts</link>      (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-playlist-exists">itdb_playlist_exists</link>            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
-<link linkend="Itdb-Playlist">Itdb_Playlist</link>* <link linkend="itdb-playlist-by-id">itdb_playlist_by_id</link>          (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="guint64">guint64</link> id);
-<link linkend="Itdb-Playlist">Itdb_Playlist</link>* <link linkend="itdb-playlist-by-nr">itdb_playlist_by_nr</link>          (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="guint32">guint32</link> num);
-<link linkend="Itdb-Playlist">Itdb_Playlist</link>* <link linkend="itdb-playlist-by-name">itdb_playlist_by_name</link>        (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="gchar">gchar</link> *name);
-<link linkend="void">void</link>        <link linkend="itdb-playlist-randomize">itdb_playlist_randomize</link>         (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+                    <link linkend="Itdb-Playlist">Itdb_Playlist</link>;
+enum                <link linkend="ItdbPlaylistSortOrder">ItdbPlaylistSortOrder</link>;
+<link linkend="Itdb-Playlist">Itdb_Playlist</link>*      <link linkend="itdb-playlist-new">itdb_playlist_new</link>                   (const <link linkend="gchar">gchar</link> *title,
+                                                         <link linkend="gboolean">gboolean</link> spl);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-free">itdb_playlist_free</link>                  (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="Itdb-Playlist">Itdb_Playlist</link>*      <link linkend="itdb-playlist-duplicate">itdb_playlist_duplicate</link>             (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-add">itdb_playlist_add</link>                   (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="gint32">gint32</link> pos);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-move">itdb_playlist_move</link>                  (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="guint32">guint32</link> pos);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-remove">itdb_playlist_remove</link>                (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-unlink">itdb_playlist_unlink</link>                (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-add-track">itdb_playlist_add_track</link>             (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         <link linkend="gint32">gint32</link> pos);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-remove-track">itdb_playlist_remove_track</link>          (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-playlist-contains-track">itdb_playlist_contains_track</link>        (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track);
+<link linkend="guint32">guint32</link>             <link linkend="itdb-playlist-contain-track-number">itdb_playlist_contain_track_number</link>  (<link linkend="Itdb-Track">Itdb_Track</link> *tr);
+<link linkend="guint32">guint32</link>             <link linkend="itdb-playlist-tracks-number">itdb_playlist_tracks_number</link>         (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="Itdb-Playlist">Itdb_Playlist</link>*      <link linkend="itdb-playlist-mpl">itdb_playlist_mpl</link>                   (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-playlist-is-mpl">itdb_playlist_is_mpl</link>                (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-set-mpl">itdb_playlist_set_mpl</link>               (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="Itdb-Playlist">Itdb_Playlist</link>*      <link linkend="itdb-playlist-podcasts">itdb_playlist_podcasts</link>              (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-playlist-is-podcasts">itdb_playlist_is_podcasts</link>           (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-set-podcasts">itdb_playlist_set_podcasts</link>          (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-playlist-exists">itdb_playlist_exists</link>                (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
+<link linkend="Itdb-Playlist">Itdb_Playlist</link>*      <link linkend="itdb-playlist-by-id">itdb_playlist_by_id</link>                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="guint64">guint64</link> id);
+<link linkend="Itdb-Playlist">Itdb_Playlist</link>*      <link linkend="itdb-playlist-by-nr">itdb_playlist_by_nr</link>                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="guint32">guint32</link> num);
+<link linkend="Itdb-Playlist">Itdb_Playlist</link>*      <link linkend="itdb-playlist-by-name">itdb_playlist_by_name</link>               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="gchar">gchar</link> *name);
+<link linkend="void">void</link>                <link linkend="itdb-playlist-randomize">itdb_playlist_randomize</link>             (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);
 </synopsis>
 </refsynopsisdiv>
 
@@ -93,14 +92,19 @@
     gint  num;            /* number of tracks in playlist          */
     GList *members;       /* tracks in playlist (Track *)          */
     gboolean is_spl;      /* smart playlist?                       */
-    guint32 timestamp;    /* timestamp of playlist creation        */
+    time_t timestamp;     /* timestamp of playlist creation        */
     guint64 id;           /* playlist ID                           */
     guint32 sortorder;    /* How to sort playlist -- see below     */
     guint32 podcastflag;  /* ITDB_PL_FLAG_NORM/_PODCAST            */
-    SPLPref splpref;      /* smart playlist prefs                  */
-    SPLRules splrules;    /* rules for smart playlists             */
-    gpointer reserved1;   /* reserved for MHOD100 implementation   */
-    gpointer reserved2;   /* reserved for MHOD100 implementation   */
+    Itdb_SPLPref splpref;      /* smart playlist prefs                  */
+    Itdb_SPLRules splrules;    /* rules for smart playlists             */
+    gpointer reserved100; /* reserved for MHOD100 implementation   */
+    gpointer reserved101; /* reserved for MHOD100 implementation   */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -151,8 +155,8 @@
 </para></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-new" role="function"/>itdb_playlist_new ()</title>
-<indexterm><primary>itdb_playlist_new</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>* itdb_playlist_new            (const <link linkend="gchar">gchar</link> *title,
-                                             <link linkend="gboolean">gboolean</link> spl);</programlisting>
+<indexterm><primary>itdb_playlist_new</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>*      itdb_playlist_new                   (const <link linkend="gchar">gchar</link> *title,
+                                                         <link linkend="gboolean">gboolean</link> spl);</programlisting>
 <para>
 Creates a new playlist. If <parameter>spl</parameter> is TRUE, a smart
 playlist is generated. pl->id is set by <link linkend="itdb-playlist-add"><function>itdb_playlist_add()</function></link> when the 
@@ -172,7 +176,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-free" role="function"/>itdb_playlist_free ()</title>
-<indexterm><primary>itdb_playlist_free</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_free              (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_free</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_free                  (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Frees the memory used by playlist <parameter>pl</parameter>.</para>
 <para>
@@ -184,7 +188,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-duplicate" role="function"/>itdb_playlist_duplicate ()</title>
-<indexterm><primary>itdb_playlist_duplicate</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>* itdb_playlist_duplicate      (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_duplicate</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>*      itdb_playlist_duplicate             (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Duplicates an existing playlist. pl_dup-&gt;id is set to zero, so that
 it will be set to a unique value when adding it to an <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link>. The
@@ -201,9 +205,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-add" role="function"/>itdb_playlist_add ()</title>
-<indexterm><primary>itdb_playlist_add</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_add               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="gint32">gint32</link> pos);</programlisting>
+<indexterm><primary>itdb_playlist_add</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_add                   (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="gint32">gint32</link> pos);</programlisting>
 <para>
 Adds playlist <parameter>pl</parameter> to the database <parameter>itdb</parameter> at position <parameter>pos</parameter> (-1 for
 "append to end"). A unique id is created if pl-&gt;id is equal to
@@ -224,8 +228,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-move" role="function"/>itdb_playlist_move ()</title>
-<indexterm><primary>itdb_playlist_move</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_move              (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="guint32">guint32</link> pos);</programlisting>
+<indexterm><primary>itdb_playlist_move</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_move                  (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="guint32">guint32</link> pos);</programlisting>
 <para>
 Moves playlist <parameter>pl</parameter> to position <parameter>pos</parameter></para>
 <para>
@@ -240,7 +244,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-remove" role="function"/>itdb_playlist_remove ()</title>
-<indexterm><primary>itdb_playlist_remove</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_remove            (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_remove</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_remove                (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Removes <parameter>pl</parameter> from the <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> it's associated with 
 and frees memory</para>
@@ -253,7 +257,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-unlink" role="function"/>itdb_playlist_unlink ()</title>
-<indexterm><primary>itdb_playlist_unlink</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_unlink            (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_unlink</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_unlink                (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Remove <parameter>pl</parameter> from the <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> it's associated with but do not free 
 memory. pl-&gt;itdb is set to NULL after this function returns</para>
@@ -266,9 +270,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-add-track" role="function"/>itdb_playlist_add_track ()</title>
-<indexterm><primary>itdb_playlist_add_track</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_add_track         (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             <link linkend="gint32">gint32</link> pos);</programlisting>
+<indexterm><primary>itdb_playlist_add_track</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_add_track             (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         <link linkend="gint32">gint32</link> pos);</programlisting>
 <para>
 Adds <parameter>track</parameter> to <parameter>pl</parameter> at position <parameter>pos</parameter> (-1 for "append to
 end")</para>
@@ -287,8 +291,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-remove-track" role="function"/>itdb_playlist_remove_track ()</title>
-<indexterm><primary>itdb_playlist_remove_track</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_remove_track      (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
+<indexterm><primary>itdb_playlist_remove_track</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_remove_track          (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
 <para>
 Removes <parameter>track</parameter> from <parameter>pl</parameter>. If <parameter>pl</parameter> is NULL, removes <parameter>track</parameter> from the
 master playlist. If <parameter>track</parameter> can't be found in <parameter>pl</parameter>, nothing happens. If after
@@ -306,8 +310,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-contains-track" role="function"/>itdb_playlist_contains_track ()</title>
-<indexterm><primary>itdb_playlist_contains_track</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_playlist_contains_track    (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
+<indexterm><primary>itdb_playlist_contains_track</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_playlist_contains_track        (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
 <para>
 Checks if <parameter>track</parameter> is in <parameter>pl</parameter>.</para>
 <para>
@@ -324,8 +328,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-contain-track-number" role="function"/>itdb_playlist_contain_track_number ()</title>
-<indexterm><primary>itdb_playlist_contain_track_number</primary></indexterm><programlisting><link linkend="guint32">guint32</link>     itdb_playlist_contain_track_number
-                                            (<link linkend="Itdb-Track">Itdb_Track</link> *tr);</programlisting>
+<indexterm><primary>itdb_playlist_contain_track_number</primary></indexterm><programlisting><link linkend="guint32">guint32</link>             itdb_playlist_contain_track_number  (<link linkend="Itdb-Track">Itdb_Track</link> *tr);</programlisting>
 <para>
 Counts the number of playlist <parameter>track</parameter> is a member of (not including the 
 master playlist)</para>
@@ -340,7 +343,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-tracks-number" role="function"/>itdb_playlist_tracks_number ()</title>
-<indexterm><primary>itdb_playlist_tracks_number</primary></indexterm><programlisting><link linkend="guint32">guint32</link>     itdb_playlist_tracks_number     (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_tracks_number</primary></indexterm><programlisting><link linkend="guint32">guint32</link>             itdb_playlist_tracks_number         (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Counts the number of tracks in <parameter>pl</parameter></para>
 <para>
@@ -354,7 +357,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-mpl" role="function"/>itdb_playlist_mpl ()</title>
-<indexterm><primary>itdb_playlist_mpl</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>* itdb_playlist_mpl            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_playlist_mpl</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>*      itdb_playlist_mpl                   (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Gets the master playlist of <parameter>itdb</parameter></para>
 <para>
@@ -368,7 +371,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-is-mpl" role="function"/>itdb_playlist_is_mpl ()</title>
-<indexterm><primary>itdb_playlist_is_mpl</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_playlist_is_mpl            (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_is_mpl</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_playlist_is_mpl                (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Checks if <parameter>pl</parameter> is the master playlist</para>
 <para>
@@ -382,7 +385,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-set-mpl" role="function"/>itdb_playlist_set_mpl ()</title>
-<indexterm><primary>itdb_playlist_set_mpl</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_set_mpl           (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_set_mpl</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_set_mpl               (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Sets <parameter>pl</parameter> to be a master playlist</para>
 <para>
@@ -394,7 +397,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-podcasts" role="function"/>itdb_playlist_podcasts ()</title>
-<indexterm><primary>itdb_playlist_podcasts</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>* itdb_playlist_podcasts       (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_playlist_podcasts</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>*      itdb_playlist_podcasts              (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Gets the podcasts playlist of <parameter>itdb</parameter></para>
 <para>
@@ -408,7 +411,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-is-podcasts" role="function"/>itdb_playlist_is_podcasts ()</title>
-<indexterm><primary>itdb_playlist_is_podcasts</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_playlist_is_podcasts       (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_is_podcasts</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_playlist_is_podcasts           (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Checks if <parameter>pl</parameter> is the podcasts playlist</para>
 <para>
@@ -422,7 +425,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-set-podcasts" role="function"/>itdb_playlist_set_podcasts ()</title>
-<indexterm><primary>itdb_playlist_set_podcasts</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_set_podcasts      (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_set_podcasts</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_set_podcasts          (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Set <parameter>pl</parameter> to be a podcasts playlist</para>
 <para>
@@ -434,8 +437,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-exists" role="function"/>itdb_playlist_exists ()</title>
-<indexterm><primary>itdb_playlist_exists</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_playlist_exists            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_exists</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_playlist_exists                (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Checks if <parameter>pl</parameter> is present in <parameter>db</parameter></para>
 <para>
@@ -452,8 +455,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-by-id" role="function"/>itdb_playlist_by_id ()</title>
-<indexterm><primary>itdb_playlist_by_id</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>* itdb_playlist_by_id          (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="guint64">guint64</link> id);</programlisting>
+<indexterm><primary>itdb_playlist_by_id</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>*      itdb_playlist_by_id                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="guint64">guint64</link> id);</programlisting>
 <para>
 Looks up a playlist whose ID is <parameter>id</parameter></para>
 <para>
@@ -471,8 +474,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-by-nr" role="function"/>itdb_playlist_by_nr ()</title>
-<indexterm><primary>itdb_playlist_by_nr</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>* itdb_playlist_by_nr          (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="guint32">guint32</link> num);</programlisting>
+<indexterm><primary>itdb_playlist_by_nr</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>*      itdb_playlist_by_nr                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="guint32">guint32</link> num);</programlisting>
 <para>
 Gets the playlist at the given position in <parameter>itdb</parameter></para>
 <para>
@@ -489,8 +492,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-by-name" role="function"/>itdb_playlist_by_name ()</title>
-<indexterm><primary>itdb_playlist_by_name</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>* itdb_playlist_by_name        (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="gchar">gchar</link> *name);</programlisting>
+<indexterm><primary>itdb_playlist_by_name</primary></indexterm><programlisting><link linkend="Itdb-Playlist">Itdb_Playlist</link>*      itdb_playlist_by_name               (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="gchar">gchar</link> *name);</programlisting>
 <para>
 Searches a playlist whose name is <parameter>name</parameter> in <parameter>itdb</parameter></para>
 <para>
@@ -508,7 +511,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-playlist-randomize" role="function"/>itdb_playlist_randomize ()</title>
-<indexterm><primary>itdb_playlist_randomize</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_playlist_randomize         (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
+<indexterm><primary>itdb_playlist_randomize</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_playlist_randomize             (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl);</programlisting>
 <para>
 Randomizes <parameter>pl</parameter></para>
 <para>

Modified: libgpod/branches/upstream/current/docs/reference/xml/smart-playlists.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/smart-playlists.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/smart-playlists.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,34 +21,37 @@
 
 
 
-            <link linkend="SPLPref">SPLPref</link>;
-            <link linkend="SPLRule">SPLRule</link>;
-            <link linkend="SPLRules">SPLRules</link>;
-enum        <link linkend="SPLAction">SPLAction</link>;
-enum        <link linkend="SPLFieldType">SPLFieldType</link>;
-enum        <link linkend="SPLActionType">SPLActionType</link>;
-enum        <link linkend="SPLField">SPLField</link>;
-#define     <link linkend="SPLDATE-IDENTIFIER:CAPS">SPLDATE_IDENTIFIER</link>
-#define     <link linkend="SPL-MAXSTRINGLENGTH:CAPS">SPL_MAXSTRINGLENGTH</link>
-#define     <link linkend="SPL-STRING-MAXLEN:CAPS">SPL_STRING_MAXLEN</link>
-<link linkend="SPLFieldType">SPLFieldType</link> <link linkend="itdb-splr-get-field-type">itdb_splr_get_field_type</link>       (const <link linkend="SPLRule">SPLRule</link> *splr);
-<link linkend="SPLActionType">SPLActionType</link> <link linkend="itdb-splr-get-action-type">itdb_splr_get_action_type</link>     (const <link linkend="SPLRule">SPLRule</link> *splr);
-<link linkend="void">void</link>        <link linkend="itdb-splr-validate">itdb_splr_validate</link>              (<link linkend="SPLRule">SPLRule</link> *splr);
-<link linkend="void">void</link>        <link linkend="itdb-splr-remove">itdb_splr_remove</link>                (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="SPLRule">SPLRule</link> *splr);
-<link linkend="SPLRule">SPLRule</link>*    <link linkend="itdb-splr-new">itdb_splr_new</link>                   (void);
-<link linkend="void">void</link>        <link linkend="itdb-splr-add">itdb_splr_add</link>                   (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="SPLRule">SPLRule</link> *splr,
-                                             <link linkend="gint">gint</link> pos);
-<link linkend="SPLRule">SPLRule</link>*    <link linkend="itdb-splr-add-new">itdb_splr_add_new</link>               (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="gint">gint</link> pos);
-<link linkend="void">void</link>        <link linkend="itdb-spl-copy-rules">itdb_spl_copy_rules</link>             (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *dest,
-                                             <link linkend="Itdb-Playlist">Itdb_Playlist</link> *src);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-splr-eval">itdb_splr_eval</link>                  (<link linkend="SPLRule">SPLRule</link> *splr,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track);
-<link linkend="void">void</link>        <link linkend="itdb-spl-update">itdb_spl_update</link>                 (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *spl);
-<link linkend="void">void</link>        <link linkend="itdb-spl-update-all">itdb_spl_update_all</link>             (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="void">void</link>        <link linkend="itdb-spl-update-live">itdb_spl_update_live</link>            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+                    <link linkend="Itdb-SPLPref">Itdb_SPLPref</link>;
+                    <link linkend="Itdb-SPLRule">Itdb_SPLRule</link>;
+                    <link linkend="Itdb-SPLRules">Itdb_SPLRules</link>;
+enum                <link linkend="ItdbLimitSort">ItdbLimitSort</link>;
+enum                <link linkend="ItdbLimitType">ItdbLimitType</link>;
+enum                <link linkend="ItdbSPLAction">ItdbSPLAction</link>;
+enum                <link linkend="ItdbSPLActionLast">ItdbSPLActionLast</link>;
+enum                <link linkend="ItdbSPLActionType">ItdbSPLActionType</link>;
+enum                <link linkend="ItdbSPLField">ItdbSPLField</link>;
+enum                <link linkend="ItdbSPLFieldType">ItdbSPLFieldType</link>;
+enum                <link linkend="ItdbSPLMatch">ItdbSPLMatch</link>;
+#define             <link linkend="ITDB-SPL-DATE-IDENTIFIER:CAPS">ITDB_SPL_DATE_IDENTIFIER</link>
+#define             <link linkend="ITDB-SPL-STRING-MAXLEN:CAPS">ITDB_SPL_STRING_MAXLEN</link>
+<link linkend="ItdbSPLFieldType">ItdbSPLFieldType</link>    <link linkend="itdb-splr-get-field-type">itdb_splr_get_field_type</link>            (const <link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr);
+<link linkend="ItdbSPLActionType">ItdbSPLActionType</link>   <link linkend="itdb-splr-get-action-type">itdb_splr_get_action_type</link>           (const <link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr);
+<link linkend="void">void</link>                <link linkend="itdb-splr-validate">itdb_splr_validate</link>                  (<link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr);
+<link linkend="void">void</link>                <link linkend="itdb-splr-remove">itdb_splr_remove</link>                    (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr);
+<link linkend="Itdb-SPLRule">Itdb_SPLRule</link>*       <link linkend="itdb-splr-new">itdb_splr_new</link>                       (void);
+<link linkend="void">void</link>                <link linkend="itdb-splr-add">itdb_splr_add</link>                       (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr,
+                                                         <link linkend="gint">gint</link> pos);
+<link linkend="Itdb-SPLRule">Itdb_SPLRule</link>*       <link linkend="itdb-splr-add-new">itdb_splr_add_new</link>                   (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="gint">gint</link> pos);
+<link linkend="void">void</link>                <link linkend="itdb-spl-copy-rules">itdb_spl_copy_rules</link>                 (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *dest,
+                                                         <link linkend="Itdb-Playlist">Itdb_Playlist</link> *src);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-splr-eval">itdb_splr_eval</link>                      (<link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track);
+<link linkend="void">void</link>                <link linkend="itdb-spl-update">itdb_spl_update</link>                     (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *spl);
+<link linkend="void">void</link>                <link linkend="itdb-spl-update-all">itdb_spl_update_all</link>                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="void">void</link>                <link linkend="itdb-spl-update-live">itdb_spl_update_live</link>                (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
 </synopsis>
 </refsynopsisdiv>
 
@@ -70,8 +73,8 @@
 <refsect1 role="details">
 <title role="details.title">Details</title>
 <refsect2>
-<title><anchor id="SPLPref" role="struct"/>SPLPref</title>
-<indexterm><primary>SPLPref</primary></indexterm><programlisting>typedef struct {
+<title><anchor id="Itdb-SPLPref" role="struct"/>Itdb_SPLPref</title>
+<indexterm><primary>Itdb_SPLPref</primary></indexterm><programlisting>typedef struct {
     guint8  liveupdate;        /* "live Updating" check box */
     guint8  checkrules;        /* "Match X of the following
 				  conditions" check box */
@@ -80,16 +83,20 @@
     guint32 limitsort;         /* See types defined above */
     guint32 limitvalue;        /* The value typed next to "Limit
 				  type" */
-    guint8  matchcheckedonly;  /* "Match only checked songs" check
-				  box */
-} SPLPref;
+    guint8  matchcheckedonly;  /* "Match only checked songs" check box */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
+} Itdb_SPLPref;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPLRule" role="struct"/>SPLRule</title>
-<indexterm><primary>SPLRule</primary></indexterm><programlisting>typedef struct {
+<title><anchor id="Itdb-SPLRule" role="struct"/>Itdb_SPLRule</title>
+<indexterm><primary>Itdb_SPLRule</primary></indexterm><programlisting>typedef struct {
     guint32 field;
     guint32 action;
     gchar *string;             /* data in UTF8  */
@@ -114,203 +121,272 @@
     guint32 unk060;
     guint32 unk064;
     guint32 unk068;
-} SPLRule;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
+} Itdb_SPLRule;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPLRules" role="struct"/>SPLRules</title>
-<indexterm><primary>SPLRules</primary></indexterm><programlisting>typedef struct {
+<title><anchor id="Itdb-SPLRules" role="struct"/>Itdb_SPLRules</title>
+<indexterm><primary>Itdb_SPLRules</primary></indexterm><programlisting>typedef struct {
     guint32 unk004;
-    guint32 match_operator;  /* "All" (logical AND): SPLMATCH_AND,
-				"Any" (logical OR): SPLMATCH_OR */
+    guint32 match_operator;  /* "All" (logical AND): Itdb_SPLMATCH_AND,
+				"Any" (logical OR): Itdb_SPLMATCH_OR */
     GList *rules;
-} SPLRules;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
+} Itdb_SPLRules;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPLAction" role="enum"/>enum SPLAction</title>
-<indexterm><primary>SPLAction</primary></indexterm><programlisting>typedef enum {
-    SPLACTION_IS_INT = 0x00000001,          /* "Is Set" in iTunes */
-    SPLACTION_IS_GREATER_THAN = 0x00000010, /* "Is After" in iTunes */
-    SPLACTION_IS_LESS_THAN = 0x00000040,    /* "Is Before" in iTunes */
-    SPLACTION_IS_IN_THE_RANGE = 0x00000100,
-    SPLACTION_IS_IN_THE_LAST = 0x00000200,
+<title><anchor id="ItdbLimitSort" role="enum"/>enum ItdbLimitSort</title>
+<indexterm><primary>ItdbLimitSort</primary></indexterm><programlisting>typedef enum {
+    ITDB_LIMITSORT_RANDOM = 0x02,
+    ITDB_LIMITSORT_SONG_NAME = 0x03,
+    ITDB_LIMITSORT_ALBUM = 0x04,
+    ITDB_LIMITSORT_ARTIST = 0x05,
+    ITDB_LIMITSORT_GENRE = 0x07,
+    ITDB_LIMITSORT_MOST_RECENTLY_ADDED = 0x10,
+    ITDB_LIMITSORT_LEAST_RECENTLY_ADDED = 0x80000010, /* See note above */
+    ITDB_LIMITSORT_MOST_OFTEN_PLAYED = 0x14,
+    ITDB_LIMITSORT_LEAST_OFTEN_PLAYED = 0x80000014,   /* See note above */
+    ITDB_LIMITSORT_MOST_RECENTLY_PLAYED = 0x15,
+    ITDB_LIMITSORT_LEAST_RECENTLY_PLAYED = 0x80000015,/* See note above */
+    ITDB_LIMITSORT_HIGHEST_RATING = 0x17,
+    ITDB_LIMITSORT_LOWEST_RATING = 0x80000017,        /* See note above */
+} ItdbLimitSort;
+</programlisting>
+<para>
 
-    SPLACTION_IS_STRING = 0x01000001,
-    SPLACTION_CONTAINS = 0x01000002,
-    SPLACTION_STARTS_WITH = 0x01000004,
-    SPLACTION_ENDS_WITH = 0x01000008,
+</para></refsect2>
+<refsect2>
+<title><anchor id="ItdbLimitType" role="enum"/>enum ItdbLimitType</title>
+<indexterm><primary>ItdbLimitType</primary></indexterm><programlisting>typedef enum {
+    ITDB_LIMITTYPE_MINUTES = 0x01,
+    ITDB_LIMITTYPE_MB      = 0x02,
+    ITDB_LIMITTYPE_SONGS   = 0x03,
+    ITDB_LIMITTYPE_HOURS   = 0x04,
+    ITDB_LIMITTYPE_GB      = 0x05
+} ItdbLimitType;
+</programlisting>
+<para>
 
-    SPLACTION_IS_NOT_INT = 0x02000001,     /* "Is Not Set" in iTunes */
+</para></refsect2>
+<refsect2>
+<title><anchor id="ItdbSPLAction" role="enum"/>enum ItdbSPLAction</title>
+<indexterm><primary>ItdbSPLAction</primary></indexterm><programlisting>typedef enum {
+    ITDB_SPLACTION_IS_INT = 0x00000001,          /* "Is Set" in iTunes */
+    ITDB_SPLACTION_IS_GREATER_THAN = 0x00000010, /* "Is After" in iTunes */
+    ITDB_SPLACTION_IS_LESS_THAN = 0x00000040,    /* "Is Before" in iTunes */
+    ITDB_SPLACTION_IS_IN_THE_RANGE = 0x00000100,
+    ITDB_SPLACTION_IS_IN_THE_LAST = 0x00000200,
+    ITDB_SPLACTION_BINARY_AND = 0x00000400,
 
+    ITDB_SPLACTION_IS_STRING = 0x01000001,
+    ITDB_SPLACTION_CONTAINS = 0x01000002,
+    ITDB_SPLACTION_STARTS_WITH = 0x01000004,
+    ITDB_SPLACTION_ENDS_WITH = 0x01000008,
+
+    ITDB_SPLACTION_IS_NOT_INT = 0x02000001,     /* "Is Not Set" in iTunes */
+
     /* Note: Not available in iTunes 4.5 (untested on iPod) */
-    SPLACTION_IS_NOT_GREATER_THAN = 0x02000010,
+    ITDB_SPLACTION_IS_NOT_GREATER_THAN = 0x02000010,
     /* Note: Not available in iTunes 4.5 (untested on iPod) */
-    SPLACTION_IS_NOT_LESS_THAN = 0x02000040,
+    ITDB_SPLACTION_IS_NOT_LESS_THAN = 0x02000040,
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_IS_NOT_IN_THE_RANGE = 0x02000100,
+    ITDB_SPLACTION_IS_NOT_IN_THE_RANGE = 0x02000100,
 
-    SPLACTION_IS_NOT_IN_THE_LAST = 0x02000200,
-    SPLACTION_IS_NOT = 0x03000001,
-    SPLACTION_DOES_NOT_CONTAIN = 0x03000002,
+    ITDB_SPLACTION_IS_NOT_IN_THE_LAST = 0x02000200,
+    ITDB_SPLACTION_IS_NOT = 0x03000001,
+    ITDB_SPLACTION_DOES_NOT_CONTAIN = 0x03000002,
 
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_DOES_NOT_START_WITH = 0x03000004,
+    ITDB_SPLACTION_DOES_NOT_START_WITH = 0x03000004,
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_DOES_NOT_END_WITH = 0x03000008,
-} SPLAction;
+    ITDB_SPLACTION_DOES_NOT_END_WITH = 0x03000008,
+} ItdbSPLAction;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPLFieldType" role="enum"/>enum SPLFieldType</title>
-<indexterm><primary>SPLFieldType</primary></indexterm><programlisting>typedef enum
-{
-    splft_string = 1,
-    splft_int,
-    splft_boolean,
-    splft_date,
-    splft_playlist,
-    splft_unknown
-} SPLFieldType;
+<title><anchor id="ItdbSPLActionLast" role="enum"/>enum ItdbSPLActionLast</title>
+<indexterm><primary>ItdbSPLActionLast</primary></indexterm><programlisting>typedef enum {
+    ITDB_SPLACTION_LAST_DAYS_VALUE = 86400,    /* nr of secs in 24 hours */
+    ITDB_SPLACTION_LAST_WEEKS_VALUE = 604800,  /* nr of secs in 7 days   */
+    ITDB_SPLACTION_LAST_MONTHS_VALUE = 2628000,/* nr of secs in 30.4167
+					     days ~= 1 month */
+} ItdbSPLActionLast;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPLActionType" role="enum"/>enum SPLActionType</title>
-<indexterm><primary>SPLActionType</primary></indexterm><programlisting>typedef enum
+<title><anchor id="ItdbSPLActionType" role="enum"/>enum ItdbSPLActionType</title>
+<indexterm><primary>ItdbSPLActionType</primary></indexterm><programlisting>typedef enum
 {
-    splat_string = 1,
-    splat_int,
-    splat_date,
-    splat_range_int,
-    splat_range_date,
-    splat_inthelast,
-    splat_playlist,
-    splat_none,
-    splat_invalid,
-    splat_unknown
-} SPLActionType;
+    ITDB_SPLAT_STRING = 1,
+    ITDB_SPLAT_INT,
+    ITDB_SPLAT_DATE,
+    ITDB_SPLAT_RANGE_INT,
+    ITDB_SPLAT_RANGE_DATE,
+    ITDB_SPLAT_INTHELAST,
+    ITDB_SPLAT_PLAYLIST,
+    ITDB_SPLAT_NONE,
+    ITDB_SPLAT_INVALID,
+    ITDB_SPLAT_UNKNOWN,
+    ITDB_SPLAT_BINARY_AND
+} ItdbSPLActionType;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPLField" role="enum"/>enum SPLField</title>
-<indexterm><primary>SPLField</primary></indexterm><programlisting>typedef enum {
-    SPLFIELD_SONG_NAME = 0x02,    /* String */
-    SPLFIELD_ALBUM = 0x03,        /* String */
-    SPLFIELD_ARTIST = 0x04,       /* String */
-    SPLFIELD_BITRATE = 0x05,      /* Int (e.g. from/to = 128) */
-    SPLFIELD_SAMPLE_RATE = 0x06,  /* Int  (e.g. from/to = 44100) */
-    SPLFIELD_YEAR = 0x07,         /* Int  (e.g. from/to = 2004) */
-    SPLFIELD_GENRE = 0x08,        /* String */
-    SPLFIELD_KIND = 0x09,         /* String */
-    SPLFIELD_DATE_MODIFIED = 0x0a,/* Int/Mac Timestamp (e.g. from/to =
+<title><anchor id="ItdbSPLField" role="enum"/>enum ItdbSPLField</title>
+<indexterm><primary>ItdbSPLField</primary></indexterm><programlisting>typedef enum {
+    ITDB_SPLFIELD_SONG_NAME = 0x02,    /* String */
+    ITDB_SPLFIELD_ALBUM = 0x03,        /* String */
+    ITDB_SPLFIELD_ARTIST = 0x04,       /* String */
+    ITDB_SPLFIELD_BITRATE = 0x05,      /* Int (e.g. from/to = 128) */
+    ITDB_SPLFIELD_SAMPLE_RATE = 0x06,  /* Int  (e.g. from/to = 44100) */
+    ITDB_SPLFIELD_YEAR = 0x07,         /* Int  (e.g. from/to = 2004) */
+    ITDB_SPLFIELD_GENRE = 0x08,        /* String */
+    ITDB_SPLFIELD_KIND = 0x09,         /* String */
+    ITDB_SPLFIELD_DATE_MODIFIED = 0x0a,/* Int/Mac Timestamp (e.g. from/to =
                                      bcf93280 == is before 6/19/2004)*/
-    SPLFIELD_TRACKNUMBER = 0x0b,  /* Int (e.g. from = 1, to = 2) */
-    SPLFIELD_SIZE = 0x0c,         /* Int (e.g. from/to = 0x00600000
+    ITDB_SPLFIELD_TRACKNUMBER = 0x0b,  /* Int (e.g. from = 1, to = 2) */
+    ITDB_SPLFIELD_SIZE = 0x0c,         /* Int (e.g. from/to = 0x00600000
 				     for 6MB) */
-    SPLFIELD_TIME = 0x0d,         /* Int (e.g. from/to = 83999 for
+    ITDB_SPLFIELD_TIME = 0x0d,         /* Int (e.g. from/to = 83999 for
 				     1:23/83 seconds) */
-    SPLFIELD_COMMENT = 0x0e,      /* String */
-    SPLFIELD_DATE_ADDED = 0x10,   /* Int/Mac Timestamp (e.g. from/to =
+    ITDB_SPLFIELD_COMMENT = 0x0e,      /* String */
+    ITDB_SPLFIELD_DATE_ADDED = 0x10,   /* Int/Mac Timestamp (e.g. from/to =
                                      bcfa83ff == is after 6/19/2004) */
-    SPLFIELD_COMPOSER = 0x12,     /* String */
-    SPLFIELD_PLAYCOUNT = 0x16,    /* Int  (e.g. from/to = 1) */
-    SPLFIELD_LAST_PLAYED = 0x17,  /* Int/Mac Timestamp (e.g. from =
+    ITDB_SPLFIELD_COMPOSER = 0x12,     /* String */
+    ITDB_SPLFIELD_PLAYCOUNT = 0x16,    /* Int  (e.g. from/to = 1) */
+    ITDB_SPLFIELD_LAST_PLAYED = 0x17,  /* Int/Mac Timestamp (e.g. from =
                                      bcfa83ff (6/19/2004) to =
                                      0xbcfbd57f (6/20/2004)) */
-    SPLFIELD_DISC_NUMBER = 0x18,  /* Int  (e.g. from/to = 1) */
-    SPLFIELD_RATING = 0x19,       /* Int/Stars Rating (e.g. from/to =
+    ITDB_SPLFIELD_DISC_NUMBER = 0x18,  /* Int  (e.g. from/to = 1) */
+    ITDB_SPLFIELD_RATING = 0x19,       /* Int/Stars Rating (e.g. from/to =
                                      60 (3 stars)) */
-    SPLFIELD_COMPILATION = 0x1f,  /* Int (e.g. is set -&gt;
-				     SPLACTION_IS_INT/from=1,
+    ITDB_SPLFIELD_COMPILATION = 0x1f,  /* Int (e.g. is set -&gt;
+				     ITDB_SPLACTION_IS_INT/from=1,
 				     is not set -&gt;
-				     SPLACTION_IS_NOT_INT/from=1) */
-    SPLFIELD_BPM = 0x23,          /* Int  (e.g. from/to = 60) */
-    SPLFIELD_GROUPING = 0x27,     /* String */
-    SPLFIELD_PLAYLIST = 0x28,     /* XXX - Unknown...not parsed
+				     ITDB_SPLACTION_IS_NOT_INT/from=1) */
+    ITDB_SPLFIELD_BPM = 0x23,          /* Int  (e.g. from/to = 60) */
+    ITDB_SPLFIELD_GROUPING = 0x27,     /* String */
+    ITDB_SPLFIELD_PLAYLIST = 0x28,     /* FIXME - Unknown...not parsed
 				     correctly...from/to = 0xb6fbad5f
-				     for * "Purchased Music".  Extra
-				     data after * "to"... */
-} SPLField;
+				     for "Purchased Music".  Extra
+				     data after "to"... */
+    ITDB_SPLFIELD_VIDEO_KIND = 0x3c,   /* Logic Int */
+    ITDB_SPLFIELD_TVSHOW = 0x3e,       /* String */
+    ITDB_SPLFIELD_SEASON_NR = 0x3f,    /* Int */
+    ITDB_SPLFIELD_SKIPCOUNT = 0x44,    /* Int */
+    ITDB_SPLFIELD_LAST_SKIPPED = 0x45, /* Int/Mac Timestamp */
+    ITDB_SPLFIELD_ALBUMARTIST = 0x47   /* String */
+} ItdbSPLField;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPLDATE-IDENTIFIER:CAPS" role="macro"/>SPLDATE_IDENTIFIER</title>
-<indexterm><primary>SPLDATE_IDENTIFIER</primary></indexterm><programlisting>#define SPLDATE_IDENTIFIER (G_GINT64_CONSTANT (0x2dae2dae2dae2daeU))
+<title><anchor id="ItdbSPLFieldType" role="enum"/>enum ItdbSPLFieldType</title>
+<indexterm><primary>ItdbSPLFieldType</primary></indexterm><programlisting>typedef enum
+{
+    ITDB_SPLFT_STRING = 1,
+    ITDB_SPLFT_INT,
+    ITDB_SPLFT_BOOLEAN,
+    ITDB_SPLFT_DATE,
+    ITDB_SPLFT_PLAYLIST,
+    ITDB_SPLFT_UNKNOWN,
+    ITDB_SPLFT_BINARY_AND
+} ItdbSPLFieldType;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPL-MAXSTRINGLENGTH:CAPS" role="macro"/>SPL_MAXSTRINGLENGTH</title>
-<indexterm><primary>SPL_MAXSTRINGLENGTH</primary></indexterm><programlisting>#define SPL_MAXSTRINGLENGTH 255
+<title><anchor id="ItdbSPLMatch" role="enum"/>enum ItdbSPLMatch</title>
+<indexterm><primary>ItdbSPLMatch</primary></indexterm><programlisting>typedef enum { /* types for match_operator */
+    ITDB_SPLMATCH_AND = 0, /* AND rule - all of the rules must be true in
+			 order for the combined rule to be applied */
+    ITDB_SPLMATCH_OR = 1   /* OR rule */
+} ItdbSPLMatch;
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
-<title><anchor id="SPL-STRING-MAXLEN:CAPS" role="macro"/>SPL_STRING_MAXLEN</title>
-<indexterm><primary>SPL_STRING_MAXLEN</primary></indexterm><programlisting>#define SPL_STRING_MAXLEN 255
+<title><anchor id="ITDB-SPL-DATE-IDENTIFIER:CAPS" role="macro"/>ITDB_SPL_DATE_IDENTIFIER</title>
+<indexterm><primary>ITDB_SPL_DATE_IDENTIFIER</primary></indexterm><programlisting>#define ITDB_SPL_DATE_IDENTIFIER (G_GINT64_CONSTANT (0x2dae2dae2dae2daeU))
 </programlisting>
 <para>
 
 </para></refsect2>
 <refsect2>
+<title><anchor id="ITDB-SPL-STRING-MAXLEN:CAPS" role="macro"/>ITDB_SPL_STRING_MAXLEN</title>
+<indexterm><primary>ITDB_SPL_STRING_MAXLEN</primary></indexterm><programlisting>#define ITDB_SPL_STRING_MAXLEN 255
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
 <title><anchor id="itdb-splr-get-field-type" role="function"/>itdb_splr_get_field_type ()</title>
-<indexterm><primary>itdb_splr_get_field_type</primary></indexterm><programlisting><link linkend="SPLFieldType">SPLFieldType</link> itdb_splr_get_field_type       (const <link linkend="SPLRule">SPLRule</link> *splr);</programlisting>
+<indexterm><primary>itdb_splr_get_field_type</primary></indexterm><programlisting><link linkend="ItdbSPLFieldType">ItdbSPLFieldType</link>    itdb_splr_get_field_type            (const <link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr);</programlisting>
 <para>
 Gets the type of the field of the <parameter>splr</parameter> rule</para>
 <para>
 
 </para><variablelist role="params">
 <varlistentry><term><parameter>splr</parameter>&nbsp;:</term>
-<listitem><simpara> an <link linkend="SPLRule"><type>SPLRule</type></link>
+<listitem><simpara> an <link linkend="Itdb-SPLRule"><type>Itdb_SPLRule</type></link>
 </simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> an <link linkend="SPLFieldType"><type>SPLFieldType</type></link> corresponding to <parameter>splr</parameter> field type 
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> an <link linkend="Itdb-SPLFieldType"><type>Itdb_SPLFieldType</type></link> corresponding to <parameter>splr</parameter> field type 
 (string, int, date, ...)
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-splr-get-action-type" role="function"/>itdb_splr_get_action_type ()</title>
-<indexterm><primary>itdb_splr_get_action_type</primary></indexterm><programlisting><link linkend="SPLActionType">SPLActionType</link> itdb_splr_get_action_type     (const <link linkend="SPLRule">SPLRule</link> *splr);</programlisting>
+<indexterm><primary>itdb_splr_get_action_type</primary></indexterm><programlisting><link linkend="ItdbSPLActionType">ItdbSPLActionType</link>   itdb_splr_get_action_type           (const <link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr);</programlisting>
 <para>
 Gets the type of the action associated with <parameter>splr</parameter>.</para>
 <para>
 
 </para><variablelist role="params">
 <varlistentry><term><parameter>splr</parameter>&nbsp;:</term>
-<listitem><simpara> an <link linkend="SPLRule"><type>SPLRule</type></link>
+<listitem><simpara> an <link linkend="Itdb-SPLRule"><type>Itdb_SPLRule</type></link>
 </simpara></listitem></varlistentry>
 <varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> type (range, date, string...) of the action field 
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-splr-validate" role="function"/>itdb_splr_validate ()</title>
-<indexterm><primary>itdb_splr_validate</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_splr_validate              (<link linkend="SPLRule">SPLRule</link> *splr);</programlisting>
+<indexterm><primary>itdb_splr_validate</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_splr_validate                  (<link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr);</programlisting>
 <para>
 Validates a rule</para>
 <para>
 
 </para><variablelist role="params">
 <varlistentry><term><parameter>splr</parameter>&nbsp;:</term>
-<listitem><simpara> an <link linkend="SPLRule"><type>SPLRule</type></link>
+<listitem><simpara> an <link linkend="Itdb-SPLRule"><type>Itdb_SPLRule</type></link>
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-splr-remove" role="function"/>itdb_splr_remove ()</title>
-<indexterm><primary>itdb_splr_remove</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_splr_remove                (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="SPLRule">SPLRule</link> *splr);</programlisting>
+<indexterm><primary>itdb_splr_remove</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_splr_remove                    (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr);</programlisting>
 <para>
 Removes the smart playlist rule <parameter>splr</parameter> from playlist <parameter>pl</parameter>. The memory used by
 <parameter>splr</parameter> is freed.</para>
@@ -321,26 +397,26 @@
 <listitem><simpara> an <link linkend="Itdb-Playlist"><type>Itdb_Playlist</type></link>
 </simpara></listitem></varlistentry>
 <varlistentry><term><parameter>splr</parameter>&nbsp;:</term>
-<listitem><simpara> an SPLRule
+<listitem><simpara> an Itdb_SPLRule
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-splr-new" role="function"/>itdb_splr_new ()</title>
-<indexterm><primary>itdb_splr_new</primary></indexterm><programlisting><link linkend="SPLRule">SPLRule</link>*    itdb_splr_new                   (void);</programlisting>
+<indexterm><primary>itdb_splr_new</primary></indexterm><programlisting><link linkend="Itdb-SPLRule">Itdb_SPLRule</link>*       itdb_splr_new                       (void);</programlisting>
 <para>
 Creates a new default smart rule</para>
 <para>
 
 </para><variablelist role="params">
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a new <link linkend="SPLRule"><type>SPLRule</type></link> that must be freed with <link linkend="itdb-splr-free"><function>itdb_splr_free()</function></link> when 
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a new <link linkend="Itdb-SPLRule"><type>Itdb_SPLRule</type></link> that must be freed with <link linkend="itdb-splr-free"><function>itdb_splr_free()</function></link> when 
 no longer needed
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-splr-add" role="function"/>itdb_splr_add ()</title>
-<indexterm><primary>itdb_splr_add</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_splr_add                   (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="SPLRule">SPLRule</link> *splr,
-                                             <link linkend="gint">gint</link> pos);</programlisting>
+<indexterm><primary>itdb_splr_add</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_splr_add                       (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr,
+                                                         <link linkend="gint">gint</link> pos);</programlisting>
 <para>
 Adds the smart rule <parameter>splr</parameter> to <parameter>pl</parameter> at position <parameter>pos</parameter>. If <parameter>pos</parameter> is -1, <parameter>splr</parameter> gets
 appended to the end. After this call, <parameter>splr</parameter> memory is managed by <parameter>pl</parameter>, so 
@@ -352,7 +428,7 @@
 <listitem><simpara> an <link linkend="Itdb-Playlist"><type>Itdb_Playlist</type></link>
 </simpara></listitem></varlistentry>
 <varlistentry><term><parameter>splr</parameter>&nbsp;:</term>
-<listitem><simpara> an <link linkend="SPLRule"><type>SPLRule</type></link>
+<listitem><simpara> an <link linkend="Itdb-SPLRule"><type>Itdb_SPLRule</type></link>
 </simpara></listitem></varlistentry>
 <varlistentry><term><parameter>pos</parameter>&nbsp;:</term>
 <listitem><simpara> position of the rule
@@ -360,8 +436,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-splr-add-new" role="function"/>itdb_splr_add_new ()</title>
-<indexterm><primary>itdb_splr_add_new</primary></indexterm><programlisting><link linkend="SPLRule">SPLRule</link>*    itdb_splr_add_new               (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
-                                             <link linkend="gint">gint</link> pos);</programlisting>
+<indexterm><primary>itdb_splr_add_new</primary></indexterm><programlisting><link linkend="Itdb-SPLRule">Itdb_SPLRule</link>*       itdb_splr_add_new                   (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *pl,
+                                                         <link linkend="gint">gint</link> pos);</programlisting>
 <para>
 Creates a new smart rule and inserts it at position <parameter>pos</parameter> in <parameter>pl</parameter>. If <parameter>pos</parameter> is
 -1, the new rule gets appended to the end.</para>
@@ -374,14 +450,14 @@
 <varlistentry><term><parameter>pos</parameter>&nbsp;:</term>
 <listitem><simpara> position to insert the rule at
 </simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> pointer to the newly created <link linkend="SPLRule"><type>SPLRule</type></link>. Its memory is handled 
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> pointer to the newly created <link linkend="Itdb-SPLRule"><type>Itdb_SPLRule</type></link>. Its memory is handled 
 by <parameter>pl</parameter> though, so you don't need to explicitly call <link linkend="itdb-splr-free"><function>itdb_splr_free()</function></link> on it
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-spl-copy-rules" role="function"/>itdb_spl_copy_rules ()</title>
-<indexterm><primary>itdb_spl_copy_rules</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_spl_copy_rules             (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *dest,
-                                             <link linkend="Itdb-Playlist">Itdb_Playlist</link> *src);</programlisting>
+<indexterm><primary>itdb_spl_copy_rules</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_spl_copy_rules                 (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *dest,
+                                                         <link linkend="Itdb-Playlist">Itdb_Playlist</link> *src);</programlisting>
 <para>
 Copy all relevant information for smart playlist from playlist <parameter>src</parameter>
 to playlist <parameter>dest</parameter>. If <parameter>dest</parameter> is already a smart playlist, the existing data
@@ -398,15 +474,15 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-splr-eval" role="function"/>itdb_splr_eval ()</title>
-<indexterm><primary>itdb_splr_eval</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_splr_eval                  (<link linkend="SPLRule">SPLRule</link> *splr,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
+<indexterm><primary>itdb_splr_eval</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_splr_eval                      (<link linkend="Itdb-SPLRule">Itdb_SPLRule</link> *splr,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
 <para>
 Evaluates <parameter>splr</parameter>'s truth against <parameter>track</parameter>. track-&gt;itdb must be set.</para>
 <para>
 
 </para><variablelist role="params">
 <varlistentry><term><parameter>splr</parameter>&nbsp;:</term>
-<listitem><simpara> an <link linkend="SPLRule"><type>SPLRule</type></link>
+<listitem><simpara> an <link linkend="Itdb-SPLRule"><type>Itdb_SPLRule</type></link>
 </simpara></listitem></varlistentry>
 <varlistentry><term><parameter>track</parameter>&nbsp;:</term>
 <listitem><simpara> an <link linkend="Itdb-Track"><type>Itdb_Track</type></link>
@@ -416,7 +492,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-spl-update" role="function"/>itdb_spl_update ()</title>
-<indexterm><primary>itdb_spl_update</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_spl_update                 (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *spl);</programlisting>
+<indexterm><primary>itdb_spl_update</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_spl_update                     (<link linkend="Itdb-Playlist">Itdb_Playlist</link> *spl);</programlisting>
 <para>
 Updates the content of the smart playlist <parameter>spl</parameter> (meant to be called if the 
 tracks stored in the <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> associated with <parameter>spl</parameter> have changed 
@@ -431,7 +507,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-spl-update-all" role="function"/>itdb_spl_update_all ()</title>
-<indexterm><primary>itdb_spl_update_all</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_spl_update_all             (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_spl_update_all</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_spl_update_all                 (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Updates all smart playlists contained in <parameter>itdb</parameter></para>
 <para>
@@ -443,7 +519,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-spl-update-live" role="function"/>itdb_spl_update_live ()</title>
-<indexterm><primary>itdb_spl_update_live</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_spl_update_live            (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_spl_update_live</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_spl_update_live                (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Updates all 'live' smart playlists contained in <parameter>itdb</parameter>, ie those which have 
 the 'live updating' flag set</para>

Modified: libgpod/branches/upstream/current/docs/reference/xml/track.xml
===================================================================
--- libgpod/branches/upstream/current/docs/reference/xml/track.xml	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/docs/reference/xml/track.xml	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,29 +21,32 @@
 
 
 
-            <link linkend="Itdb-Track">Itdb_Track</link>;
-<link linkend="Itdb-Track">Itdb_Track</link>* <link linkend="itdb-track-new">itdb_track_new</link>                  (void);
-<link linkend="void">void</link>        <link linkend="itdb-track-free">itdb_track_free</link>                 (<link linkend="Itdb-Track">Itdb_Track</link> *track);
-<link linkend="void">void</link>        <link linkend="itdb-track-add">itdb_track_add</link>                  (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             <link linkend="gint32">gint32</link> pos);
-<link linkend="void">void</link>        <link linkend="itdb-track-remove">itdb_track_remove</link>               (<link linkend="Itdb-Track">Itdb_Track</link> *track);
-<link linkend="void">void</link>        <link linkend="itdb-track-unlink">itdb_track_unlink</link>               (<link linkend="Itdb-Track">Itdb_Track</link> *track);
-<link linkend="Itdb-Track">Itdb_Track</link>* <link linkend="itdb-track-duplicate">itdb_track_duplicate</link>            (<link linkend="Itdb-Track">Itdb_Track</link> *tr);
-<link linkend="Itdb-Track">Itdb_Track</link>* <link linkend="itdb-track-by-id">itdb_track_by_id</link>                (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="guint32">guint32</link> id);
-<link linkend="GTree">GTree</link>*      <link linkend="itdb-track-id-tree-create">itdb_track_id_tree_create</link>       (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
-<link linkend="void">void</link>        <link linkend="itdb-track-id-tree-destroy">itdb_track_id_tree_destroy</link>      (<link linkend="GTree">GTree</link> *idtree);
-<link linkend="Itdb-Track">Itdb_Track</link>* <link linkend="itdb-track-id-tree-by-id">itdb_track_id_tree_by_id</link>        (<link linkend="GTree">GTree</link> *idtree,
-                                             <link linkend="guint32">guint32</link> id);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-track-set-thumbnails">itdb_track_set_thumbnails</link>       (<link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             const <link linkend="gchar">gchar</link> *filename);
-<link linkend="gboolean">gboolean</link>    <link linkend="itdb-track-set-thumbnails-from-data">itdb_track_set_thumbnails_from_data</link>
-                                            (<link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             const <link linkend="guchar">guchar</link> *image_data,
-                                             <link linkend="gsize">gsize</link> image_data_len);
-<link linkend="void">void</link>        <link linkend="itdb-track-remove-thumbnails">itdb_track_remove_thumbnails</link>    (<link linkend="Itdb-Track">Itdb_Track</link> *track);
-#define     <link linkend="ITDB-RATING-STEP:CAPS">ITDB_RATING_STEP</link>
+                    <link linkend="Itdb-Track">Itdb_Track</link>;
+enum                <link linkend="Itdb-Mediatype">Itdb_Mediatype</link>;
+#define             <link linkend="ITDB-RATING-STEP:CAPS">ITDB_RATING_STEP</link>
+<link linkend="Itdb-Track">Itdb_Track</link>*         <link linkend="itdb-track-new">itdb_track_new</link>                      (void);
+<link linkend="void">void</link>                <link linkend="itdb-track-free">itdb_track_free</link>                     (<link linkend="Itdb-Track">Itdb_Track</link> *track);
+<link linkend="void">void</link>                <link linkend="itdb-track-add">itdb_track_add</link>                      (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         <link linkend="gint32">gint32</link> pos);
+<link linkend="void">void</link>                <link linkend="itdb-track-remove">itdb_track_remove</link>                   (<link linkend="Itdb-Track">Itdb_Track</link> *track);
+<link linkend="void">void</link>                <link linkend="itdb-track-unlink">itdb_track_unlink</link>                   (<link linkend="Itdb-Track">Itdb_Track</link> *track);
+<link linkend="Itdb-Track">Itdb_Track</link>*         <link linkend="itdb-track-duplicate">itdb_track_duplicate</link>                (<link linkend="Itdb-Track">Itdb_Track</link> *tr);
+<link linkend="Itdb-Track">Itdb_Track</link>*         <link linkend="itdb-track-by-id">itdb_track_by_id</link>                    (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="guint32">guint32</link> id);
+<link linkend="GTree">GTree</link>*              <link linkend="itdb-track-id-tree-create">itdb_track_id_tree_create</link>           (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);
+<link linkend="void">void</link>                <link linkend="itdb-track-id-tree-destroy">itdb_track_id_tree_destroy</link>          (<link linkend="GTree">GTree</link> *idtree);
+<link linkend="Itdb-Track">Itdb_Track</link>*         <link linkend="itdb-track-id-tree-by-id">itdb_track_id_tree_by_id</link>            (<link linkend="GTree">GTree</link> *idtree,
+                                                         <link linkend="guint32">guint32</link> id);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-track-set-thumbnails">itdb_track_set_thumbnails</link>           (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="gchar">gchar</link> *filename);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-track-set-thumbnails-from-data">itdb_track_set_thumbnails_from_data</link> (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="guchar">guchar</link> *image_data,
+                                                         <link linkend="gsize">gsize</link> image_data_len);
+<link linkend="gboolean">gboolean</link>            <link linkend="itdb-track-set-thumbnails-from-pixbuf">itdb_track_set_thumbnails_from_pixbuf</link>
+                                                        (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         <link linkend="gpointer">gpointer</link> pixbuf);
+<link linkend="void">void</link>                <link linkend="itdb-track-remove-thumbnails">itdb_track_remove_thumbnails</link>        (<link linkend="Itdb-Track">Itdb_Track</link> *track);
 </synopsis>
 </refsynopsisdiv>
 
@@ -68,22 +71,22 @@
 <refsect2>
 <title><anchor id="Itdb-Track" role="struct"/>Itdb_Track</title>
 <indexterm><primary>Itdb_Track</primary></indexterm><programlisting>typedef struct {
-  Itdb_iTunesDB *itdb;       /* pointer to iTunesDB (for convenience) */
-  gchar   *title;            /* title (utf8)           */
-  gchar   *ipod_path;        /* name of file on iPod: uses ":"
-				instead of "/"                        */
-  gchar   *album;            /* album (utf8)           */
-  gchar   *artist;           /* artist (utf8)          */
-  gchar   *genre;            /* genre (utf8)           */
-  gchar   *filetype;         /* eg. "MP3-File"...(utf8)*/
-  gchar   *comment;          /* comment (utf8)         */
-  gchar   *category;         /* Category for podcast   */
-  gchar   *composer;         /* Composer (utf8)        */
-  gchar   *grouping;         /* ? (utf8)               */
+  Itdb_iTunesDB *itdb;       /* pointer to iTunesDB (for convenience)   */
+  gchar   *title;            /* title (utf8)                            */
+  gchar   *ipod_path;        /* name of file on iPod: uses ":" instead
+				of "/" and is relative to mountpoint    */
+  gchar   *album;            /* album (utf8)                            */
+  gchar   *artist;           /* artist (utf8)                           */
+  gchar   *genre;            /* genre (utf8)                            */
+  gchar   *filetype;         /* eg. "MP3-File"...(utf8)                 */
+  gchar   *comment;          /* comment (utf8)                          */
+  gchar   *category;         /* Category for podcast                    */
+  gchar   *composer;         /* Composer (utf8)                         */
+  gchar   *grouping;         /* ? (utf8)                                */
   gchar   *description;      /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *podcasturl;       /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *podcastrss;       /* see note for MHOD_ID in itdb_itunesdb.c */
-  gchar   *chapterdata;      /* see note for MHOD_ID in itdb_itunesdb.c */
+  gpointer chapterdata;      /* not yet supported. Help welcome.        */
   gchar   *subtitle;         /* see note for MHOD_ID in itdb_itunesdb.c */
 /* the following 6 are new in libgpod 0.4.2... */
   gchar   *tvshow;           /* see note for MHOD_ID in itdb_itunesdb.c */
@@ -91,55 +94,74 @@
   gchar   *tvnetwork;        /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *albumartist;      /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *keywords;         /* see note for MHOD_ID in itdb_itunesdb.c */
-  gchar   *reserved;         /* will probably be used for artistthe     */
-/* ... to here */
-  guint32 id;                /* unique ID of track     */
-  gint32  size;              /* size of file in bytes  */
-  gint32  tracklen;          /* Length of track in ms  */
-  gint32  cd_nr;             /* CD number              */
-  gint32  cds;               /* number of CDs          */
-  gint32  track_nr;          /* track number           */
-  gint32  tracks;            /* number of tracks       */
-  gint32  bitrate;           /* bitrate                */
-  guint16 samplerate;        /* samplerate (CD: 44100) */
+/* the following 6 are new in libgpod 0.5.0... */
+  /* You can set these strings to override the standard
+     sortorder. When set they take precedence over the default
+     'artist', 'album'... fields.
+
+     For example, in the case of an artist name like "The Artist",
+     iTunes will set sort_artist to "Artist, The" followed by five
+     0x01 characters. Why five 0x01 characters are added is not
+     completely understood.
+
+     If you do not set the sort_artist field, libgpod will pre-sort
+     the lists displayed by the iPod according to "Artist, The",
+     without setting the field.
+  */
+  gchar   *sort_artist;      /* artist (for sorting)                    */
+  gchar   *sort_title;       /* title (for sorting)                     */
+  gchar   *sort_album;       /* album (for sorting)                     */
+  gchar   *sort_albumartist; /* album artist (for sorting)              */
+  gchar   *sort_composer;    /* composer (for sorting)                  */
+  gchar   *sort_tvshow;      /* tv show (for sorting)                   */
+/* new fields in libgpod 0.5.0 up to here */
+  guint32 id;                /* unique ID of track                      */
+  gint32  size;              /* size of file in bytes                   */
+  gint32  tracklen;          /* Length of track in ms                   */
+  gint32  cd_nr;             /* CD number                               */
+  gint32  cds;               /* number of CDs                           */
+  gint32  track_nr;          /* track number                            */
+  gint32  tracks;            /* number of tracks                        */
+  gint32  bitrate;           /* bitrate                                 */
+  guint16 samplerate;        /* samplerate (CD: 44100)                  */
   guint16 samplerate_low;    /* in the iTunesDB the samplerate is
                                 multiplied by 0x10000 -- these are the
-				lower 16 bit, which are usually 0 */
-  gint32  year;              /* year                   */
-  gint32  volume;            /* volume adjustment              */
-  guint32 soundcheck;        /* volume adjustment "soundcheck" */
-  guint32 time_added;        /* time when added (Mac type)          */
-  guint32 time_played;       /* time of last play (Mac type)        */
-  guint32 time_modified;     /* time of last modification (Mac type)*/
-  guint32 bookmark_time;     /* bookmark set for (AudioBook) in ms  */
-  guint32 rating;            /* star rating (stars * RATING_STEP (20))     */
-  guint32 playcount;         /* number of times track was played    */
+				lower 16 bit, which are usually 0       */
+  gint32  year;              /* year                                    */
+  gint32  volume;            /* volume adjustment                       */
+  guint32 soundcheck;        /* volume adjustment "soundcheck"          */
+  time_t  time_added;        /* time when added (Mac type)              */
+  time_t  time_modified;     /* time of last modification (Mac type)    */
+  time_t  time_played;       /* time of last play (Mac type)            */
+  guint32 bookmark_time;     /* bookmark set for (AudioBook) in ms      */
+  guint32 rating;            /* star rating (stars * RATING_STEP (20))  */
+  guint32 playcount;         /* number of times track was played        */
   guint32 playcount2;        /* Also stores the play count of the
 				song.  Don't know if it ever differs
 				from the above value. During sync itdb
 				sets playcount2 to the same value as
-				playcount. */
-  guint32 recent_playcount;  /* times track was played since last sync */
-  gboolean transferred;      /* has file been transferred to iPod?  */
-  gint16  BPM;               /* supposed to vary the playback speed */
+				playcount.                              */
+  guint32 recent_playcount;  /* times track was played since last sync  */
+  gboolean transferred;      /* has file been transferred to iPod?      */
+  gint16  BPM;               /* BPM (beats per minute) of this track    */
   guint8  app_rating;        /* star rating set by appl. (not
 			      * iPod). If the rating set on the iPod
 			        and the rating field above differ, the
 				original rating is copied here and the
 				new rating is stored above. */
   guint8  type1;             /* CBR MP3s and AAC are 0x00, VBR MP3s are
-			        0x01 */
-  guint8  type2;             /* MP3s are 0x01, AAC are 0x00 */
+			        0x01                                    */
+  guint8  type2;             /* MP3s are 0x01, AAC are 0x00             */
   guint8  compilation;
   guint32 starttime;
   guint32 stoptime;
   guint8  checked;           /* 0x0: checkmark on track is set 0x1: not set */
-  guint64 dbid;              /* unique database ID */
+  guint64 dbid;              /* unique database ID                      */
   guint32 drm_userid;        /* Apple Store/Audible User ID (for DRM'ed
-				files only, set to 0 otherwise). */
+				files only, set to 0 otherwise).        */
   guint32 visible;           /*  If this value is 1, the song is visible
 				 on the iPod. All other values cause
-				 the file to be hidden. */
+				 the file to be hidden.                 */
   guint32 filetype_marker;   /* This appears to always be 0 on hard
                                 drive based iPods, but for the
                                 iTunesDB that is written to an iPod
@@ -149,7 +171,7 @@
                                 0x4d503320 -&gt; 0x4d = 'M', 0x50 = 'P',
                                 0x33 = '3', 0x20 = &lt;space&gt;. (set to
 				the filename extension by itdb when
-				copying track to iPod)*/
+				copying track to iPod)                  */
   guint16 artwork_count;     /* The number of album artwork items
 				associated with this song. libgpod
 				updates this value when syncing */
@@ -158,23 +180,21 @@
 				converted to JPEG format. Observed in
 				iPodDB version 0x0b and with an iPod
 				Photo. libgpod updates this value when
-				syncing */
+				syncing                                 */
   float samplerate2;         /* The sample rate of the song expressed
 				as an IEEE 32 bit floating point
 				number.  It's uncertain why this is
 				here.  itdb will set this when adding
-				a track */
+				a track                                 */
 
   guint16 unk126;     /* unknown, but always seems to be 0xffff for
 			 MP3/AAC songs, 0x0 for uncompressed songs
 			 (like WAVE format), 0x1 for Audible. itdb
 			 will try to set this when adding a new track */
   guint32 unk132;     /* unknown */
-  guint32 time_released;/* date/time added to music store? definitely a
-			 timestamp, always appears to be a time of
-			 0700 GMT. For podcasts: release date as
-			 displayed next to the title in the Podcast
-			 playlist  */
+  time_t  time_released;/* date/time added to music store? 
+			   For podcasts: release date as displayed next to the 
+			   title in the Podcast playlist */
   guint16 unk144;     /* unknown, but MP3 songs appear to be always
 			 0x000c, AAC songs are always 0x0033, Audible
 			 files are 0x0029, WAV files are 0x0. itdb
@@ -287,6 +307,25 @@
   /* This is for Cover Art support */
   struct _Itdb_Artwork *artwork;
 
+  /* reserved for future use */
+  gint32 reserved_int1;
+  gint32 reserved_int2;
+  gint32 reserved_int3;
+  gint32 reserved_int4;
+  gint32 reserved_int5;
+  gint32 reserved_int6;
+  gpointer reserved1;
+  gpointer reserved2;
+  gpointer reserved3;
+  gpointer reserved4;
+  gpointer reserved5;
+  gpointer reserved6;
+
+  /* +++***+++***+++***+++***+++***+++***+++***+++***+++***+++***
+     When adding string fields don't forget to add them in
+     itdb_track_duplicate as well
+     +++***+++***+++***+++***+++***+++***+++***+++***+++***+++*** */
+
   /* below is for use by application */
   guint64 usertype;
   gpointer userdata;
@@ -299,8 +338,30 @@
 
 </para></refsect2>
 <refsect2>
+<title><anchor id="Itdb-Mediatype" role="enum"/>enum Itdb_Mediatype</title>
+<indexterm><primary>Itdb_Mediatype</primary></indexterm><programlisting>typedef enum
+{
+    ITDB_MEDIATYPE_AUDIO      = 0x0001,
+    ITDB_MEDIATYPE_MOVIE      = 0x0002,
+    ITDB_MEDIATYPE_PODCAST    = 0x0004,
+    ITDB_MEDIATYPE_AUDIOBOOK  = 0x0008,
+    ITDB_MEDIATYPE_MUSICVIDEO = 0x0020,
+    ITDB_MEDIATYPE_TVSHOW     = 0x0040,
+} Itdb_Mediatype;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ITDB-RATING-STEP:CAPS" role="macro"/>ITDB_RATING_STEP</title>
+<indexterm><primary>ITDB_RATING_STEP</primary></indexterm><programlisting>#define ITDB_RATING_STEP 20
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
 <title><anchor id="itdb-track-new" role="function"/>itdb_track_new ()</title>
-<indexterm><primary>itdb_track_new</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>* itdb_track_new                  (void);</programlisting>
+<indexterm><primary>itdb_track_new</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>*         itdb_track_new                      (void);</programlisting>
 <para>
 Creates an empty <link linkend="Itdb-Track"><type>Itdb_Track</type></link></para>
 <para>
@@ -312,7 +373,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-free" role="function"/>itdb_track_free ()</title>
-<indexterm><primary>itdb_track_free</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_track_free                 (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
+<indexterm><primary>itdb_track_free</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_track_free                     (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
 <para>
 Frees the memory used by <parameter>track</parameter></para>
 <para>
@@ -324,9 +385,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-add" role="function"/>itdb_track_add ()</title>
-<indexterm><primary>itdb_track_add</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_track_add                  (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             <link linkend="gint32">gint32</link> pos);</programlisting>
+<indexterm><primary>itdb_track_add</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_track_add                      (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         <link linkend="gint32">gint32</link> pos);</programlisting>
 <para>
 Adds <parameter>track</parameter> to <parameter>itdb->tracks</parameter> at position <parameter>pos</parameter> (or at the end if pos
 is -1). The application is responsible to also add it to the master
@@ -347,7 +408,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-remove" role="function"/>itdb_track_remove ()</title>
-<indexterm><primary>itdb_track_remove</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_track_remove               (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
+<indexterm><primary>itdb_track_remove</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_track_remove                   (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
 <para>
 Removes <parameter>track</parameter> from the <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> it's associated with, and frees the
 memory it uses. It doesn't remove the track from the playlists it may have
@@ -361,7 +422,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-unlink" role="function"/>itdb_track_unlink ()</title>
-<indexterm><primary>itdb_track_unlink</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_track_unlink               (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
+<indexterm><primary>itdb_track_unlink</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_track_unlink                   (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
 <para>
 Removes <parameter>track</parameter> from the <link linkend="Itdb-iTunesDB"><type>Itdb_iTunesDB</type></link> it's associated with, but do not free
 memory. It doesn't remove the track from the playlists it may have been 
@@ -376,7 +437,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-duplicate" role="function"/>itdb_track_duplicate ()</title>
-<indexterm><primary>itdb_track_duplicate</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>* itdb_track_duplicate            (<link linkend="Itdb-Track">Itdb_Track</link> *tr);</programlisting>
+<indexterm><primary>itdb_track_duplicate</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>*         itdb_track_duplicate                (<link linkend="Itdb-Track">Itdb_Track</link> *tr);</programlisting>
 <para>
 Duplicates an existing track</para>
 <para>
@@ -390,8 +451,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-by-id" role="function"/>itdb_track_by_id ()</title>
-<indexterm><primary>itdb_track_by_id</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>* itdb_track_by_id                (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
-                                             <link linkend="guint32">guint32</link> id);</programlisting>
+<indexterm><primary>itdb_track_by_id</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>*         itdb_track_by_id                    (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb,
+                                                         <link linkend="guint32">guint32</link> id);</programlisting>
 <para>
 Looks up a track using its ID in <parameter>itdb</parameter>. 
 Looking up tracks by ID is not really a good idea because the IDs
@@ -416,7 +477,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-id-tree-create" role="function"/>itdb_track_id_tree_create ()</title>
-<indexterm><primary>itdb_track_id_tree_create</primary></indexterm><programlisting><link linkend="GTree">GTree</link>*      itdb_track_id_tree_create       (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
+<indexterm><primary>itdb_track_id_tree_create</primary></indexterm><programlisting><link linkend="GTree">GTree</link>*              itdb_track_id_tree_create           (<link linkend="Itdb-iTunesDB">Itdb_iTunesDB</link> *itdb);</programlisting>
 <para>
 Creates a balanced-binary tree for quick ID lookup that is used in
 <link linkend="itdb-track-by-id-tree"><function>itdb_track_by_id_tree()</function></link> function below</para>
@@ -432,7 +493,7 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-id-tree-destroy" role="function"/>itdb_track_id_tree_destroy ()</title>
-<indexterm><primary>itdb_track_id_tree_destroy</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_track_id_tree_destroy      (<link linkend="GTree">GTree</link> *idtree);</programlisting>
+<indexterm><primary>itdb_track_id_tree_destroy</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_track_id_tree_destroy          (<link linkend="GTree">GTree</link> *idtree);</programlisting>
 <para>
 Frees the memory used by <parameter>idtree</parameter></para>
 <para>
@@ -444,8 +505,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-id-tree-by-id" role="function"/>itdb_track_id_tree_by_id ()</title>
-<indexterm><primary>itdb_track_id_tree_by_id</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>* itdb_track_id_tree_by_id        (<link linkend="GTree">GTree</link> *idtree,
-                                             <link linkend="guint32">guint32</link> id);</programlisting>
+<indexterm><primary>itdb_track_id_tree_by_id</primary></indexterm><programlisting><link linkend="Itdb-Track">Itdb_Track</link>*         itdb_track_id_tree_by_id            (<link linkend="GTree">GTree</link> *idtree,
+                                                         <link linkend="guint32">guint32</link> id);</programlisting>
 <para>
 Lookup an <link linkend="Itdb-Track"><type>Itdb_Track</type></link> by <parameter>id</parameter> using <parameter>idtree</parameter> for faster lookup (compared to
 itdb_track_by_id)</para>
@@ -464,8 +525,8 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-set-thumbnails" role="function"/>itdb_track_set_thumbnails ()</title>
-<indexterm><primary>itdb_track_set_thumbnails</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_track_set_thumbnails       (<link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             const <link linkend="gchar">gchar</link> *filename);</programlisting>
+<indexterm><primary>itdb_track_set_thumbnails</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_track_set_thumbnails           (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="gchar">gchar</link> *filename);</programlisting>
 <para>
 Uses the image contained in <parameter>filename</parameter> to generate iPod thumbnails. The image
 can be in any format supported by gdk-pixbuf. To save memory, the thumbnails
@@ -485,10 +546,9 @@
 </variablelist></refsect2>
 <refsect2>
 <title><anchor id="itdb-track-set-thumbnails-from-data" role="function"/>itdb_track_set_thumbnails_from_data ()</title>
-<indexterm><primary>itdb_track_set_thumbnails_from_data</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    itdb_track_set_thumbnails_from_data
-                                            (<link linkend="Itdb-Track">Itdb_Track</link> *track,
-                                             const <link linkend="guchar">guchar</link> *image_data,
-                                             <link linkend="gsize">gsize</link> image_data_len);</programlisting>
+<indexterm><primary>itdb_track_set_thumbnails_from_data</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_track_set_thumbnails_from_data (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         const <link linkend="guchar">guchar</link> *image_data,
+                                                         <link linkend="gsize">gsize</link> image_data_len);</programlisting>
 <para>
 Uses <parameter>image_data</parameter> to generate iPod thumbnails. The image can be in
 any format supported by gdk-pixbuf. To save memory, the thumbnails
@@ -511,24 +571,38 @@
 </simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
-<title><anchor id="itdb-track-remove-thumbnails" role="function"/>itdb_track_remove_thumbnails ()</title>
-<indexterm><primary>itdb_track_remove_thumbnails</primary></indexterm><programlisting><link linkend="void">void</link>        itdb_track_remove_thumbnails    (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
+<title><anchor id="itdb-track-set-thumbnails-from-pixbuf" role="function"/>itdb_track_set_thumbnails_from_pixbuf ()</title>
+<indexterm><primary>itdb_track_set_thumbnails_from_pixbuf</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            itdb_track_set_thumbnails_from_pixbuf
+                                                        (<link linkend="Itdb-Track">Itdb_Track</link> *track,
+                                                         <link linkend="gpointer">gpointer</link> pixbuf);</programlisting>
 <para>
-Removes the thumbnails associated with <parameter>track</parameter></para>
+Uses <parameter>pixbuf</parameter> to generate iPod thumbnails. To save memory, the thumbnails
+will only be generated when necessary, ie when <link linkend="itdb-save"><function>itdb_save()</function></link> or a
+similar function is called.</para>
 <para>
 
 </para><variablelist role="params">
 <varlistentry><term><parameter>track</parameter>&nbsp;:</term>
 <listitem><simpara> an <link linkend="Itdb-Track"><type>Itdb_Track</type></link>
 </simpara></listitem></varlistentry>
+<varlistentry><term><parameter>pixbuf</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link> used to generate the thumbnail
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> TRUE if the thumbnail could be added, FALSE otherwise.
+</simpara></listitem></varlistentry>
 </variablelist></refsect2>
 <refsect2>
-<title><anchor id="ITDB-RATING-STEP:CAPS" role="macro"/>ITDB_RATING_STEP</title>
-<indexterm><primary>ITDB_RATING_STEP</primary></indexterm><programlisting>#define ITDB_RATING_STEP 20
-</programlisting>
+<title><anchor id="itdb-track-remove-thumbnails" role="function"/>itdb_track_remove_thumbnails ()</title>
+<indexterm><primary>itdb_track_remove_thumbnails</primary></indexterm><programlisting><link linkend="void">void</link>                itdb_track_remove_thumbnails        (<link linkend="Itdb-Track">Itdb_Track</link> *track);</programlisting>
 <para>
+Removes the thumbnails associated with <parameter>track</parameter></para>
+<para>
 
-</para></refsect2>
+</para><variablelist role="params">
+<varlistentry><term><parameter>track</parameter>&nbsp;:</term>
+<listitem><simpara> an <link linkend="Itdb-Track"><type>Itdb_Track</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
 
 </refsect1>
 

Modified: libgpod/branches/upstream/current/gtk-doc.make
===================================================================
--- libgpod/branches/upstream/current/gtk-doc.make	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/gtk-doc.make	2007-06-27 21:44:37 UTC (rev 198)
@@ -53,6 +53,8 @@
 scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
 	@echo 'gtk-doc: Scanning header files'
 	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && \
+	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
 	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
 	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
 	else \
@@ -61,11 +63,9 @@
                test -f $$i || touch $$i ; \
 	    done \
 	fi
-	cd $(srcdir) && \
-	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
 	touch scan-build.stamp
 
-$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
 	@true
 
 #### templates ####
@@ -147,7 +147,7 @@
 	mkdir $(distdir)/html
 	-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
 	-cp $(srcdir)/xml/*.xml $(distdir)/xml
-	-cp $(srcdir)/html/* $(distdir)/html
+	cp $(srcdir)/html/* $(distdir)/html
 	if test -f $(srcdir)/$(DOC_MODULE).types; then \
 	  cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
 	fi

Modified: libgpod/branches/upstream/current/install-sh
===================================================================
--- libgpod/branches/upstream/current/install-sh	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/install-sh	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,7 @@
 #!/bin/sh
+#
 # install - install a program, script, or datafile
-
-scriptversion=2005-05-14.22
-
+#
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
 # following copyright and license.
@@ -42,11 +41,13 @@
 # from scratch.  It can only install one file at a time, a restriction
 # shared with many OS's install programs.
 
+
 # set DOITPROG to echo to test this script
 
 # Don't use :- since 4.3BSD and earlier shells don't like it.
 doit="${DOITPROG-}"
 
+
 # put in absolute paths if you don't have them in your path; or use env. vars.
 
 mvprog="${MVPROG-mv}"
@@ -58,266 +59,236 @@
 rmprog="${RMPROG-rm}"
 mkdirprog="${MKDIRPROG-mkdir}"
 
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
 chmodcmd="$chmodprog 0755"
-chowncmd=
-chgrpcmd=
-stripcmd=
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
 rmcmd="$rmprog -f"
 mvcmd="$mvprog"
-src=
-dst=
-dir_arg=
-dstarg=
-no_target_directory=
+src=""
+dst=""
+dir_arg=""
 
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd=$cpprog
+	    shift
+	    continue;;
 
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
+	-d) dir_arg=true
+	    shift
+	    continue;;
 
-Options:
--c         (ignored)
--d         create directories instead of installing files.
--g GROUP   $chgrpprog installed files to GROUP.
--m MODE    $chmodprog installed files to MODE.
--o USER    $chownprog installed files to USER.
--s         $stripprog installed files.
--t DIRECTORY  install into DIRECTORY.
--T         report an error if DSTFILE is a directory.
---help     display this help and exit.
---version  display version info and exit.
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
 
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
-"
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
 
-while test -n "$1"; do
-  case $1 in
-    -c) shift
-        continue;;
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
 
-    -d) dir_arg=true
-        shift
-        continue;;
+	-s) stripcmd=$stripprog
+	    shift
+	    continue;;
 
-    -g) chgrpcmd="$chgrpprog $2"
-        shift
-        shift
-        continue;;
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
 
-    --help) echo "$usage"; exit $?;;
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
 
-    -m) chmodcmd="$chmodprog $2"
-        shift
-        shift
-        continue;;
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
 
-    -o) chowncmd="$chownprog $2"
-        shift
-        shift
-        continue;;
+if [ x"$src" = x ]
+then
+	echo "$0: no input file specified" >&2
+	exit 1
+else
+	:
+fi
 
-    -s) stripcmd=$stripprog
-        shift
-        continue;;
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
 
-    -t) dstarg=$2
-	shift
-	shift
-	continue;;
+	if [ -d "$dst" ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=$mkdirprog
+	fi
+else
 
-    -T) no_target_directory=true
-	shift
-	continue;;
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
 
-    --version) echo "$0 $scriptversion"; exit $?;;
+	if [ -f "$src" ] || [ -d "$src" ]
+	then
+		:
+	else
+		echo "$0: $src does not exist" >&2
+		exit 1
+	fi
 
-    *)  # When -d is used, all remaining arguments are directories to create.
-	# When -t is used, the destination is already specified.
-	test -n "$dir_arg$dstarg" && break
-        # Otherwise, the last argument is the destination.  Remove it from $@.
-	for arg
-	do
-          if test -n "$dstarg"; then
-	    # $@ is not empty: it contains at least $arg.
-	    set fnord "$@" "$dstarg"
-	    shift # fnord
-	  fi
-	  shift # arg
-	  dstarg=$arg
-	done
-	break;;
-  esac
-done
+	if [ x"$dst" = x ]
+	then
+		echo "$0: no destination specified" >&2
+		exit 1
+	else
+		:
+	fi
 
-if test -z "$1"; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d "$dst" ]
+	then
+		dst=$dst/`basename "$src"`
+	else
+		:
+	fi
 fi
 
-for src
-do
-  # Protect names starting with `-'.
-  case $src in
-    -*) src=./$src ;;
-  esac
+## this sed command emulates the dirname command
+dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
 
-  if test -n "$dir_arg"; then
-    dst=$src
-    src=
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
 
-    if test -d "$dst"; then
-      mkdircmd=:
-      chmodcmd=
-    else
-      mkdircmd=$mkdirprog
-    fi
-  else
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+	'
+IFS="${IFS-$defaultIFS}"
 
-    if test -z "$dstarg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
+oIFS=$IFS
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS=$oIFS
 
-    dst=$dstarg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst ;;
-    esac
+pathcomp=''
 
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dstarg: Is a directory" >&2
-	exit 1
-      fi
-      dst=$dst/`basename "$src"`
-    fi
-  fi
+while [ $# -ne 0 ] ; do
+	pathcomp=$pathcomp$1
+	shift
 
-  # This sed command emulates the dirname command.
-  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+	if [ ! -d "$pathcomp" ] ;
+        then
+		$mkdirprog "$pathcomp"
+	else
+		:
+	fi
 
-  # Make sure that the destination directory exists.
+	pathcomp=$pathcomp/
+done
+fi
 
-  # Skip lots of stat calls in the usual case.
-  if test ! -d "$dstdir"; then
-    defaultIFS='
-	 '
-    IFS="${IFS-$defaultIFS}"
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd "$dst" &&
 
-    oIFS=$IFS
-    # Some sh's can't handle IFS=/ for some reason.
-    IFS='%'
-    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-    shift
-    IFS=$oIFS
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
+else
 
-    pathcomp=
+# If we're going to rename the final executable, determine the name now.
 
-    while test $# -ne 0 ; do
-      pathcomp=$pathcomp$1
-      shift
-      if test ! -d "$pathcomp"; then
-        $mkdirprog "$pathcomp"
-	# mkdir can fail with a `File exist' error in case several
-	# install-sh are creating the directory concurrently.  This
-	# is OK.
-	test -d "$pathcomp" || exit
-      fi
-      pathcomp=$pathcomp/
-    done
-  fi
+	if [ x"$transformarg" = x ]
+	then
+		dstfile=`basename "$dst"`
+	else
+		dstfile=`basename "$dst" $transformbasename |
+			sed $transformarg`$transformbasename
+	fi
 
-  if test -n "$dir_arg"; then
-    $doit $mkdircmd "$dst" \
-      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+# don't allow the sed command to completely eliminate the filename
 
-  else
-    dstfile=`basename "$dst"`
+	if [ x"$dstfile" = x ]
+	then
+		dstfile=`basename "$dst"`
+	else
+		:
+	fi
 
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
+# Make a couple of temp file names in the proper directory.
 
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-    trap '(exit $?); exit' 1 2 13 15
+	dsttmp=$dstdir/_inst.$$_
+	rmtmp=$dstdir/_rm.$$_
 
-    # Copy the file name to the temp name.
-    $doit $cpprog "$src" "$dsttmp" &&
+# Trap to clean up temp files at exit.
 
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+	trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+	trap '(exit $?); exit' 1 2 13 15
 
-    # Now rename the file to the real destination.
-    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
-      || {
-	   # The rename failed, perhaps because mv can't rename something else
-	   # to itself, or perhaps because mv is so ancient that it does not
-	   # support -f.
+# Move or copy the file name to the temp name
 
-	   # Now remove or move aside any old file at destination location.
-	   # We try this two ways since rm can't unlink itself on some
-	   # systems and the destination file might be busy for other
-	   # reasons.  In this case, the final cleanup might fail but the new
-	   # file should still install successfully.
-	   {
-	     if test -f "$dstdir/$dstfile"; then
-	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
-	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
-	       || {
-		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
-		 (exit 1); exit 1
-	       }
-	     else
-	       :
-	     fi
-	   } &&
+	$doit $instcmd "$src" "$dsttmp" &&
 
-	   # Now rename the file to the real destination.
-	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
-	 }
-    }
-  fi || { (exit 1); exit 1; }
-done
+# and set any options; do chmod last to preserve setuid bits
 
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
+
+# Now remove or move aside any old file at destination location.  We try this
+# two ways since rm can't unlink itself on some systems and the destination
+# file might be busy for other reasons.  In this case, the final cleanup
+# might fail but the new file should still install successfully.
+
+{
+	if [ -f "$dstdir/$dstfile" ]
+	then
+		$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
+		$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
+		{
+		  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		  (exit 1); exit
+		}
+	else
+		:
+	fi
+} &&
+
+# Now rename the file to the real destination.
+
+	$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+
+fi &&
+
 # The final little trick to "correctly" pass the exit status to the exit trap.
+
 {
-  (exit 0); exit 0
+	(exit 0); exit
 }
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:

Modified: libgpod/branches/upstream/current/intltool-extract.in
===================================================================
--- libgpod/branches/upstream/current/intltool-extract.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/intltool-extract.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -32,7 +32,7 @@
 ## Release information
 my $PROGRAM      = "intltool-extract";
 my $PACKAGE      = "intltool";
-my $VERSION      = "0.35.0";
+my $VERSION      = "0.35.5";
 
 ## Loaded modules
 use strict; 
@@ -114,6 +114,11 @@
 sub place_normal {
     $FILE	 = $ARGV[0];
     $OUTFILE     = "$FILE.h";
+
+    my $dirname = dirname ($OUTFILE);
+    if (! -d "$dirname" && $dirname ne "") {
+        system ("mkdir -p $dirname");
+    }
 }   
 
 sub place_local {
@@ -156,7 +161,7 @@
       --type=TYPE   Specify the file type of FILENAME. Currently supports:
                     "gettext/glade", "gettext/ini", "gettext/keys"
                     "gettext/rfc822deb", "gettext/schemas",
-                    "gettext/scheme", "gettext/xml"
+                    "gettext/scheme", "gettext/xml", "gettext/quoted"
   -l, --local       Writes output into current working directory
                     (conflicts with --update)
       --update      Writes output into the same directory the source file 
@@ -212,6 +217,7 @@
     &type_scheme if $gettext_type eq "scheme";
     &type_schemas  if $gettext_type eq "schemas";
     &type_rfc822deb  if $gettext_type eq "rfc822deb";
+    &type_quoted if $gettext_type eq "quoted";
 }
 
 sub entity_decode_minimal
@@ -242,7 +248,7 @@
 {
     return '\"' if $_ eq '"';
     return '\n' if $_ eq "\n";
-    return '\\' if $_ eq '\\';
+    return '\\\\' if $_ eq '\\';
 
     return $_;
 }
@@ -255,8 +261,11 @@
 
 sub type_ini {
     ### For generic translatable desktop files ###
-    while ($input =~ /^_.*=(.*)$/mg) {
-        $messages{$1} = [];
+    while ($input =~ /^(#(.+)\n)?^_.*=(.*)$/mg) {
+        if (defined($2))  {
+            $comments{$3} = $2;
+        }
+        $messages{$3} = [];
     }
 }
 
@@ -711,6 +720,17 @@
     return @list;
 }
 
+sub type_quoted {
+    while ($input =~ /\"(([^\"]|\\\")*[^\\\"])\"/g) {
+        my $message = $1;
+        my $before = $`;
+        $message =~ s/\\\"/\"/g;
+        $before =~ s/[^\n]//g;
+        $messages{$message} = [];
+        $loc{$message} = length ($before) + 2;
+    }
+}
+
 sub type_glade {
     ### For translatable Glade XML files ###
 

Modified: libgpod/branches/upstream/current/intltool-merge.in
===================================================================
--- libgpod/branches/upstream/current/intltool-merge.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/intltool-merge.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -35,7 +35,7 @@
 ## Release information
 my $PROGRAM = "intltool-merge";
 my $PACKAGE = "intltool";
-my $VERSION = "0.35.0";
+my $VERSION = "0.35.5";
 
 ## Loaded modules
 use strict; 
@@ -60,6 +60,7 @@
 my $DESKTOP_STYLE_ARG = 0;
 my $SCHEMAS_STYLE_ARG = 0;
 my $RFC822DEB_STYLE_ARG = 0;
+my $QUOTED_STYLE_ARG = 0;
 my $QUIET_ARG = 0;
 my $PASS_THROUGH_ARG = 0;
 my $UTF8_ARG = 0;
@@ -79,6 +80,7 @@
  "desktop-style|d" => \$DESKTOP_STYLE_ARG,
  "schemas-style|s" => \$SCHEMAS_STYLE_ARG,
  "rfc822deb-style|r" => \$RFC822DEB_STYLE_ARG,
+ "quoted-style" => \$QUOTED_STYLE_ARG,
  "pass-through|p" => \$PASS_THROUGH_ARG,
  "utf8|u" => \$UTF8_ARG,
  "multiple-output|m" => \$MULTIPLE_OUTPUT,
@@ -157,6 +159,14 @@
 	&rfc822deb_merge_translations;
 	&finalize;
 } 
+elsif ($QUOTED_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&quoted_merge_translations;
+	&finalize;
+} 
 else 
 {
 	&print_help;
@@ -193,6 +203,7 @@
   -k, --keys-style       includes translations in the keys style
   -s, --schemas-style    includes translations in the schemas style
   -r, --rfc822deb-style  includes translations in the RFC822 style
+      --quoted-style     includes translations in the quoted string style
   -x, --xml-style        includes translations in the standard xml style
 
 Other options:
@@ -415,9 +426,9 @@
         {
 	    $nextfuzzy = 1 if /^#, fuzzy/;
        
-	    if (/^msgid "((\\.|[^\\])*)"/ ) 
+	    if (/^msgid "((\\.|[^\\]+)*)"/ ) 
             {
-		$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+		$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr && $msgid ne $msgstr;
 		$msgid = "";
 		$msgstr = "";
 
@@ -431,20 +442,20 @@
 		$nextfuzzy = 0;
 	    }
 
-	    if (/^msgstr "((\\.|[^\\])*)"/) 
+	    if (/^msgstr "((\\.|[^\\]+)*)"/) 
             {
 	        $msgstr = unescape_po_string($1);
 		$inmsgstr = 1;
 		$inmsgid = 0;
 	    }
 
-	    if (/^"((\\.|[^\\])*)"/) 
+	    if (/^"((\\.|[^\\]+)*)"/) 
             {
 	        $msgid .= unescape_po_string($1) if $inmsgid;
 	        $msgstr .= unescape_po_string($1) if $inmsgstr;
 	    }
 	}
-	$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+	$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr && $msgstr ne $msgid;
     }
 }
 
@@ -1006,8 +1017,8 @@
 
     if ($MULTIPLE_OUTPUT) {
         for my $lang (sort keys %po_files_by_lang) {
-	    if ( ! -e $lang ) {
-	        mkdir $lang or die "Cannot create subdirectory $lang: $!\n";
+	    if ( ! -d $lang ) {
+	        mkdir $lang or -d $lang or die "Cannot create subdirectory $lang: $!\n";
             }
             open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n";
             binmode (OUTPUT) if $^O eq 'MSWin32';
@@ -1354,3 +1365,39 @@
     return @list;
 }
 
+sub quoted_translation
+{
+    my ($lang, $string) = @_;
+
+    $string =~ s/\\\"/\"/g;
+
+    my $translation = $translations{$lang, $string};
+    $translation = $string if !$translation;
+
+    $translation =~ s/\"/\\\"/g;
+    return $translation
+}
+
+sub quoted_merge_translations
+{
+    if (!$MULTIPLE_OUTPUT) {
+        print "Quoted only supports Multiple Output.\n";
+        exit(1);
+    }
+
+    for my $lang (sort keys %po_files_by_lang) {
+        if ( ! -d $lang ) {
+            mkdir $lang or -d $lang or die "Cannot create subdirectory $lang: $!\n";
+        }
+        open INPUT, "<${FILE}" or die;
+        open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n";
+        binmode (OUTPUT) if $^O eq 'MSWin32';
+        while (<INPUT>) 
+        {
+            s/\"(([^\"]|\\\")*[^\\\"])\"/"\"" . &quoted_translation($lang, $1) . "\""/ge;
+            print OUTPUT;
+        }
+        close OUTPUT;
+        close INPUT;
+    }
+}

Modified: libgpod/branches/upstream/current/intltool-update.in
===================================================================
--- libgpod/branches/upstream/current/intltool-update.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/intltool-update.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -30,7 +30,7 @@
 
 ## Release information
 my $PROGRAM = "intltool-update";
-my $VERSION = "0.35.0";
+my $VERSION = "0.35.5";
 my $PACKAGE = "intltool";
 
 ## Loaded modules
@@ -90,10 +90,9 @@
 $| = 1;
 
 ## Sometimes the source tree will be rooted somewhere else.
-my $SRCDIR = ".";
+my $SRCDIR = $ENV{"srcdir"} || ".";
 my $POTFILES_in;
 
-$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"};
 $POTFILES_in = "<$SRCDIR/POTFILES.in";
 
 my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
@@ -124,8 +123,10 @@
 
 &Console_Write_IntltoolHelp if $arg_count > 1;
 
+my $PKGNAME = FindPackageName ();
+
 # --version and --help don't require a module name
-my $MODULE = $GETTEXT_PACKAGE || &FindPackageName || "unknown";
+my $MODULE = $GETTEXT_PACKAGE || $PKGNAME || "unknown";
 
 if ($POT_ARG)
 {
@@ -316,7 +317,8 @@
 	@buf_potfiles_ignore,
 	@buf_allfiles,
 	@buf_allfiles_sorted,
-	@buf_potfiles_sorted
+	@buf_potfiles_sorted,
+        @buf_potfiles_ignore_sorted
     );
 
     ## Search and find all translatable files
@@ -342,7 +344,7 @@
     ## comparing with POTFILES.in
     foreach my $ignore ("POTFILES.skip", "POTFILES.ignore")
     {
-	(-s $ignore) or next;
+	(-s "$SRCDIR/$ignore") or next;
 
 	if ("$ignore" eq "POTFILES.ignore")
 	{
@@ -351,7 +353,7 @@
 	}
 
 	print "Found $ignore: Ignoring files...\n" if $VERBOSE;
-	open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n";
+	open FILE, "<$SRCDIR/$ignore" or die "ERROR: Failed to open $SRCDIR/$ignore!\n";
 	    
 	while (<FILE>)
 	{
@@ -359,7 +361,7 @@
 	}
 	close FILE;
 
-	@buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles);
+	@buf_potfiles_ignore_sorted = sort (@buf_potfiles_ignore);
     }
 
     foreach my $file (@buf_i18n_plain)
@@ -417,7 +419,7 @@
 		}
 	    }	    
 
-	    if (/\.GetString ?\(QUOTEDTEXT/)
+	    if (/\w\.GetString *\(QUOTEDTEXT/)
 	    {
                 if (defined isNotValidMissing (unpack("x3 A*", $file))) {
                     ## Remove the first 3 chars and add newline
@@ -426,7 +428,8 @@
 		last;
 	    }
 
-	    if (/_\(QUOTEDTEXT/)
+            ## N_ Q_ and _ are the three macros defined in gi8n.h
+	    if (/[NQ]?_ *\(QUOTEDTEXT/)
 	    {
                 if (defined isNotValidMissing (unpack("x3 A*", $file))) {
                     ## Remove the first 3 chars and add newline
@@ -489,6 +492,11 @@
 	$in2{$_} = 1;
     }
 
+    foreach (@buf_potfiles_ignore_sorted) 
+    {
+	$in2{$_} = 1;
+    }
+
     my @result;
 
     foreach (@buf_allfiles_sorted)
@@ -504,7 +512,7 @@
     foreach (@buf_potfiles_sorted)
     {
 	chomp (my $dummy = $_);
-	if ("$dummy" ne "" and ! -f "../$dummy")
+	if ("$dummy" ne "" and !(-f "$SRCDIR/../$dummy" or -f "../$dummy"))
 	{
 	    push @buf_potfiles_notexist, $_;
 	}
@@ -537,7 +545,7 @@
 	    warn "\n" if ($VERBOSE or @result);
 	    warn "\e[1mThe following files do not exist anymore:\e[0m\n\n";
 	    warn @buf_potfiles_notexist, "\n";
-	    warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n".
+	    warn "Please remove them from POTFILES.in. A file \e[1m'notexist'\e[0m\n".
 		 "containing this list of absent files has been written in the current directory.\n";
 	}
     }
@@ -555,16 +563,21 @@
     exit 1;
 }
 
+sub isIntltoolExtractInPath
+{
+    my ($file) = @_;
+    # If either a file exists, or when run it returns 0 exit status
+    return 1 if ((-x $file) or (system("$file >/dev/null") == 0));
+    return 0;
+}
+
 sub GenerateHeaders
 {
-    my $EXTRACT = "@INTLTOOL_EXTRACT@";
-    chomp $EXTRACT;
+    my $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} || "intltool-extract";
 
-    $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"};
-
     ## Generate the .h header files, so we can allow glade and
     ## xml translation support
-    if (! -x "$EXTRACT")
+    if (! isIntltoolExtractInPath("$EXTRACT"))
     {
 	print STDERR "\n *** The intltool-extract script wasn't found!"
 	     ."\n *** Without it, intltool-update can not generate files.\n";
@@ -671,12 +684,8 @@
 	} 
 	else 
 	{
-	    if ($SRCDIR eq ".") {
-	        print OUTFILE "../$_\n";
-	    } else {
-	        print OUTFILE "$SRCDIR/../$_\n";
-	    }
-	    $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+            print OUTFILE "$SRCDIR/../$_\n";
+	    $gettext_code = &TextFile_DetermineEncoding ("$SRCDIR/../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);
 	}
 
 	next if (! $gettext_support_nonascii);

Modified: libgpod/branches/upstream/current/libgpod-1.0.pc.in
===================================================================
--- libgpod/branches/upstream/current/libgpod-1.0.pc.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/libgpod-1.0.pc.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -6,6 +6,6 @@
 Name: libgpod
 Description: A library to manipulate songs and playlists stored on an ipod
 Version: @VERSION@
-Requires: glib-2.0 
+Requires: glib-2.0 >= 2.4.0 gobject-2.0
 Libs: -L${libdir} -lgpod
 Cflags: -I${includedir}/gpod-1.0

Modified: libgpod/branches/upstream/current/ltmain.sh
===================================================================
--- libgpod/branches/upstream/current/ltmain.sh	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/ltmain.sh	2007-06-27 21:44:37 UTC (rev 198)
@@ -43,13 +43,19 @@
 
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION="1.5.22 Debian 1.5.22-4"
+VERSION=1.5.22
 TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
 
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes.
-if test -n "${ZSH_VERSION+set}" ; then
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
 fi
 
 # Check that we have a working $echo.
@@ -105,12 +111,14 @@
 # These must not be set unconditionally because not all systems understand
 # e.g. LANG=C (notably SCO).
 # We save the old values to restore during execute mode.
-if test "${LC_ALL+set}" = set; then
-  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
-fi
-if test "${LANG+set}" = set; then
-  save_LANG="$LANG"; LANG=C; export LANG
-fi
+for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+         save_$lt_var=\$$lt_var
+         $lt_var=C
+         export $lt_var
+       fi"
+done
 
 # Make sure IFS has a sensible default
 lt_nl='
@@ -136,6 +144,8 @@
 preserve_args=
 lo2o="s/\\.lo\$/.${objext}/"
 o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
 
 #####################################
 # Shell function definitions:
@@ -327,7 +337,17 @@
 	*) my_xabs=`pwd`"/$my_xlib" ;;
       esac
       my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
-      my_xdir="$my_gentop/$my_xlib"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+       *" $my_xlib_u "*)
+         extracted_serial=`expr $extracted_serial + 1`
+         my_xlib_u=lt$extracted_serial-$my_xlib ;;
+       *) break ;;
+       esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
 
       $show "${rm}r $my_xdir"
       $run ${rm}r "$my_xdir"
@@ -758,6 +778,7 @@
     *.f90) xform=f90 ;;
     *.for) xform=for ;;
     *.java) xform=java ;;
+    *.obj) xform=obj ;;
     esac
 
     libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
@@ -1138,8 +1159,9 @@
     for arg
     do
       case $arg in
-      -all-static | -static)
-	if test "X$arg" = "X-all-static"; then
+      -all-static | -static | -static-libtool-libs)
+    case $arg in
+    -all-static)
 	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
 	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
 	  fi
@@ -1147,12 +1169,20 @@
 	    dlopen_self=$dlopen_self_static
 	  fi
 	  prefer_static_libs=yes
-	else
+	  ;;
+    -static)
 	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
 	    dlopen_self=$dlopen_self_static
 	  fi
 	  prefer_static_libs=built
-	fi
+	  ;;
+    -static-libtool-libs)
+      if test -z "$pic_flag" && test -n "$link_static_flag"; then
+        dlopen_self=$dlopen_self_static
+      fi
+      prefer_static_libs=yes
+      ;;
+    esac
 	build_libtool_libs=no
 	build_old_libs=yes
 	break
@@ -1712,7 +1742,7 @@
 	continue
 	;;
 
-      -static)
+      -static | -static-libtool-libs)
 	# The effects of -static are defined in a previous loop.
 	# We used to do the same as -all-static on platforms that
 	# didn't have a PIC flag, but the assumption that the effects
@@ -2082,10 +2112,7 @@
 	case $pass in
 	dlopen) libs="$dlfiles" ;;
 	dlpreopen) libs="$dlprefiles" ;;
-	link)
-	  libs="$deplibs %DEPLIBS%"
-	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
-	  ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
 	esac
       fi
       if test "$pass" = dlopen; then
@@ -2493,7 +2520,9 @@
 
 	if test "$linkmode,$pass" = "prog,link"; then
 	  if test -n "$library_names" &&
-	     { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+         { { test "$prefer_static_libs" = no ||
+             test "$prefer_static_libs,$installed" = "built,yes"; } ||
+           test -z "$old_library"; }; then
 	    # We need to hardcode the library path
 	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
 	      # Make sure the rpath contains only unique directories.
@@ -3189,7 +3218,7 @@
 	  # which has an extra 1 added just for fun
 	  #
 	  case $version_type in
-	  darwin|linux|osf|windows)
+	  darwin|linux|osf|windows|none)
 	    current=`expr $number_major + $number_minor`
 	    age="$number_minor"
 	    revision="$number_revision"
@@ -3204,11 +3233,6 @@
 	    age="$number_minor"
 	    revision="$number_minor"
 	    ;;
-	  *)
-	    $echo "$modename: unknown library version type \`$version_type'" 1>&2
-	    $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
-	    exit $EXIT_FAILURE
-	    ;;
 	  esac
 	  ;;
 	no)
@@ -3418,11 +3442,11 @@
       fi
 
       # Eliminate all temporary directories.
-      for path in $notinst_path; do
-	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
-	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
-	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
-      done
+#      for path in $notinst_path; do
+#	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+#	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+#	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+#      done
 
       if test -n "$xrpath"; then
 	# If the user specified any rpath flags, then add them.
@@ -3523,13 +3547,12 @@
 	  int main() { return 0; }
 EOF
 	  $rm conftest
-	  $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
-	  if test "$?" -eq 0 ; then
+      if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
 	    ldd_output=`ldd conftest`
 	    for i in $deplibs; do
 	      name=`expr $i : '-l\(.*\)'`
 	      # If $name is empty we are operating on a -L argument.
-              if test "$name" != "" && test "$name" -ne "0"; then
+              if test "$name" != "" && test "$name" != "0"; then
 		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		  case " $predeps $postdeps " in
 		  *" $i "*)
@@ -3568,9 +3591,7 @@
 	      # If $name is empty we are operating on a -L argument.
               if test "$name" != "" && test "$name" != "0"; then
 		$rm conftest
-		$LTCC $LTCFLAGS -o conftest conftest.c $i
-		# Did it work?
-		if test "$?" -eq 0 ; then
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
 		  ldd_output=`ldd conftest`
 		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		    case " $predeps $postdeps " in
@@ -3602,7 +3623,7 @@
 		  droppeddeps=yes
 		  $echo
 		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
-		  $echo "***  make it link in!  You will probably need to install it or some"
+		  $echo "*** make it link in!  You will probably need to install it or some"
 		  $echo "*** library that it depends on before this library will be fully"
 		  $echo "*** functional.  Installing it before continuing would be even better."
 		fi
@@ -4247,12 +4268,14 @@
       reload_conv_objs=
       gentop=
       # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
       wl=
 
       if test -n "$convenience"; then
 	if test -n "$whole_archive_flag_spec"; then
-	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+      reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
 	else
 	  gentop="$output_objdir/${obj}x"
 	  generated="$generated $gentop"
@@ -4700,16 +4723,16 @@
           case $host in
           *cygwin* | *mingw* )
             if test -f "$output_objdir/${outputname}.def" ; then
-              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
-              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
             else
-              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
-              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
              fi
             ;;
           * )
-            compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
-            finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
             ;;
           esac
 	  ;;
@@ -4724,13 +4747,13 @@
 	# really was required.
 
 	# Nullify the symbol file.
-	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
       fi
 
       if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
 	# Replace the output file specification.
-	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
 	link_command="$compile_command$compile_rpath"
 
 	# We have no uninstalled library dependencies, so finalize right now.
@@ -4817,7 +4840,7 @@
 	if test "$fast_install" != no; then
 	  link_command="$finalize_var$compile_command$finalize_rpath"
 	  if test "$fast_install" = yes; then
-	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
 	  else
 	    # fast_install is set to needless
 	    relink_command=
@@ -4854,7 +4877,7 @@
 	  fi
 	done
 	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
       fi
 
       # Quote $echo for shipping.
@@ -5261,6 +5284,18 @@
 Xsed='${SED} -e 1s/^X//'
 sed_quote_subst='$sed_quote_subst'
 
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
@@ -5403,7 +5438,7 @@
 	  ;;
 	esac
 	$echo >> $output "\
-      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      \$echo \"\$0: cannot exec \$program \$*\"
       exit $EXIT_FAILURE
     fi
   else
@@ -5589,7 +5624,7 @@
       done
       # Quote the link command for shipping.
       relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
       if test "$hardcode_automatic" = yes ; then
 	relink_command=
       fi
@@ -5934,9 +5969,9 @@
 
 	  if test -n "$inst_prefix_dir"; then
 	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
 	  else
-	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
 	  fi
 
 	  $echo "$modename: warning: relinking \`$file'" 1>&2
@@ -6145,7 +6180,7 @@
 	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
 	      outputname="$tmpdir/$file"
 	      # Replace the output file specification.
-	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
 
 	      $show "$relink_command"
 	      if $run eval "$relink_command"; then :
@@ -6421,13 +6456,14 @@
       fi
 
       # Restore saved environment variables
-      if test "${save_LC_ALL+set}" = set; then
-	LC_ALL="$save_LC_ALL"; export LC_ALL
-      fi
-      if test "${save_LANG+set}" = set; then
-	LANG="$save_LANG"; export LANG
-      fi
+      for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+       eval "if test \"\${save_$lt_var+set}\" = set; then
+               $lt_var=\$save_$lt_var; export $lt_var
+             fi"
+      done
 
+
       # Now prepare to actually exec the command.
       exec_cmd="\$cmd$args"
     else
@@ -6783,9 +6819,9 @@
   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   -export-symbols SYMFILE
-		    try to export only the symbols listed in SYMFILE
+                    try to export only the symbols listed in SYMFILE
   -export-symbols-regex REGEX
-		    try to export only the symbols matching REGEX
+                    try to export only the symbols matching REGEX
   -LLIBDIR          search LIBDIR for required installed libraries
   -lNAME            OUTPUT-FILE requires the installed library libNAME
   -module           build a library that can dlopened
@@ -6799,9 +6835,11 @@
   -release RELEASE  specify package release information
   -rpath LIBDIR     the created library will eventually be installed in LIBDIR
   -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -static           do not do any dynamic linking of libtool libraries
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
   -version-info CURRENT[:REVISION[:AGE]]
-		    specify library version info [each variable defaults to 0]
+                    specify library version info [each variable defaults to 0]
 
 All other options (arguments beginning with \`-') are ignored.
 

Modified: libgpod/branches/upstream/current/m4/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/m4/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/m4/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -13,6 +13,7 @@
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -20,6 +21,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = ..
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -33,22 +35,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
-subdir = m4
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -148,6 +135,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -169,6 +157,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -189,8 +178,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -216,7 +203,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -231,39 +217,22 @@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 EXTRA_DIST = python.m4 swig.m4
+subdir = m4
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  m4/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  m4/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
 
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -279,7 +248,11 @@
 ctags: CTAGS
 CTAGS:
 
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -292,7 +265,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -310,6 +283,7 @@
 check-am: all-am
 check: check-am
 all-am: Makefile
+
 installdirs:
 install: install-am
 install-exec: install-exec-am
@@ -330,7 +304,7 @@
 clean-generic:
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -347,8 +321,6 @@
 
 dvi-am:
 
-html: html-am
-
 info: info-am
 
 info-am:
@@ -383,10 +355,10 @@
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
 	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-exec install-exec-am \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
+	dvi-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-generic \
 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
 	uninstall-info-am

Deleted: libgpod/branches/upstream/current/m4/gtk-doc.m4
===================================================================
--- libgpod/branches/upstream/current/m4/gtk-doc.m4	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/m4/gtk-doc.m4	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,53 +0,0 @@
-dnl -*- mode: autoconf -*-
-
-# serial 1
-
-dnl Usage:
-dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
-AC_DEFUN([GTK_DOC_CHECK],
-[
-  AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
-  AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
-  dnl for overriding the documentation installation directory
-  AC_ARG_WITH(html-dir,
-    AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
-    [with_html_dir='${datadir}/gtk-doc/html'])
-  HTML_DIR="$with_html_dir"
-  AC_SUBST(HTML_DIR)
-
-  dnl enable/disable documentation building
-  AC_ARG_ENABLE(gtk-doc,
-    AC_HELP_STRING([--enable-gtk-doc],
-                   [use gtk-doc to build documentation [default=no]]),,
-    enable_gtk_doc=no)
-
-  have_gtk_doc=no
-  if test x$enable_gtk_doc = xyes; then
-    if test -z "$PKG_CONFIG"; then
-      AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-    fi
-    if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
-      have_gtk_doc=yes
-    fi
-
-  dnl do we want to do a version check?
-ifelse([$1],[],,
-    [gtk_doc_min_version=$1
-    if test "$have_gtk_doc" = yes; then
-      AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
-      if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
-        AC_MSG_RESULT(yes)
-      else
-        AC_MSG_RESULT(no)
-        have_gtk_doc=no
-      fi
-    fi
-])
-    if test "$have_gtk_doc" != yes; then
-      enable_gtk_doc=no
-    fi
-  fi
-
-  AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
-  AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
-])

Deleted: libgpod/branches/upstream/current/m4/intltool.m4
===================================================================
--- libgpod/branches/upstream/current/m4/intltool.m4	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/m4/intltool.m4	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,227 +0,0 @@
-## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*-
-## Copyright (C) 2001 Eazel, Inc.
-## Author: Maciej Stachowiak <mjs at noisehavoc.org>
-##         Kenneth Christiansen <kenneth at gnu.org>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-## General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-## As a special exception to the GNU General Public License, if you
-## distribute this file as part of a program that contains a
-## configuration script generated by Autoconf, you may include it under
-## the same distribution terms that you use for the rest of that program.
-
-dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
-# serial 35 IT_PROG_INTLTOOL
-AC_DEFUN([IT_PROG_INTLTOOL],
-[AC_PREREQ([2.50])dnl
-
-case "$am__api_version" in
-    1.[01234])
-	AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
-    ;;
-    *)
-    ;;
-esac
-
-if test -n "$1"; then
-    AC_MSG_CHECKING(for intltool >= $1)
-
-    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
-    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
-    [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in`
-    ]
-    AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
-    test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
-	AC_MSG_ERROR([Your intltool is too old.  You need intltool $1 or later.])
-fi
-
-  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
-     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' 
-      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
-
-AC_SUBST(INTLTOOL_DESKTOP_RULE)
-AC_SUBST(INTLTOOL_DIRECTORY_RULE)
-AC_SUBST(INTLTOOL_KEYS_RULE)
-AC_SUBST(INTLTOOL_PROP_RULE)
-AC_SUBST(INTLTOOL_OAF_RULE)
-AC_SUBST(INTLTOOL_PONG_RULE)
-AC_SUBST(INTLTOOL_SERVER_RULE)
-AC_SUBST(INTLTOOL_SHEET_RULE)
-AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
-AC_SUBST(INTLTOOL_UI_RULE)
-AC_SUBST(INTLTOOL_XAM_RULE)
-AC_SUBST(INTLTOOL_KBD_RULE)
-AC_SUBST(INTLTOOL_XML_RULE)
-AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
-AC_SUBST(INTLTOOL_CAVES_RULE)
-AC_SUBST(INTLTOOL_SCHEMAS_RULE)
-AC_SUBST(INTLTOOL_THEME_RULE)
-AC_SUBST(INTLTOOL_SERVICE_RULE)
-
-# Use the tools built into the package, not the ones that are installed.
-AC_SUBST(INTLTOOL_EXTRACT, '$(top_builddir)/intltool-extract')
-AC_SUBST(INTLTOOL_MERGE, '$(top_builddir)/intltool-merge')
-AC_SUBST(INTLTOOL_UPDATE, '$(top_builddir)/intltool-update')
-
-AC_PATH_PROG(INTLTOOL_PERL, perl)
-if test -z "$INTLTOOL_PERL"; then
-   AC_MSG_ERROR([perl not found; required for intltool])
-fi
-if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
-   AC_MSG_ERROR([perl 5.x required for intltool])
-fi
-if test "x$2" != "xno-xml"; then
-   AC_MSG_CHECKING([for XML::Parser])
-   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
-       AC_MSG_RESULT([ok])
-   else
-       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
-   fi
-fi
-
-AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv)
-AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
-AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
-AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
-
-# Substitute ALL_LINGUAS so we can use it in po/Makefile
-AC_SUBST(ALL_LINGUAS)
-
-# Set DATADIRNAME correctly if it is not set yet
-# (copied from glib-gettext.m4)
-if test -z "$DATADIRNAME"; then
-  AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
-                 return _nl_msg_cat_cntr],
-    [DATADIRNAME=share],
-    [case $host in
-    *-*-solaris*)
-    dnl On Solaris, if bind_textdomain_codeset is in libc,
-    dnl GNU format message catalog is always supported,
-    dnl since both are added to the libc all together.
-    dnl Hence, we'd like to go with DATADIRNAME=share
-    dnl in this case.
-    AC_CHECK_FUNC(bind_textdomain_codeset,
-      [DATADIRNAME=share], [DATADIRNAME=lib])
-    ;;
-    *)
-    [DATADIRNAME=lib]
-    ;;
-    esac])
-fi
-AC_SUBST(DATADIRNAME)
-
-IT_PO_SUBDIR([po])
-
-dnl The following is very similar to
-dnl
-dnl	AC_CONFIG_FILES([intltool-extract intltool-merge intltool-update])
-dnl
-dnl with the following slight differences:
-dnl  - the *.in files are in ac_aux_dir,
-dnl  - if the file haven't changed upon reconfigure, it's not touched,
-dnl  - the evaluation of the third parameter enables a hack which computes
-dnl    the actual value of $libdir,
-dnl  - the user sees "executing intltool commands", instead of
-dnl    "creating intltool-extract" and such.
-dnl
-dnl Nothing crucial here, and we could use AC_CONFIG_FILES, if there were
-dnl a reason for it.
-
-AC_CONFIG_COMMANDS([intltool], [
-
-for file in intltool-extract intltool-merge intltool-update; do
-  sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \
-      -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \
-      -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \
-      -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \
-      -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \
-      -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \
-      -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \
-	< ${ac_aux_dir}/${file}.in > ${file}.out
-  if cmp -s ${file} ${file}.out 2>/dev/null; then
-    rm -f ${file}.out
-  else
-    mv -f ${file}.out ${file}
-  fi
-  chmod ugo+x ${file}
-  chmod u+w ${file}
-done
-
-],
-[INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}'
-prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir" 
-INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}'
-INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}'
-INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}'])
-
-])
-
-
-# IT_PO_SUBDIR(DIRNAME)
-# ---------------------
-# All po subdirs have to be declared with this macro; the subdir "po" is
-# declared by IT_PROG_INTLTOOL.
-#
-AC_DEFUN([IT_PO_SUBDIR],
-[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
-dnl
-dnl The following CONFIG_COMMANDS should be exetuted at the very end
-dnl of config.status.
-AC_CONFIG_COMMANDS_PRE([
-  AC_CONFIG_COMMANDS([$1/stamp-it], [
-    rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
-    >"$1/stamp-it.tmp"
-    [sed '/^#/d
-	 s/^[[].*] *//
-	 /^[ 	]*$/d
-	'"s|^|	$ac_top_srcdir/|" \
-      "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
-    ]
-    if test ! -f "$1/Makefile"; then
-      AC_MSG_ERROR([$1/Makefile is not ready.])
-    fi
-    mv "$1/Makefile" "$1/Makefile.tmp"
-    [sed '/^POTFILES =/,/[^\\]$/ {
-		/^POTFILES =/!d
-		r $1/POTFILES
-	  }
-	 ' "$1/Makefile.tmp" >"$1/Makefile"]
-    rm -f "$1/Makefile.tmp"
-    mv "$1/stamp-it.tmp" "$1/stamp-it"
-  ])
-])dnl
-])
-
-
-# deprecated macros
-AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
-# A hint is needed for aclocal from Automake <= 1.9.4:
-# AC_DEFUN([AC_PROG_INTLTOOL], ...)
-

Modified: libgpod/branches/upstream/current/m4/python.m4
===================================================================
--- libgpod/branches/upstream/current/m4/python.m4	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/m4/python.m4	2007-06-27 21:44:37 UTC (rev 198)
@@ -26,7 +26,6 @@
 ])
 
 dnl copied and modified from gnome-python
-dnl http://cvs.gnome.org/viewcvs/*checkout*/gnome-python/pygtk/m4/python.m4
 dnl
 dnl AM_CHECK_PYMOD(MODNAME [,VERSION, VERSION_MATCHER [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
 dnl Check if a module of a particular version is visible to python.
@@ -47,10 +46,13 @@
 import sys, string, $1
 curverstr = $3
 # use method from AM_PYTHON_CHECK_VERSION
-minver = map(int, string.split('$2', '.')) + [[0, 0, 0]]
+minver = map(int, string.split('$2', '.'))
+length = len[(minver)]
+minver += [[0, 0, 0]]
 minverhex = 0
 for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
-curver = map(int, string.split(curverstr, '.')) + [[0, 0, 0]]
+curver = map(int, string.split(curverstr, '.')[[:length]])
+curver += [[0, 0, 0]]
 curverhex = 0
 for i in xrange(0, 4): curverhex = (curverhex << 8) + curver[[i]]
 if (curverhex >= minverhex):
@@ -121,8 +123,8 @@
                 fi
                 AC_SUBST(PYTHON_LDFLAGS)
 
-                dnl check for eyeD3 module >= $PYTHON_EYED3_MIN_VERSION
-                AM_CHECK_PYMOD(eyeD3,$PYTHON_EYED3_MIN_VERSION,eyeD3.eyeD3Version,,with_python=no)
+                dnl check for mutagen module >= $PYTHON_MUTAGEN_MIN_VERSION
+                AM_CHECK_PYMOD(mutagen,$PYTHON_MUTAGEN_MIN_VERSION,mutagen.version_string,,with_python=no)
 
                 dnl check for swig
                 if test "X$with_python" == Xyes; then

Modified: libgpod/branches/upstream/current/missing
===================================================================
--- libgpod/branches/upstream/current/missing	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/missing	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,10 +1,6 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
-
-scriptversion=2005-06-08.21
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
-#   Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -19,8 +15,8 @@
 
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -42,25 +38,19 @@
   configure_ac=configure.in
 fi
 
-msg="missing on your system"
-
 case "$1" in
 --run)
   # Try to run requested program, and just exit if it succeeds.
   run=
   shift
   "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
   ;;
+esac
 
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
@@ -84,15 +74,11 @@
   lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
   tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Send bug reports to <bug-automake at gnu.org>."
-    exit $?
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
     ;;
 
   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
+    echo "missing 0.4 - GNU automake"
     ;;
 
   -*)
@@ -101,44 +87,14 @@
     exit 1
     ;;
 
-esac
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).
-case "$1" in
-  lex|yacc)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
+  aclocal*)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
        exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
     fi
-    ;;
-esac
 
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-  aclocal*)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
+WARNING: \`$1' is missing on your system.  You should only need it if
          you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
          to install the \`Automake' and \`Perl' packages.  Grab them from
          any GNU archive site."
@@ -146,8 +102,13 @@
     ;;
 
   autoconf)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
+WARNING: \`$1' is missing on your system.  You should only need it if
          you modified \`${configure_ac}'.  You might want to install the
          \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
          archive site."
@@ -155,8 +116,13 @@
     ;;
 
   autoheader)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
+WARNING: \`$1' is missing on your system.  You should only need it if
          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
          to install the \`Autoconf' and \`GNU m4' packages.  Grab them
          from any GNU archive site."
@@ -174,8 +140,13 @@
     ;;
 
   automake*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
+WARNING: \`$1' is missing on your system.  You should only need it if
          you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
          You might want to install the \`Automake' and \`Perl' packages.
          Grab them from any GNU archive site."
@@ -185,9 +156,14 @@
     ;;
 
   autom4te)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
     echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
          proper tools for further handling them.
          You can get \`$1' as part of \`Autoconf' from any GNU
          archive site."
@@ -209,7 +185,7 @@
 
   bison|yacc)
     echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
+WARNING: \`$1' is missing on your system.  You should only need it if
          you modified a \`.y' file.  You may need the \`Bison' package
          in order for those modifications to take effect.  You can get
          \`Bison' from any GNU archive site."
@@ -239,7 +215,7 @@
 
   lex|flex)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
+WARNING: \`$1' is missing on your system.  You should only need it if
          you modified a \`.l' file.  You may need the \`Flex' package
          in order for those modifications to take effect.  You can get
          \`Flex' from any GNU archive site."
@@ -261,8 +237,13 @@
     ;;
 
   help2man)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
+WARNING: \`$1' is missing on your system.  You should only need it if
 	 you modified a dependency of a manual page.  You may need the
 	 \`Help2man' package in order for those modifications to take
 	 effect.  You can get \`Help2man' from any GNU archive site."
@@ -281,30 +262,32 @@
     ;;
 
   makeinfo)
+    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+       # We have makeinfo, but it failed.
+       exit 1
+    fi
+
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
+WARNING: \`$1' is missing on your system.  You should only need it if
          you modified a \`.texi' or \`.texinfo' file, or any other file
          indirectly affecting the aspect of the manual.  The spurious
          call might also be the consequence of using a buggy \`make' (AIX,
          DU, IRIX).  You might want to install the \`Texinfo' package or
          the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
     if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
     fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
     touch $file
     ;;
 
   tar)
     shift
+    if test -n "$run"; then
+      echo 1>&2 "ERROR: \`tar' requires --run"
+      exit 1
+    fi
 
     # We have already tried tar in the generic part.
     # Look for gnutar/gtar before invocation to avoid ugly error
@@ -340,8 +323,8 @@
 
   *)
     echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
          proper tools for further handling them.  Check the \`README' file,
          it often tells you about the needed prerequisites for installing
          this package.  You may also peek at any GNU archive site, in case
@@ -351,10 +334,3 @@
 esac
 
 exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:

Modified: libgpod/branches/upstream/current/mkinstalldirs
===================================================================
--- libgpod/branches/upstream/current/mkinstalldirs	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/mkinstalldirs	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,33 +1,21 @@
 #! /bin/sh
 # mkinstalldirs --- make directory hierarchy
-
-scriptversion=2005-06-29.22
-
-# Original author: Noah Friedman <friedman at prep.ai.mit.edu>
+# Author: Noah Friedman <friedman at prep.ai.mit.edu>
 # Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
+# Public domain
 
 errstatus=0
-dirmode=
+dirmode=""
 
 usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
 
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake at gnu.org>."
-
 # process command line arguments
 while test $# -gt 0 ; do
   case $1 in
     -h | --help | --h*)         # -h for help
-      echo "$usage"
-      exit $?
+      echo "$usage" 1>&2
+      exit 0
       ;;
     -m)                         # -m PERM arg
       shift
@@ -35,10 +23,6 @@
       dirmode=$1
       shift
       ;;
-    --version)
-      echo "$0 $scriptversion"
-      exit $?
-      ;;
     --)                         # stop option processing
       shift
       break
@@ -66,58 +50,30 @@
   0) exit 0 ;;
 esac
 
-# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error.  This is a problem when calling mkinstalldirs
-# from a parallel make.  We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
 case $dirmode in
   '')
-    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+    if mkdir -p -- . 2>/dev/null; then
       echo "mkdir -p -- $*"
       exec mkdir -p -- "$@"
-    else
-      # On NextStep and OpenStep, the `mkdir' command does not
-      # recognize any option.  It will interpret all options as
-      # directories to create, and then abort because `.' already
-      # exists.
-      test -d ./-p && rmdir ./-p
-      test -d ./--version && rmdir ./--version
     fi
     ;;
   *)
-    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
-       test ! -d ./--version; then
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
       echo "mkdir -m $dirmode -p -- $*"
       exec mkdir -m "$dirmode" -p -- "$@"
-    else
-      # Clean up after NextStep and OpenStep mkdir.
-      for d in ./-m ./-p ./--version "./$dirmode";
-      do
-        test -d $d && rmdir $d
-      done
     fi
     ;;
 esac
 
 for file
 do
-  case $file in
-    /*) pathcomp=/ ;;
-    *)  pathcomp= ;;
-  esac
-  oIFS=$IFS
-  IFS=/
-  set fnord $file
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
   shift
-  IFS=$oIFS
 
+  pathcomp=
   for d
   do
-    test "x$d" = x && continue
-
-    pathcomp=$pathcomp$d
+    pathcomp="$pathcomp$d"
     case $pathcomp in
       -*) pathcomp=./$pathcomp ;;
     esac
@@ -128,21 +84,21 @@
       mkdir "$pathcomp" || lasterr=$?
 
       if test ! -d "$pathcomp"; then
-	errstatus=$lasterr
+  	errstatus=$lasterr
       else
-	if test ! -z "$dirmode"; then
+  	if test ! -z "$dirmode"; then
 	  echo "chmod $dirmode $pathcomp"
-	  lasterr=
-	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+    	  lasterr=""
+  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
 
-	  if test ! -z "$lasterr"; then
-	    errstatus=$lasterr
-	  fi
-	fi
+  	  if test ! -z "$lasterr"; then
+  	    errstatus=$lasterr
+  	  fi
+  	fi
       fi
     fi
 
-    pathcomp=$pathcomp/
+    pathcomp="$pathcomp/"
   done
 done
 
@@ -151,8 +107,5 @@
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
 # End:
+# mkinstalldirs ends here

Modified: libgpod/branches/upstream/current/po/Makefile.in.in
===================================================================
--- libgpod/branches/upstream/current/po/Makefile.in.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/po/Makefile.in.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -25,7 +25,7 @@
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
-top_builddir = ..
+top_builddir = @top_builddir@
 VPATH = @srcdir@
 
 prefix = @prefix@
@@ -56,15 +56,19 @@
 
 PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
 
-POFILES=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep ^$$lang$$ $(srcdir)/LINGUAS`" -o -n "`echo $$ALINGUAS|grep ' ?$$lang ?'`"; then printf "$$lang "; fi; done; fi)
 
+USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
+
+POFILES=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
 DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES)
 EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
 
 POTFILES = \
-#This Gets Replace for some reason
+# This comment gets stripped out
 
-CATALOGS=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
 
 .SUFFIXES:
 .SUFFIXES: .po .pox .gmo .mo .msg .cat
@@ -98,11 +102,7 @@
 install-data-no: all
 install-data-yes: all
 	$(mkdir_p) $(DESTDIR)$(itlocaledir)
-	if test -n "$(PO_LINGUAS)"; then \
-	  linguas="$(PO_LINGUAS)"; \
-	else \
-	  linguas="$(ALL_LINGUAS)"; \
-	fi; \
+	linguas="$(USE_LINGUAS)"; \
 	for lang in $$linguas; do \
 	  dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
 	  $(mkdir_p) $$dir; \
@@ -136,17 +136,18 @@
 installcheck:
 
 uninstall:
-	if test -n "$(PO_LINGUAS)"; then \
-	  linguas="$(PO_LINGUAS)"; \
-	else \
-	  linguas="$(ALL_LINGUAS)"; \
-	fi; \
+	linguas="$(USE_LINGUAS)"; \
 	for lang in $$linguas; do \
 	  rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
 	  rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
 	done
 
 check: all $(GETTEXT_PACKAGE).pot
+	rm -f missing notexist
+	srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
+	if [ -r missing -o -r notexist ]; then \
+	  exit 1; \
+	fi
 
 mostlyclean:
 	rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
@@ -179,11 +180,7 @@
 update-po: Makefile
 	$(MAKE) $(GETTEXT_PACKAGE).pot
 	tmpdir=`pwd`; \
-	if test -n "$(PO_LINGUAS)"; then \
-	  linguas="$(PO_LINGUAS)"; \
-	else \
-	  linguas="$(ALL_LINGUAS)"; \
-	fi; \
+	linguas="$(USE_LINGUAS)"; \
 	for lang in $$linguas; do \
 	  echo "$$lang:"; \
 	  result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
@@ -211,8 +208,8 @@
 	  $(MAKE) stamp-it; \
 	fi
 
-stamp-it: Makefile.in.in ../config.status POTFILES.in
-	cd .. \
+stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+	cd $(top_builddir) \
 	  && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
 	       $(SHELL) ./config.status
 

Modified: libgpod/branches/upstream/current/po/de.po
===================================================================
--- libgpod/branches/upstream/current/po/de.po	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/po/de.po	2007-06-27 21:44:37 UTC (rev 198)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gtkpod 0.52\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-15 22:30+0900\n"
+"POT-Creation-Date: 2007-06-14 23:00+0900\n"
 "PO-Revision-Date: 2007-01-15 23:46+0900\n"
 "Last-Translator: Jörg Schuler <jcsjcs at users.sourceforge.net>\n"
 "Language-Team: none\n"
@@ -21,18 +21,18 @@
 msgid "Unexpected mhod3 string type: %d\n"
 msgstr "Unerwarteter mhod3 Stringtyp: %d\n"
 
-#: ../src/db-artwork-parser.c:265
+#: ../src/db-artwork-parser.c:267
 #, c-format
 msgid "Could not find corresponding track (dbid: %s) for artwork entry.\n"
 msgstr ""
 "Konnte zugehöriges Musikstück (dbid: %s) für Artworkeintrag nicht finden.\n"
 
-#: ../src/db-artwork-parser.c:291
+#: ../src/db-artwork-parser.c:293
 #, c-format
 msgid "iTunesDB and ArtworkDB artwork sizes inconsistent (%d+%d != %d)\n"
 msgstr "Artwork-Größen in iTunesDB und ArtworkDB inkonsistent (%d+%d != %d)\n"
 
-#: ../src/db-artwork-parser.c:459
+#: ../src/db-artwork-parser.c:463
 #, c-format
 msgid "Unexpected mhsd index: %d\n"
 msgstr "Unerwarteter mhsd-Index: %d\n"
@@ -42,33 +42,34 @@
 msgid "Unexpected image type in mhni: size: %ux%u (%d), offset: %d\n"
 msgstr "Unerwarter Bildtyp in mhni: Größe: %ux%u (%d), Offset: %d\n"
 
-#: ../src/itdb_artwork.c:198
+#: ../src/itdb_artwork.c:199
 #, c-format
 msgid "Could not access file '%s'."
 msgstr "Datei nicht auf Datei zugreifen: '%s'."
 
-#: ../src/itdb_artwork.c:215 ../src/itdb_artwork.c:276
+#: ../src/itdb_artwork.c:216 ../src/itdb_artwork.c:277
+#: ../src/itdb_artwork.c:337
 msgid "Artwork support not compiled into libgpod."
 msgstr "Artwork-Unterstützung ist nicht in libgpod einkompiliert worden."
 
-#: ../src/itdb_artwork.c:334
+#: ../src/itdb_artwork.c:395
 #, c-format
 msgid "Illegal filename: '%s'.\n"
 msgstr "Nicht zulässiger Dateiname: '%s'.\n"
 
-#: ../src/itdb_artwork.c:340
+#: ../src/itdb_artwork.c:401
 msgid "Mountpoint not set.\n"
 msgstr "Mountpoint wurde nicht gesetzt.\n"
 
-#: ../src/itdb_artwork.c:493
+#: ../src/itdb_artwork.c:554
 #, c-format
 msgid "Could not find on iPod: '%s'\n"
 msgstr "Nicht auf dem iPod gefunden: '%s'\n"
 
-#: ../src/itdb_artwork.c:701
-#, c-format
+#: ../src/itdb_artwork.c:768
+#, fuzzy, c-format
 msgid ""
-"Unable to retreive thumbnail (appears to be on iPod, but no image info "
+"Unable to retrieve thumbnail (appears to be on iPod, but no image info "
 "available): type: %d, filename: '%s'\n"
 msgstr ""
 "Thumbnail konnte nicht geladen werden. Der Thumbnail scheint auf dem iPod zu "
@@ -191,48 +192,55 @@
 msgid "Mobile Phone"
 msgstr "Mobiltelefon"
 
-#: ../src/itdb_device.c:450
+#: ../src/itdb_device.c:470
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "'%s' konnte nicht zum Schreiben geöffnet werden."
 
-#: ../src/itdb_device.c:459
+#: ../src/itdb_device.c:479
 msgid "Device directory does not exist."
 msgstr "Das 'Device'-Verzeichnis existiert nicht."
 
-#: ../src/itdb_itunesdb.c:419
+#: ../src/itdb_itunesdb.c:448
 #, c-format
 msgid "Illegal seek to offset %ld (length %ld) in file '%s'."
 msgstr "Illegaler seek bei Offset %ld (Länge %ld) in Datei '%s'."
 
-#: ../src/itdb_itunesdb.c:873
+#: ../src/itdb_itunesdb.c:902
 #, c-format
 msgid "Not a Play Counts file: '%s' (missing mhdp header)."
 msgstr "Keine Play Counts Datei: '%s' (mhdp-Header fehlt)."
 
-#: ../src/itdb_itunesdb.c:888
+#: ../src/itdb_itunesdb.c:917
 #, c-format
 msgid "Play Counts file ('%s'): header length smaller than expected (%d<96)."
 msgstr "Play Counts Datei ('%s'): Headerlänge kleiner als erwarted (%d<96)."
 
-#: ../src/itdb_itunesdb.c:902
+#: ../src/itdb_itunesdb.c:931
 #, c-format
 msgid "Play Counts file ('%s'): entry length smaller than expected (%d<12)."
 msgstr ""
 "Play Counts Datei ('%s'): Länge der Einträge kleiner als erwartet (%d<12)."
 
-#: ../src/itdb_itunesdb.c:981
+#: ../src/itdb_itunesdb.c:1006
 #, c-format
 msgid "iTunesStats file ('%s'): entry length smaller than expected (%d<18)."
 msgstr ""
 "iTunesStats Datei ('%s'): Länge der Einträge kleiner als erwartet (%d<18)."
 
-#: ../src/itdb_itunesdb.c:1300
+#: ../src/itdb_itunesdb.c:1328
 #, c-format
 msgid "iTunesDB corrupt: no MHOD at offset %ld in file '%s'."
 msgstr "iTunesDB beschädigt: kein MHOD bei Offset %ld in Datei '%s'."
 
-#: ../src/itdb_itunesdb.c:1462
+#: ../src/itdb_itunesdb.c:1476
+#, fuzzy, c-format
+msgid "Unknown smart rule action at %ld: %x. Trying to continue.\n"
+msgstr ""
+"Es wurde nicht wie erwarted ein 'SLst'-Hunk gefunden. Es wird trotzdem "
+"versucht, weiterzumachen.\n"
+
+#: ../src/itdb_itunesdb.c:1507
 #, c-format
 msgid ""
 "Length of smart playlist rule field (%d) not as expected. Trying to continue "
@@ -241,12 +249,12 @@
 "Die Länge einer Regel (%d) einer intelligenten Wiedergabeliste weicht von "
 "der erwarteten Länge ab. Es wird versucht fortzufahren.\n"
 
-#: ../src/itdb_itunesdb.c:1494
+#: ../src/itdb_itunesdb.c:1550
 #, c-format
 msgid "iTunesDB corrupt: no SLst at offset %ld in file '%s'."
 msgstr "iTunesDB beschädigt: kein SLst-Eintrag bei Offset %ld in Datei '%s'."
 
-#: ../src/itdb_itunesdb.c:1507
+#: ../src/itdb_itunesdb.c:1563
 #, c-format
 msgid ""
 "Encountered unknown MHOD type (%d) while parsing the iTunesDB. Ignoring.\n"
@@ -256,14 +264,14 @@
 "versucht fortzufahren.\n"
 "\n"
 
-#: ../src/itdb_itunesdb.c:1577
+#: ../src/itdb_itunesdb.c:1642
 #, c-format
 msgid "iTunesDB corrupt: hunk length 0 for hunk at %ld in file '%s'."
 msgstr ""
 "iTunesDB beschädigt: Hunklänge ist Null für den Hunk an Offset %ld in Datei "
 "'%s'."
 
-#: ../src/itdb_itunesdb.c:1590
+#: ../src/itdb_itunesdb.c:1655
 #, c-format
 msgid ""
 "iTunesDB corrupt: no section '%s' found in section '%s' starting at %ld."
@@ -271,7 +279,7 @@
 "iTunesDB beschädigt: kein '%s'-Eintrag in Sektion '%s' (startend bei %ld) "
 "gefunden."
 
-#: ../src/itdb_itunesdb.c:1604
+#: ../src/itdb_itunesdb.c:1669
 #, c-format
 msgid ""
 "header length of '%s' smaller than expected (%d < %d) at offset %ld in file "
@@ -280,12 +288,12 @@
 "Header-Länge des Abschnitts '%s' ist kleiner als erwartet (%d < %d) an "
 "Offset %ld in Datei '%s'."
 
-#: ../src/itdb_itunesdb.c:1689
+#: ../src/itdb_itunesdb.c:1754
 #, c-format
 msgid "Not a iTunesDB: '%s' (missing mhdb header)."
 msgstr "Keine iTunesDB Datei: '%s' (kein mhdb-Header)."
 
-#: ../src/itdb_itunesdb.c:1706
+#: ../src/itdb_itunesdb.c:1771
 #, c-format
 msgid ""
 "iTunesDB ('%s'): header length of mhsd hunk smaller than expected (%d<32). "
@@ -294,45 +302,45 @@
 "iTunesDB ('%s'): Headerlänge des mhsd-Hunks is kleiner als erwartet (%d<32). "
 "Breche ab."
 
-#: ../src/itdb_itunesdb.c:1727
+#: ../src/itdb_itunesdb.c:1792
 #, c-format
 msgid "iTunesDB '%s' corrupt: mhsd expected at %ld."
 msgstr ""
 "Die iTunesDB '%s' ist beschädigt: bei Offset %ld wird ein mhsd-Abschnitt "
 "erwartet."
 
-#: ../src/itdb_itunesdb.c:1844
+#: ../src/itdb_itunesdb.c:1909
 #, c-format
 msgid "Number of MHODs in mhip at %ld inconsistent in file '%s'."
 msgstr ""
 "Anzahl der MHODs-Abschnitte in der mhip-Sektion an Offset %ld ist in der "
 "Datei '%s' nicht konsistent."
 
-#: ../src/itdb_itunesdb.c:1862
+#: ../src/itdb_itunesdb.c:1927
 #, c-format
 msgid "Itdb_Track ID '%d' not found.\n"
 msgstr "Itdb_Track ID '%d' nicht gefunden.\n"
 
-#: ../src/itdb_itunesdb.c:2024
+#: ../src/itdb_itunesdb.c:2096
 #, c-format
 msgid "Number of MHODs in mhyp at %ld inconsistent in file '%s'."
 msgstr ""
 "Anzahl der MHOD-Abschnitte in der mhyp-Sektion bei Offset %ld in der Datei '%"
 "s' ist inkonsistent."
 
-#: ../src/itdb_itunesdb.c:2034
+#: ../src/itdb_itunesdb.c:2106
 msgid "Master-PL"
 msgstr "Haupt-PL"
 
-#: ../src/itdb_itunesdb.c:2038
+#: ../src/itdb_itunesdb.c:2110
 msgid "Podcasts"
 msgstr "Podcasts"
 
-#: ../src/itdb_itunesdb.c:2040
+#: ../src/itdb_itunesdb.c:2112
 msgid "Playlist"
 msgstr "Wiedergabeliste"
 
-#: ../src/itdb_itunesdb.c:2062
+#: ../src/itdb_itunesdb.c:2134
 #, c-format
 msgid ""
 "iTunesDB corrupt: number of mhip sections inconsistent in mhyp starting at %"
@@ -341,44 +349,43 @@
 "Die iTunesDB ist beschädigt: die Anzahl der mhip-Sektionen im mhyp-Abschnit "
 "startend bei %ld in Datei '%s' ist inkonsistent."
 
-#: ../src/itdb_itunesdb.c:2375
+#: ../src/itdb_itunesdb.c:2468
 msgid "OTG Playlist"
 msgstr "OTG-Wiedergabeliste"
 
-#: ../src/itdb_itunesdb.c:2393
+#: ../src/itdb_itunesdb.c:2486
 #, c-format
 msgid "Not a OTG playlist file: '%s' (missing mhpo header)."
 msgstr "Keine OTG (On-The-Go) Wiedergabelistendatei: '%s' (mhpo-Header fehlt)."
 
-#: ../src/itdb_itunesdb.c:2407
+#: ../src/itdb_itunesdb.c:2500
 #, c-format
 msgid "OTG playlist file ('%s'): header length smaller than expected (%d<20)."
 msgstr ""
 "OTG (On-The-Go) Wiedergabelistendatei ('%s'): Headerlänger kleiner als "
 "erwartet (%d<20)."
 
-#: ../src/itdb_itunesdb.c:2419
-#, c-format
-msgid ""
-"OTG playlist file file ('%s'): entry length smaller than expected (%d<4)."
+#: ../src/itdb_itunesdb.c:2512
+#, fuzzy, c-format
+msgid "OTG playlist file ('%s'): entry length smaller than expected (%d<4)."
 msgstr ""
 "OTG (On-The-Go) Wiedergabelistendatei ('%s'): Länge der Einträge kleiner als "
 "erwartet (%d<4)."
 
-#: ../src/itdb_itunesdb.c:2454
+#: ../src/itdb_itunesdb.c:2547
 #, c-format
 msgid "OTG playlist file '%s': reference to non-existent track (%d)."
 msgstr ""
 "OTG (On-The-Go) Wiedergabelistendateii '%s' bezieht sich auf ein nicht "
 "existierendes Stück (%d)."
 
-#: ../src/itdb_itunesdb.c:2499
+#: ../src/itdb_itunesdb.c:2592
 #, c-format
 msgid "OTG Playlist %d"
 msgstr "OTG-Wiedergabeliste %d"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2567
+#: ../src/itdb_itunesdb.c:2660
 msgid ""
 "iTunesDB corrupt: number of tracks (mhit hunks) inconsistent. Trying to "
 "continue.\n"
@@ -387,7 +394,7 @@
 "konsistent. Versuche fortzufahren.\n"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2630
+#: ../src/itdb_itunesdb.c:2723
 msgid ""
 "iTunesDB possibly corrupt: number of playlists (mhyp hunks) inconsistent. "
 "Trying to continue.\n"
@@ -395,7 +402,7 @@
 "iTunesDB möglicherweise beschädigt: Anzahl der Wiedergabelisten (mhyp-Hunks) "
 "ist nicht konsistent. Versuche fortzufahren.\n"
 
-#: ../src/itdb_itunesdb.c:2677
+#: ../src/itdb_itunesdb.c:2770
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find tracklist (no mhsd type 1 section "
@@ -404,7 +411,7 @@
 "Die iTunesDB '%s' ist beschädigt: die Trackliste konnte nicht gefunden "
 "werden (kein mhsd-Abschnitt des Typs 1 gefunden)."
 
-#: ../src/itdb_itunesdb.c:2706
+#: ../src/itdb_itunesdb.c:2799
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find playlists (no mhsd type 2 or type 3 "
@@ -413,122 +420,133 @@
 "Die iTunesDB '%s' ist beschädigt: die Playlisten konnten nicht gefunden "
 "werden (keine mhsd-Abschnitte des Typs 2 oder 3 gefunden)."
 
-#: ../src/itdb_itunesdb.c:2728
+#: ../src/itdb_itunesdb.c:2821
 #, c-format
 msgid "iTunes directory not found: '%s' (or similar)."
 msgstr ""
 "Das 'iTunes'-Verzeichnis konnte nicht gefunden werden: '%s' (oder ähnlich)."
 
-#: ../src/itdb_itunesdb.c:2745
+#: ../src/itdb_itunesdb.c:2838
 #, c-format
 msgid "Music directory not found: '%s' (or similar)."
 msgstr ""
 "Das 'Music'-Verzeichnis konnte nicht gefunden werden: '%s' (oder ähnlich)."
 
-#: ../src/itdb_itunesdb.c:2763
+#: ../src/itdb_itunesdb.c:2856
 #, c-format
 msgid "Control directory not found: '%s' (or similar)."
 msgstr ""
 "Das 'Control'-Verzeichnis konnte nicht gefunden werden: '%s' (oder ähnlich)."
 
-#: ../src/itdb_itunesdb.c:2836
+#: ../src/itdb_itunesdb.c:2974
 #, c-format
 msgid "File not found: '%s'."
 msgstr "Datei nicht gefunden: '%s'."
 
-#: ../src/itdb_itunesdb.c:3654
+#: ../src/itdb_itunesdb.c:4746
 #, c-format
-msgid "Cannot write mhod of type %d\n"
-msgstr "Schreiben eines mhod-Hunks vom Typ %d ist nicht unterstützt.\n"
-
-#: ../src/itdb_itunesdb.c:4245
-#, c-format
 msgid "Opening of '%s' for writing failed (%s)."
 msgstr "Öffnen der Datei '%s' zum Schreiben ist fehlgeschlagen (%s)."
 
-#: ../src/itdb_itunesdb.c:4256 ../src/itdb_itunesdb.c:4267
+#: ../src/itdb_itunesdb.c:4757 ../src/itdb_itunesdb.c:4768
 #, c-format
 msgid "Writing to '%s' failed (%s)."
 msgstr "Schreiben in die Datei '%s' ist fehlgeschlagen (%s)."
 
-#: ../src/itdb_itunesdb.c:4617
+#: ../src/itdb_itunesdb.c:5122
 #, c-format
 msgid "Path not found: '%s' (or similar)."
 msgstr "Pfad nicht gefunden: '%s' (oder ähnlich)."
 
-#: ../src/itdb_itunesdb.c:4836
+#: ../src/itdb_itunesdb.c:5341
 #, c-format
 msgid "Error renaming '%s' to '%s' (%s)."
 msgstr "Fehler beim Umbenennen von '%s' nach '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:4853 ../src/itdb_itunesdb.c:4870
+#: ../src/itdb_itunesdb.c:5358 ../src/itdb_itunesdb.c:5375
 #, c-format
 msgid "Error removing '%s' (%s)."
 msgstr "Fehler beim Entfernen von '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5056
+#: ../src/itdb_itunesdb.c:5531 ../src/itdb_itunesdb.c:5692
+#, fuzzy
+msgid "Mountpoint not set."
+msgstr "Mountpoint wurde nicht gesetzt.\n"
+
+#: ../src/itdb_itunesdb.c:5571
 #, c-format
 msgid "No 'F..' directories found in '%s'."
 msgstr "No 'F..' directories were found in '%s'."
 
-#: ../src/itdb_itunesdb.c:5084
+#: ../src/itdb_itunesdb.c:5592
 #, c-format
 msgid "Path not found: '%s'."
 msgstr "Pfad nicht gefunden: '%s'."
 
-#: ../src/itdb_itunesdb.c:5243
+#: ../src/itdb_itunesdb.c:5701
+#, fuzzy, c-format
+msgid "'%s' could not be accessed (%s)."
+msgstr "Datei nicht auf Datei zugreifen: '%s'."
+
+#: ../src/itdb_itunesdb.c:5711
 #, c-format
+msgid ""
+"Destination file '%s' does not appear to be on the iPod mounted at '%s'."
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:5915
+#, c-format
 msgid "Error opening '%s' for reading (%s)."
 msgstr "Fehler beim Öffnen von '%s' zum Lesen (%s)."
 
-#: ../src/itdb_itunesdb.c:5254
+#: ../src/itdb_itunesdb.c:5926
 #, c-format
 msgid "Error opening '%s' for writing (%s)."
 msgstr "Fehler beim Öffnen von '%s' zum Schreiben (%s)."
 
-#: ../src/itdb_itunesdb.c:5271
+#: ../src/itdb_itunesdb.c:5943
 #, c-format
 msgid "Error while reading from '%s' (%s)."
 msgstr "Fehler beim Lesen aus '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5287
+#: ../src/itdb_itunesdb.c:5959
 #, c-format
 msgid "Error while writing to '%s' (%s)."
 msgstr "Fehler beim Schreiben in die Datei '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5300 ../src/itdb_itunesdb.c:5310
+#: ../src/itdb_itunesdb.c:5972 ../src/itdb_itunesdb.c:5982
 #, c-format
 msgid "Error when closing '%s' (%s)."
 msgstr "Fehler beim Schließen der Datei '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5673
+#: ../src/itdb_itunesdb.c:6347
 msgid "iPod"
 msgstr "iPod"
 
-#: ../src/itdb_itunesdb.c:6066
+#: ../src/itdb_itunesdb.c:6740
 #, c-format
 msgid "Problem creating iPod directory or file: '%s'."
 msgstr ""
 "Problem beim Erstellen eines Verzeichnisses oder einer Datei auf dem iPod: '%"
 "s'."
 
-#: ../src/itdb_photoalbum.c:107
+#: ../src/itdb_photoalbum.c:109
 #, c-format
 msgid "Photos directory not found: '%s' (or similar)."
 msgstr ""
 "Der Pfad zum Fotoverzeichnis konnte nicht gefunden werden: '%s' (oder "
 "ähnlich)."
 
-#: ../src/itdb_photoalbum.c:245 ../src/itdb_photoalbum.c:442
+#: ../src/itdb_photoalbum.c:256 ../src/itdb_photoalbum.c:463
 msgid "Photo Library"
 msgstr "Fotoarchiv"
 
-#: ../src/itdb_photoalbum.c:357
+#: ../src/itdb_photoalbum.c:370
 msgid "You need to specify the iPod model used before photos can be added."
 msgstr ""
 "Siem müssen das iPod-Model angeben, bevor Fotos hinzugefügt werden können."
 
-#: ../src/itdb_photoalbum.c:378
+#: ../src/itdb_photoalbum.c:391
 #, c-format
 msgid ""
 "Your iPod does not seem to support photos. Maybe you need to specify the "
@@ -538,12 +556,12 @@
 "das korrekte iPod-Model angeben. Zur Zeit haben Sie folgendes Modell "
 "eingestellt: 'x%s' (%s/%s)."
 
-#: ../src/itdb_photoalbum.c:390
+#: ../src/itdb_photoalbum.c:403
 #, c-format
 msgid "Could not access file '%s'. Photo not added."
 msgstr "Konnte nicht auf die Datei '%s' zugreifen. Foto nicht hinzugefügt."
 
-#: ../src/itdb_photoalbum.c:430
+#: ../src/itdb_photoalbum.c:451
 msgid ""
 "Unexpected error in itdb_photodb_add_photo_internal() while adding photo, "
 "please report."
@@ -551,7 +569,7 @@
 "Unerwarteter Fehler in itdb_photodb_add_photo_internal() während des "
 "Hinzufügens eines Fotos. Bitter teilen Sie uns diesen Vorgang mit."
 
-#: ../src/itdb_photoalbum.c:450
+#: ../src/itdb_photoalbum.c:471
 msgid ""
 "Library compiled without gdk-pixbuf support. Picture support is disabled."
 msgstr ""
@@ -559,7 +577,7 @@
 "daher nicht unterstützt."
 
 #. New action!
-#: ../src/itdb_playlist.c:78
+#: ../src/itdb_playlist.c:79
 #, c-format
 msgid "Unknown action (%d) in smart playlist will be ignored.\n"
 msgstr ""
@@ -602,11 +620,11 @@
 "  %s list <mountpoint>\n"
 
 #: ../tests/test-photos.c:42
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "Usage to remove photo IDs from Photo Library:\n"
 "  %s remove <mountpoint> <albumname> [<ID(s)>]\n"
-"  <albumname> should be set to 'NULL' to to remove photos from the iPod\n"
+"  <albumname> should be set to 'NULL' to remove photos from the iPod\n"
 "  altogether. If you don't specify any IDs, the photoalbum will be removed\n"
 "  instead.\n"
 "  WARNING: IDs may change when writing the PhotoDB file.\n"
@@ -640,6 +658,7 @@
 msgstr "Fehler beim Lesen des iPod Fotobarchivs (%s).\n"
 
 #: ../tests/test-photos.c:156 ../tests/test-photos.c:190
+#: ../tests/test-photos.c:320
 msgid "Error reading iPod photo database.\n"
 msgstr "Fehler beim Lesen der iPod Fotodatenbank.\n"
 
@@ -677,10 +696,6 @@
 msgid "Error adding photo (%s) to photo database: %s\n"
 msgstr "Fehler beim Hinzufügen des Fotos (%s) zur Fotobibliothek: %s\n"
 
-#: ../tests/test-photos.c:320
-msgid "Error reading iPod photo database"
-msgstr "Fehler beim Lesen des iPod Fotoarchivs"
-
 #: ../tests/test-photos.c:331
 #, c-format
 msgid "Specified album '%s' not found. Aborting.\n"
@@ -704,14 +719,15 @@
 msgid "Unknown command '%s'\n"
 msgstr "Unbekanntes Kommando: '%s'\n"
 
+#~ msgid "Cannot write mhod of type %d\n"
+#~ msgstr "Schreiben eines mhod-Hunks vom Typ %d ist nicht unterstützt.\n"
+
+#~ msgid "Error reading iPod photo database"
+#~ msgstr "Fehler beim Lesen des iPod Fotoarchivs"
+
 #~ msgid "Writing to '%s' failed."
 #~ msgstr "Fehler beim Schreiben in die Datei '%s'."
 
-#~ msgid "Did not find SLst hunk as expected. Trying to continue.\n"
-#~ msgstr ""
-#~ "Es wurde nicht wie erwarted ein 'SLst'-Hunk gefunden. Es wird trotzdem "
-#~ "versucht, weiterzumachen.\n"
-
 #~ msgid "Database in memory corrupt (track pointer == NULL). Aborting export."
 #~ msgstr ""
 #~ "Datenbank im Speicher beschädigt (Zeiger auf Stück == NULL). Der Export "

Modified: libgpod/branches/upstream/current/po/es.po
===================================================================
--- libgpod/branches/upstream/current/po/es.po	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/po/es.po	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,18 +1,15 @@
-# translation of libgpod.po to
-# translation of es.po to
-# This file is distributed under the same license as the gtkpod package.
+# translation of libgpod.es.po to spanish
+# Alejandro Lamas Daviña <alejandro.lamas at ific.uv.es>, 2006, 2007.
+# This file is distributed under the same license as the libgpod package.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-#
-# Alejandro Lamas Daviña <alejandro.lamas at ific.uv.es>, 2006, 2007.
 msgid ""
 msgstr ""
 "Project-Id-Version: libgpod\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-15 22:30+0900\n"
-"PO-Revision-Date: 2007-01-15 01:20+0900\n"
+"POT-Creation-Date: 2007-06-14 23:00+0900\n"
+"PO-Revision-Date: 2007-06-13 21:42+0200\n"
 "Last-Translator: Alejandro Lamas Daviña <alejandro.lamas at ific.uv.es>\n"
-"Language-Team:  <es_ES>\n"
+"Language-Team: spanish <es_ES>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -24,21 +21,21 @@
 msgid "Unexpected mhod3 string type: %d\n"
 msgstr "Tipo de cadena mhod3 no esperado: %d\n"
 
-#: ../src/db-artwork-parser.c:265
+#: ../src/db-artwork-parser.c:267
 #, c-format
 msgid "Could not find corresponding track (dbid: %s) for artwork entry.\n"
 msgstr ""
 "No se ha podido encontrar la pista correspondiente (dbid: %s) a la "
 "carátula.\n"
 
-#: ../src/db-artwork-parser.c:291
+#: ../src/db-artwork-parser.c:293
 #, c-format
 msgid "iTunesDB and ArtworkDB artwork sizes inconsistent (%d+%d != %d)\n"
 msgstr ""
 "El tamaño de las carátulas de iTunesDB y ArtworkDB no es consistente (%d+%d !"
 "= %d)\n"
 
-#: ../src/db-artwork-parser.c:459
+#: ../src/db-artwork-parser.c:463
 #, c-format
 msgid "Unexpected mhsd index: %d\n"
 msgstr "Índice mhsd no esperado: %d\n"
@@ -49,33 +46,34 @@
 msgstr ""
 "Tipo de imágen en mhni no esperado: tamaño: %ux%u (%d), desplazamiento: %d\n"
 
-#: ../src/itdb_artwork.c:198
+#: ../src/itdb_artwork.c:199
 #, c-format
 msgid "Could not access file '%s'."
 msgstr "No se ha podido acceder al fichero '%s'"
 
-#: ../src/itdb_artwork.c:215 ../src/itdb_artwork.c:276
+#: ../src/itdb_artwork.c:216 ../src/itdb_artwork.c:277
+#: ../src/itdb_artwork.c:337
 msgid "Artwork support not compiled into libgpod."
 msgstr "libgpod compilado sin soporte de carátulas."
 
-#: ../src/itdb_artwork.c:334
+#: ../src/itdb_artwork.c:395
 #, c-format
 msgid "Illegal filename: '%s'.\n"
 msgstr "Nombre de fichero no válido: '%s'.\n"
 
-#: ../src/itdb_artwork.c:340
+#: ../src/itdb_artwork.c:401
 msgid "Mountpoint not set.\n"
 msgstr "Punto de montaje no configurado.\n"
 
-#: ../src/itdb_artwork.c:493
+#: ../src/itdb_artwork.c:554
 #, c-format
 msgid "Could not find on iPod: '%s'\n"
 msgstr "Fichero no encontrado en el iPod: '%s'\n"
 
-#: ../src/itdb_artwork.c:701
+#: ../src/itdb_artwork.c:768
 #, c-format
 msgid ""
-"Unable to retreive thumbnail (appears to be on iPod, but no image info "
+"Unable to retrieve thumbnail (appears to be on iPod, but no image info "
 "available): type: %d, filename: '%s'\n"
 msgstr ""
 "Imposible cargar el thumbnail (parece estar en el iPod, pero no hay "
@@ -197,54 +195,59 @@
 msgid "Mobile Phone"
 msgstr "Teléfono móvil"
 
-#: ../src/itdb_device.c:450
+#: ../src/itdb_device.c:470
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Error al abrir '%s' para su escritura."
 
-#: ../src/itdb_device.c:459
+#: ../src/itdb_device.c:479
 msgid "Device directory does not exist."
 msgstr "No existe el directorio del dispositivo."
 
-#: ../src/itdb_itunesdb.c:419
+#: ../src/itdb_itunesdb.c:448
 #, c-format
 msgid "Illegal seek to offset %ld (length %ld) in file '%s'."
 msgstr "Acceso ilegal al desplazamiento %ld (tamaño %ld) en el fichero '%s'."
 
-#: ../src/itdb_itunesdb.c:873
+#: ../src/itdb_itunesdb.c:902
 #, c-format
 msgid "Not a Play Counts file: '%s' (missing mhdp header)."
 msgstr "No es un fichero cuenta reproducciones: '%s' (falta cabecera mhdp)."
 
-#: ../src/itdb_itunesdb.c:888
+#: ../src/itdb_itunesdb.c:917
 #, c-format
 msgid "Play Counts file ('%s'): header length smaller than expected (%d<96)."
 msgstr ""
 "Fichero cuenta reproducciones ('%s'): tamaño de la cabecera menor del "
 "esperado (%d<96)."
 
-#: ../src/itdb_itunesdb.c:902
+#: ../src/itdb_itunesdb.c:931
 #, c-format
 msgid "Play Counts file ('%s'): entry length smaller than expected (%d<12)."
 msgstr ""
 "Fichero cuenta reproducciones ('%s'): tamaño de la entrada menor del "
 "esperado (%d<12)."
 
-#: ../src/itdb_itunesdb.c:981
+#: ../src/itdb_itunesdb.c:1006
 #, c-format
 msgid "iTunesStats file ('%s'): entry length smaller than expected (%d<18)."
 msgstr ""
 "Fichero cuenta reproducciones ('%s'): tamaño de la entrada menor del "
 "esperado (%d<18)."
 
-#: ../src/itdb_itunesdb.c:1300
+#: ../src/itdb_itunesdb.c:1328
 #, c-format
 msgid "iTunesDB corrupt: no MHOD at offset %ld in file '%s'."
 msgstr ""
 "iTunesDB corrupta: no hay MHOD en el desplazamiento %ld del fichero '%s'."
 
-#: ../src/itdb_itunesdb.c:1462
+#: ../src/itdb_itunesdb.c:1476
 #, c-format
+msgid "Unknown smart rule action at %ld: %x. Trying to continue.\n"
+msgstr "Regla de acción desconocida en %ld: %x. Intentando continuar.\n"
+
+#: ../src/itdb_itunesdb.c:1507
+#, c-format
 msgid ""
 "Length of smart playlist rule field (%d) not as expected. Trying to continue "
 "anyhow.\n"
@@ -252,13 +255,13 @@
 "La longitud del campo de reglas (%d) de la lista de reproducción inteligente "
 "no es la esperada. Intentando continuar.\n"
 
-#: ../src/itdb_itunesdb.c:1494
+#: ../src/itdb_itunesdb.c:1550
 #, c-format
 msgid "iTunesDB corrupt: no SLst at offset %ld in file '%s'."
 msgstr ""
 "iTunesDB corrupta: no hay SLst en el desplazamiento %ld del fichero '%s'."
 
-#: ../src/itdb_itunesdb.c:1507
+#: ../src/itdb_itunesdb.c:1563
 #, c-format
 msgid ""
 "Encountered unknown MHOD type (%d) while parsing the iTunesDB. Ignoring.\n"
@@ -268,12 +271,12 @@
 "Ignorando.\n"
 "\n"
 
-#: ../src/itdb_itunesdb.c:1577
+#: ../src/itdb_itunesdb.c:1642
 #, c-format
 msgid "iTunesDB corrupt: hunk length 0 for hunk at %ld in file '%s'."
 msgstr "iTunesDB corrupta: tamaño 0 para la zona %ld en el fichero '%s'."
 
-#: ../src/itdb_itunesdb.c:1590
+#: ../src/itdb_itunesdb.c:1655
 #, c-format
 msgid ""
 "iTunesDB corrupt: no section '%s' found in section '%s' starting at %ld."
@@ -281,7 +284,7 @@
 "iTunesDB corrupta: no se ha encontrado la sección '%s' en la sección '%s' "
 "empezando en %ld."
 
-#: ../src/itdb_itunesdb.c:1604
+#: ../src/itdb_itunesdb.c:1669
 #, c-format
 msgid ""
 "header length of '%s' smaller than expected (%d < %d) at offset %ld in file "
@@ -290,12 +293,12 @@
 "Tamaño de la cabecera de '%s' menor del esperado (%d<%d). en el "
 "desplazamiento %ld del fichero '%s'."
 
-#: ../src/itdb_itunesdb.c:1689
+#: ../src/itdb_itunesdb.c:1754
 #, c-format
 msgid "Not a iTunesDB: '%s' (missing mhdb header)."
 msgstr "No es un fichero iTunesDB: '%s' (falta la cabecera mhdb)."
 
-#: ../src/itdb_itunesdb.c:1706
+#: ../src/itdb_itunesdb.c:1771
 #, c-format
 msgid ""
 "iTunesDB ('%s'): header length of mhsd hunk smaller than expected (%d<32). "
@@ -304,41 +307,41 @@
 "iTunesDB ('%s'): tamaño de la cabecera de la zona mhsd menor del esperado (%"
 "d<32). Cancelando."
 
-#: ../src/itdb_itunesdb.c:1727
+#: ../src/itdb_itunesdb.c:1792
 #, c-format
 msgid "iTunesDB '%s' corrupt: mhsd expected at %ld."
 msgstr "iTunesDB '%s' corrupta: se esperaba mhsd en %ld."
 
-#: ../src/itdb_itunesdb.c:1844
+#: ../src/itdb_itunesdb.c:1909
 #, c-format
 msgid "Number of MHODs in mhip at %ld inconsistent in file '%s'."
 msgstr ""
 "El número de MHODs en mhip en %ld no es consistente en el fichero '%s'."
 
-#: ../src/itdb_itunesdb.c:1862
+#: ../src/itdb_itunesdb.c:1927
 #, c-format
 msgid "Itdb_Track ID '%d' not found.\n"
 msgstr "Itdb_Track ID '%d' no encontrada.\n"
 
-#: ../src/itdb_itunesdb.c:2024
+#: ../src/itdb_itunesdb.c:2096
 #, c-format
 msgid "Number of MHODs in mhyp at %ld inconsistent in file '%s'."
 msgstr ""
 "El número de MHODs en mhyp en %ld no es consistente en el fichero '%s'."
 
-#: ../src/itdb_itunesdb.c:2034
+#: ../src/itdb_itunesdb.c:2106
 msgid "Master-PL"
 msgstr "Lista de reproducción principal"
 
-#: ../src/itdb_itunesdb.c:2038
+#: ../src/itdb_itunesdb.c:2110
 msgid "Podcasts"
 msgstr "Podcasts"
 
-#: ../src/itdb_itunesdb.c:2040
+#: ../src/itdb_itunesdb.c:2112
 msgid "Playlist"
 msgstr "Lista de reproducción"
 
-#: ../src/itdb_itunesdb.c:2062
+#: ../src/itdb_itunesdb.c:2134
 #, c-format
 msgid ""
 "iTunesDB corrupt: number of mhip sections inconsistent in mhyp starting at %"
@@ -347,44 +350,43 @@
 "iTunesDB corrupta: el número de secciones mhip no es consistente en mhyp "
 "empezando en %ld en el fichero '%s'."
 
-#: ../src/itdb_itunesdb.c:2375
+#: ../src/itdb_itunesdb.c:2468
 msgid "OTG Playlist"
 msgstr "Lista de reproducción OTG"
 
-#: ../src/itdb_itunesdb.c:2393
+#: ../src/itdb_itunesdb.c:2486
 #, c-format
 msgid "Not a OTG playlist file: '%s' (missing mhpo header)."
 msgstr "No es una lista de reproducción: '%s' (falta la cabecera mhpo)."
 
-#: ../src/itdb_itunesdb.c:2407
+#: ../src/itdb_itunesdb.c:2500
 #, c-format
 msgid "OTG playlist file ('%s'): header length smaller than expected (%d<20)."
 msgstr ""
 "Fichero de lista de reproducción OTG ('%s'): tamaño de la cabecera menor del "
 "esperado (%d<20)."
 
-#: ../src/itdb_itunesdb.c:2419
+#: ../src/itdb_itunesdb.c:2512
 #, c-format
-msgid ""
-"OTG playlist file file ('%s'): entry length smaller than expected (%d<4)."
+msgid "OTG playlist file ('%s'): entry length smaller than expected (%d<4)."
 msgstr ""
-"Fichero de lista de reproducción OTG ('%s'): tamaño de la entrada menor del "
-"esperado (%d<4)."
+"Fichero ('%s') de la lista de reproducción OTG: tamaño de la entrada menor "
+"del esperado (%d<4)."
 
-#: ../src/itdb_itunesdb.c:2454
+#: ../src/itdb_itunesdb.c:2547
 #, c-format
 msgid "OTG playlist file '%s': reference to non-existent track (%d)."
 msgstr ""
 "La lista de reproducción OTG '%s': hace referencia a una pista no existente "
 "(%d)."
 
-#: ../src/itdb_itunesdb.c:2499
+#: ../src/itdb_itunesdb.c:2592
 #, c-format
 msgid "OTG Playlist %d"
 msgstr "Lista de reproducción OTG %d"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2567
+#: ../src/itdb_itunesdb.c:2660
 msgid ""
 "iTunesDB corrupt: number of tracks (mhit hunks) inconsistent. Trying to "
 "continue.\n"
@@ -393,7 +395,7 @@
 "Intentando continuar.\n"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2630
+#: ../src/itdb_itunesdb.c:2723
 msgid ""
 "iTunesDB possibly corrupt: number of playlists (mhyp hunks) inconsistent. "
 "Trying to continue.\n"
@@ -401,7 +403,7 @@
 "Es posible que iTunesDB esté corrupta: el número de listas de reproducción "
 "(zonas mhyp) no es consistente. Intentando continuar.\n"
 
-#: ../src/itdb_itunesdb.c:2677
+#: ../src/itdb_itunesdb.c:2770
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find tracklist (no mhsd type 1 section "
@@ -410,7 +412,7 @@
 "iTunesDB '%s' corrputa: No se ha encontrado la lista de pistas (no se ha "
 "encontrado la sección mhsd de tipo 1)"
 
-#: ../src/itdb_itunesdb.c:2706
+#: ../src/itdb_itunesdb.c:2799
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find playlists (no mhsd type 2 or type 3 "
@@ -419,115 +421,126 @@
 "iTunesDB '%s' corrputa: No se han encontrado las listas de reproducción (no "
 "se han encontrado las secciones mhsd de tipo 2 o tipo 3)"
 
-#: ../src/itdb_itunesdb.c:2728
+#: ../src/itdb_itunesdb.c:2821
 #, c-format
 msgid "iTunes directory not found: '%s' (or similar)."
 msgstr "Directorio 'iTunes' no encontrado: '%s' (o similar)."
 
-#: ../src/itdb_itunesdb.c:2745
+#: ../src/itdb_itunesdb.c:2838
 #, c-format
 msgid "Music directory not found: '%s' (or similar)."
 msgstr "Directorio 'Music' no encontrado: '%s' (o similar)"
 
-#: ../src/itdb_itunesdb.c:2763
+#: ../src/itdb_itunesdb.c:2856
 #, c-format
 msgid "Control directory not found: '%s' (or similar)."
 msgstr "Directorio 'iPod Control' no encontrado: '%s' (o similar)."
 
-#: ../src/itdb_itunesdb.c:2836
+#: ../src/itdb_itunesdb.c:2974
 #, c-format
 msgid "File not found: '%s'."
 msgstr "Fichero no encontrado: '%s'."
 
-#: ../src/itdb_itunesdb.c:3654
+#: ../src/itdb_itunesdb.c:4746
 #, c-format
-msgid "Cannot write mhod of type %d\n"
-msgstr "No se puede escribir el mhod de tipo %d\n"
-
-#: ../src/itdb_itunesdb.c:4245
-#, c-format
 msgid "Opening of '%s' for writing failed (%s)."
 msgstr "No se ha podido abrir '%s' para su escritura (%s)."
 
-#: ../src/itdb_itunesdb.c:4256 ../src/itdb_itunesdb.c:4267
+#: ../src/itdb_itunesdb.c:4757 ../src/itdb_itunesdb.c:4768
 #, c-format
 msgid "Writing to '%s' failed (%s)."
 msgstr "No se ha podido escribir '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:4617
+#: ../src/itdb_itunesdb.c:5122
 #, c-format
 msgid "Path not found: '%s' (or similar)."
 msgstr "Ruta no encontrada: '%s' (o similar)."
 
-#: ../src/itdb_itunesdb.c:4836
+#: ../src/itdb_itunesdb.c:5341
 #, c-format
 msgid "Error renaming '%s' to '%s' (%s)."
 msgstr "Error al renombrar '%s' a '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:4853 ../src/itdb_itunesdb.c:4870
+#: ../src/itdb_itunesdb.c:5358 ../src/itdb_itunesdb.c:5375
 #, c-format
 msgid "Error removing '%s' (%s)."
 msgstr "Error al borrar '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5056
+#: ../src/itdb_itunesdb.c:5531 ../src/itdb_itunesdb.c:5692
+msgid "Mountpoint not set."
+msgstr "Punto de montaje no configurado."
+
+#: ../src/itdb_itunesdb.c:5571
 #, c-format
 msgid "No 'F..' directories found in '%s'."
 msgstr "No se ha encontrado ningún directorio en '%s'."
 
-#: ../src/itdb_itunesdb.c:5084
+#: ../src/itdb_itunesdb.c:5592
 #, c-format
 msgid "Path not found: '%s'."
 msgstr "Ruta no encontrada: '%s'."
 
-#: ../src/itdb_itunesdb.c:5243
+#: ../src/itdb_itunesdb.c:5701
 #, c-format
+msgid "'%s' could not be accessed (%s)."
+msgstr "No se ha podido acceder al fichero '%s' (%s)."
+
+#: ../src/itdb_itunesdb.c:5711
+#, c-format
+msgid ""
+"Destination file '%s' does not appear to be on the iPod mounted at '%s'."
+msgstr ""
+"El destino del fichero '%s' parece no existir en el iPod montado en '%s'"
+
+#: ../src/itdb_itunesdb.c:5915
+#, c-format
 msgid "Error opening '%s' for reading (%s)."
 msgstr "Error al abrir '%s' para su lectura (%s)."
 
-#: ../src/itdb_itunesdb.c:5254
+#: ../src/itdb_itunesdb.c:5926
 #, c-format
 msgid "Error opening '%s' for writing (%s)."
 msgstr "Error al abrir '%s' para su escritura (%s)."
 
-#: ../src/itdb_itunesdb.c:5271
+#: ../src/itdb_itunesdb.c:5943
 #, c-format
 msgid "Error while reading from '%s' (%s)."
 msgstr "Error durante la lectura de '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5287
+#: ../src/itdb_itunesdb.c:5959
 #, c-format
 msgid "Error while writing to '%s' (%s)."
 msgstr "Error durante la escritura de '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5300 ../src/itdb_itunesdb.c:5310
+#: ../src/itdb_itunesdb.c:5972 ../src/itdb_itunesdb.c:5982
 #, c-format
 msgid "Error when closing '%s' (%s)."
 msgstr "Error al cerrar '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5673
+#: ../src/itdb_itunesdb.c:6347
 msgid "iPod"
 msgstr "iPod"
 
-#: ../src/itdb_itunesdb.c:6066
+#: ../src/itdb_itunesdb.c:6740
 #, c-format
 msgid "Problem creating iPod directory or file: '%s'."
 msgstr "Problema al crear el directorio iPod o el fichero: '%s'."
 
-#: ../src/itdb_photoalbum.c:107
+#: ../src/itdb_photoalbum.c:109
 #, c-format
 msgid "Photos directory not found: '%s' (or similar)."
 msgstr "Directorio 'Photos' no encontrado: '%s' (o similar)."
 
-#: ../src/itdb_photoalbum.c:245 ../src/itdb_photoalbum.c:442
+#: ../src/itdb_photoalbum.c:256 ../src/itdb_photoalbum.c:463
 msgid "Photo Library"
 msgstr "Biblioteca de fotos"
 
-#: ../src/itdb_photoalbum.c:357
+#: ../src/itdb_photoalbum.c:370
 msgid "You need to specify the iPod model used before photos can be added."
 msgstr ""
 "Es necesario especificar el modelo del iPod antes de poder añadir fotos."
 
-#: ../src/itdb_photoalbum.c:378
+#: ../src/itdb_photoalbum.c:391
 #, c-format
 msgid ""
 "Your iPod does not seem to support photos. Maybe you need to specify the "
@@ -536,12 +549,12 @@
 "Parece que el iPod no soporta fotos. Quizás sea necesario especificar el "
 "modelo de iPod correcto. Actualmente está configurado como 'x%s' (%s/%s)."
 
-#: ../src/itdb_photoalbum.c:390
+#: ../src/itdb_photoalbum.c:403
 #, c-format
 msgid "Could not access file '%s'. Photo not added."
 msgstr "No se ha podido acceder al fichero '%s'. No se ha añadido la foto."
 
-#: ../src/itdb_photoalbum.c:430
+#: ../src/itdb_photoalbum.c:451
 msgid ""
 "Unexpected error in itdb_photodb_add_photo_internal() while adding photo, "
 "please report."
@@ -549,14 +562,14 @@
 "Error inesperado en  itdb_photodb_add_photo_internal() mientras se añadía la "
 "foto. Informe, por favor."
 
-#: ../src/itdb_photoalbum.c:450
+#: ../src/itdb_photoalbum.c:471
 msgid ""
 "Library compiled without gdk-pixbuf support. Picture support is disabled."
 msgstr ""
 "Biblioteca compilada sin soporte gdk-pixbuf. Soporte de imágenes desactivado."
 
 #. New action!
-#: ../src/itdb_playlist.c:78
+#: ../src/itdb_playlist.c:79
 #, c-format
 msgid "Unknown action (%d) in smart playlist will be ignored.\n"
 msgstr ""
@@ -605,7 +618,7 @@
 msgid ""
 "Usage to remove photo IDs from Photo Library:\n"
 "  %s remove <mountpoint> <albumname> [<ID(s)>]\n"
-"  <albumname> should be set to 'NULL' to to remove photos from the iPod\n"
+"  <albumname> should be set to 'NULL' to remove photos from the iPod\n"
 "  altogether. If you don't specify any IDs, the photoalbum will be removed\n"
 "  instead.\n"
 "  WARNING: IDs may change when writing the PhotoDB file.\n"
@@ -638,6 +651,7 @@
 msgstr "Error al leer la base de datos de fotos del iPod (%s).\n"
 
 #: ../tests/test-photos.c:156 ../tests/test-photos.c:190
+#: ../tests/test-photos.c:320
 msgid "Error reading iPod photo database.\n"
 msgstr "Error al leer la base de datos de fotos del iPod.\n"
 
@@ -675,10 +689,6 @@
 msgid "Error adding photo (%s) to photo database: %s\n"
 msgstr "Error al añadir la foto (%s) a la base de datos de fotos: %s\n"
 
-#: ../tests/test-photos.c:320
-msgid "Error reading iPod photo database"
-msgstr "Error al leer la base de datos de fotos del iPod"
-
 #: ../tests/test-photos.c:331
 #, c-format
 msgid "Specified album '%s' not found. Aborting.\n"
@@ -691,9 +701,9 @@
 "Cancelando.\n"
 
 #: ../tests/test-photos.c:364
-#, fuzzy, c-format
+#, c-format
 msgid "Warning: could not find photo with ID <%d>. Skipping...\n"
-msgstr "Error: no se puede encontrar la foto con ID <%d>. Ignorando...\n"
+msgstr "Aviso: no se puede encontrar la foto con ID <%d>. Ignorando...\n"
 
 #: ../tests/test-photos.c:410
 #, c-format

Modified: libgpod/branches/upstream/current/po/fr.po
===================================================================
--- libgpod/branches/upstream/current/po/fr.po	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/po/fr.po	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,16 +1,16 @@
 # French language translation for gtkpod 
-# Copyright (C) 2005-2006 Éric Lassauge
-# Éric Lassauge <lassauge at users.sf.net>, 2006.
+# Copyright (C) 2005-2007 Éric Lassauge
+# Éric Lassauge <lassauge at users.sf.net>, 2007.
 # Copyright (C) 2003 David Le Brun
 # David Le Brun <david at dyn-ns.net>, 2003.
 #
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: libgpod-0.4.0Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: libgpod-0.4.2Report-Msgid-Bugs-To: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-15 22:30+0900\n"
-"PO-Revision-Date: 2006-12-05 11:35+01000\n"
+"POT-Creation-Date: 2007-06-14 23:00+0900\n"
+"PO-Revision-Date: 2007-01-15 18:22+0100\n"
 "Last-Translator: Éric Lassauge <lassauge at users.sf.net>\n"
 "Language-Team: FR\n"
 "MIME-Version: 1.0\n"
@@ -23,18 +23,19 @@
 msgid "Unexpected mhod3 string type: %d\n"
 msgstr "Type de chaîne mhod3 inattendu : %d\n"
 
-#: ../src/db-artwork-parser.c:265
+#: ../src/db-artwork-parser.c:267
 #, c-format
 msgid "Could not find corresponding track (dbid: %s) for artwork entry.\n"
-msgstr ""
+msgstr "Impossible de trouver la piste (dbid : %s) pour l'image.\n"
 
-#: ../src/db-artwork-parser.c:291
-#, fuzzy, c-format
+#: ../src/db-artwork-parser.c:293
+#, c-format
 msgid "iTunesDB and ArtworkDB artwork sizes inconsistent (%d+%d != %d)\n"
 msgstr ""
-"Tailles inconsistantes pour l'image entre iTunesDB et ArtworkDB (%d+%d != %d)"
+"Tailles inconsistantes pour l'image entre iTunesDB et ArtworkDB (%d+%d != %"
+"d)\n"
 
-#: ../src/db-artwork-parser.c:459
+#: ../src/db-artwork-parser.c:463
 #, c-format
 msgid "Unexpected mhsd index: %d\n"
 msgstr "Index mhsd inattendu : %d\n"
@@ -44,37 +45,38 @@
 msgid "Unexpected image type in mhni: size: %ux%u (%d), offset: %d\n"
 msgstr "Type d'image inattendu dans mhni : taille : %ux%u (%d), offset : %d\n"
 
-#: ../src/itdb_artwork.c:198
-#, fuzzy, c-format
+#: ../src/itdb_artwork.c:199
+#, c-format
 msgid "Could not access file '%s'."
-msgstr "Impossible de trouver sur le iPod : «%s»\n"
+msgstr "Impossible de trouver sur le iPod : « %s »."
 
-#: ../src/itdb_artwork.c:215 ../src/itdb_artwork.c:276
+#: ../src/itdb_artwork.c:216 ../src/itdb_artwork.c:277
+#: ../src/itdb_artwork.c:337
 msgid "Artwork support not compiled into libgpod."
-msgstr ""
+msgstr "Pas de support des images dans libgpod."
 
-#: ../src/itdb_artwork.c:334
+#: ../src/itdb_artwork.c:395
 #, c-format
 msgid "Illegal filename: '%s'.\n"
-msgstr "Nom de fichier illégal : «%s».\n"
+msgstr "Nom de fichier illégal : « %s ».\n"
 
-#: ../src/itdb_artwork.c:340
+#: ../src/itdb_artwork.c:401
 msgid "Mountpoint not set.\n"
 msgstr "Point de montage non défini.\n"
 
-#: ../src/itdb_artwork.c:493
+#: ../src/itdb_artwork.c:554
 #, c-format
 msgid "Could not find on iPod: '%s'\n"
-msgstr "Impossible de trouver sur le iPod : «%s»\n"
+msgstr "Impossible de trouver sur le iPod : « %s »\n"
 
-#: ../src/itdb_artwork.c:701
-#, c-format
+#: ../src/itdb_artwork.c:768
+#, fuzzy, c-format
 msgid ""
-"Unable to retreive thumbnail (appears to be on iPod, but no image info "
+"Unable to retrieve thumbnail (appears to be on iPod, but no image info "
 "available): type: %d, filename: '%s'\n"
 msgstr ""
 "Impossible de récupérer l'imagette (apparemment sur l'iPod, mais aucune info "
-"d'image disponible : type : %d, fichier : «%s»\n"
+"d'image disponible : type : %d, fichier : « %s »\n"
 
 #: ../src/itdb_device.c:170
 msgid "Invalid"
@@ -192,53 +194,58 @@
 msgid "Mobile Phone"
 msgstr "Téléphone Mobile"
 
-#: ../src/itdb_device.c:450
+#: ../src/itdb_device.c:470
 #, c-format
 msgid "Could not open '%s' for writing."
-msgstr "Ne peut ouvrir en écriture le fichier «%s»."
+msgstr "Ne peut ouvrir en écriture le fichier « %s »."
 
-#: ../src/itdb_device.c:459
+#: ../src/itdb_device.c:479
 msgid "Device directory does not exist."
-msgstr "Le répertoire «Device» n'existe pas."
+msgstr "Le répertoire « Device » n'existe pas."
 
-#: ../src/itdb_itunesdb.c:419
+#: ../src/itdb_itunesdb.c:448
 #, c-format
 msgid "Illegal seek to offset %ld (length %ld) in file '%s'."
-msgstr "Erreur de flux à l'offset %ld (longueur %ld) dans le fichier «%s»."
+msgstr "Erreur de flux à l'offset %ld (longueur %ld) dans le fichier « %s »."
 
-#: ../src/itdb_itunesdb.c:873
+#: ../src/itdb_itunesdb.c:902
 #, c-format
 msgid "Not a Play Counts file: '%s' (missing mhdp header)."
-msgstr "«%s» n'est pas un fichier de compteurs (entête mhdp manquant)"
+msgstr "« %s » n'est pas un fichier de compteur (entête mhdp manquante)."
 
-#: ../src/itdb_itunesdb.c:888
+#: ../src/itdb_itunesdb.c:917
 #, c-format
 msgid "Play Counts file ('%s'): header length smaller than expected (%d<96)."
 msgstr ""
-"Fichier de compteurs («%s») : longueur de l'entête plus petite que prévue (%"
+"Fichier de compteur (« %s ») : longueur de l'entête plus petite que prévue (%"
 "d < 96)."
 
-#: ../src/itdb_itunesdb.c:902
+#: ../src/itdb_itunesdb.c:931
 #, c-format
 msgid "Play Counts file ('%s'): entry length smaller than expected (%d<12)."
 msgstr ""
-"Fichier de compteur («%s») : longueur des données plus petite que prévue (%"
+"Fichier de compteur (« %s ») : longueur des données plus petite que prévue (%"
 "d < 12)."
 
-#: ../src/itdb_itunesdb.c:981
+#: ../src/itdb_itunesdb.c:1006
 #, c-format
 msgid "iTunesStats file ('%s'): entry length smaller than expected (%d<18)."
 msgstr ""
-"Fichier iTunesStats («%s») : longueur des données plus petite que prévue (%"
+"Fichier iTunesStats (« %s ») : longueur des données plus petite que prévue (%"
 "d < 18)."
 
-#: ../src/itdb_itunesdb.c:1300
+#: ../src/itdb_itunesdb.c:1328
 #, c-format
 msgid "iTunesDB corrupt: no MHOD at offset %ld in file '%s'."
-msgstr "Corruption d'iTunesDB : pas de MHOD à l'offset %ld du fichier «%s»."
+msgstr "Corruption d'iTunesDB : pas de MHOD à l'offset %ld du fichier « %s »."
 
-#: ../src/itdb_itunesdb.c:1462
+#: ../src/itdb_itunesdb.c:1476
 #, c-format
+msgid "Unknown smart rule action at %ld: %x. Trying to continue.\n"
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:1507
+#, c-format
 msgid ""
 "Length of smart playlist rule field (%d) not as expected. Trying to continue "
 "anyhow.\n"
@@ -246,132 +253,131 @@
 "Longueur du champ de la règle (%d) de la liste intelligente inattendue. "
 "Tentative pour continuer quand même.\n"
 
-#: ../src/itdb_itunesdb.c:1494
+#: ../src/itdb_itunesdb.c:1550
 #, c-format
 msgid "iTunesDB corrupt: no SLst at offset %ld in file '%s'."
-msgstr "Corruption d'iTunesDB : pas de SLst à l'offset %ld du fichier «%s»."
+msgstr "Corruption d'iTunesDB : pas de SLst à l'offset %ld du fichier « %s »."
 
-#: ../src/itdb_itunesdb.c:1507
+#: ../src/itdb_itunesdb.c:1563
 #, c-format
 msgid ""
 "Encountered unknown MHOD type (%d) while parsing the iTunesDB. Ignoring.\n"
 "\n"
 msgstr "Type MHOD inconnu (%d) lors du parcours de iTunesDB. Erreur ignorée.\n"
 
-#: ../src/itdb_itunesdb.c:1577
+#: ../src/itdb_itunesdb.c:1642
 #, c-format
 msgid "iTunesDB corrupt: hunk length 0 for hunk at %ld in file '%s'."
-msgstr "Corruption d'iTunesDB : longueur 0 à %ld du fichier «%s»."
+msgstr "Corruption d'iTunesDB : longueur 0 à %ld du fichier « %s »."
 
-#: ../src/itdb_itunesdb.c:1590
+#: ../src/itdb_itunesdb.c:1655
 #, c-format
 msgid ""
 "iTunesDB corrupt: no section '%s' found in section '%s' starting at %ld."
 msgstr ""
-"Corruption d'iTunesDB : pas de section «%s» dans la section «%s» débutant à "
-"l'offset %ld."
+"Corruption d'iTunesDB : pas de section « %s » dans la section « %s » "
+"débutant à l'offset %ld."
 
-#: ../src/itdb_itunesdb.c:1604
+#: ../src/itdb_itunesdb.c:1669
 #, c-format
 msgid ""
 "header length of '%s' smaller than expected (%d < %d) at offset %ld in file "
 "'%s'."
 msgstr ""
-"longueur de l'entête «%s» plus petite que prévue (%d <  %d) à l'offset %ld "
-"du fichier «%s»."
+"longueur de l'entête « %s » plus petite que prévue (%d <  %d) à l'offset %ld "
+"du fichier « %s »."
 
-#: ../src/itdb_itunesdb.c:1689
+#: ../src/itdb_itunesdb.c:1754
 #, c-format
 msgid "Not a iTunesDB: '%s' (missing mhdb header)."
-msgstr "«%s» n'est pas un fichier iTunesDB (entête mhdb manquante)."
+msgstr "« %s » n'est pas un fichier iTunesDB (entête mhdb manquante)."
 
-#: ../src/itdb_itunesdb.c:1706
+#: ../src/itdb_itunesdb.c:1771
 #, c-format
 msgid ""
 "iTunesDB ('%s'): header length of mhsd hunk smaller than expected (%d<32). "
 "Aborting."
 msgstr ""
-"iTunesDB («%s») : longueur de l'entête mhsd plus petite que prévue (%"
+"iTunesDB (« %s ») : longueur de l'entête mhsd plus petite que prévue (%"
 "d < 32). Interruption."
 
-#: ../src/itdb_itunesdb.c:1727
+#: ../src/itdb_itunesdb.c:1792
 #, c-format
 msgid "iTunesDB '%s' corrupt: mhsd expected at %ld."
-msgstr "Corruption d'iTunesDB «%s» : mhsd attendu à l'offset %ld."
+msgstr "Corruption d'iTunesDB « %s » : mhsd attendu à l'offset %ld."
 
-#: ../src/itdb_itunesdb.c:1844
+#: ../src/itdb_itunesdb.c:1909
 #, c-format
 msgid "Number of MHODs in mhip at %ld inconsistent in file '%s'."
 msgstr ""
-"Nombre de MHODs dans mhip à l'offset %ld inconsistant dans le fichier «%s»."
+"Nombre de MHODs dans mhip à l'offset %ld inconsistant dans le fichier « %s »."
 
-#: ../src/itdb_itunesdb.c:1862
+#: ../src/itdb_itunesdb.c:1927
 #, c-format
 msgid "Itdb_Track ID '%d' not found.\n"
-msgstr "Itdb_Track ID «%d» introuvable.\n"
+msgstr "Itdb_Track ID « %d » introuvable.\n"
 
-#: ../src/itdb_itunesdb.c:2024
+#: ../src/itdb_itunesdb.c:2096
 #, c-format
 msgid "Number of MHODs in mhyp at %ld inconsistent in file '%s'."
 msgstr ""
-"Nombre de MHODs dans mhyp à l'offset %ld inconsistant dans le fichier «%s»."
+"Nombre de MHODs dans mhyp à l'offset %ld inconsistant dans le fichier « %s »."
 
-#: ../src/itdb_itunesdb.c:2034
+#: ../src/itdb_itunesdb.c:2106
 msgid "Master-PL"
 msgstr "Liste principale"
 
-#: ../src/itdb_itunesdb.c:2038
+#: ../src/itdb_itunesdb.c:2110
 msgid "Podcasts"
 msgstr "Podcasts"
 
-#: ../src/itdb_itunesdb.c:2040
+#: ../src/itdb_itunesdb.c:2112
 msgid "Playlist"
 msgstr "Liste de lecture"
 
-#: ../src/itdb_itunesdb.c:2062
+#: ../src/itdb_itunesdb.c:2134
 #, c-format
 msgid ""
 "iTunesDB corrupt: number of mhip sections inconsistent in mhyp starting at %"
 "ld in file '%s'."
 msgstr ""
 "Corruption d'iTunesDB : nombre de sections mhip inconsistant dans mhyp à "
-"l'offset %ld du fichier «%s»."
+"l'offset %ld du fichier « %s »."
 
-#: ../src/itdb_itunesdb.c:2375
+#: ../src/itdb_itunesdb.c:2468
 msgid "OTG Playlist"
 msgstr "Liste de lecture OTG"
 
-#: ../src/itdb_itunesdb.c:2393
+#: ../src/itdb_itunesdb.c:2486
 #, c-format
 msgid "Not a OTG playlist file: '%s' (missing mhpo header)."
 msgstr ""
-"Le fichier «%s» n'est pas un fichier de liste OTG (entête mhpo manquant)."
+"Le fichier « %s » n'est pas un fichier de liste OTG (entête mhpo manquant)."
 
-#: ../src/itdb_itunesdb.c:2407
+#: ../src/itdb_itunesdb.c:2500
 #, c-format
 msgid "OTG playlist file ('%s'): header length smaller than expected (%d<20)."
-msgstr "Fichier de liste OTG («%s») : entête plus petit que prévu (%d < 20)."
+msgstr "Fichier de liste OTG (« %s ») : entête plus petit que prévu (%d < 20)."
 
-#: ../src/itdb_itunesdb.c:2419
-#, c-format
-msgid ""
-"OTG playlist file file ('%s'): entry length smaller than expected (%d<4)."
+#: ../src/itdb_itunesdb.c:2512
+#, fuzzy, c-format
+msgid "OTG playlist file ('%s'): entry length smaller than expected (%d<4)."
 msgstr ""
-"Fichier de liste OTG («%s») : longueur de données plus petite que prévue (%"
+"Fichier de liste OTG (« %s ») : longueur de données plus petite que prévue (%"
 "d < 4)."
 
-#: ../src/itdb_itunesdb.c:2454
+#: ../src/itdb_itunesdb.c:2547
 #, c-format
 msgid "OTG playlist file '%s': reference to non-existent track (%d)."
-msgstr "Fichier de liste OTG «%s» : référence à un morceau inexistant (%d)."
+msgstr "Fichier de liste OTG « %s » : référence à un morceau inexistant (%d)."
 
-#: ../src/itdb_itunesdb.c:2499
+#: ../src/itdb_itunesdb.c:2592
 #, c-format
 msgid "OTG Playlist %d"
 msgstr "Liste de lecture OTG %d"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2567
+#: ../src/itdb_itunesdb.c:2660
 msgid ""
 "iTunesDB corrupt: number of tracks (mhit hunks) inconsistent. Trying to "
 "continue.\n"
@@ -380,7 +386,7 @@
 "continuer quand même.\n"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2630
+#: ../src/itdb_itunesdb.c:2723
 msgid ""
 "iTunesDB possibly corrupt: number of playlists (mhyp hunks) inconsistent. "
 "Trying to continue.\n"
@@ -388,156 +394,175 @@
 "Corruption possible d'iTunesDB : nombre de listes (mhyp) incohérent. "
 "Tentative pour continuer quand même.\n"
 
-#: ../src/itdb_itunesdb.c:2677
+#: ../src/itdb_itunesdb.c:2770
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find tracklist (no mhsd type 1 section "
 "found)"
 msgstr ""
-"Corruption de iTunesDB («%s») : impossible de trouver la liste des morceaux "
-"(pas de section mhsd de type 1)"
+"Corruption de iTunesDB (« %s ») : impossible de trouver la liste des "
+"morceaux (pas de section mhsd de type 1)"
 
-#: ../src/itdb_itunesdb.c:2706
+#: ../src/itdb_itunesdb.c:2799
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find playlists (no mhsd type 2 or type 3 "
 "sections found)"
 msgstr ""
-"Corruption de iTunesDB («%s») :  impossible de trouver les listes de lecture "
-"(pas de section mhsd de type 1 ou 3)"
+"Corruption de iTunesDB (« %s ») :  impossible de trouver les listes de "
+"lecture (pas de section mhsd de type 1 ou 3)"
 
-#: ../src/itdb_itunesdb.c:2728
+#: ../src/itdb_itunesdb.c:2821
 #, c-format
 msgid "iTunes directory not found: '%s' (or similar)."
-msgstr "Répertoire iTunes introuvable : «%s» (ou similaire)."
+msgstr "Répertoire iTunes introuvable : « %s » (ou similaire)."
 
-#: ../src/itdb_itunesdb.c:2745
+#: ../src/itdb_itunesdb.c:2838
 #, c-format
 msgid "Music directory not found: '%s' (or similar)."
-msgstr "Répertoire «Music» introuvable : «%s» (ou similaire)."
+msgstr "Répertoire « Music » introuvable : « %s » (ou similaire)."
 
-#: ../src/itdb_itunesdb.c:2763
+#: ../src/itdb_itunesdb.c:2856
 #, c-format
 msgid "Control directory not found: '%s' (or similar)."
-msgstr "Répertoire de contrôle introuvable :  «%s» (ou similaire)."
+msgstr "Répertoire de contrôle introuvable :  « %s » (ou similaire)."
 
-#: ../src/itdb_itunesdb.c:2836
+#: ../src/itdb_itunesdb.c:2974
 #, c-format
 msgid "File not found: '%s'."
-msgstr "Fichier introuvable : «%s»."
+msgstr "Fichier introuvable : « %s »."
 
-#: ../src/itdb_itunesdb.c:3654
+#: ../src/itdb_itunesdb.c:4746
 #, c-format
-msgid "Cannot write mhod of type %d\n"
-msgstr "Impossible d'écrire mhod du type %d\n"
-
-#: ../src/itdb_itunesdb.c:4245
-#, c-format
 msgid "Opening of '%s' for writing failed (%s)."
-msgstr "Échec de l'ouverture en écriture de «%s» (%s)."
+msgstr "Échec de l'ouverture en écriture de « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:4256 ../src/itdb_itunesdb.c:4267
+#: ../src/itdb_itunesdb.c:4757 ../src/itdb_itunesdb.c:4768
 #, c-format
 msgid "Writing to '%s' failed (%s)."
-msgstr "Échec de l'écriture dans «%s» (%s)."
+msgstr "Échec de l'écriture dans « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:4617
+#: ../src/itdb_itunesdb.c:5122
 #, c-format
 msgid "Path not found: '%s' (or similar)."
-msgstr "Chemin introuvable : «%s» (ou similaire)."
+msgstr "Chemin introuvable : « %s » (ou similaire)."
 
-#: ../src/itdb_itunesdb.c:4836
+#: ../src/itdb_itunesdb.c:5341
 #, c-format
 msgid "Error renaming '%s' to '%s' (%s)."
-msgstr "Impossible de renommer «%s» en «%s» (%s)."
+msgstr "Impossible de renommer « %s » en « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:4853 ../src/itdb_itunesdb.c:4870
+#: ../src/itdb_itunesdb.c:5358 ../src/itdb_itunesdb.c:5375
 #, c-format
 msgid "Error removing '%s' (%s)."
-msgstr "Erreur de suppression du fichier «%s» (%s)."
+msgstr "Erreur de suppression du fichier « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:5056
+#: ../src/itdb_itunesdb.c:5531 ../src/itdb_itunesdb.c:5692
+#, fuzzy
+msgid "Mountpoint not set."
+msgstr "Point de montage non défini.\n"
+
+#: ../src/itdb_itunesdb.c:5571
 #, c-format
 msgid "No 'F..' directories found in '%s'."
-msgstr "Répertoires «F..» introuvables dans «%s»."
+msgstr "Répertoires « F.. » introuvables dans « %s »."
 
-#: ../src/itdb_itunesdb.c:5084
+#: ../src/itdb_itunesdb.c:5592
 #, c-format
 msgid "Path not found: '%s'."
-msgstr "Chemin introuvable : «%s»."
+msgstr "Chemin introuvable : « %s »."
 
-#: ../src/itdb_itunesdb.c:5243
+#: ../src/itdb_itunesdb.c:5701
+#, fuzzy, c-format
+msgid "'%s' could not be accessed (%s)."
+msgstr "Impossible de trouver sur le iPod : « %s »."
+
+#: ../src/itdb_itunesdb.c:5711
 #, c-format
+msgid ""
+"Destination file '%s' does not appear to be on the iPod mounted at '%s'."
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:5915
+#, c-format
 msgid "Error opening '%s' for reading (%s)."
-msgstr "Échec de l'ouverture en lecture de «%s» (%s)."
+msgstr "Échec de l'ouverture en lecture de « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:5254
+#: ../src/itdb_itunesdb.c:5926
 #, c-format
 msgid "Error opening '%s' for writing (%s)."
-msgstr "Échec de l'ouverture en écriture de «%s» (%s)."
+msgstr "Échec de l'ouverture en écriture de « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:5271
+#: ../src/itdb_itunesdb.c:5943
 #, c-format
 msgid "Error while reading from '%s' (%s)."
-msgstr "Erreur lors de la lecture à partir de «%s» (%s)."
+msgstr "Erreur lors de la lecture à partir de « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:5287
+#: ../src/itdb_itunesdb.c:5959
 #, c-format
 msgid "Error while writing to '%s' (%s)."
-msgstr "Erreur lors de l'écriture dans «%s» (%s)."
+msgstr "Erreur lors de l'écriture dans « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:5300 ../src/itdb_itunesdb.c:5310
+#: ../src/itdb_itunesdb.c:5972 ../src/itdb_itunesdb.c:5982
 #, c-format
 msgid "Error when closing '%s' (%s)."
-msgstr "Erreur à la fermeture de «%s» (%s)."
+msgstr "Erreur à la fermeture de « %s » (%s)."
 
-#: ../src/itdb_itunesdb.c:5673
+#: ../src/itdb_itunesdb.c:6347
 msgid "iPod"
 msgstr "iPod"
 
-#: ../src/itdb_itunesdb.c:6066
+#: ../src/itdb_itunesdb.c:6740
 #, c-format
 msgid "Problem creating iPod directory or file: '%s'."
-msgstr "Problème à la création du répertoire ou du fichier iPod : «%s»."
+msgstr "Problème à la création du répertoire ou du fichier iPod : « %s »."
 
-#: ../src/itdb_photoalbum.c:107
+#: ../src/itdb_photoalbum.c:109
 #, c-format
 msgid "Photos directory not found: '%s' (or similar)."
-msgstr "Répertoire «Photos» introuvable : «%s» (ou similaire)."
+msgstr "Répertoire « Photos » introuvable : « %s » (ou similaire)."
 
-#: ../src/itdb_photoalbum.c:245 ../src/itdb_photoalbum.c:442
+#: ../src/itdb_photoalbum.c:256 ../src/itdb_photoalbum.c:463
 msgid "Photo Library"
-msgstr ""
+msgstr "Librairie Photos"
 
-#: ../src/itdb_photoalbum.c:357
+#: ../src/itdb_photoalbum.c:370
 msgid "You need to specify the iPod model used before photos can be added."
 msgstr ""
+"Vous devez préciser le modèle du iPod avant de pouvoir ajouter des photos."
 
-#: ../src/itdb_photoalbum.c:378
+#: ../src/itdb_photoalbum.c:391
 #, c-format
 msgid ""
 "Your iPod does not seem to support photos. Maybe you need to specify the "
 "correct iPod model number? It is currently set to 'x%s' (%s/%s)."
 msgstr ""
+"Votre iPod ne semble pas supporter les photos. Peut-être devriez-vous "
+"spécifier le modèle correct d'iPod ? Il est actuellement configuré à « x%"
+"s » (%s/%s)."
 
-#: ../src/itdb_photoalbum.c:390
+#: ../src/itdb_photoalbum.c:403
 #, c-format
 msgid "Could not access file '%s'. Photo not added."
-msgstr ""
+msgstr "Impossible d'accéder au fichier « %s ». Photo non ajoutée."
 
-#: ../src/itdb_photoalbum.c:430
+#: ../src/itdb_photoalbum.c:451
 msgid ""
 "Unexpected error in itdb_photodb_add_photo_internal() while adding photo, "
 "please report."
 msgstr ""
+"Erreur inattendue dans « itdb_photodb_add_photo_internal() » pendant l'ajout "
+"d'une photo, pensez à le signaler."
 
-#: ../src/itdb_photoalbum.c:450
+#: ../src/itdb_photoalbum.c:471
 msgid ""
 "Library compiled without gdk-pixbuf support. Picture support is disabled."
 msgstr ""
+"Librairie compilée sans le support gdk-pixbuf. La gestion des photos est "
+"inhibée"
 
 #. New action!
-#: ../src/itdb_playlist.c:78
+#: ../src/itdb_playlist.c:79
 #, c-format
 msgid "Unknown action (%d) in smart playlist will be ignored.\n"
 msgstr "L'action inconnue (%d) dans la liste intelligente sera ignorée.\n"
@@ -553,47 +578,61 @@
 "will\n"
 "  be created.\n"
 msgstr ""
+"Utilisation pour ajouter des photos :\n"
+"    %s add <point_de_montage> <album> [<fichier(s)>]\n"
+"    Le nom de l'album doit être « NULL » pour ajouter des photos\n"
+"    dans l'album photo principal.\n"
+"    Si vous ne précisez pas de nom de fichier un album vide sera créé.\n"
 
 #: ../tests/test-photos.c:40
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage to dump all photos to <output_dir>:\n"
 "  %s dump <mountpoint> <output_dir>\n"
 msgstr ""
 "Utilisation pour copier toutes les photos dans <répertoire_de_copie> :\n"
+"  %s dump <point_de_montage> <répertoire_de_copie>\n"
 
 #: ../tests/test-photos.c:41
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage to list all photos IDs to stdout:\n"
 "  %s list <mountpoint>\n"
 msgstr ""
-"Utilisation pour copier toutes les photos dans <répertoire_de_copie> :\n"
+"Utilisation pour afficher tous les identifiants des photos :\n"
+"  %s list <point_de_montage>\n"
 
 #: ../tests/test-photos.c:42
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "Usage to remove photo IDs from Photo Library:\n"
 "  %s remove <mountpoint> <albumname> [<ID(s)>]\n"
-"  <albumname> should be set to 'NULL' to to remove photos from the iPod\n"
+"  <albumname> should be set to 'NULL' to remove photos from the iPod\n"
 "  altogether. If you don't specify any IDs, the photoalbum will be removed\n"
 "  instead.\n"
 "  WARNING: IDs may change when writing the PhotoDB file.\n"
 msgstr ""
+"Utilisation pour supprimer des photos dans la librairie des photos :\n"
+"    %s remove <point_de_montage> <album> [<ID(s)>]\n"
+"    Le nom de l'album doit être « NULL » pour supprimer complètement\n"
+"    les photos dans l'iPod.\n"
+"    Si vous ne précisez pas d'identifiants, seul l'album sera supprimé.\n"
+"    Attention : les identifiants peuvent changer lors de l'écriture\n"
+"    du fichier « PhotoDB ».\n"
 
 #: ../tests/test-photos.c:126
 msgid "Wrong number of command line arguments.\n"
-msgstr ""
+msgstr "Nombre d'arguments incorrect pour la ligne de commande.\n"
 
 #: ../tests/test-photos.c:135
 #, c-format
 msgid "Error creating '%s' (mkdir)\n"
-msgstr "Erreur à la création de «%s» (mkdir)\n"
+msgstr "Erreur à la création de « %s » (mkdir)\n"
 
 #: ../tests/test-photos.c:141
 #, c-format
 msgid "Error: '%s' is not a directory\n"
-msgstr "Erreur : «%s» n'est pas un répertoire\n"
+msgstr "Erreur : « %s » n'est pas un répertoire\n"
 
 #: ../tests/test-photos.c:150 ../tests/test-photos.c:184
 #: ../tests/test-photos.c:313
@@ -602,21 +641,22 @@
 msgstr "Erreur à la lecture de la base de données des photos iPod (%s).\n"
 
 #: ../tests/test-photos.c:156 ../tests/test-photos.c:190
+#: ../tests/test-photos.c:320
 msgid "Error reading iPod photo database.\n"
 msgstr "Erreur à la lecture de la base de données des photos iPod.\n"
 
 #: ../tests/test-photos.c:174 ../tests/test-photos.c:233
 #: ../tests/test-photos.c:303 ../tests/test-photos.c:386
 msgid "Insufficient number of command line arguments.\n"
-msgstr ""
+msgstr "Nombre d'arguments insuffisant pour la ligne de commande.\n"
 
 #: ../tests/test-photos.c:201
 msgid "<Unnamed>"
-msgstr ""
+msgstr "<sans_nom>"
 
 #: ../tests/test-photos.c:216
 msgid "<No members>\n"
-msgstr ""
+msgstr "<sans membre>\n"
 
 #: ../tests/test-photos.c:243
 #, c-format
@@ -635,49 +675,35 @@
 "créer une nouvelle base de données.\n"
 
 #: ../tests/test-photos.c:274
-#, fuzzy, c-format
+#, c-format
 msgid "Error adding photo (%s) to photo database: %s\n"
-msgstr "Erreur à la lecture de la base de données des photos iPod (%s).\n"
+msgstr ""
+"Erreur à l'ajout de la photo (%s) dans la base de données des photos iPod : %"
+"s\n"
 
-#: ../tests/test-photos.c:320
-#, fuzzy
-msgid "Error reading iPod photo database"
-msgstr "Erreur à la lecture de la base de données des photos iPod.\n"
-
 #: ../tests/test-photos.c:331
 #, c-format
 msgid "Specified album '%s' not found. Aborting.\n"
-msgstr ""
+msgstr "Album « %s » non trouvé. Abandon.\n"
 
 #: ../tests/test-photos.c:343
 msgid "Cannot remove Photo Library playlist. Aborting.\n"
-msgstr ""
+msgstr "Impossible de supprimer la liste de la librairie Photo. Abandon.\n"
 
 #: ../tests/test-photos.c:364
 #, c-format
 msgid "Warning: could not find photo with ID <%d>. Skipping...\n"
 msgstr ""
+"Attention : impossible de trouver la photo avec l'identifiant <%d>. On passe "
+"à la suivante…\n"
 
 #: ../tests/test-photos.c:410
 #, c-format
 msgid "Unknown command '%s'\n"
-msgstr ""
+msgstr "Commande inconnue « %s »\n"
 
-#~ msgid "Usage to add photos:\n"
-#~ msgstr "Utilisation pour ajouter des photos :\n"
+#~ msgid "Cannot write mhod of type %d\n"
+#~ msgstr "Impossible d'écrire mhod du type %d\n"
 
-#~ msgid "%s <mountpoint> <albumname> <filename(s)>\n"
-#~ msgstr "%s <point_de_montage> <album> <fichier(s)>\n"
-
-#~ msgid ""
-#~ "albumname should be set to 'master' to add photos to the master photo "
-#~ "album\n"
-#~ msgstr ""
-#~ "Le nom de l'album doit être «master» pour ajouter des photos dans l'album "
-#~ "photo principal\n"
-
-#~ msgid "\n"
-#~ msgstr "\n"
-
-#~ msgid "%s dump <mountpoint> <output_dir>\n"
-#~ msgstr "%s dump <point_de_montage> <répertoire_de_copie>\n"
+#~ msgid "Error reading iPod photo database"
+#~ msgstr "Erreur à la lecture de la base de données des photos iPod"

Modified: libgpod/branches/upstream/current/po/he.po
===================================================================
--- libgpod/branches/upstream/current/po/he.po	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/po/he.po	2007-06-27 21:44:37 UTC (rev 198)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gtkpod\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-15 22:30+0900\n"
+"POT-Creation-Date: 2007-06-14 23:00+0900\n"
 "PO-Revision-Date: 2005-08-02 21:19+0300\n"
 "Last-Translator: Assaf Gillat\n"
 "Language-Team: HEBREW <kde-il at yahoogroups.com>\n"
@@ -22,17 +22,17 @@
 msgid "Unexpected mhod3 string type: %d\n"
 msgstr ""
 
-#: ../src/db-artwork-parser.c:265
+#: ../src/db-artwork-parser.c:267
 #, c-format
 msgid "Could not find corresponding track (dbid: %s) for artwork entry.\n"
 msgstr ""
 
-#: ../src/db-artwork-parser.c:291
+#: ../src/db-artwork-parser.c:293
 #, c-format
 msgid "iTunesDB and ArtworkDB artwork sizes inconsistent (%d+%d != %d)\n"
 msgstr ""
 
-#: ../src/db-artwork-parser.c:459
+#: ../src/db-artwork-parser.c:463
 #, c-format
 msgid "Unexpected mhsd index: %d\n"
 msgstr ""
@@ -42,33 +42,34 @@
 msgid "Unexpected image type in mhni: size: %ux%u (%d), offset: %d\n"
 msgstr ""
 
-#: ../src/itdb_artwork.c:198
+#: ../src/itdb_artwork.c:199
 #, fuzzy, c-format
 msgid "Could not access file '%s'."
 msgstr "קובץ לא קיים: '%s'."
 
-#: ../src/itdb_artwork.c:215 ../src/itdb_artwork.c:276
+#: ../src/itdb_artwork.c:216 ../src/itdb_artwork.c:277
+#: ../src/itdb_artwork.c:337
 msgid "Artwork support not compiled into libgpod."
 msgstr ""
 
-#: ../src/itdb_artwork.c:334
+#: ../src/itdb_artwork.c:395
 #, c-format
 msgid "Illegal filename: '%s'.\n"
 msgstr ""
 
-#: ../src/itdb_artwork.c:340
+#: ../src/itdb_artwork.c:401
 msgid "Mountpoint not set.\n"
 msgstr ""
 
-#: ../src/itdb_artwork.c:493
+#: ../src/itdb_artwork.c:554
 #, fuzzy, c-format
 msgid "Could not find on iPod: '%s'\n"
 msgstr "קובץ לא קיים: '%s'."
 
-#: ../src/itdb_artwork.c:701
+#: ../src/itdb_artwork.c:768
 #, c-format
 msgid ""
-"Unable to retreive thumbnail (appears to be on iPod, but no image info "
+"Unable to retrieve thumbnail (appears to be on iPod, but no image info "
 "available): type: %d, filename: '%s'\n"
 msgstr ""
 
@@ -188,46 +189,51 @@
 msgid "Mobile Phone"
 msgstr ""
 
-#: ../src/itdb_device.c:450
+#: ../src/itdb_device.c:470
 #, fuzzy, c-format
 msgid "Could not open '%s' for writing."
 msgstr "תקלה בפתיחת '%s' לכתיבה (%s)."
 
-#: ../src/itdb_device.c:459
+#: ../src/itdb_device.c:479
 msgid "Device directory does not exist."
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:419
+#: ../src/itdb_itunesdb.c:448
 #, c-format
 msgid "Illegal seek to offset %ld (length %ld) in file '%s'."
 msgstr "חיפוש לא חוקי בהיסט %ld (אורך %ld) בקובץ '%s'."
 
-#: ../src/itdb_itunesdb.c:873
+#: ../src/itdb_itunesdb.c:902
 #, c-format
 msgid "Not a Play Counts file: '%s' (missing mhdp header)."
 msgstr "זהו לא קובץ ספירת השמעה: '%s' (חסר תחילית mhdp)"
 
-#: ../src/itdb_itunesdb.c:888
+#: ../src/itdb_itunesdb.c:917
 #, c-format
 msgid "Play Counts file ('%s'): header length smaller than expected (%d<96)."
 msgstr "קובץ ספירת השמעה ('%s'): אורך תחילית קטן מהצפוי (%d<96)."
 
-#: ../src/itdb_itunesdb.c:902
+#: ../src/itdb_itunesdb.c:931
 #, c-format
 msgid "Play Counts file ('%s'): entry length smaller than expected (%d<12)."
 msgstr "קובץ ספירת השמעה ('%s'): אורך רשומה קטן מהצפוי (%d<12)."
 
-#: ../src/itdb_itunesdb.c:981
+#: ../src/itdb_itunesdb.c:1006
 #, fuzzy, c-format
 msgid "iTunesStats file ('%s'): entry length smaller than expected (%d<18)."
 msgstr "קובץ ספירת השמעה ('%s'): אורך רשומה קטן מהצפוי (%d<12)."
 
-#: ../src/itdb_itunesdb.c:1300
+#: ../src/itdb_itunesdb.c:1328
 #, c-format
 msgid "iTunesDB corrupt: no MHOD at offset %ld in file '%s'."
 msgstr "iTunesDB שבור: אין MHOD בהיסט %ld בקובץ '%s'."
 
-#: ../src/itdb_itunesdb.c:1462
+#: ../src/itdb_itunesdb.c:1476
+#, fuzzy, c-format
+msgid "Unknown smart rule action at %ld: %x. Trying to continue.\n"
+msgstr "לא נמצאה חתיכת SLst כצפוי. מנסה להמשיך.\n"
+
+#: ../src/itdb_itunesdb.c:1507
 #, c-format
 msgid ""
 "Length of smart playlist rule field (%d) not as expected. Trying to continue "
@@ -235,12 +241,12 @@
 msgstr ""
 "אורך שדה של חוק (%d) רשימת השמעה חכמה הוא לא כצפוי. מנסה להמשיך בכל זאת.\n"
 
-#: ../src/itdb_itunesdb.c:1494
+#: ../src/itdb_itunesdb.c:1550
 #, fuzzy, c-format
 msgid "iTunesDB corrupt: no SLst at offset %ld in file '%s'."
 msgstr "iTunesDB שבור: אין MHOD בהיסט %ld בקובץ '%s'."
 
-#: ../src/itdb_itunesdb.c:1507
+#: ../src/itdb_itunesdb.c:1563
 #, c-format
 msgid ""
 "Encountered unknown MHOD type (%d) while parsing the iTunesDB. Ignoring.\n"
@@ -249,18 +255,18 @@
 "נתקלנו בסוג לא ידוע של MHOD (%d) בזמן ניתוח ה-iTuneDB. מתעלם.\n"
 "\n"
 
-#: ../src/itdb_itunesdb.c:1577
+#: ../src/itdb_itunesdb.c:1642
 #, c-format
 msgid "iTunesDB corrupt: hunk length 0 for hunk at %ld in file '%s'."
 msgstr "iTunesDB שבור: אורך חתיכה 0 בחתיכה  %ld בקובץ '%s'."
 
-#: ../src/itdb_itunesdb.c:1590
+#: ../src/itdb_itunesdb.c:1655
 #, fuzzy, c-format
 msgid ""
 "iTunesDB corrupt: no section '%s' found in section '%s' starting at %ld."
 msgstr "iTunesDB שבור: אין MHOD בהיסט %ld בקובץ '%s'."
 
-#: ../src/itdb_itunesdb.c:1604
+#: ../src/itdb_itunesdb.c:1669
 #, fuzzy, c-format
 msgid ""
 "header length of '%s' smaller than expected (%d < %d) at offset %ld in file "
@@ -268,12 +274,12 @@
 msgstr ""
 "iTunesDB ('%s'): גודל תחילית של החתיכה mhsd קטנה מהצפוי (%ld<32). מבטל."
 
-#: ../src/itdb_itunesdb.c:1689
+#: ../src/itdb_itunesdb.c:1754
 #, c-format
 msgid "Not a iTunesDB: '%s' (missing mhdb header)."
 msgstr "זהו לא iTunesDB: '%s' (חסרה תחילית mhdb)."
 
-#: ../src/itdb_itunesdb.c:1706
+#: ../src/itdb_itunesdb.c:1771
 #, fuzzy, c-format
 msgid ""
 "iTunesDB ('%s'): header length of mhsd hunk smaller than expected (%d<32). "
@@ -281,77 +287,76 @@
 msgstr ""
 "iTunesDB ('%s'): גודל תחילית של החתיכה mhsd קטנה מהצפוי (%ld<32). מבטל."
 
-#: ../src/itdb_itunesdb.c:1727
+#: ../src/itdb_itunesdb.c:1792
 #, fuzzy, c-format
 msgid "iTunesDB '%s' corrupt: mhsd expected at %ld."
 msgstr "iTunesDB שבור: נמצא mhyp ב %ld בקובץ '%s'."
 
-#: ../src/itdb_itunesdb.c:1844
+#: ../src/itdb_itunesdb.c:1909
 #, c-format
 msgid "Number of MHODs in mhip at %ld inconsistent in file '%s'."
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:1862
+#: ../src/itdb_itunesdb.c:1927
 #, c-format
 msgid "Itdb_Track ID '%d' not found.\n"
 msgstr "מזהה Itdb_Track '%d' לא נמצא.\n"
 
-#: ../src/itdb_itunesdb.c:2024
+#: ../src/itdb_itunesdb.c:2096
 #, fuzzy, c-format
 msgid "Number of MHODs in mhyp at %ld inconsistent in file '%s'."
 msgstr "iTunesDB שבור: נמצא mhyp ב %ld בקובץ '%s'."
 
-#: ../src/itdb_itunesdb.c:2034
+#: ../src/itdb_itunesdb.c:2106
 msgid "Master-PL"
 msgstr "רשימת ראשית"
 
-#: ../src/itdb_itunesdb.c:2038
+#: ../src/itdb_itunesdb.c:2110
 msgid "Podcasts"
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:2040
+#: ../src/itdb_itunesdb.c:2112
 msgid "Playlist"
 msgstr "רשימת השמעה"
 
-#: ../src/itdb_itunesdb.c:2062
+#: ../src/itdb_itunesdb.c:2134
 #, fuzzy, c-format
 msgid ""
 "iTunesDB corrupt: number of mhip sections inconsistent in mhyp starting at %"
 "ld in file '%s'."
 msgstr "iTunesDB שבור: נמצא mhyp ב %ld בקובץ '%s'."
 
-#: ../src/itdb_itunesdb.c:2375
+#: ../src/itdb_itunesdb.c:2468
 msgid "OTG Playlist"
 msgstr "רשימת השמעה OTG"
 
-#: ../src/itdb_itunesdb.c:2393
+#: ../src/itdb_itunesdb.c:2486
 #, c-format
 msgid "Not a OTG playlist file: '%s' (missing mhpo header)."
 msgstr "זהו לא קובץ רשימת השמעה OTG: '%s' (חסרה תחילת קובץ mhpo)."
 
-#: ../src/itdb_itunesdb.c:2407
+#: ../src/itdb_itunesdb.c:2500
 #, c-format
 msgid "OTG playlist file ('%s'): header length smaller than expected (%d<20)."
 msgstr "קובץ רשימת השמעה OTG ('%s'): גודל תחילית קטן מהצפוי (%d<20)."
 
-#: ../src/itdb_itunesdb.c:2419
-#, c-format
-msgid ""
-"OTG playlist file file ('%s'): entry length smaller than expected (%d<4)."
+#: ../src/itdb_itunesdb.c:2512
+#, fuzzy, c-format
+msgid "OTG playlist file ('%s'): entry length smaller than expected (%d<4)."
 msgstr "קובץ רשימת השמעה OTG ('%s'): גודל רשומה קטן מהצפוי (%d<4)."
 
-#: ../src/itdb_itunesdb.c:2454
+#: ../src/itdb_itunesdb.c:2547
 #, c-format
 msgid "OTG playlist file '%s': reference to non-existent track (%d)."
 msgstr "רשימת השמעה OTG '%s': התייחסות לרצועה לא קיימת (%d)."
 
-#: ../src/itdb_itunesdb.c:2499
+#: ../src/itdb_itunesdb.c:2592
 #, c-format
 msgid "OTG Playlist %d"
 msgstr "רשימת השמעה OTG %d"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2567
+#: ../src/itdb_itunesdb.c:2660
 #, fuzzy
 msgid ""
 "iTunesDB corrupt: number of tracks (mhit hunks) inconsistent. Trying to "
@@ -361,7 +366,7 @@
 "להמשיך.\n"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2630
+#: ../src/itdb_itunesdb.c:2723
 msgid ""
 "iTunesDB possibly corrupt: number of playlists (mhyp hunks) inconsistent. "
 "Trying to continue.\n"
@@ -369,152 +374,162 @@
 "יכול להיות ש-iTuneDB שבור: מספר רשימות השמעה (mhyp חתיכות) לא עקביות. מנסה "
 "להמשיך.\n"
 
-#: ../src/itdb_itunesdb.c:2677
+#: ../src/itdb_itunesdb.c:2770
 #, fuzzy, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find tracklist (no mhsd type 1 section "
 "found)"
 msgstr "iTunesDB '%s' שבור: כבר מצאנו mhsds של שתי רשימות השמעה -- מוותר."
 
-#: ../src/itdb_itunesdb.c:2706
+#: ../src/itdb_itunesdb.c:2799
 #, fuzzy, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find playlists (no mhsd type 2 or type 3 "
 "sections found)"
 msgstr "iTunesDB '%s' שבור: כבר מצאנו mhsds של שתי רשימות השמעה -- מוותר."
 
-#: ../src/itdb_itunesdb.c:2728
+#: ../src/itdb_itunesdb.c:2821
 #, c-format
 msgid "iTunes directory not found: '%s' (or similar)."
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:2745
+#: ../src/itdb_itunesdb.c:2838
 #, c-format
 msgid "Music directory not found: '%s' (or similar)."
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:2763
+#: ../src/itdb_itunesdb.c:2856
 #, c-format
 msgid "Control directory not found: '%s' (or similar)."
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:2836
+#: ../src/itdb_itunesdb.c:2974
 #, c-format
 msgid "File not found: '%s'."
 msgstr "קובץ לא קיים: '%s'."
 
-#: ../src/itdb_itunesdb.c:3654
-#, c-format
-msgid "Cannot write mhod of type %d\n"
-msgstr "לא יכול לכתוב mhod של סוג %d\n"
-
-#: ../src/itdb_itunesdb.c:4245
+#: ../src/itdb_itunesdb.c:4746
 #, fuzzy, c-format
 msgid "Opening of '%s' for writing failed (%s)."
 msgstr "פתיחת '%s' לכתיבה נכשלה."
 
-#: ../src/itdb_itunesdb.c:4256 ../src/itdb_itunesdb.c:4267
+#: ../src/itdb_itunesdb.c:4757 ../src/itdb_itunesdb.c:4768
 #, c-format
 msgid "Writing to '%s' failed (%s)."
 msgstr "נכשלה כתיבה ל '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:4617
+#: ../src/itdb_itunesdb.c:5122
 #, fuzzy, c-format
 msgid "Path not found: '%s' (or similar)."
 msgstr "נתיב לא נמצא: '%s'."
 
-#: ../src/itdb_itunesdb.c:4836
+#: ../src/itdb_itunesdb.c:5341
 #, c-format
 msgid "Error renaming '%s' to '%s' (%s)."
 msgstr "תקלה בשינוי שם '%s' ל '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:4853 ../src/itdb_itunesdb.c:4870
+#: ../src/itdb_itunesdb.c:5358 ../src/itdb_itunesdb.c:5375
 #, c-format
 msgid "Error removing '%s' (%s)."
 msgstr "תקלה בהסרת '%s' (%s)"
 
-#: ../src/itdb_itunesdb.c:5056
+#: ../src/itdb_itunesdb.c:5531 ../src/itdb_itunesdb.c:5692
+msgid "Mountpoint not set."
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:5571
 #, c-format
 msgid "No 'F..' directories found in '%s'."
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:5084
+#: ../src/itdb_itunesdb.c:5592
 #, c-format
 msgid "Path not found: '%s'."
 msgstr "נתיב לא נמצא: '%s'."
 
-#: ../src/itdb_itunesdb.c:5243
+#: ../src/itdb_itunesdb.c:5701
+#, fuzzy, c-format
+msgid "'%s' could not be accessed (%s)."
+msgstr "קובץ לא קיים: '%s'."
+
+#: ../src/itdb_itunesdb.c:5711
 #, c-format
+msgid ""
+"Destination file '%s' does not appear to be on the iPod mounted at '%s'."
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:5915
+#, c-format
 msgid "Error opening '%s' for reading (%s)."
 msgstr "תקלה בפתיחת '%s' לקריאה (%s)."
 
-#: ../src/itdb_itunesdb.c:5254
+#: ../src/itdb_itunesdb.c:5926
 #, c-format
 msgid "Error opening '%s' for writing (%s)."
 msgstr "תקלה בפתיחת '%s' לכתיבה (%s)."
 
-#: ../src/itdb_itunesdb.c:5271
+#: ../src/itdb_itunesdb.c:5943
 #, c-format
 msgid "Error while reading from '%s' (%s)."
 msgstr "תקלה בזמן קריאה מ '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5287
+#: ../src/itdb_itunesdb.c:5959
 #, c-format
 msgid "Error while writing to '%s' (%s)."
 msgstr "תקלה בזמן כתיבה ל '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5300 ../src/itdb_itunesdb.c:5310
+#: ../src/itdb_itunesdb.c:5972 ../src/itdb_itunesdb.c:5982
 #, c-format
 msgid "Error when closing '%s' (%s)."
 msgstr "תקלה בזמן סגירה '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5673
+#: ../src/itdb_itunesdb.c:6347
 msgid "iPod"
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:6066
+#: ../src/itdb_itunesdb.c:6740
 #, c-format
 msgid "Problem creating iPod directory or file: '%s'."
 msgstr ""
 
-#: ../src/itdb_photoalbum.c:107
+#: ../src/itdb_photoalbum.c:109
 #, fuzzy, c-format
 msgid "Photos directory not found: '%s' (or similar)."
 msgstr "נתיב לא נמצא: '%s'."
 
-#: ../src/itdb_photoalbum.c:245 ../src/itdb_photoalbum.c:442
+#: ../src/itdb_photoalbum.c:256 ../src/itdb_photoalbum.c:463
 msgid "Photo Library"
 msgstr ""
 
-#: ../src/itdb_photoalbum.c:357
+#: ../src/itdb_photoalbum.c:370
 msgid "You need to specify the iPod model used before photos can be added."
 msgstr ""
 
-#: ../src/itdb_photoalbum.c:378
+#: ../src/itdb_photoalbum.c:391
 #, c-format
 msgid ""
 "Your iPod does not seem to support photos. Maybe you need to specify the "
 "correct iPod model number? It is currently set to 'x%s' (%s/%s)."
 msgstr ""
 
-#: ../src/itdb_photoalbum.c:390
+#: ../src/itdb_photoalbum.c:403
 #, c-format
 msgid "Could not access file '%s'. Photo not added."
 msgstr ""
 
-#: ../src/itdb_photoalbum.c:430
+#: ../src/itdb_photoalbum.c:451
 msgid ""
 "Unexpected error in itdb_photodb_add_photo_internal() while adding photo, "
 "please report."
 msgstr ""
 
-#: ../src/itdb_photoalbum.c:450
+#: ../src/itdb_photoalbum.c:471
 msgid ""
 "Library compiled without gdk-pixbuf support. Picture support is disabled."
 msgstr ""
 
 #. New action!
-#: ../src/itdb_playlist.c:78
+#: ../src/itdb_playlist.c:79
 #, c-format
 msgid "Unknown action (%d) in smart playlist will be ignored.\n"
 msgstr "התעלמות מפעולה לא ידועה (%d) ברשימת השמעה חכמה.\n"
@@ -550,7 +565,7 @@
 msgid ""
 "Usage to remove photo IDs from Photo Library:\n"
 "  %s remove <mountpoint> <albumname> [<ID(s)>]\n"
-"  <albumname> should be set to 'NULL' to to remove photos from the iPod\n"
+"  <albumname> should be set to 'NULL' to remove photos from the iPod\n"
 "  altogether. If you don't specify any IDs, the photoalbum will be removed\n"
 "  instead.\n"
 "  WARNING: IDs may change when writing the PhotoDB file.\n"
@@ -577,6 +592,7 @@
 msgstr "תקלה בשינוי שם '%s' ל '%s' (%s)."
 
 #: ../tests/test-photos.c:156 ../tests/test-photos.c:190
+#: ../tests/test-photos.c:320
 msgid "Error reading iPod photo database.\n"
 msgstr ""
 
@@ -610,11 +626,6 @@
 msgid "Error adding photo (%s) to photo database: %s\n"
 msgstr "תקלה בשינוי שם '%s' ל '%s' (%s)."
 
-#: ../tests/test-photos.c:320
-#, fuzzy
-msgid "Error reading iPod photo database"
-msgstr "תקלה בשינוי שם '%s' ל '%s' (%s)."
-
 #: ../tests/test-photos.c:331
 #, c-format
 msgid "Specified album '%s' not found. Aborting.\n"
@@ -634,12 +645,16 @@
 msgid "Unknown command '%s'\n"
 msgstr ""
 
+#~ msgid "Cannot write mhod of type %d\n"
+#~ msgstr "לא יכול לכתוב mhod של סוג %d\n"
+
+#, fuzzy
+#~ msgid "Error reading iPod photo database"
+#~ msgstr "תקלה בשינוי שם '%s' ל '%s' (%s)."
+
 #~ msgid "Writing to '%s' failed."
 #~ msgstr "נכשלה כתיבה ל '%s'."
 
-#~ msgid "Did not find SLst hunk as expected. Trying to continue.\n"
-#~ msgstr "לא נמצאה חתיכת SLst כצפוי. מנסה להמשיך.\n"
-
 #~ msgid "Database in memory corrupt (track pointer == NULL). Aborting export."
 #~ msgstr "מסד הנתונים בזיכרון שבור (מצביע רצועה == NULL). מבטל ייצוא."
 

Modified: libgpod/branches/upstream/current/po/it.po
===================================================================
--- libgpod/branches/upstream/current/po/it.po	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/po/it.po	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,541 +1,592 @@
-# translation of it2.po to 
-# translation of it.po to 
-# translation of it.po to
-# Italian language translation for gtkpod.
+# Italian language translation for libgpod.
 # Copyright (C) 2003 Edward Matteucci
-# This file is distributed under the same license as the gtkpod package.
-# Edward Matteucci <edward.matteucci at libero.it>, 2003, 2005.
+# Copyright (C) 2007 Daniele Forsi
 #
+# This file is distributed under the same license as the libgpod package.
 #
+# Edward Matteucci <edward.matteucci at libero.it>, 2003, 2005.
+# Daniele Forsi <daniele at forsi.it>, 2007.
 msgid ""
 msgstr ""
-"Project-Id-Version: it2\n"
+"Project-Id-Version: it\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-15 22:30+0900\n"
-"PO-Revision-Date: 2005-06-20 23:25+0900\n"
-"Last-Translator: \n"
-"Language-Team:  <it at li.org>\n"
+"POT-Creation-Date: 2007-06-14 23:00+0900\n"
+"PO-Revision-Date: 2007-06-02 14:56+0200\n"
+"Last-Translator: Daniele Forsi <daniele at forsi.it>\n"
+"Language-Team: Italian <tp at lists.linux.it>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: KBabel 1.9.1\n"
+"X-Generator: KBabel 1.11.4\n"
 
 #: ../src/db-artwork-parser.c:131
 #, c-format
 msgid "Unexpected mhod3 string type: %d\n"
-msgstr ""
+msgstr "Tipo di stringa mhod3 inatteso: %d\n"
 
-#: ../src/db-artwork-parser.c:265
+#: ../src/db-artwork-parser.c:267
 #, c-format
 msgid "Could not find corresponding track (dbid: %s) for artwork entry.\n"
 msgstr ""
+"Impossibile trovare la traccia corrispondente (dbid: %s) per l'elemento "
+"artwork.\n"
 
-#: ../src/db-artwork-parser.c:291
+#: ../src/db-artwork-parser.c:293
 #, c-format
 msgid "iTunesDB and ArtworkDB artwork sizes inconsistent (%d+%d != %d)\n"
 msgstr ""
+"Le dimensioni dell'artwork in iTunesDB e in ArtworkDB sono incompatibili (%d+"
+"%d != %d)\n"
 
-#: ../src/db-artwork-parser.c:459
+#: ../src/db-artwork-parser.c:463
 #, c-format
 msgid "Unexpected mhsd index: %d\n"
-msgstr ""
+msgstr "Indice mhsd inatteso: %d\n"
 
 #: ../src/db-image-parser.c:118
 #, c-format
 msgid "Unexpected image type in mhni: size: %ux%u (%d), offset: %d\n"
 msgstr ""
+"Tipo di immagine inatteso in mhni: dimensioni: %ux%u (%d), offset: %d\n"
 
-#: ../src/itdb_artwork.c:198
-#, fuzzy, c-format
+#: ../src/itdb_artwork.c:199
+#, c-format
 msgid "Could not access file '%s'."
-msgstr "file non trovato: '%s'."
+msgstr "Impossibile accedere al file '%s'."
 
-#: ../src/itdb_artwork.c:215 ../src/itdb_artwork.c:276
+#: ../src/itdb_artwork.c:216 ../src/itdb_artwork.c:277
+#: ../src/itdb_artwork.c:337
 msgid "Artwork support not compiled into libgpod."
-msgstr ""
+msgstr "Supporto per artwork non compilato in libgpod."
 
-#: ../src/itdb_artwork.c:334
+#: ../src/itdb_artwork.c:395
 #, c-format
 msgid "Illegal filename: '%s'.\n"
-msgstr ""
+msgstr "Nome file inaccettabile: '%s'.\n"
 
-#: ../src/itdb_artwork.c:340
+#: ../src/itdb_artwork.c:401
 msgid "Mountpoint not set.\n"
-msgstr ""
+msgstr "Punto di mount non impostato.\n"
 
-#: ../src/itdb_artwork.c:493
-#, fuzzy, c-format
+#: ../src/itdb_artwork.c:554
+#, c-format
 msgid "Could not find on iPod: '%s'\n"
-msgstr "file non trovato: '%s'."
+msgstr "Impossibile trovare sull'iPod: '%s'\n"
 
-#: ../src/itdb_artwork.c:701
+#: ../src/itdb_artwork.c:768
 #, c-format
 msgid ""
-"Unable to retreive thumbnail (appears to be on iPod, but no image info "
+"Unable to retrieve thumbnail (appears to be on iPod, but no image info "
 "available): type: %d, filename: '%s'\n"
 msgstr ""
+"Impossibile recuperare il provino (sembra che sia sull'iPod, ma non sono "
+"disponibili informazioni sull'immagine): tipo: %d, nome del file: '%s'\n"
 
 #: ../src/itdb_device.c:170
 msgid "Invalid"
-msgstr ""
+msgstr "Non valido"
 
 #: ../src/itdb_device.c:171 ../src/itdb_device.c:197
 msgid "Unknown"
-msgstr ""
+msgstr "Sconosciuto"
 
+# NdT: al 6/5/2007 la pagina su come identificare i modelli di iPod
+# http://docs.info.apple.com/article.html?artnum=61688-it
+# non è tradotta in Italiano, quindi presumo che si tratti di nomi
+# propri e traduco solo il colore
 #: ../src/itdb_device.c:172
 msgid "Color"
-msgstr ""
+msgstr "Color"
 
 #: ../src/itdb_device.c:173
 msgid "Color U2"
-msgstr ""
+msgstr "Color U2"
 
 #: ../src/itdb_device.c:174
 msgid "Grayscale"
-msgstr ""
+msgstr "Grayscale"
 
 #: ../src/itdb_device.c:175
 msgid "Grayscale U2"
-msgstr ""
+msgstr "Grayscale U2"
 
 #: ../src/itdb_device.c:176
 msgid "Mini (Silver)"
-msgstr ""
+msgstr "Mini (argento)"
 
 #: ../src/itdb_device.c:177
 msgid "Mini (Blue)"
-msgstr ""
+msgstr "Mini (blu)"
 
 #: ../src/itdb_device.c:178
 msgid "Mini (Pink)"
-msgstr ""
+msgstr "Mini (rosa)"
 
 #: ../src/itdb_device.c:179
 msgid "Mini (Green)"
-msgstr ""
+msgstr "Mini (verde)"
 
 #: ../src/itdb_device.c:180
 msgid "Mini (Gold)"
-msgstr ""
+msgstr "Mini (oro)"
 
 #: ../src/itdb_device.c:181
 msgid "Shuffle"
-msgstr ""
+msgstr "Shuffle"
 
 #: ../src/itdb_device.c:182
 msgid "Nano (White)"
-msgstr ""
+msgstr "Nano (bianco)"
 
 #: ../src/itdb_device.c:183
 msgid "Nano (Black)"
-msgstr ""
+msgstr "Nano (Nero)"
 
 #: ../src/itdb_device.c:184
 msgid "Video (White)"
-msgstr ""
+msgstr "Video (bianco)"
 
 #: ../src/itdb_device.c:185
 msgid "Video (Black)"
-msgstr ""
+msgstr "Video (nero)"
 
 #: ../src/itdb_device.c:186
 msgid "Mobile (1)"
-msgstr ""
+msgstr "Mobile (1)"
 
 #: ../src/itdb_device.c:187
 msgid "Video U2"
-msgstr ""
+msgstr "Video U2"
 
 #: ../src/itdb_device.c:188
 msgid "Nano (Silver)"
-msgstr ""
+msgstr "Nano (argento)"
 
 #: ../src/itdb_device.c:189
 msgid "Nano (Blue)"
-msgstr ""
+msgstr "Nano (blu)"
 
 #: ../src/itdb_device.c:190
 msgid "Nano (Green)"
-msgstr ""
+msgstr "Nano (verde)"
 
 #: ../src/itdb_device.c:191
 msgid "Nano (Pink)"
-msgstr ""
+msgstr "Nano (verde)"
 
 #: ../src/itdb_device.c:198
 msgid "First Generation"
-msgstr ""
+msgstr "Prima generazione"
 
 #: ../src/itdb_device.c:199
 msgid "Second Generation"
-msgstr ""
+msgstr "Seconda generazione"
 
 #: ../src/itdb_device.c:200
 msgid "Third Generation"
-msgstr ""
+msgstr "Terza generazione"
 
 #: ../src/itdb_device.c:201
 msgid "Fourth Generation"
-msgstr ""
+msgstr "Quarta generazione"
 
 #: ../src/itdb_device.c:202
 msgid "Fifth Generation"
-msgstr ""
+msgstr "Quinta generazione"
 
 #: ../src/itdb_device.c:203
 msgid "Sixth Generation"
-msgstr ""
+msgstr "Sesta generazione"
 
 #: ../src/itdb_device.c:204
 msgid "Mobile Phone"
-msgstr ""
+msgstr "Telefono cellulare"
 
-#: ../src/itdb_device.c:450
-#, fuzzy, c-format
+#: ../src/itdb_device.c:470
+#, c-format
 msgid "Could not open '%s' for writing."
-msgstr "Errore nell'apertura in scrittura di '%s' (%s)."
+msgstr "Impossibile aprire '%s' in scrittura."
 
-#: ../src/itdb_device.c:459
+#: ../src/itdb_device.c:479
 msgid "Device directory does not exist."
-msgstr ""
+msgstr "La directory del dispositivo non esiste."
 
-#: ../src/itdb_itunesdb.c:419
+#: ../src/itdb_itunesdb.c:448
 #, c-format
 msgid "Illegal seek to offset %ld (length %ld) in file '%s'."
-msgstr "ricerca illegale all'offest %ld (lunghezza %ld) nel file '%s'"
+msgstr "Spostamento non ammesso all'offset %ld (lunghezza %ld) nel file '%s'."
 
-#: ../src/itdb_itunesdb.c:873
+#: ../src/itdb_itunesdb.c:902
 #, c-format
 msgid "Not a Play Counts file: '%s' (missing mhdp header)."
-msgstr "Non è un file conta riproduzioni: '%s' (intestazione mhdp mancante)"
+msgstr "Non è un file conta riproduzioni: '%s' (manca l'intestazione mhdp)."
 
-#: ../src/itdb_itunesdb.c:888
+#: ../src/itdb_itunesdb.c:917
 #, c-format
 msgid "Play Counts file ('%s'): header length smaller than expected (%d<96)."
 msgstr ""
-"File conta-riproduzioni ('%s'): lunghezza della intestazione più piccolo di "
-"quanto ci si aspettava (%d<96)"
+"File conta riproduzioni ('%s'): lunghezza dell'intestazione più piccola di "
+"quanto previsto (%d<96)."
 
-#: ../src/itdb_itunesdb.c:902
+#: ../src/itdb_itunesdb.c:931
 #, c-format
 msgid "Play Counts file ('%s'): entry length smaller than expected (%d<12)."
 msgstr ""
-"File conta-riproduzioni ('%s'): lunghezza della voce più piccoladi quanto ci "
-"si aspettava (%d<12)"
+"File conta riproduzioni ('%s'): lunghezza della voce più piccola di quanto "
+"previsto (%d<12)."
 
-#: ../src/itdb_itunesdb.c:981
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:1006
+#, c-format
 msgid "iTunesStats file ('%s'): entry length smaller than expected (%d<18)."
 msgstr ""
-"File conta-riproduzioni ('%s'): lunghezza della voce più piccoladi quanto ci "
-"si aspettava (%d<12)"
+"File iTunesStats ('%s'): lunghezza della voce più piccola di quanto previsto "
+"(%d<18)."
 
-#: ../src/itdb_itunesdb.c:1300
+#: ../src/itdb_itunesdb.c:1328
 #, c-format
 msgid "iTunesDB corrupt: no MHOD at offset %ld in file '%s'."
-msgstr "iTunesDB corrotto: nessun MHOD all'offest %ld nel file '%s'."
+msgstr "iTunesDB corrotto: nessun MHOD all'offset %ld nel file '%s'."
 
-#: ../src/itdb_itunesdb.c:1462
+#: ../src/itdb_itunesdb.c:1476
 #, c-format
+msgid "Unknown smart rule action at %ld: %x. Trying to continue.\n"
+msgstr ""
+"Azione «smart rule» sconosciuta alla posizione %ld: %x. Si prova a "
+"continuare.\n"
+
+#: ../src/itdb_itunesdb.c:1507
+#, c-format
 msgid ""
 "Length of smart playlist rule field (%d) not as expected. Trying to continue "
 "anyhow.\n"
 msgstr ""
-"La lunghezza del campo della regola della playlist intelligente (%d) non è "
-"come la si aspettava. Si prova a continuare.\n"
+"La lunghezza del campo della regola della scaletta intelligente (%d) non è "
+"come previsto. Si prova a continuare comunque.\n"
 
-#: ../src/itdb_itunesdb.c:1494
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:1550
+#, c-format
 msgid "iTunesDB corrupt: no SLst at offset %ld in file '%s'."
-msgstr "iTunesDB corrotto: nessun MHOD all'offest %ld nel file '%s'."
+msgstr "iTunesDB corrotto: nessun SLst MHOD all'offset %ld nel file '%s'."
 
-#: ../src/itdb_itunesdb.c:1507
+#: ../src/itdb_itunesdb.c:1563
 #, c-format
 msgid ""
 "Encountered unknown MHOD type (%d) while parsing the iTunesDB. Ignoring.\n"
 "\n"
 msgstr ""
-"Incontrato un tipo MHOD sconosciuto (%d) mentre si passava l'iTunesDB. "
-"Ignorato.\n"
+"Incontrato un tipo MHOD sconosciuto (%d) durante l'interpretazione di "
+"iTunesDB. Ignorato.\n"
 "\n"
 
-#: ../src/itdb_itunesdb.c:1577
+#: ../src/itdb_itunesdb.c:1642
 #, c-format
 msgid "iTunesDB corrupt: hunk length 0 for hunk at %ld in file '%s'."
-msgstr "iTunesDB corrotto: hunk di lunghezza 0 per l'hunk %ld nel file '%s'."
+msgstr ""
+"iTunesDB corrotto: hunk di lunghezza 0 per l'hunk alla posizione %ld nel "
+"file '%s'."
 
-#: ../src/itdb_itunesdb.c:1590
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:1655
+#, c-format
 msgid ""
 "iTunesDB corrupt: no section '%s' found in section '%s' starting at %ld."
-msgstr "iTunesDB corrotto: nessun MHOD all'offest %ld nel file '%s'."
+msgstr ""
+"iTunesDB corrotto: nessuna sezione '%s' trovata nella sezione '%s' che "
+"inizia alla posizione %ld."
 
-#: ../src/itdb_itunesdb.c:1604
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:1669
+#, c-format
 msgid ""
 "header length of '%s' smaller than expected (%d < %d) at offset %ld in file "
 "'%s'."
 msgstr ""
-"iTunesDB ('%s'): lunghezza della intestazione del hunk mhsd più piccolo "
-"delle aspettative (%ld<32). Interrompo."
+"la lunghezza dell'intestazione di '%s' più piccola di quanto previsto (%d < %"
+"d) alla posizione %ld nel file '%s'."
 
-#: ../src/itdb_itunesdb.c:1689
+#: ../src/itdb_itunesdb.c:1754
 #, c-format
 msgid "Not a iTunesDB: '%s' (missing mhdb header)."
-msgstr "Non è un file iTunesDB: '%s' (intestazione mhdb mancante)"
+msgstr "Non è un file iTunesDB: '%s' (manca l'intestazione mhdb)."
 
-#: ../src/itdb_itunesdb.c:1706
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:1771
+#, c-format
 msgid ""
 "iTunesDB ('%s'): header length of mhsd hunk smaller than expected (%d<32). "
 "Aborting."
 msgstr ""
-"iTunesDB ('%s'): lunghezza della intestazione del hunk mhsd più piccolo "
-"delle aspettative (%ld<32). Interrompo."
+"iTunesDB ('%s'): lunghezza dell'intestazione dell'hunk mhsd più piccola di "
+"quanto previsto (%d<32). Interruzione."
 
-#: ../src/itdb_itunesdb.c:1727
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:1792
+#, c-format
 msgid "iTunesDB '%s' corrupt: mhsd expected at %ld."
-msgstr "iTunesDB corrotto: trovato mhyp a %ld nel file '%s'."
+msgstr "iTunesDB '%s' corrotto: mhsd previsto alla posizione %ld."
 
-#: ../src/itdb_itunesdb.c:1844
+#: ../src/itdb_itunesdb.c:1909
 #, c-format
 msgid "Number of MHODs in mhip at %ld inconsistent in file '%s'."
 msgstr ""
+"Il numero di MHOD nel mhip alla posizione %ld nel file '%s' è incompatibile."
 
-#: ../src/itdb_itunesdb.c:1862
+#: ../src/itdb_itunesdb.c:1927
 #, c-format
 msgid "Itdb_Track ID '%d' not found.\n"
 msgstr "itDB_Track ID '%d' non trovato.\n"
 
-#: ../src/itdb_itunesdb.c:2024
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:2096
+#, c-format
 msgid "Number of MHODs in mhyp at %ld inconsistent in file '%s'."
-msgstr "iTunesDB corrotto: trovato mhyp a %ld nel file '%s'."
+msgstr ""
+"Il numero di MHOD nel mhyp alla posizione %ld nel file '%s' è incompatibile."
 
-#: ../src/itdb_itunesdb.c:2034
+# L'interfaccia italiana dell'iPod usa "Playlist"
+#: ../src/itdb_itunesdb.c:2106
 msgid "Master-PL"
-msgstr "PL principale"
+msgstr "Playlist principale"
 
-#: ../src/itdb_itunesdb.c:2038
+#: ../src/itdb_itunesdb.c:2110
 msgid "Podcasts"
-msgstr ""
+msgstr "Podcast"
 
-#: ../src/itdb_itunesdb.c:2040
+#: ../src/itdb_itunesdb.c:2112
 msgid "Playlist"
 msgstr "Playlist"
 
-#: ../src/itdb_itunesdb.c:2062
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:2134
+#, c-format
 msgid ""
 "iTunesDB corrupt: number of mhip sections inconsistent in mhyp starting at %"
 "ld in file '%s'."
-msgstr "iTunesDB corrotto: trovato mhyp a %ld nel file '%s'."
+msgstr ""
+"iTunesDB corrotto: il numero di sezioni mhip è incompatibile nel mhyp che "
+"inizia alla posizione %ld nel file '%s'."
 
-#: ../src/itdb_itunesdb.c:2375
+# L'interfaccia italiana dell'iPod usa solo "On-The-Go"
+#: ../src/itdb_itunesdb.c:2468
 msgid "OTG Playlist"
 msgstr "Playlist OTG"
 
-#: ../src/itdb_itunesdb.c:2393
+#: ../src/itdb_itunesdb.c:2486
 #, c-format
 msgid "Not a OTG playlist file: '%s' (missing mhpo header)."
-msgstr "Non è una file playlist OTG: '%s' (manca l'intestazione mhpo)"
+msgstr "Non è un file di playlist OTG: '%s' (manca l'intestazione mhpo)."
 
-#: ../src/itdb_itunesdb.c:2407
+#: ../src/itdb_itunesdb.c:2500
 #, c-format
 msgid "OTG playlist file ('%s'): header length smaller than expected (%d<20)."
 msgstr ""
-"File playlist OTG ('%s'): lunghezza della intestazione più piccola delle "
-"aspettative (%d<20)"
+"File di playlist OTG ('%s'): la lunghezza dell'intestazione è più piccola di "
+"quanto previsto (%d<20)."
 
-#: ../src/itdb_itunesdb.c:2419
+#: ../src/itdb_itunesdb.c:2512
 #, c-format
-msgid ""
-"OTG playlist file file ('%s'): entry length smaller than expected (%d<4)."
+msgid "OTG playlist file ('%s'): entry length smaller than expected (%d<4)."
 msgstr ""
-"File playlist OTG ('%s'): lunghezza della voce più piccola delle aspettative "
-"(%d<4)"
+"File di playlist OTG ('%s'): la lunghezza della voce è più piccola di quanto "
+"previsto (%d<4)."
 
-#: ../src/itdb_itunesdb.c:2454
+#: ../src/itdb_itunesdb.c:2547
 #, c-format
 msgid "OTG playlist file '%s': reference to non-existent track (%d)."
-msgstr "Playlist OTG '%s': Punta ad una traccia non esistente (%d)."
+msgstr "Playlist OTG '%s': riferimento ad una traccia non esistente (%d)."
 
-#: ../src/itdb_itunesdb.c:2499
+#: ../src/itdb_itunesdb.c:2592
 #, c-format
 msgid "OTG Playlist %d"
 msgstr "Playlist OTG %d"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2567
-#, fuzzy
+#: ../src/itdb_itunesdb.c:2660
 msgid ""
 "iTunesDB corrupt: number of tracks (mhit hunks) inconsistent. Trying to "
 "continue.\n"
 msgstr ""
-"L'iTunes è probabilmente corrotto: il numero di tracce (mhit hunks) è "
-"inconsistente. Provo a continuare.\n"
+"iTunesDB corrotto: il numero di tracce (hunk di tipo mhit) è incompatibile. "
+"Provo a continuare.\n"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2630
+#: ../src/itdb_itunesdb.c:2723
 msgid ""
 "iTunesDB possibly corrupt: number of playlists (mhyp hunks) inconsistent. "
 "Trying to continue.\n"
 msgstr ""
-"L'iTunes è probabilmente corrotto: il numero di playlist (mhyp hunks) è "
-"inconsistente. Provo a continuare.\n"
+"iTunesDB è probabilmente corrotto: il numero di playlist (hunk di tipo mhyp) "
+"è incompatibile. Provo a continuare.\n"
 
-#: ../src/itdb_itunesdb.c:2677
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:2770
+#, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find tracklist (no mhsd type 1 section "
 "found)"
-msgstr "iTunesDB '%s' corrotto: trovate già due playlist mhsds -- ci rinuncio."
+msgstr ""
+"iTunesDB '%s' corrotto: impossibile trovare la lista delle tracce (nessuna "
+"sezione mhsd di tipo 1 è stata trovata)"
 
-#: ../src/itdb_itunesdb.c:2706
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:2799
+#, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find playlists (no mhsd type 2 or type 3 "
 "sections found)"
-msgstr "iTunesDB '%s' corrotto: trovate già due playlist mhsds -- ci rinuncio."
+msgstr ""
+"iTunesDB '%s' corrotto: impossibile trovare delle playlist (nessuna sezione "
+"mhsd di tipo 2 o di tipo 3 è stata trovata)"
 
-#: ../src/itdb_itunesdb.c:2728
+#: ../src/itdb_itunesdb.c:2821
 #, c-format
 msgid "iTunes directory not found: '%s' (or similar)."
-msgstr ""
+msgstr "Directory di iTunes non trovata: '%s' (o simile)."
 
-#: ../src/itdb_itunesdb.c:2745
+#: ../src/itdb_itunesdb.c:2838
 #, c-format
 msgid "Music directory not found: '%s' (or similar)."
-msgstr ""
+msgstr "Directory della musica non trovata: '%s' (o simile)."
 
-#: ../src/itdb_itunesdb.c:2763
+#: ../src/itdb_itunesdb.c:2856
 #, c-format
 msgid "Control directory not found: '%s' (or similar)."
-msgstr ""
+msgstr "Directory di controllo non trovata: '%s' (o simile)."
 
-#: ../src/itdb_itunesdb.c:2836
+#: ../src/itdb_itunesdb.c:2974
 #, c-format
 msgid "File not found: '%s'."
-msgstr "file non trovato: '%s'."
+msgstr "File non trovato: '%s'."
 
-#: ../src/itdb_itunesdb.c:3654
+#: ../src/itdb_itunesdb.c:4746
 #, c-format
-msgid "Cannot write mhod of type %d\n"
-msgstr "Impossibile scrivere il mhod del tipo %d\n"
-
-#: ../src/itdb_itunesdb.c:4245
-#, fuzzy, c-format
 msgid "Opening of '%s' for writing failed (%s)."
-msgstr "Apertura di '%s' in scrittura fallita."
+msgstr "Apertura di '%s' in scrittura fallita (%s)."
 
-#: ../src/itdb_itunesdb.c:4256 ../src/itdb_itunesdb.c:4267
+#: ../src/itdb_itunesdb.c:4757 ../src/itdb_itunesdb.c:4768
 #, c-format
 msgid "Writing to '%s' failed (%s)."
-msgstr "Scrittura verso '%s' falita (%s)."
+msgstr "Scrittura su '%s' fallita (%s)."
 
-#: ../src/itdb_itunesdb.c:4617
-#, fuzzy, c-format
+#: ../src/itdb_itunesdb.c:5122
+#, c-format
 msgid "Path not found: '%s' (or similar)."
-msgstr "Percorso non trovato: '%s'."
+msgstr "Percorso non trovato: '%s' (o simile)."
 
-#: ../src/itdb_itunesdb.c:4836
+#: ../src/itdb_itunesdb.c:5341
 #, c-format
 msgid "Error renaming '%s' to '%s' (%s)."
-msgstr "Errore nella rinominazione da '%s' a '%s' (%s)."
+msgstr "Errore rinominando '%s' in '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:4853 ../src/itdb_itunesdb.c:4870
+#: ../src/itdb_itunesdb.c:5358 ../src/itdb_itunesdb.c:5375
 #, c-format
 msgid "Error removing '%s' (%s)."
 msgstr "Errore nella rimozione di '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5056
+#: ../src/itdb_itunesdb.c:5531 ../src/itdb_itunesdb.c:5692
+msgid "Mountpoint not set."
+msgstr "Punto di mount non impostato."
+
+#: ../src/itdb_itunesdb.c:5571
 #, c-format
 msgid "No 'F..' directories found in '%s'."
-msgstr "Nessuna directory 'F..' trovata in '%s'"
+msgstr "Nessuna directory 'F..' trovata in '%s'."
 
-#: ../src/itdb_itunesdb.c:5084
+#: ../src/itdb_itunesdb.c:5592
 #, c-format
 msgid "Path not found: '%s'."
 msgstr "Percorso non trovato: '%s'."
 
-#: ../src/itdb_itunesdb.c:5243
+#: ../src/itdb_itunesdb.c:5701
 #, c-format
+msgid "'%s' could not be accessed (%s)."
+msgstr "Impossibile accedere a '%s' (%s)."
+
+#: ../src/itdb_itunesdb.c:5711
+#, c-format
+msgid ""
+"Destination file '%s' does not appear to be on the iPod mounted at '%s'."
+msgstr ""
+"Il file di destinazione '%s' sembra che non sia sull'iPod montato in '%s'."
+
+#: ../src/itdb_itunesdb.c:5915
+#, c-format
 msgid "Error opening '%s' for reading (%s)."
 msgstr "Errore nell'apertura in lettura di '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5254
+#: ../src/itdb_itunesdb.c:5926
 #, c-format
 msgid "Error opening '%s' for writing (%s)."
 msgstr "Errore nell'apertura in scrittura di '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5271
+#: ../src/itdb_itunesdb.c:5943
 #, c-format
 msgid "Error while reading from '%s' (%s)."
 msgstr "Errore nella lettura da '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5287
+#: ../src/itdb_itunesdb.c:5959
 #, c-format
 msgid "Error while writing to '%s' (%s)."
-msgstr "Errore nella scrittura verso '%s' (%s)."
+msgstr "Errore nella scrittura su '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5300 ../src/itdb_itunesdb.c:5310
+#: ../src/itdb_itunesdb.c:5972 ../src/itdb_itunesdb.c:5982
 #, c-format
 msgid "Error when closing '%s' (%s)."
 msgstr "Errore nella chiusura di '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5673
+#: ../src/itdb_itunesdb.c:6347
 msgid "iPod"
-msgstr ""
+msgstr "iPod"
 
-#: ../src/itdb_itunesdb.c:6066
+#: ../src/itdb_itunesdb.c:6740
 #, c-format
 msgid "Problem creating iPod directory or file: '%s'."
-msgstr ""
+msgstr "Problema nel creare una directory o un file sull'iPod: '%s'."
 
-#: ../src/itdb_photoalbum.c:107
-#, fuzzy, c-format
+#: ../src/itdb_photoalbum.c:109
+#, c-format
 msgid "Photos directory not found: '%s' (or similar)."
-msgstr "Percorso non trovato: '%s'."
+msgstr "Directory delle foto non trovata: '%s' (o simile)."
 
-#: ../src/itdb_photoalbum.c:245 ../src/itdb_photoalbum.c:442
+#: ../src/itdb_photoalbum.c:256 ../src/itdb_photoalbum.c:463
 msgid "Photo Library"
-msgstr ""
+msgstr "Album fotografico"
 
-#: ../src/itdb_photoalbum.c:357
+#: ../src/itdb_photoalbum.c:370
 msgid "You need to specify the iPod model used before photos can be added."
 msgstr ""
+"È necessario specificare il modello di iPod prima di poter aggiungere delle "
+"fotografie."
 
-#: ../src/itdb_photoalbum.c:378
+#: ../src/itdb_photoalbum.c:391
 #, c-format
 msgid ""
 "Your iPod does not seem to support photos. Maybe you need to specify the "
 "correct iPod model number? It is currently set to 'x%s' (%s/%s)."
 msgstr ""
+"L'iPod in uso non gestisce le fotografie. È possibile che si debba "
+"specificare il numero esatto del modello di iPod. Ora è impostato come 'x%"
+"s' (%s/%s)."
 
-#: ../src/itdb_photoalbum.c:390
+#: ../src/itdb_photoalbum.c:403
 #, c-format
 msgid "Could not access file '%s'. Photo not added."
-msgstr ""
+msgstr "Impossibile accedere al file '%s'. La fotografia non è stata aggiunta."
 
-#: ../src/itdb_photoalbum.c:430
+#: ../src/itdb_photoalbum.c:451
 msgid ""
 "Unexpected error in itdb_photodb_add_photo_internal() while adding photo, "
 "please report."
 msgstr ""
+"Errore inatteso in itdb_photodb_add_photo_internal() durante l'aggiunta di "
+"una fotografia, si invii una segnalazione."
 
-#: ../src/itdb_photoalbum.c:450
+#: ../src/itdb_photoalbum.c:471
 msgid ""
 "Library compiled without gdk-pixbuf support. Picture support is disabled."
 msgstr ""
+"La libreria è stata compilata senza il supporto per gdk-pixbuf. Il supporto "
+"per le immagini è disabilitato."
 
 #. New action!
-#: ../src/itdb_playlist.c:78
+#: ../src/itdb_playlist.c:79
 #, c-format
 msgid "Unknown action (%d) in smart playlist will be ignored.\n"
-msgstr "Azione sconosciuta (%d) nella playlist intelligente verrà ignorata.\n"
+msgstr ""
+"L'azione sconosciuta (%d) nella playlist intelligente verrà ignorata.\n"
 
 #: ../tests/test-photos.c:39
 #, c-format
@@ -548,6 +599,12 @@
 "will\n"
 "  be created.\n"
 msgstr ""
+"Uso per aggiungere fotografie:\n"
+"  %s add <puntodimount> <nomealbum> [<nomifile>]\n"
+"  <nomealbum> deve essere impostato a 'NULL' per aggiungere le fotografie "
+"solamente all'album di fotografie principale\n"
+"  (Album fotografico). Se non si specificano nomi di file verrà creato un "
+"album vuoto.\n"
 
 #: ../tests/test-photos.c:40
 #, c-format
@@ -555,6 +612,8 @@
 "Usage to dump all photos to <output_dir>:\n"
 "  %s dump <mountpoint> <output_dir>\n"
 msgstr ""
+"Uso per scaricare tutte le fotografie in <output_dir>:\n"
+"  %s dump <puntodimount> <output_dir>\n"
 
 #: ../tests/test-photos.c:41
 #, c-format
@@ -562,54 +621,64 @@
 "Usage to list all photos IDs to stdout:\n"
 "  %s list <mountpoint>\n"
 msgstr ""
+"Uso per elencare tutti gli ID delle fotografie su stdout:\n"
+"  %s list <puntodimount>\n"
 
 #: ../tests/test-photos.c:42
 #, c-format
 msgid ""
 "Usage to remove photo IDs from Photo Library:\n"
 "  %s remove <mountpoint> <albumname> [<ID(s)>]\n"
-"  <albumname> should be set to 'NULL' to to remove photos from the iPod\n"
+"  <albumname> should be set to 'NULL' to remove photos from the iPod\n"
 "  altogether. If you don't specify any IDs, the photoalbum will be removed\n"
 "  instead.\n"
 "  WARNING: IDs may change when writing the PhotoDB file.\n"
 msgstr ""
+"Uso per rimuovere gli ID delle fotografie dall'album fotografico:\n"
+"  %s remove <puntodimount> <nomealbum> [<ID(s)>]\n"
+"  <nomealbum> deve essere impostato a 'NULL' per rimuovere completamente\n"
+"  le fotografie dall'iPod. Se non si specifica un ID invece sarà rimosso\n"
+"  l'album.\n"
+"  ATTENZIONE: gli ID possono cambiare durante la scrittura del file "
+"PhotoDB.\n"
 
 #: ../tests/test-photos.c:126
 msgid "Wrong number of command line arguments.\n"
-msgstr ""
+msgstr "Numero errato di argomenti sulla riga di comando.\n"
 
 #: ../tests/test-photos.c:135
-#, fuzzy, c-format
+#, c-format
 msgid "Error creating '%s' (mkdir)\n"
-msgstr "Errore nella rimozione di '%s' (%s)."
+msgstr "Errore nella creazione di '%s' (mkdir)\n"
 
 #: ../tests/test-photos.c:141
 #, c-format
 msgid "Error: '%s' is not a directory\n"
-msgstr ""
+msgstr "Errore: '%s' non è una directory\n"
 
 #: ../tests/test-photos.c:150 ../tests/test-photos.c:184
 #: ../tests/test-photos.c:313
-#, fuzzy, c-format
+#, c-format
 msgid "Error reading iPod photo database (%s).\n"
-msgstr "Errore nella rinominazione da '%s' a '%s' (%s)."
+msgstr "Errore durante la lettura del database di fotografie dell'iPod (%s).\n"
 
 #: ../tests/test-photos.c:156 ../tests/test-photos.c:190
+#: ../tests/test-photos.c:320
 msgid "Error reading iPod photo database.\n"
-msgstr ""
+msgstr "Errore durante la lettura del database di fotografie dell'iPod.\n"
 
 #: ../tests/test-photos.c:174 ../tests/test-photos.c:233
 #: ../tests/test-photos.c:303 ../tests/test-photos.c:386
 msgid "Insufficient number of command line arguments.\n"
-msgstr ""
+msgstr "Numero insufficiente di argomenti sulla riga di comando.\n"
 
 #: ../tests/test-photos.c:201
 msgid "<Unnamed>"
-msgstr ""
+msgstr "<Senza nome>"
 
 #: ../tests/test-photos.c:216
 msgid "<No members>\n"
-msgstr ""
+msgstr "<Nessun membro>\n"
 
 #: ../tests/test-photos.c:243
 #, c-format
@@ -617,56 +686,40 @@
 "Error reading iPod photo database (%s).\n"
 "Will attempt to create a new database.\n"
 msgstr ""
+"Errore durante la lettura del database di fotografie dell'iPod (%s).\n"
+"Verrà fatto un tentativo per creare un nuovo database.\n"
 
 #: ../tests/test-photos.c:249
 msgid ""
 "Error reading iPod photo database, will attempt to create a new database\n"
 msgstr ""
+"Errore durante la lettura del database di fotografie dell'iPod, verrà fatto "
+"un tentativo per creare un nuovo database.\n"
 
 #: ../tests/test-photos.c:274
-#, fuzzy, c-format
+#, c-format
 msgid "Error adding photo (%s) to photo database: %s\n"
-msgstr "Errore nella rinominazione da '%s' a '%s' (%s)."
+msgstr ""
+"Errore durante l'aggiunta della fotografia (%s) al database delle "
+"fotografie: %s.\n"
 
-#: ../tests/test-photos.c:320
-#, fuzzy
-msgid "Error reading iPod photo database"
-msgstr "Errore nella rinominazione da '%s' a '%s' (%s)."
-
 #: ../tests/test-photos.c:331
 #, c-format
 msgid "Specified album '%s' not found. Aborting.\n"
-msgstr ""
+msgstr "L'album specificato '%s' non è stato trovato. Interruzione.\n"
 
 #: ../tests/test-photos.c:343
 msgid "Cannot remove Photo Library playlist. Aborting.\n"
 msgstr ""
+"Impossibile rimuovere la playlist dell'album fotografico. Interruzione.\n"
 
 #: ../tests/test-photos.c:364
 #, c-format
 msgid "Warning: could not find photo with ID <%d>. Skipping...\n"
 msgstr ""
+"Attenzione: impossibile trovare la fotografia con ID <%d>. Saltata...\n"
 
 #: ../tests/test-photos.c:410
 #, c-format
 msgid "Unknown command '%s'\n"
-msgstr ""
-
-#~ msgid "Writing to '%s' failed."
-#~ msgstr "Scrittura verso '%s' fallita."
-
-#~ msgid "Did not find SLst hunk as expected. Trying to continue.\n"
-#~ msgstr ""
-#~ "Impossibile trovare hunk SLst come ci si aspettava. Si prova a "
-#~ "continuare.\n"
-
-#~ msgid "Database in memory corrupt (track pointer == NULL). Aborting export."
-#~ msgstr ""
-#~ "Database in memoria corrotto (track pointer == NULl). Esportazione "
-#~ "interrotta."
-
-#~ msgid ""
-#~ "Database in memory corrupt (playlist pointer == NULL). Aborting export."
-#~ msgstr ""
-#~ "Database in memoria corrotto (playlist pointer == NULL). Esportazione "
-#~ "Interrotta."
+msgstr "Comando sconosciuto '%s'\n"

Modified: libgpod/branches/upstream/current/po/ja.po
===================================================================
--- libgpod/branches/upstream/current/po/ja.po	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/po/ja.po	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,13 +1,13 @@
 # Japanese Translation Catalogue
-# Copyright (C) 2003 gtkpod
-# This file is distributed under the same license as the gtkpod package.
+# Copyright (C) 2007 libgpod
+# This file is distributed under the same license as the libgpod package.
 # Jorg Schuler <jcsjcs at users.sourceforge.net>, 2003.
 # 
 msgid ""
 msgstr ""
 "Project-Id-Version: gtkpod 0.40\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-15 22:30+0900\n"
+"POT-Creation-Date: 2007-06-14 23:00+0900\n"
 "PO-Revision-Date: 2006-02-14 16:48+0900\n"
 "Last-Translator: Kentaro Fukuchi <fukuchi at users.sourceforge.net>\n"
 "Language-Team: n/a\n"
@@ -21,19 +21,19 @@
 msgid "Unexpected mhod3 string type: %d\n"
 msgstr "ͽ´ü¤»¤Ì mhod3 string type ¤Ç¤¹: %d\n"
 
-#: ../src/db-artwork-parser.c:265
+#: ../src/db-artwork-parser.c:267
 #, c-format
 msgid "Could not find corresponding track (dbid: %s) for artwork entry.\n"
 msgstr "¥¢¡¼¥È¥ï¡¼¥¯¤ËÂбþ¤¹¤ë¶Ê (dbid: %s) ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó.\n"
 
-#: ../src/db-artwork-parser.c:291
+#: ../src/db-artwork-parser.c:293
 #, c-format
 msgid "iTunesDB and ArtworkDB artwork sizes inconsistent (%d+%d != %d)\n"
 msgstr ""
 "iTunesDB Æâ¤Î¾ðÊó¤È ArtworkDB ¤Î¥¢¡¼¥È¥ï¡¼¥¯¤Î¥µ¥¤¥º¤¬°ìÃפ·¤Þ¤»¤ó (%d+%d != "
 "%d)\n"
 
-#: ../src/db-artwork-parser.c:459
+#: ../src/db-artwork-parser.c:463
 #, c-format
 msgid "Unexpected mhsd index: %d\n"
 msgstr "ͽ´ü¤»¤Ì mhsd index: %d\n"
@@ -43,33 +43,34 @@
 msgid "Unexpected image type in mhni: size: %ux%u (%d), offset: %d\n"
 msgstr "mhni ¤Ëͽ´ü¤»¤Ì¥¤¥á¡¼¥¸¥¿¥¤¥×: size: %ux%u (%d), offset: %d\n"
 
-#: ../src/itdb_artwork.c:198
+#: ../src/itdb_artwork.c:199
 #, c-format
 msgid "Could not access file '%s'."
 msgstr "¥Õ¥¡¥¤¥ë '%s' ¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: ../src/itdb_artwork.c:215 ../src/itdb_artwork.c:276
+#: ../src/itdb_artwork.c:216 ../src/itdb_artwork.c:277
+#: ../src/itdb_artwork.c:337
 msgid "Artwork support not compiled into libgpod."
 msgstr "libgpod ¤Ë¥¢¡¼¥È¥ï¡¼¥¯¤Î¥µ¥Ý¡¼¥È¤¬ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó."
 
-#: ../src/itdb_artwork.c:334
+#: ../src/itdb_artwork.c:395
 #, c-format
 msgid "Illegal filename: '%s'.\n"
 msgstr "ÉÔÀµ¤Ê¥Õ¥¡¥¤¥ë̾: '%s'.\n"
 
-#: ../src/itdb_artwork.c:340
+#: ../src/itdb_artwork.c:401
 msgid "Mountpoint not set.\n"
 msgstr "¥Þ¥¦¥ó¥È¾ì½ê¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó.\n"
 
-#: ../src/itdb_artwork.c:493
+#: ../src/itdb_artwork.c:554
 #, c-format
 msgid "Could not find on iPod: '%s'\n"
 msgstr "iPod ¤ÎÃæ¤Ë¸«Åö¤¿¤ê¤Þ¤»¤ó: '%s'\n"
 
-#: ../src/itdb_artwork.c:701
-#, c-format
+#: ../src/itdb_artwork.c:768
+#, fuzzy, c-format
 msgid ""
-"Unable to retreive thumbnail (appears to be on iPod, but no image info "
+"Unable to retrieve thumbnail (appears to be on iPod, but no image info "
 "available): type: %d, filename: '%s'\n"
 msgstr ""
 "¥µ¥à¥Í¥¤¥ë¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó (iPod ¤ÎÃæ¤Ë¤¢¤ëȦ¤Ç¤¹¤¬, ²èÁü¾ðÊ󤬸«¤Ä¤«¤ê¤Þ¤»"
@@ -191,49 +192,54 @@
 msgid "Mobile Phone"
 msgstr "·ÈÂÓÅÅÏÃ"
 
-#: ../src/itdb_device.c:450
+#: ../src/itdb_device.c:470
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "'%s' ¤ò½ñ¤­¹þ¤ßÍѤ˳«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó."
 
-#: ../src/itdb_device.c:459
+#: ../src/itdb_device.c:479
 msgid "Device directory does not exist."
 msgstr "¥Ç¥Ð¥¤¥¹¥Ç¥£¥ì¥¯¥È¥ê¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó."
 
-#: ../src/itdb_itunesdb.c:419
+#: ../src/itdb_itunesdb.c:448
 #, c-format
 msgid "Illegal seek to offset %ld (length %ld) in file '%s'."
 msgstr "ÉÔÀµ¤Ê¥·¡¼¥¯: '%3$s', ¥ª¥Õ¥»¥Ã¥È %1$ld (Ťµ %2$ld)"
 
-#: ../src/itdb_itunesdb.c:873
+#: ../src/itdb_itunesdb.c:902
 #, c-format
 msgid "Not a Play Counts file: '%s' (missing mhdp header)."
 msgstr "ºÆÀ¸²ó¿ô¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: '%s' (mhdp ¥Ø¥Ã¥À¤¬Ìµ¤¤)"
 
-#: ../src/itdb_itunesdb.c:888
+#: ../src/itdb_itunesdb.c:917
 #, c-format
 msgid "Play Counts file ('%s'): header length smaller than expected (%d<96)."
 msgstr "ºÆÀ¸²ó¿ô¥Õ¥¡¥¤¥ë ('%s'): ¥Ø¥Ã¥À¤ÎŤµ¤¬Â­¤ê¤Þ¤»¤ó (%d<96)."
 
-#: ../src/itdb_itunesdb.c:902
+#: ../src/itdb_itunesdb.c:931
 #, c-format
 msgid "Play Counts file ('%s'): entry length smaller than expected (%d<12)."
 msgstr "ºÆÀ¸²ó¿ô¥Õ¥¡¥¤¥ë ('%s'): ¥¨¥ó¥È¥ê¤ÎŤµ¤¬Â­¤ê¤Þ¤»¤ó (%d<12)."
 
-#: ../src/itdb_itunesdb.c:981
+#: ../src/itdb_itunesdb.c:1006
 #, c-format
 msgid "iTunesStats file ('%s'): entry length smaller than expected (%d<18)."
 msgstr "iTunesStats ¥Õ¥¡¥¤¥ë ('%s'): ¥¨¥ó¥È¥ê¤ÎŤµ¤¬Â­¤ê¤Þ¤»¤ó (%d<18)."
 
-#: ../src/itdb_itunesdb.c:1300
+#: ../src/itdb_itunesdb.c:1328
 #, c-format
 msgid "iTunesDB corrupt: no MHOD at offset %ld in file '%s'."
 msgstr ""
 "iTunesDB ¤¬²õ¤ì¤Æ¤¤¤Þ¤¹: MHOD ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó (¥Õ¥¡¥¤¥ë '%2$s', ¥ª¥Õ¥»¥Ã¥È %"
 "1$ld)."
 
-#: ../src/itdb_itunesdb.c:1462
+#: ../src/itdb_itunesdb.c:1476
 #, c-format
+msgid "Unknown smart rule action at %ld: %x. Trying to continue.\n"
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:1507
+#, c-format
 msgid ""
 "Length of smart playlist rule field (%d) not as expected. Trying to continue "
 "anyhow.\n"
@@ -241,14 +247,14 @@
 "¥¹¥Þ¡¼¥È¥×¥ì¥¤¥ê¥¹¥È¤Î¥ë¡¼¥ë¤ÎŤµ (%d) ¤¬´üÂÔ¤µ¤ì¤ëŤµ¤È°Û¤Ê¤ê¤Þ¤¹. ½èÍý¤ò"
 "³¤±¤Þ¤¹.\n"
 
-#: ../src/itdb_itunesdb.c:1494
+#: ../src/itdb_itunesdb.c:1550
 #, c-format
 msgid "iTunesDB corrupt: no SLst at offset %ld in file '%s'."
 msgstr ""
 "iTunesDB ¤¬²õ¤ì¤Æ¤¤¤Þ¤¹: SLst ¤¬¸«ÉÕ¤«¤ê¤Þ¤»¤ó (¥Õ¥¡¥¤¥ë '%2$s', ¥ª¥Õ¥»¥Ã¥È %"
 "1$ld)."
 
-#: ../src/itdb_itunesdb.c:1507
+#: ../src/itdb_itunesdb.c:1563
 #, c-format
 msgid ""
 "Encountered unknown MHOD type (%d) while parsing the iTunesDB. Ignoring.\n"
@@ -258,14 +264,14 @@
 "¤¹.\n"
 "\n"
 
-#: ../src/itdb_itunesdb.c:1577
+#: ../src/itdb_itunesdb.c:1642
 #, c-format
 msgid "iTunesDB corrupt: hunk length 0 for hunk at %ld in file '%s'."
 msgstr ""
 "iTunesDB ¤¬²õ¤ì¤Æ¤¤¤Þ¤¹: hunk ¤ÎŤµ¤¬ 0 ¤Ç¤¹ (¥Õ¥¡¥¤¥ë '%2$s', ¥ª¥Õ¥»¥Ã¥È %1"
 "$ld)."
 
-#: ../src/itdb_itunesdb.c:1590
+#: ../src/itdb_itunesdb.c:1655
 #, c-format
 msgid ""
 "iTunesDB corrupt: no section '%s' found in section '%s' starting at %ld."
@@ -273,7 +279,7 @@
 "iTunesDB ¤¬²õ¤ì¤Æ¤¤¤Þ¤¹: %3$ld ¤Î°ÌÃ֤ˤ¢¤ë¥»¥¯¥·¥ç¥ó '%2$s' ¤ÎÃæ¤Ë¥»¥¯¥·¥ç"
 "¥ó '%1$s' ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó."
 
-#: ../src/itdb_itunesdb.c:1604
+#: ../src/itdb_itunesdb.c:1669
 #, c-format
 msgid ""
 "header length of '%s' smaller than expected (%d < %d) at offset %ld in file "
@@ -282,53 +288,53 @@
 "'%1$s' ¤Î¥Ø¥Ã¥À¤ÎŤµ¤¬Â­¤ê¤Þ¤»¤ó (%2$d < %3$d) (¥Õ¥¡¥¤¥ë '%5$s', ¥ª¥Õ¥»¥Ã¥È "
 "%4$ld)."
 
-#: ../src/itdb_itunesdb.c:1689
+#: ../src/itdb_itunesdb.c:1754
 #, c-format
 msgid "Not a iTunesDB: '%s' (missing mhdb header)."
 msgstr "iTunesDB ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: '%s' (mhdb ¥Ø¥Ã¥À¤¬Ìµ¤¤)."
 
-#: ../src/itdb_itunesdb.c:1706
+#: ../src/itdb_itunesdb.c:1771
 #, c-format
 msgid ""
 "iTunesDB ('%s'): header length of mhsd hunk smaller than expected (%d<32). "
 "Aborting."
 msgstr "iTunesDB ('%s'): mhsd ¤Î¥Ø¥Ã¥À¤ÎŤµ¤¬Â­¤ê¤Þ¤»¤ó (%d<32). Ãæ»ß¤·¤Þ¤¹."
 
-#: ../src/itdb_itunesdb.c:1727
+#: ../src/itdb_itunesdb.c:1792
 #, c-format
 msgid "iTunesDB '%s' corrupt: mhsd expected at %ld."
 msgstr "iTunesDB '%s' ¤¬²õ¤ì¤Æ¤¤¤Þ¤¹: mhsd ¤¬ %ld ¤Î°ÌÃ֤˸«¤Ä¤«¤ê¤Þ¤»¤ó."
 
-#: ../src/itdb_itunesdb.c:1844
+#: ../src/itdb_itunesdb.c:1909
 #, c-format
 msgid "Number of MHODs in mhip at %ld inconsistent in file '%s'."
 msgstr ""
 "mhip Ãæ¤Î MHOD ¤Î¿ô¤¬¿©¤¤°ã¤Ã¤Æ¤¤¤Þ¤¹ (¥Õ¥¡¥¤¥ë '%2$s', ¥ª¥Õ¥»¥Ã¥È %1$ld)."
 
-#: ../src/itdb_itunesdb.c:1862
+#: ../src/itdb_itunesdb.c:1927
 #, c-format
 msgid "Itdb_Track ID '%d' not found.\n"
 msgstr "Itdb_Track ID '%d' ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó.\n"
 
-#: ../src/itdb_itunesdb.c:2024
+#: ../src/itdb_itunesdb.c:2096
 #, c-format
 msgid "Number of MHODs in mhyp at %ld inconsistent in file '%s'."
 msgstr ""
 "mhyp Ãæ¤Î MHOD ¤Î¿ô¤¬¿©¤¤°ã¤Ã¤Æ¤¤¤Þ¤¹ (¥Õ¥¡¥¤¥ë '%2$s', ¥ª¥Õ¥»¥Ã¥È %1$ld)."
 
-#: ../src/itdb_itunesdb.c:2034
+#: ../src/itdb_itunesdb.c:2106
 msgid "Master-PL"
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:2038
+#: ../src/itdb_itunesdb.c:2110
 msgid "Podcasts"
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:2040
+#: ../src/itdb_itunesdb.c:2112
 msgid "Playlist"
 msgstr "¥×¥ì¥¤¥ê¥¹¥È"
 
-#: ../src/itdb_itunesdb.c:2062
+#: ../src/itdb_itunesdb.c:2134
 #, c-format
 msgid ""
 "iTunesDB corrupt: number of mhip sections inconsistent in mhyp starting at %"
@@ -337,39 +343,38 @@
 "iTunesDB ¤¬²õ¤ì¤Æ¤¤¤Þ¤¹: mhyp Ãæ¤Î mhip ¥»¥¯¥·¥ç¥ó¤Î¿ô¤¬¿©¤¤°ã¤Ã¤Æ¤¤¤Þ¤¹ "
 "(¥Õ¥¡¥¤¥ë '%2$s', ¥ª¥Õ¥»¥Ã¥È %1$ld)."
 
-#: ../src/itdb_itunesdb.c:2375
+#: ../src/itdb_itunesdb.c:2468
 msgid "OTG Playlist"
 msgstr "OTG ¥×¥ì¥¤¥ê¥¹¥È"
 
-#: ../src/itdb_itunesdb.c:2393
+#: ../src/itdb_itunesdb.c:2486
 #, c-format
 msgid "Not a OTG playlist file: '%s' (missing mhpo header)."
 msgstr "OTG ¥×¥ì¥¤¥ê¥¹¥È¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: '%s' (mhpo ¥Ø¥Ã¥À¤¬Ìµ¤¤)."
 
-#: ../src/itdb_itunesdb.c:2407
+#: ../src/itdb_itunesdb.c:2500
 #, c-format
 msgid "OTG playlist file ('%s'): header length smaller than expected (%d<20)."
 msgstr "OTG ¥×¥ì¥¤¥ê¥¹¥È¥Õ¥¡¥¤¥ë ('%s'): ¥Ø¥Ã¥À¤ÎŤµ¤¬Â­¤ê¤Þ¤»¤ó (%d<20)."
 
-#: ../src/itdb_itunesdb.c:2419
-#, c-format
-msgid ""
-"OTG playlist file file ('%s'): entry length smaller than expected (%d<4)."
+#: ../src/itdb_itunesdb.c:2512
+#, fuzzy, c-format
+msgid "OTG playlist file ('%s'): entry length smaller than expected (%d<4)."
 msgstr "OTG ¥×¥ì¥¤¥ê¥¹¥È¥Õ¥¡¥¤¥ë ('%s'): ¥¨¥ó¥È¥ê¤ÎŤµ¤¬Â­¤ê¤Þ¤»¤ó (%d<4)."
 
-#: ../src/itdb_itunesdb.c:2454
+#: ../src/itdb_itunesdb.c:2547
 #, c-format
 msgid "OTG playlist file '%s': reference to non-existent track (%d)."
 msgstr ""
 "OTG ¥×¥ì¥¤¥ê¥¹¥È¥Õ¥¡¥¤¥ë ('%s'): ¸ºß¤·¤Ê¤¤¶ÊÈÖ¹æ (%d) ¤Ø¤Î»²¾È¤¬¤¢¤ê¤Þ¤¹."
 
-#: ../src/itdb_itunesdb.c:2499
+#: ../src/itdb_itunesdb.c:2592
 #, c-format
 msgid "OTG Playlist %d"
 msgstr "OTG ¥×¥ì¥¤¥ê¥¹¥È %d"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2567
+#: ../src/itdb_itunesdb.c:2660
 msgid ""
 "iTunesDB corrupt: number of tracks (mhit hunks) inconsistent. Trying to "
 "continue.\n"
@@ -378,7 +383,7 @@
 "¤¹.\n"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2630
+#: ../src/itdb_itunesdb.c:2723
 msgid ""
 "iTunesDB possibly corrupt: number of playlists (mhyp hunks) inconsistent. "
 "Trying to continue.\n"
@@ -386,7 +391,7 @@
 "iTunesDB ¤¬Â¿Ê¬²õ¤ì¤Æ¤¤¤Þ¤¹: ¥×¥ì¥¤¥ê¥¹¥È¤Î¿ô (mhyp ¤Î¿ô) ¤¬¿©¤¤°ã¤Ã¤Æ¤¤¤Þ"
 "¤¹. ½èÍý¤ò³¤±¤Þ¤¹.\n"
 
-#: ../src/itdb_itunesdb.c:2677
+#: ../src/itdb_itunesdb.c:2770
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find tracklist (no mhsd type 1 section "
@@ -395,7 +400,7 @@
 "iTunesDB '%s' ¤¬²õ¤ì¤Æ¤¤¤Þ¤¹: ¶Ê¥ê¥¹¥È¤¬¸«ÉÕ¤«¤ê¤Þ¤»¤ó. (mhsd ¥¿¥¤¥× 1 ¥»¥¯"
 "¥·¥ç¥ó¤¬¸«¤Ä¤«¤é¤Ê¤¤)"
 
-#: ../src/itdb_itunesdb.c:2706
+#: ../src/itdb_itunesdb.c:2799
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find playlists (no mhsd type 2 or type 3 "
@@ -404,115 +409,126 @@
 "iTunesDB '%s' ¤¬²õ¤ì¤Æ¤¤¤Þ¤¹: ¥×¥ì¥¤¥ê¥¹¥È¤¬¸«ÉÕ¤«¤ê¤Þ¤»¤ó. (mhsd ¥¿¥¤¥× 2 "
 "¤È ¥¿¥¤¥× 3 ¤Î¥»¥¯¥·¥ç¥ó¤¬¸«¤Ä¤«¤é¤Ê¤¤)"
 
-#: ../src/itdb_itunesdb.c:2728
+#: ../src/itdb_itunesdb.c:2821
 #, c-format
 msgid "iTunes directory not found: '%s' (or similar)."
 msgstr "iTunes ¥Ç¥£¥ì¥¯¥È¥ê¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: '%s' (¤Ê¤É)."
 
-#: ../src/itdb_itunesdb.c:2745
+#: ../src/itdb_itunesdb.c:2838
 #, c-format
 msgid "Music directory not found: '%s' (or similar)."
 msgstr "Music ¥Ç¥£¥ì¥¯¥È¥ê¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: '%s' (¤Ê¤É)."
 
-#: ../src/itdb_itunesdb.c:2763
+#: ../src/itdb_itunesdb.c:2856
 #, c-format
 msgid "Control directory not found: '%s' (or similar)."
 msgstr "Control ¥Ç¥£¥ì¥¯¥È¥ê¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: '%s' (¤Ê¤É)."
 
-#: ../src/itdb_itunesdb.c:2836
+#: ../src/itdb_itunesdb.c:2974
 #, c-format
 msgid "File not found: '%s'."
 msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: '%s'."
 
-#: ../src/itdb_itunesdb.c:3654
+#: ../src/itdb_itunesdb.c:4746
 #, c-format
-msgid "Cannot write mhod of type %d\n"
-msgstr "mhod ¥¿¥¤¥× %d ¤¬½ñ¤­¹þ¤á¤Þ¤»¤ó.\n"
-
-#: ../src/itdb_itunesdb.c:4245
-#, c-format
 msgid "Opening of '%s' for writing failed (%s)."
 msgstr "'%s' ¤ò½ñ¤­¹þ¤ßÍѤ˳«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó (%s)."
 
-#: ../src/itdb_itunesdb.c:4256 ../src/itdb_itunesdb.c:4267
+#: ../src/itdb_itunesdb.c:4757 ../src/itdb_itunesdb.c:4768
 #, c-format
 msgid "Writing to '%s' failed (%s)."
 msgstr "'%s'¤Î½ñ¤­¹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿ (%s)."
 
-#: ../src/itdb_itunesdb.c:4617
+#: ../src/itdb_itunesdb.c:5122
 #, c-format
 msgid "Path not found: '%s' (or similar)."
 msgstr "¥Ñ¥¹¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: '%s' (¤Ê¤É)."
 
-#: ../src/itdb_itunesdb.c:4836
+#: ../src/itdb_itunesdb.c:5341
 #, c-format
 msgid "Error renaming '%s' to '%s' (%s)."
 msgstr "'%s' ¤ò '%s' ¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó (%s)."
 
-#: ../src/itdb_itunesdb.c:4853 ../src/itdb_itunesdb.c:4870
+#: ../src/itdb_itunesdb.c:5358 ../src/itdb_itunesdb.c:5375
 #, c-format
 msgid "Error removing '%s' (%s)."
 msgstr "'%s' ¤Îºï½üÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿ (%s)."
 
-#: ../src/itdb_itunesdb.c:5056
+#: ../src/itdb_itunesdb.c:5531 ../src/itdb_itunesdb.c:5692
+#, fuzzy
+msgid "Mountpoint not set."
+msgstr "¥Þ¥¦¥ó¥È¾ì½ê¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó.\n"
+
+#: ../src/itdb_itunesdb.c:5571
 #, c-format
 msgid "No 'F..' directories found in '%s'."
 msgstr "'F..' ¥Ç¥£¥ì¥¯¥È¥ê¤¬ '%s' ¤ÎÃæ¤Ë¤¢¤ê¤Þ¤»¤ó."
 
-#: ../src/itdb_itunesdb.c:5084
+#: ../src/itdb_itunesdb.c:5592
 #, c-format
 msgid "Path not found: '%s'."
 msgstr "¥Ñ¥¹¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: '%s'."
 
-#: ../src/itdb_itunesdb.c:5243
+#: ../src/itdb_itunesdb.c:5701
+#, fuzzy, c-format
+msgid "'%s' could not be accessed (%s)."
+msgstr "¥Õ¥¡¥¤¥ë '%s' ¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+
+#: ../src/itdb_itunesdb.c:5711
 #, c-format
+msgid ""
+"Destination file '%s' does not appear to be on the iPod mounted at '%s'."
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:5915
+#, c-format
 msgid "Error opening '%s' for reading (%s)."
 msgstr "'%s' ¤òÆɤ߹þ¤ßÍѤ˳«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó (%s)."
 
-#: ../src/itdb_itunesdb.c:5254
+#: ../src/itdb_itunesdb.c:5926
 #, c-format
 msgid "Error opening '%s' for writing (%s)."
 msgstr "'%s' ¤ò½ñ¤­¹þ¤ßÍѤ˳«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó (%s)."
 
-#: ../src/itdb_itunesdb.c:5271
+#: ../src/itdb_itunesdb.c:5943
 #, c-format
 msgid "Error while reading from '%s' (%s)."
 msgstr "'%s' ¤ÎÆɤ߹þ¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿ (%s)."
 
-#: ../src/itdb_itunesdb.c:5287
+#: ../src/itdb_itunesdb.c:5959
 #, c-format
 msgid "Error while writing to '%s' (%s)."
 msgstr "'%s' ¤Î½ñ¤­¹þ¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿ (%s)."
 
-#: ../src/itdb_itunesdb.c:5300 ../src/itdb_itunesdb.c:5310
+#: ../src/itdb_itunesdb.c:5972 ../src/itdb_itunesdb.c:5982
 #, c-format
 msgid "Error when closing '%s' (%s)."
 msgstr "'%s' ¤òÊĤ¸¤ëºÝ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿ (%s)."
 
-#: ../src/itdb_itunesdb.c:5673
+#: ../src/itdb_itunesdb.c:6347
 msgid "iPod"
 msgstr ""
 
-#: ../src/itdb_itunesdb.c:6066
+#: ../src/itdb_itunesdb.c:6740
 #, c-format
 msgid "Problem creating iPod directory or file: '%s'."
 msgstr "iPod ¥Ç¥£¥ì¥¯¥È¥ê¤ÎºîÀ®¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë '%s' ¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿."
 
-#: ../src/itdb_photoalbum.c:107
+#: ../src/itdb_photoalbum.c:109
 #, c-format
 msgid "Photos directory not found: '%s' (or similar)."
 msgstr "Photos ¥Ç¥£¥ì¥¯¥È¥ê¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: '%s' (¤Ê¤É)."
 
-#: ../src/itdb_photoalbum.c:245 ../src/itdb_photoalbum.c:442
+#: ../src/itdb_photoalbum.c:256 ../src/itdb_photoalbum.c:463
 msgid "Photo Library"
 msgstr "¼Ì¿¿¥é¥¤¥Ö¥é¥ê"
 
-#: ../src/itdb_photoalbum.c:357
+#: ../src/itdb_photoalbum.c:370
 msgid "You need to specify the iPod model used before photos can be added."
 msgstr ""
 "¼Ì¿¿¤òÄɲ乤ëÁ°¤Ë, »ÈÍѤ·¤Æ¤¤¤ë iPod ¤Î¥â¥Ç¥ë¤òÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹."
 
-#: ../src/itdb_photoalbum.c:378
+#: ../src/itdb_photoalbum.c:391
 #, c-format
 msgid ""
 "Your iPod does not seem to support photos. Maybe you need to specify the "
@@ -521,12 +537,12 @@
 "¤ª»È¤¤¤Î iPod ¤Ï¼Ì¿¿¤Îɽ¼¨¤¬¤Ç¤­¤Þ¤»¤ó. ¤ª¤½¤é¤¯Àµ¤·¤¤ iPod ¤Î¥â¥Ç¥ë¤òÀßÄꤷ"
 "¤Æ¤¤¤Ê¤¤¤â¤Î¤È»×¤ï¤ì¤Þ¤¹. ¸½ºß¥â¥Ç¥ëÈÖ¹æ¤Ï 'x%s' ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹ (%s%s)."
 
-#: ../src/itdb_photoalbum.c:390
+#: ../src/itdb_photoalbum.c:403
 #, c-format
 msgid "Could not access file '%s'. Photo not added."
 msgstr "¥Õ¥¡¥¤¥ë '%s' ¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿. ¼Ì¿¿¤ÏÄɲ䵤ì¤Þ¤»¤ó."
 
-#: ../src/itdb_photoalbum.c:430
+#: ../src/itdb_photoalbum.c:451
 msgid ""
 "Unexpected error in itdb_photodb_add_photo_internal() while adding photo, "
 "please report."
@@ -534,7 +550,7 @@
 "¼Ì¿¿¤ÎÄɲÃÃæ¤Ë itdb_photodb_add_photo_internal() Æâ¤Çͽ´ü¤»¤Ì¥¨¥é¡¼¤¬È¯À¸¤·¤Þ"
 "¤·¤¿. ³«È¯¼Ô¤Ø¤ÎÊó¹ð¤ò¤ª´ê¤¤¤·¤Þ¤¹."
 
-#: ../src/itdb_photoalbum.c:450
+#: ../src/itdb_photoalbum.c:471
 msgid ""
 "Library compiled without gdk-pixbuf support. Picture support is disabled."
 msgstr ""
@@ -542,7 +558,7 @@
 "¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹."
 
 #. New action!
-#: ../src/itdb_playlist.c:78
+#: ../src/itdb_playlist.c:79
 #, c-format
 msgid "Unknown action (%d) in smart playlist will be ignored.\n"
 msgstr "¥¹¥Þ¡¼¥È¥×¥ì¥¤¥ê¥¹¥ÈÆâ¤Î̤ÃΤΥ¢¥¯¥·¥ç¥ó (%d) ¤Ï̵»ë¤µ¤ì¤Þ¤¹.\n"
@@ -583,11 +599,11 @@
 "  %s list <¥Þ¥¦¥ó¥È¾ì½ê>\n"
 
 #: ../tests/test-photos.c:42
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "Usage to remove photo IDs from Photo Library:\n"
 "  %s remove <mountpoint> <albumname> [<ID(s)>]\n"
-"  <albumname> should be set to 'NULL' to to remove photos from the iPod\n"
+"  <albumname> should be set to 'NULL' to remove photos from the iPod\n"
 "  altogether. If you don't specify any IDs, the photoalbum will be removed\n"
 "  instead.\n"
 "  WARNING: IDs may change when writing the PhotoDB file.\n"
@@ -619,6 +635,7 @@
 msgstr "iPod ¤Î¼Ì¿¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÆɤ߹þ¤á¤Þ¤»¤ó (%s).\n"
 
 #: ../tests/test-photos.c:156 ../tests/test-photos.c:190
+#: ../tests/test-photos.c:320
 msgid "Error reading iPod photo database.\n"
 msgstr "iPod ¤Î¼Ì¿¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÆɤ߹þ¤á¤Þ¤»¤ó.\n"
 
@@ -655,10 +672,6 @@
 msgid "Error adding photo (%s) to photo database: %s\n"
 msgstr "¼Ì¿¿ (%s) ¤ÎÄɲä˼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
 
-#: ../tests/test-photos.c:320
-msgid "Error reading iPod photo database"
-msgstr "iPod ¤Î¼Ì¿¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÆɤ߹þ¤á¤Þ¤»¤ó"
-
 #: ../tests/test-photos.c:331
 #, c-format
 msgid "Specified album '%s' not found. Aborting.\n"
@@ -677,3 +690,9 @@
 #, c-format
 msgid "Unknown command '%s'\n"
 msgstr "̤ÃΤΥ³¥Þ¥ó¥É '%s'\n"
+
+#~ msgid "Cannot write mhod of type %d\n"
+#~ msgstr "mhod ¥¿¥¤¥× %d ¤¬½ñ¤­¹þ¤á¤Þ¤»¤ó.\n"
+
+#~ msgid "Error reading iPod photo database"
+#~ msgstr "iPod ¤Î¼Ì¿¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÆɤ߹þ¤á¤Þ¤»¤ó"

Modified: libgpod/branches/upstream/current/po/sv.po
===================================================================
--- libgpod/branches/upstream/current/po/sv.po	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/po/sv.po	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,12 +1,12 @@
 # Translation of gtkpod to Swedish.
-# This file is distributed under the same license as gtkpod.
+# This file is distributed under the same license as libgpod.
 # Copyright (C) Stefan Asserhäll <stefan.asserhall at comhem.se>, 2004, 2005, 2007.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: sv\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-15 22:30+0900\n"
+"POT-Creation-Date: 2007-06-14 23:00+0900\n"
 "PO-Revision-Date: 2007-01-14 15:53+0100\n"
 "Last-Translator: Stefan Asserhäll <stefan.asserhall at comhem.se>\n"
 "Language-Team: Svenska <sv at li.org>\n"
@@ -21,19 +21,19 @@
 msgid "Unexpected mhod3 string type: %d\n"
 msgstr "Oväntad mhod3 strängtyp; %d\n"
 
-#: ../src/db-artwork-parser.c:265
+#: ../src/db-artwork-parser.c:267
 #, c-format
 msgid "Could not find corresponding track (dbid: %s) for artwork entry.\n"
 msgstr "Kunde inte hitta motsvarande spår (dbid: %s) för grafikpost.\n"
 
-#: ../src/db-artwork-parser.c:291
+#: ../src/db-artwork-parser.c:293
 #, c-format
 msgid "iTunesDB and ArtworkDB artwork sizes inconsistent (%d+%d != %d)\n"
 msgstr ""
 "Grafikstorlekar i iTunes databas och grafikdatabas inte konseventa (%d + %d !"
 "= %d)\n"
 
-#: ../src/db-artwork-parser.c:459
+#: ../src/db-artwork-parser.c:463
 #, c-format
 msgid "Unexpected mhsd index: %d\n"
 msgstr "Oväntat mhsd index: %d\n"
@@ -43,33 +43,34 @@
 msgid "Unexpected image type in mhni: size: %ux%u (%d), offset: %d\n"
 msgstr "Oväntad bildtyp i mhni: storlek: %ux%u (%d), position: %d\n"
 
-#: ../src/itdb_artwork.c:198
+#: ../src/itdb_artwork.c:199
 #, c-format
 msgid "Could not access file '%s'."
 msgstr "Kunde inte komma åt filen '%s'."
 
-#: ../src/itdb_artwork.c:215 ../src/itdb_artwork.c:276
+#: ../src/itdb_artwork.c:216 ../src/itdb_artwork.c:277
+#: ../src/itdb_artwork.c:337
 msgid "Artwork support not compiled into libgpod."
 msgstr "Grafikstöd inte kompilerat i libgpod."
 
-#: ../src/itdb_artwork.c:334
+#: ../src/itdb_artwork.c:395
 #, c-format
 msgid "Illegal filename: '%s'.\n"
 msgstr "Ogiltigt filnamn: '%s'.\n"
 
-#: ../src/itdb_artwork.c:340
+#: ../src/itdb_artwork.c:401
 msgid "Mountpoint not set.\n"
 msgstr "Monteringsplats inte inställd.\n"
 
-#: ../src/itdb_artwork.c:493
+#: ../src/itdb_artwork.c:554
 #, c-format
 msgid "Could not find on iPod: '%s'\n"
 msgstr "Kunde inte hitta på iPod: '%s'\n"
 
-#: ../src/itdb_artwork.c:701
-#, c-format
+#: ../src/itdb_artwork.c:768
+#, fuzzy, c-format
 msgid ""
-"Unable to retreive thumbnail (appears to be on iPod, but no image info "
+"Unable to retrieve thumbnail (appears to be on iPod, but no image info "
 "available): type: %d, filename: '%s'\n"
 msgstr ""
 "Kunde inte hämta miniatyrbild (verkar finnas på iPod, men någon "
@@ -191,47 +192,52 @@
 msgid "Mobile Phone"
 msgstr "Mobiltelefon"
 
-#: ../src/itdb_device.c:450
+#: ../src/itdb_device.c:470
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Kunde inte öppna '%s' för skrivning."
 
-#: ../src/itdb_device.c:459
+#: ../src/itdb_device.c:479
 msgid "Device directory does not exist."
 msgstr "Enhetskatalog finns inte."
 
-#: ../src/itdb_itunesdb.c:419
+#: ../src/itdb_itunesdb.c:448
 #, c-format
 msgid "Illegal seek to offset %ld (length %ld) in file '%s'."
 msgstr "Ogiltig sökning till position %ld (längd %ld) i filen '%s'."
 
-#: ../src/itdb_itunesdb.c:873
+#: ../src/itdb_itunesdb.c:902
 #, c-format
 msgid "Not a Play Counts file: '%s' (missing mhdp header)."
 msgstr "Inte en uppspelningsdatafil: '%s' (saknar mhdp-huvud)."
 
-#: ../src/itdb_itunesdb.c:888
+#: ../src/itdb_itunesdb.c:917
 #, c-format
 msgid "Play Counts file ('%s'): header length smaller than expected (%d<96)."
 msgstr "Uppspelningsdatafil ('%s'): Huvudlängd mindre än väntat (%d < 96)"
 
-#: ../src/itdb_itunesdb.c:902
+#: ../src/itdb_itunesdb.c:931
 #, c-format
 msgid "Play Counts file ('%s'): entry length smaller than expected (%d<12)."
 msgstr "Uppspelningsdatafil ('%s'): Postlängd mindre än väntat (%d < 12)"
 
-#: ../src/itdb_itunesdb.c:981
+#: ../src/itdb_itunesdb.c:1006
 #, c-format
 msgid "iTunesStats file ('%s'): entry length smaller than expected (%d<18)."
 msgstr "iTunes statistikfil ('%s'): Postlängd mindre än väntat (%d < 18)"
 
-#: ../src/itdb_itunesdb.c:1300
+#: ../src/itdb_itunesdb.c:1328
 #, c-format
 msgid "iTunesDB corrupt: no MHOD at offset %ld in file '%s'."
 msgstr "iTunes databas skadad: Ingen MHOD på position %ld i filen '%s'."
 
-#: ../src/itdb_itunesdb.c:1462
+#: ../src/itdb_itunesdb.c:1476
 #, c-format
+msgid "Unknown smart rule action at %ld: %x. Trying to continue.\n"
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:1507
+#, c-format
 msgid ""
 "Length of smart playlist rule field (%d) not as expected. Trying to continue "
 "anyhow.\n"
@@ -239,12 +245,12 @@
 "Regelfältets längd (%d) i den smarta spellistan är inte den förväntade. "
 "Försöker fortsätta ändå.\n"
 
-#: ../src/itdb_itunesdb.c:1494
+#: ../src/itdb_itunesdb.c:1550
 #, c-format
 msgid "iTunesDB corrupt: no SLst at offset %ld in file '%s'."
 msgstr "iTunes databas skadad: Ingen SLst på position %ld i filen '%s'."
 
-#: ../src/itdb_itunesdb.c:1507
+#: ../src/itdb_itunesdb.c:1563
 #, c-format
 msgid ""
 "Encountered unknown MHOD type (%d) while parsing the iTunesDB. Ignoring.\n"
@@ -254,13 +260,13 @@
 "den.\n"
 "\n"
 
-#: ../src/itdb_itunesdb.c:1577
+#: ../src/itdb_itunesdb.c:1642
 #, c-format
 msgid "iTunesDB corrupt: hunk length 0 for hunk at %ld in file '%s'."
 msgstr ""
 "iTunes databas skadad: Datalängd 0 för data på position %ld i filen '%s'."
 
-#: ../src/itdb_itunesdb.c:1590
+#: ../src/itdb_itunesdb.c:1655
 #, c-format
 msgid ""
 "iTunesDB corrupt: no section '%s' found in section '%s' starting at %ld."
@@ -268,7 +274,7 @@
 "iTunes databas skadad: NÃ¥gon sektion '%s' hittades inte i sektion '%s' med "
 "början på %ld."
 
-#: ../src/itdb_itunesdb.c:1604
+#: ../src/itdb_itunesdb.c:1669
 #, c-format
 msgid ""
 "header length of '%s' smaller than expected (%d < %d) at offset %ld in file "
@@ -276,12 +282,12 @@
 msgstr ""
 "Huvudlängd för '%s' mindre än väntat (%d < %d) på position %ld i filen '%s'."
 
-#: ../src/itdb_itunesdb.c:1689
+#: ../src/itdb_itunesdb.c:1754
 #, c-format
 msgid "Not a iTunesDB: '%s' (missing mhdb header)."
 msgstr "Inte en iTunes databas: '%s' (saknar mhdb-huvud)."
 
-#: ../src/itdb_itunesdb.c:1706
+#: ../src/itdb_itunesdb.c:1771
 #, c-format
 msgid ""
 "iTunesDB ('%s'): header length of mhsd hunk smaller than expected (%d<32). "
@@ -290,39 +296,39 @@
 "iTunes databas ('%s'): Huvudlängd för mhsd-data mindre än väntat (%d < 32). "
 "Avbryter."
 
-#: ../src/itdb_itunesdb.c:1727
+#: ../src/itdb_itunesdb.c:1792
 #, c-format
 msgid "iTunesDB '%s' corrupt: mhsd expected at %ld."
 msgstr "iTunes databas '%s' skadad: Förväntade mhsd på position %ld."
 
-#: ../src/itdb_itunesdb.c:1844
+#: ../src/itdb_itunesdb.c:1909
 #, c-format
 msgid "Number of MHODs in mhip at %ld inconsistent in file '%s'."
 msgstr "Antal MHOD i mhip på position %ld inte konsekvent i filen '%s'."
 
-#: ../src/itdb_itunesdb.c:1862
+#: ../src/itdb_itunesdb.c:1927
 #, c-format
 msgid "Itdb_Track ID '%d' not found.\n"
 msgstr "ITunes databas spår-id '%d' hittades inte.\n"
 
-#: ../src/itdb_itunesdb.c:2024
+#: ../src/itdb_itunesdb.c:2096
 #, c-format
 msgid "Number of MHODs in mhyp at %ld inconsistent in file '%s'."
 msgstr "Antal MHOD i mhyp på position %ld inte konsekvent i filen '%s'."
 
-#: ../src/itdb_itunesdb.c:2034
+#: ../src/itdb_itunesdb.c:2106
 msgid "Master-PL"
 msgstr "Huvudspellista"
 
-#: ../src/itdb_itunesdb.c:2038
+#: ../src/itdb_itunesdb.c:2110
 msgid "Podcasts"
 msgstr "Podradiosändningar"
 
-#: ../src/itdb_itunesdb.c:2040
+#: ../src/itdb_itunesdb.c:2112
 msgid "Playlist"
 msgstr "Spellista"
 
-#: ../src/itdb_itunesdb.c:2062
+#: ../src/itdb_itunesdb.c:2134
 #, c-format
 msgid ""
 "iTunesDB corrupt: number of mhip sections inconsistent in mhyp starting at %"
@@ -331,38 +337,37 @@
 "iTunes databas skadad: Antal mhip sektioner inte konsekvent i mhyp med "
 "början på %ld i filen '%s'."
 
-#: ../src/itdb_itunesdb.c:2375
+#: ../src/itdb_itunesdb.c:2468
 msgid "OTG Playlist"
 msgstr "OTG-spellista"
 
-#: ../src/itdb_itunesdb.c:2393
+#: ../src/itdb_itunesdb.c:2486
 #, c-format
 msgid "Not a OTG playlist file: '%s' (missing mhpo header)."
 msgstr "Inte en OTG-spellistefil: '%s' (saknar mhpo-huvud)."
 
-#: ../src/itdb_itunesdb.c:2407
+#: ../src/itdb_itunesdb.c:2500
 #, c-format
 msgid "OTG playlist file ('%s'): header length smaller than expected (%d<20)."
 msgstr "OTG-spellistefil ('%s'): Huvudlängd mindre än väntat (%d < 20)"
 
-#: ../src/itdb_itunesdb.c:2419
-#, c-format
-msgid ""
-"OTG playlist file file ('%s'): entry length smaller than expected (%d<4)."
+#: ../src/itdb_itunesdb.c:2512
+#, fuzzy, c-format
+msgid "OTG playlist file ('%s'): entry length smaller than expected (%d<4)."
 msgstr "OTG-spellistefil ('%s'): Postlängd mindre än väntat (%d < 4)"
 
-#: ../src/itdb_itunesdb.c:2454
+#: ../src/itdb_itunesdb.c:2547
 #, c-format
 msgid "OTG playlist file '%s': reference to non-existent track (%d)."
 msgstr "OTG-spellistefil '%s': Referens till spår som inte finns (%d)."
 
-#: ../src/itdb_itunesdb.c:2499
+#: ../src/itdb_itunesdb.c:2592
 #, c-format
 msgid "OTG Playlist %d"
 msgstr "OTG-spellista %d"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2567
+#: ../src/itdb_itunesdb.c:2660
 msgid ""
 "iTunesDB corrupt: number of tracks (mhit hunks) inconsistent. Trying to "
 "continue.\n"
@@ -371,7 +376,7 @@
 "fortsätta.\n"
 
 #. this should not be -- issue warning
-#: ../src/itdb_itunesdb.c:2630
+#: ../src/itdb_itunesdb.c:2723
 msgid ""
 "iTunesDB possibly corrupt: number of playlists (mhyp hunks) inconsistent. "
 "Trying to continue.\n"
@@ -379,7 +384,7 @@
 "iTunes databas möjligen skadad: Antal spellistor (mhyp-data) inte "
 "konsekvent. Försöker fortsätta.\n"
 
-#: ../src/itdb_itunesdb.c:2677
+#: ../src/itdb_itunesdb.c:2770
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find tracklist (no mhsd type 1 section "
@@ -388,7 +393,7 @@
 "iTunes databas '%s' skadad: Kunde inte hitta spårlista (någon mhsd av typ 1 "
 "hittades inte)"
 
-#: ../src/itdb_itunesdb.c:2706
+#: ../src/itdb_itunesdb.c:2799
 #, c-format
 msgid ""
 "iTunesDB '%s' corrupt: Could not find playlists (no mhsd type 2 or type 3 "
@@ -397,115 +402,126 @@
 "iTunes databas '%s' skadad: Kunde inte hitta spellistor (någon mhsd av typ 2 "
 "eller typ 3 hittades)"
 
-#: ../src/itdb_itunesdb.c:2728
+#: ../src/itdb_itunesdb.c:2821
 #, c-format
 msgid "iTunes directory not found: '%s' (or similar)."
 msgstr "iTunes katalog hittades inte: '%s' (eller liknande)."
 
-#: ../src/itdb_itunesdb.c:2745
+#: ../src/itdb_itunesdb.c:2838
 #, c-format
 msgid "Music directory not found: '%s' (or similar)."
 msgstr "Musikkatalog hittades inte: '%s' (eller liknande)."
 
-#: ../src/itdb_itunesdb.c:2763
+#: ../src/itdb_itunesdb.c:2856
 #, c-format
 msgid "Control directory not found: '%s' (or similar)."
 msgstr "Styrkatalog hittades inte: '%s' (eller liknande)."
 
-#: ../src/itdb_itunesdb.c:2836
+#: ../src/itdb_itunesdb.c:2974
 #, c-format
 msgid "File not found: '%s'."
 msgstr "Filen hittades inte: '%s'."
 
-#: ../src/itdb_itunesdb.c:3654
+#: ../src/itdb_itunesdb.c:4746
 #, c-format
-msgid "Cannot write mhod of type %d\n"
-msgstr "Kan inte skriva mhod av typen %d\n"
-
-#: ../src/itdb_itunesdb.c:4245
-#, c-format
 msgid "Opening of '%s' for writing failed (%s)."
 msgstr "Fel när '%s' skulle öppnas för skrivning (%s)."
 
-#: ../src/itdb_itunesdb.c:4256 ../src/itdb_itunesdb.c:4267
+#: ../src/itdb_itunesdb.c:4757 ../src/itdb_itunesdb.c:4768
 #, c-format
 msgid "Writing to '%s' failed (%s)."
 msgstr "Fel vid skrivning till '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:4617
+#: ../src/itdb_itunesdb.c:5122
 #, c-format
 msgid "Path not found: '%s' (or similar)."
 msgstr "Sökväg hittades inte: '%s' (eller liknande)."
 
-#: ../src/itdb_itunesdb.c:4836
+#: ../src/itdb_itunesdb.c:5341
 #, c-format
 msgid "Error renaming '%s' to '%s' (%s)."
 msgstr "Fel vid byte av namn på '%s' till '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:4853 ../src/itdb_itunesdb.c:4870
+#: ../src/itdb_itunesdb.c:5358 ../src/itdb_itunesdb.c:5375
 #, c-format
 msgid "Error removing '%s' (%s)."
 msgstr "Fel vid borttagning av '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5056
+#: ../src/itdb_itunesdb.c:5531 ../src/itdb_itunesdb.c:5692
+#, fuzzy
+msgid "Mountpoint not set."
+msgstr "Monteringsplats inte inställd.\n"
+
+#: ../src/itdb_itunesdb.c:5571
 #, c-format
 msgid "No 'F..' directories found in '%s'."
 msgstr "NÃ¥gra 'F..'-kataloger hittades inte i '%s'."
 
-#: ../src/itdb_itunesdb.c:5084
+#: ../src/itdb_itunesdb.c:5592
 #, c-format
 msgid "Path not found: '%s'."
 msgstr "Sökväg hittades inte: '%s'."
 
-#: ../src/itdb_itunesdb.c:5243
+#: ../src/itdb_itunesdb.c:5701
+#, fuzzy, c-format
+msgid "'%s' could not be accessed (%s)."
+msgstr "Kunde inte komma åt filen '%s'."
+
+#: ../src/itdb_itunesdb.c:5711
 #, c-format
+msgid ""
+"Destination file '%s' does not appear to be on the iPod mounted at '%s'."
+msgstr ""
+
+#: ../src/itdb_itunesdb.c:5915
+#, c-format
 msgid "Error opening '%s' for reading (%s)."
 msgstr "Fel när '%s' skulle öppnas för läsning (%s)."
 
-#: ../src/itdb_itunesdb.c:5254
+#: ../src/itdb_itunesdb.c:5926
 #, c-format
 msgid "Error opening '%s' for writing (%s)."
 msgstr "Fel när '%s' skulle öppnas för skrivning (%s)."
 
-#: ../src/itdb_itunesdb.c:5271
+#: ../src/itdb_itunesdb.c:5943
 #, c-format
 msgid "Error while reading from '%s' (%s)."
 msgstr "Fel vid läsning från '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5287
+#: ../src/itdb_itunesdb.c:5959
 #, c-format
 msgid "Error while writing to '%s' (%s)."
 msgstr "Fel vid skrivning till '%s' (%s)."
 
-#: ../src/itdb_itunesdb.c:5300 ../src/itdb_itunesdb.c:5310
+#: ../src/itdb_itunesdb.c:5972 ../src/itdb_itunesdb.c:5982
 #, c-format
 msgid "Error when closing '%s' (%s)."
 msgstr "Fel när '%s' skulle stängas (%s)."
 
-#: ../src/itdb_itunesdb.c:5673
+#: ../src/itdb_itunesdb.c:6347
 msgid "iPod"
 msgstr "iPod"
 
-#: ../src/itdb_itunesdb.c:6066
+#: ../src/itdb_itunesdb.c:6740
 #, c-format
 msgid "Problem creating iPod directory or file: '%s'."
 msgstr "Problem att skapa iPod-katalog eller fil: '%s'."
 
-#: ../src/itdb_photoalbum.c:107
+#: ../src/itdb_photoalbum.c:109
 #, c-format
 msgid "Photos directory not found: '%s' (or similar)."
 msgstr "Fotokatalog hittades inte: '%s' (eller liknande)."
 
-#: ../src/itdb_photoalbum.c:245 ../src/itdb_photoalbum.c:442
+#: ../src/itdb_photoalbum.c:256 ../src/itdb_photoalbum.c:463
 msgid "Photo Library"
 msgstr "Fotobibliotek"
 
-#: ../src/itdb_photoalbum.c:357
+#: ../src/itdb_photoalbum.c:370
 msgid "You need to specify the iPod model used before photos can be added."
 msgstr ""
 "Du måste ange vilken iPod-modell som används innan foton kan läggas till."
 
-#: ../src/itdb_photoalbum.c:378
+#: ../src/itdb_photoalbum.c:391
 #, c-format
 msgid ""
 "Your iPod does not seem to support photos. Maybe you need to specify the "
@@ -514,12 +530,12 @@
 "Din iPod verkar inte stödja foton. Kanske måste du ange rätt iPod-"
 "modellnummer? För närvarande är det inställt till 'x%s' (%s/%s)."
 
-#: ../src/itdb_photoalbum.c:390
+#: ../src/itdb_photoalbum.c:403
 #, c-format
 msgid "Could not access file '%s'. Photo not added."
 msgstr "Kunde inte komma åt filen '%s'. Fotot har inte lagts till."
 
-#: ../src/itdb_photoalbum.c:430
+#: ../src/itdb_photoalbum.c:451
 msgid ""
 "Unexpected error in itdb_photodb_add_photo_internal() while adding photo, "
 "please report."
@@ -527,7 +543,7 @@
 "Oväntat fel i itdb_photodb_add_photo_internal() vid tillägg av foto. "
 "Rapportera gärna felet."
 
-#: ../src/itdb_photoalbum.c:450
+#: ../src/itdb_photoalbum.c:471
 msgid ""
 "Library compiled without gdk-pixbuf support. Picture support is disabled."
 msgstr ""
@@ -535,7 +551,7 @@
 "inaktiverat."
 
 #. New action!
-#: ../src/itdb_playlist.c:78
+#: ../src/itdb_playlist.c:79
 #, c-format
 msgid "Unknown action (%d) in smart playlist will be ignored.\n"
 msgstr "Okänd åtgärd (%d) i smart spellista kommer att ignoreras.\n"
@@ -575,11 +591,11 @@
 "  %s list <mountpoint>\n"
 
 #: ../tests/test-photos.c:42
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "Usage to remove photo IDs from Photo Library:\n"
 "  %s remove <mountpoint> <albumname> [<ID(s)>]\n"
-"  <albumname> should be set to 'NULL' to to remove photos from the iPod\n"
+"  <albumname> should be set to 'NULL' to remove photos from the iPod\n"
 "  altogether. If you don't specify any IDs, the photoalbum will be removed\n"
 "  instead.\n"
 "  WARNING: IDs may change when writing the PhotoDB file.\n"
@@ -612,6 +628,7 @@
 msgstr "Fel vid vid läsning av iPod fotodatabas (%s).\n"
 
 #: ../tests/test-photos.c:156 ../tests/test-photos.c:190
+#: ../tests/test-photos.c:320
 msgid "Error reading iPod photo database.\n"
 msgstr "Fel vid läsning av iPod fotodatabas.\n"
 
@@ -647,10 +664,6 @@
 msgid "Error adding photo (%s) to photo database: %s\n"
 msgstr "Fel vid vid tillägg av foto (%s) i fotodatabas: %s\n"
 
-#: ../tests/test-photos.c:320
-msgid "Error reading iPod photo database"
-msgstr "Fel vid läsning av iPod fotodatabas"
-
 #: ../tests/test-photos.c:331
 #, c-format
 msgid "Specified album '%s' not found. Aborting.\n"
@@ -669,3 +682,9 @@
 #, c-format
 msgid "Unknown command '%s'\n"
 msgstr "Okänt kommando '%s'\n"
+
+#~ msgid "Cannot write mhod of type %d\n"
+#~ msgstr "Kan inte skriva mhod av typen %d\n"
+
+#~ msgid "Error reading iPod photo database"
+#~ msgstr "Fel vid läsning av iPod fotodatabas"

Modified: libgpod/branches/upstream/current/py-compile
===================================================================
--- libgpod/branches/upstream/current/py-compile	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/py-compile	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,10 +1,8 @@
 #!/bin/sh
+
 # py-compile - Compile a Python program
+# Copyright 2000, 2001 Free Software Foundation, Inc.
 
-scriptversion=2005-05-14.22
-
-# Copyright (C) 2000, 2001, 2003, 2004, 2005  Free Software Foundation, Inc.
-
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2, or (at your option)
@@ -17,130 +15,78 @@
 
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
-# This file is maintained in Automake, please report
-# bugs to <bug-automake at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
+# called as "py-compile [--basedir DIR] PY_FILES ...
 
 if [ -z "$PYTHON" ]; then
   PYTHON=python
 fi
 
 basedir=
-destdir=
-files=
-while test $# -ne 0; do
-  case "$1" in
+
+case "$1" in
     --basedir)
-      basedir=$2
-      if test -z "$basedir"; then
-        echo "$0: Missing argument to --basedir." 1>&2
-        exit 1
-      fi
-      shift
-      ;;
-    --destdir)
-      destdir=$2
-      if test -z "$destdir"; then
-        echo "$0: Missing argument to --destdir." 1>&2
-        exit 1
-      fi
-      shift
-      ;;
-    -h|--h*)
-      cat <<\EOF
-Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..."
+	basedir=$2
+	shift 2
+	;;
+    --help)
+	echo "Usage: py-compile [--basedir DIR] PY_FILES ..."
+	echo "Byte compile some python scripts.  This should be performed"
+	echo "after they have been moved to the final installation location"
+	exit 0
+	;;
+    --version)
+	echo "py-compile version 0.0"
+	exit 0
+	;;
+esac
 
-Byte compile some python scripts FILES.  Use --destdir to specify any
-leading directory path to the FILES that you don't want to include in the
-byte compiled file.  Specify --basedir for any additional path information you
-do want to be shown in the byte compiled file.
-
-Example:
-  py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-      exit $?
-      ;;
-    -v|--v*)
-      echo "py-compile $scriptversion"
-      exit $?
-      ;;
-    *)
-      files="$files $1"
-      ;;
-  esac
-  shift
-done
-
-if test -z "$files"; then
-    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
+if [ $# = 0 ]; then
+    echo "No files given to $0" 1>&2
     exit 1
 fi
 
 # if basedir was given, then it should be prepended to filenames before
 # byte compilation.
 if [ -z "$basedir" ]; then
-    pathtrans="path = file"
+    trans="path = file"
 else
-    pathtrans="path = os.path.join('$basedir', file)"
+    trans="path = os.path.join('$basedir', file)"
 fi
 
-# if destdir was given, then it needs to be prepended to the filename to
-# byte compile but not go into the compiled file.
-if [ -z "$destdir" ]; then
-    filetrans="filepath = path"
-else
-    filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)"
-fi
-
 $PYTHON -c "
 import sys, os, string, py_compile
 
-files = '''$files'''
-
+files = '''$*'''
 print 'Byte-compiling python modules...'
 for file in string.split(files):
-    $pathtrans
-    $filetrans
-    if not os.path.exists(filepath) or not (len(filepath) >= 3
-                                            and filepath[-3:] == '.py'):
+    $trans
+    if not os.path.exists(path) or not (len(path) >= 3 and path[-3:] == '.py'):
 	continue
     print file,
     sys.stdout.flush()
-    py_compile.compile(filepath, filepath + 'c', path)
+    py_compile.compile(path)
 print" || exit $?
 
 # this will fail for python < 1.5, but that doesn't matter ...
 $PYTHON -O -c "
 import sys, os, string, py_compile
 
-files = '''$files'''
+files = '''$*'''
 print 'Byte-compiling python modules (optimized versions) ...'
 for file in string.split(files):
-    $pathtrans
-    $filetrans
-    if not os.path.exists(filepath) or not (len(filepath) >= 3
-                                            and filepath[-3:] == '.py'):
+    $trans
+    if not os.path.exists(path) or not (len(path) >= 3 and path[-3:] == '.py'):
 	continue
     print file,
     sys.stdout.flush()
-    py_compile.compile(filepath, filepath + 'o', path)
+    py_compile.compile(path)
 print" 2>/dev/null || :
 
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:

Modified: libgpod/branches/upstream/current/src/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/src/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,7 +14,6 @@
 
 @SET_MAKE@
 
-
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -22,6 +21,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = ..
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -35,55 +35,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
-subdir = src
-DIST_COMMON = $(libgpodinclude_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(libdir)" \
-	"$(DESTDIR)$(libgpodincludedir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libgpod_la_LIBADD =
-am_libgpod_la_OBJECTS = itdb_artwork.lo itdb_itunesdb.lo \
-	itdb_playlist.lo itdb_photoalbum.lo itdb_track.lo \
-	db-artwork-parser.lo db-parse-context.lo db-artwork-debug.lo \
-	db-image-parser.lo db-artwork-writer.lo ithumb-writer.lo \
-	itdb_device.lo pixmaps.lo
-libgpod_la_OBJECTS = $(am_libgpod_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libgpod_la_SOURCES)
-DIST_SOURCES = $(libgpod_la_SOURCES)
-libgpodincludeHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(libgpodinclude_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -183,6 +135,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -204,6 +157,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -224,8 +178,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -251,7 +203,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -266,6 +217,7 @@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 lib_LTLIBRARIES = libgpod.la
+
 libgpod_la_SOURCES = \
 	itdb.h           \
 	itdb_artwork.c   \
@@ -292,69 +244,94 @@
 	pixmaps.h \
 	glib-compat.h
 
+
 libgpod_la_headers = itdb.h
 libgpod_la_noinst_headers = itdb_private.h hal-common.h
 libgpod_la_LDFLAGS = -version-info $(LIBGPOD_SO_VERSION) -no-undefined
+
 libgpodincludedir = $(includedir)/gpod-1.0/gpod
 libgpodinclude_HEADERS = $(libgpod_la_headers)
+
 INCLUDES = $(LIBGPOD_CFLAGS)
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+libgpod_la_LIBADD =
+am_libgpod_la_OBJECTS = itdb_artwork.lo itdb_itunesdb.lo \
+	itdb_playlist.lo itdb_photoalbum.lo itdb_track.lo \
+	db-artwork-parser.lo db-parse-context.lo db-artwork-debug.lo \
+	db-image-parser.lo db-artwork-writer.lo ithumb-writer.lo \
+	itdb_device.lo pixmaps.lo
+libgpod_la_OBJECTS = $(am_libgpod_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/db-artwork-debug.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/db-artwork-parser.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/db-artwork-writer.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/db-image-parser.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/db-parse-context.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/itdb_artwork.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/itdb_device.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/itdb_itunesdb.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/itdb_photoalbum.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/itdb_playlist.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/itdb_track.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/ithumb-writer.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/pixmaps.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgpod_la_SOURCES)
+HEADERS = $(libgpodinclude_HEADERS)
+
+DIST_COMMON = $(libgpodinclude_HEADERS) $(srcdir)/Makefile.in \
+	Makefile.am
+SOURCES = $(libgpod_la_SOURCES)
+
 all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+libLTLIBRARIES_INSTALL = $(INSTALL)
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
 	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
 	  if test -f $$p; then \
-	    f=$(am__strip_dir) \
-	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
-	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
 	  else :; fi; \
 	done
 
 uninstall-libLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  p=$(am__strip_dir) \
-	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
-	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
 	done
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
 	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
 	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
+	  test "$$dir" = "$$p" && dir=.; \
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
@@ -362,7 +339,7 @@
 	$(LINK) -rpath $(libdir) $(libgpod_la_LDFLAGS) $(libgpod_la_OBJECTS) $(libgpod_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
+	-rm -f *.$(OBJEXT) core *.core
 
 distclean-compile:
 	-rm -f *.tab.c
@@ -382,25 +359,37 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pixmaps.Plo at am__quote@
 
 .c.o:
- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
 
 .c.obj:
- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
 
 .c.lo:
- at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -411,24 +400,33 @@
 distclean-libtool:
 	-rm -f libtool
 uninstall-info-am:
+libgpodincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 install-libgpodincludeHEADERS: $(libgpodinclude_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(libgpodincludedir)" || $(mkdir_p) "$(DESTDIR)$(libgpodincludedir)"
+	$(mkinstalldirs) $(DESTDIR)$(libgpodincludedir)
 	@list='$(libgpodinclude_HEADERS)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(libgpodincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libgpodincludedir)/$$f'"; \
-	  $(libgpodincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libgpodincludedir)/$$f"; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgpodincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgpodincludedir)/$$f"; \
+	  $(libgpodincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgpodincludedir)/$$f; \
 	done
 
 uninstall-libgpodincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(libgpodinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(libgpodincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(libgpodincludedir)/$$f"; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgpodincludedir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgpodincludedir)/$$f; \
 	done
 
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -437,7 +435,6 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	mkid -fID $$unique
-tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -449,11 +446,10 @@
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -476,7 +472,11 @@
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -489,7 +489,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -507,10 +507,9 @@
 check-am: all-am
 check: check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
 installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libgpodincludedir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-	done
+	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(libgpodincludedir)
 install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
@@ -530,7 +529,7 @@
 clean-generic:
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -550,8 +549,6 @@
 
 dvi-am:
 
-html: html-am
-
 info: info-am
 
 info-am:
@@ -590,8 +587,8 @@
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
 	clean-libLTLIBRARIES clean-libtool ctags distclean \
 	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-exec \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
 	install-exec-am install-info install-info-am \
 	install-libLTLIBRARIES install-libgpodincludeHEADERS \
 	install-man install-strip installcheck installcheck-am \

Modified: libgpod/branches/upstream/current/src/db-artwork-debug.h
===================================================================
--- libgpod/branches/upstream/current/src/db-artwork-debug.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/db-artwork-debug.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -20,7 +20,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- *  $Id: db-artwork-debug.h,v 1.4 2006/06/04 16:24:44 jcsjcs Exp $
+ *  $Id: db-artwork-debug.h 1299 2006-06-04 16:24:45Z jcsjcs $
  */
 #ifndef DB_ARTWORK_DEBUG_H
 #define DB_ARTWORK_DEBUG_H

Modified: libgpod/branches/upstream/current/src/db-artwork-parser.c
===================================================================
--- libgpod/branches/upstream/current/src/db-artwork-parser.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/db-artwork-parser.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2005 Christophe Fergeau
+ *  Copyright (C) 2005-2007 Christophe Fergeau
  *
  * 
  *  The code contained in this file is free software; you can redistribute
@@ -237,6 +237,8 @@
 	Itdb_PhotoDB *photodb;
 	Itdb_iTunesDB *itunesdb;
 	guint64 dbid;
+	guint64 mactime;
+	Itdb_Device *device = db_get_device (ctx->db);
 
 	mhii = db_parse_context_get_m_header (ctx, MhiiHeader, "mhii");
 	if (mhii == NULL)
@@ -277,11 +279,11 @@
 	artwork->unk028 = get_gint32 (mhii->unknown4, ctx->byte_order);
 	artwork->rating = get_gint32 (mhii->rating, ctx->byte_order);
 	artwork->unk036 = get_gint32 (mhii->unknown6, ctx->byte_order);
-	artwork->creation_date = get_gint32 (mhii->orig_date, ctx->byte_order);
-	artwork->digitized_date = get_gint32 (mhii->digitized_date,
-					      ctx->byte_order);
-	artwork->artwork_size = get_gint32 (mhii->orig_img_size,
-					    ctx->byte_order);
+	mactime = get_gint32 (mhii->orig_date, ctx->byte_order);
+	artwork->creation_date = device_time_mac_to_time_t (device, mactime);
+	mactime = get_gint32 (mhii->digitized_date, ctx->byte_order);
+	artwork->digitized_date = device_time_mac_to_time_t (device, mactime);
+	artwork->artwork_size = get_gint32 (mhii->orig_img_size, ctx->byte_order);
 
 	if (song)
 	{
@@ -353,15 +355,17 @@
 	mhod_ctx = db_parse_context_get_sub_context (ctx, cur_offset);
 	num_children = get_gint32 (mhba->num_mhods, ctx->byte_order);
 	while ((num_children > 0) && (mhod_ctx != NULL)) {
+	        MhodHeaderArtworkType1 *mhod1;
 		/* FIXME: First mhod is album name, whats the others for? */
 		mhod = db_parse_context_get_m_header (mhod_ctx, ArtworkDB_MhodHeader, "mhod");
 		if (mhod == NULL) {
 			return -1;
 		}
 		db_parse_context_set_total_len (mhod_ctx,  get_gint32(mhod->total_len, ctx->byte_order));
-		album->name = g_strdup( (char *)((MhodHeaderArtworkType1*)mhod)->string );
+		mhod1 = (MhodHeaderArtworkType1*)mhod;
+		album->name = g_strndup ((gchar *)mhod1->string, mhod1->string_len);
 		cur_offset += mhod_ctx->total_len;
-		dump_mhod_type_1 ((MhodHeaderArtworkType1*)mhod);
+		dump_mhod_type_1 (mhod1);
 		g_free (mhod_ctx);
 		num_children--;
 	}

Modified: libgpod/branches/upstream/current/src/db-artwork-parser.h
===================================================================
--- libgpod/branches/upstream/current/src/db-artwork-parser.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/db-artwork-parser.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -20,7 +20,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- *  $Id: db-artwork-parser.h,v 1.8 2006/06/04 16:24:44 jcsjcs Exp $
+ *  $Id: db-artwork-parser.h 1299 2006-06-04 16:24:45Z jcsjcs $
  */
 
 

Modified: libgpod/branches/upstream/current/src/db-artwork-writer.c
===================================================================
--- libgpod/branches/upstream/current/src/db-artwork-writer.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/db-artwork-writer.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2005 Christophe Fergeau
+ *  Copyright (C) 2005-2007 Christophe Fergeau
  *
  * 
  *  The code contained in this file is free software; you can redistribute
@@ -330,7 +330,7 @@
 
 	padding = 4 - ( (total_bytes + len) % 4 );
 	mhod->padding = padding;
-	mhod->type = get_gint32 (0x0001, buffer->byte_order);
+	mhod->type = get_gint16 (0x01, buffer->byte_order);
 
 	/* Make sure we have enough free space to write the string */
 	if (ipod_buffer_maybe_grow (buffer, total_bytes + len + padding ) != 0) {
@@ -384,7 +384,7 @@
 	    /* number of bytes of the string encoded in UTF-16 */
 	    mhod->string_len = get_gint32 (2*len, buffer->byte_order);
 	    padding = 4 - ( (total_bytes + 2*len) % 4 );
-	    mhod->padding = padding; /* high byte is padding length (0-3) */
+	    mhod->padding = padding;
 
 	    /* Make sure we have enough free space to write the string */
 	    if (ipod_buffer_maybe_grow (buffer, total_bytes + 2*len+padding) != 0) {
@@ -410,7 +410,7 @@
 	    /* e.g. len = 7 bytes, len%4 = 3, 4-3=1 -> requires 1 byte
 	       padding */
 	    padding = 4 - ( (total_bytes + len) % 4 );
-	    mhod->padding = padding; /* high byte is padding length (0-3) */
+	    mhod->padding = padding;
 	    /* Make sure we have enough free space to write the string */
 	    if (ipod_buffer_maybe_grow (buffer, total_bytes + 2*len+padding) != 0) {
 		return  -1;
@@ -531,6 +531,8 @@
 	GList *it = NULL;
 	Itdb_Track *song;
 	Itdb_Artwork *artwork;
+	guint64 mactime;
+	Itdb_Device *device = db_get_device (db);
 
 	mhii = (MhiiHeader *)init_header (buffer, "mhii", sizeof (MhiiHeader));
 	if (mhii == NULL) {
@@ -555,11 +557,14 @@
 	mhii->unknown4 = get_gint32 (artwork->unk028, buffer->byte_order);
 	mhii->rating = get_gint32 (artwork->rating, buffer->byte_order);
 	mhii->unknown6 = get_gint32 (artwork->unk036, buffer->byte_order);
-	mhii->orig_date = get_guint32 (artwork->creation_date, buffer->byte_order);
-	mhii->digitized_date = get_guint32 (artwork->digitized_date,
-					    buffer->byte_order);
-	mhii->orig_img_size = get_gint32 (artwork->artwork_size, 
-					  buffer->byte_order);
+
+	mactime = device_time_time_t_to_mac (device, artwork->creation_date);
+	mhii->orig_date = get_guint32 (mactime, buffer->byte_order);
+
+	mactime = device_time_time_t_to_mac (device, artwork->digitized_date);
+	mhii->digitized_date = get_guint32 (mactime, buffer->byte_order);
+
+	mhii->orig_img_size = get_gint32 (artwork->artwork_size, buffer->byte_order);
 	it = artwork->thumbnails;
 	num_children = 0;
 	while (it != NULL) {
@@ -957,7 +962,7 @@
 		mhfd->unknown2 = get_gint32 (2, buffer->byte_order);
 		break;
 	case DB_TYPE_ITUNES:
-		mhfd->unknown2 = get_gint32 (1, buffer->byte_order);
+		mhfd->unknown2 = get_gint32 (2, buffer->byte_order);
 		break;
 	}
 	mhfd->next_id = get_gint32 (id_max, buffer->byte_order);

Modified: libgpod/branches/upstream/current/src/db-image-parser.h
===================================================================
--- libgpod/branches/upstream/current/src/db-image-parser.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/db-image-parser.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -20,7 +20,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- *  $Id: db-image-parser.h,v 1.9 2006/06/04 16:24:44 jcsjcs Exp $
+ *  $Id: db-image-parser.h 1299 2006-06-04 16:24:45Z jcsjcs $
  */
 
 #ifndef IMAGE_PARSER_H

Modified: libgpod/branches/upstream/current/src/db-itunes-parser.h
===================================================================
--- libgpod/branches/upstream/current/src/db-itunes-parser.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/db-itunes-parser.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,7 +1,6 @@
-/*  Time-stamp: <2006-11-11 20:38:32 jcs>
+/*
+ *  Copyright (C) 2005-2007 Christophe Fergeau
  *
- *  Copyright (C) 2005 Christophe Fergeau
- *
  * 
  *  The code contained in this file is free software; you can redistribute
  *  it and/or modify it under the terms of the GNU Lesser General Public
@@ -21,7 +20,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- * $Id: db-itunes-parser.h,v 1.9 2006/11/11 13:44:29 jcsjcs Exp $
+ * $Id: db-itunes-parser.h 1514 2007-06-01 13:56:32Z jcsjcs $
  */
 
 
@@ -378,6 +377,8 @@
 	unsigned char string[];
 };
 
+#if 0
+/* not used at all */
 struct _MhodHeaderArtworkType3 {
 	unsigned char header_id[4];
 	gint32 header_len;
@@ -391,6 +392,7 @@
 	gint32 unknown4;
 	gunichar2 string[];
 };
+#endif
 
 struct _ArtworkDB_MhodHeaderArtworkType3 {
 	unsigned char header_id[4];
@@ -543,7 +545,10 @@
 	gint32 header_len;
 	gint32 total_len;
 	gint32 unknown1;
-	gint32 unknown2;
+	gint32 unknown2; /* always seem to be 1 for older databases,
+			    in an ArtworkDB generated by iTunes 4.9 or
+			    above, it's 2. Caution: iTunes7 removes
+			    the whole database if this field is 1 */
 	gint32 num_children;
 	gint32 unknown3;
 	gint32 next_id;

Modified: libgpod/branches/upstream/current/src/db-parse-context.h
===================================================================
--- libgpod/branches/upstream/current/src/db-parse-context.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/db-parse-context.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,7 +21,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- *  $Id: db-parse-context.h,v 1.6 2006/06/04 16:24:44 jcsjcs Exp $
+ *  $Id: db-parse-context.h 1299 2006-06-04 16:24:45Z jcsjcs $
  */
 /*
  *  Copyright (C) 2005 Christophe Fergeau
@@ -46,7 +46,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- *  $Id: db-parse-context.h,v 1.6 2006/06/04 16:24:44 jcsjcs Exp $
+ *  $Id: db-parse-context.h 1299 2006-06-04 16:24:45Z jcsjcs $
  */
 
 

Modified: libgpod/branches/upstream/current/src/glib-compat.h
===================================================================
--- libgpod/branches/upstream/current/src/glib-compat.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/glib-compat.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,7 +21,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- *  $Id: glib-compat.h,v 1.3 2006/06/04 16:24:44 jcsjcs Exp $
+ *  $Id: glib-compat.h 1299 2006-06-04 16:24:45Z jcsjcs $
  */
 
 #ifndef GLIB_COMPAT_H

Modified: libgpod/branches/upstream/current/src/itdb.h
===================================================================
--- libgpod/branches/upstream/current/src/itdb.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,6 +1,5 @@
-/* Time-stamp: <2007-01-09 23:44:56 jcs>
-|
-|  Copyright (C) 2002-2006 Jorg Schuler <jcsjcs at users sourceforge net>
+/*
+|  Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
 | 
 |  URL: http://www.gtkpod.org/
@@ -30,7 +29,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb.h,v 1.57 2007/01/11 07:10:55 tmzullinger Exp $
+|  $Id: itdb.h 1552 2007-06-17 15:27:05Z jcsjcs $
 */
 
 #ifndef __ITUNESDB_H__
@@ -54,18 +53,19 @@
 typedef void (* ItdbUserDataDestroyFunc) (gpointer userdata);
 typedef gpointer (* ItdbUserDataDuplicateFunc) (gpointer userdata);
 
+/* public structures */
 typedef struct _Itdb_Device Itdb_Device;
+typedef struct _Itdb_IpodInfo Itdb_IpodInfo;
 typedef struct _Itdb_Artwork Itdb_Artwork;
 typedef struct _Itdb_Thumb Itdb_Thumb;
-typedef struct _SPLPref SPLPref;
-typedef struct _SPLRule SPLRule;
-typedef struct _SPLRules SPLRules;
+typedef struct _Itdb_SPLPref Itdb_SPLPref;
+typedef struct _Itdb_SPLRule Itdb_SPLRule;
+typedef struct _Itdb_SPLRules Itdb_SPLRules;
 typedef struct _Itdb_iTunesDB Itdb_iTunesDB;
 typedef struct _Itdb_PhotoDB Itdb_PhotoDB;
 typedef struct _Itdb_Playlist Itdb_Playlist;
 typedef struct _Itdb_PhotoAlbum Itdb_PhotoAlbum;
 typedef struct _Itdb_Track Itdb_Track;
-typedef struct _Itdb_IpodInfo Itdb_IpodInfo;
 
 
 /* ------------------------------------------------------------ *\
@@ -111,20 +111,24 @@
 } Itdb_IpodModel;
 
 struct _Itdb_IpodInfo {
-       /* model_number is abbreviated: if the first character is not
-	  numeric, it is ommited. e.g. "MA350 -> A350", "M9829 -> 9829" */
-	const gchar *model_number;
-        const double capacity;  /* in GB */
-	const Itdb_IpodModel ipod_model;
-	const Itdb_IpodGeneration ipod_generation;
-        /* Number of music (Fnn) dirs created by iTunes. The exact
-	   number seems to be version dependent. Therefore, the
-	   numbers here represent a mixture of reported values and
-	   common sense. Note: this number does not necessarily
-	   represent the number of dirs present on a particular
-	   iPod. It is used when setting up a new iPod from
-	   scratch. */
-        const guint musicdirs;
+    /* model_number is abbreviated: if the first character is not
+       numeric, it is ommited. e.g. "MA350 -> A350", "M9829 -> 9829" */
+    const gchar *model_number;
+    const double capacity;  /* in GB */
+    const Itdb_IpodModel ipod_model;
+    const Itdb_IpodGeneration ipod_generation;
+    /* Number of music (Fnn) dirs created by iTunes. The exact number
+       seems to be version dependent. Therefore, the numbers here
+       represent a mixture of reported values and common sense. Note:
+       this number does not necessarily represent the number of dirs
+       present on a particular iPod. It is used when setting up a new
+       iPod from scratch. */
+    const guint musicdirs;
+    /* reserved for future use */
+    const gint32 reserved_int1;
+    const gint32 reserved_int2;
+    gconstpointer reserved1;
+    gconstpointer reserved2;
 };
 
 
@@ -138,33 +142,34 @@
 /* Most of the knowledge about smart playlists has been provided by
    Samuel "Otto" Wood (sam dot wood at gmail dot com) who let me dig
    in his impressive C++ class. Contact him for a complete
-   copy. Further, all enums and #defines below, SPLRule, SPLRules, and
-   SPLPref may also be used under a FreeBSD license. */
+   copy. Further, all enums and #defines below, Itdb_SPLRule, Itdb_SPLRules, and
+   Itdb_SPLPref may also be used under a FreeBSD license. */
 
-#define SPL_STRING_MAXLEN 255
+#define ITDB_SPL_STRING_MAXLEN 255
+#define ITDB_SPL_DATE_IDENTIFIER (G_GINT64_CONSTANT (0x2dae2dae2dae2daeU))
 
 /* Definitions for smart playlists */
-enum { /* types for match_operator */
-    SPLMATCH_AND = 0, /* AND rule - all of the rules must be true in
+typedef enum { /* types for match_operator */
+    ITDB_SPLMATCH_AND = 0, /* AND rule - all of the rules must be true in
 			 order for the combined rule to be applied */
-    SPLMATCH_OR = 1   /* OR rule */
-};
+    ITDB_SPLMATCH_OR = 1   /* OR rule */
+} ItdbSPLMatch;
 
 /* Limit Types.. like limit playlist to 100 minutes or to 100 songs */
-enum {
-    LIMITTYPE_MINUTES = 0x01,
-    LIMITTYPE_MB      = 0x02,
-    LIMITTYPE_SONGS   = 0x03,
-    LIMITTYPE_HOURS   = 0x04,
-    LIMITTYPE_GB      = 0x05
-};
+typedef enum {
+    ITDB_LIMITTYPE_MINUTES = 0x01,
+    ITDB_LIMITTYPE_MB      = 0x02,
+    ITDB_LIMITTYPE_SONGS   = 0x03,
+    ITDB_LIMITTYPE_HOURS   = 0x04,
+    ITDB_LIMITTYPE_GB      = 0x05
+} ItdbLimitType;
 
 /* Limit Sorts.. Like which songs to pick when using a limit type
-   Special note: the values for LIMITSORT_LEAST_RECENTLY_ADDED,
-   LIMITSORT_LEAST_OFTEN_PLAYED, LIMITSORT_LEAST_RECENTLY_PLAYED, and
-   LIMITSORT_LOWEST_RATING are really 0x10, 0x14, 0x15, 0x17, with the
+   Special note: the values for ITDB_LIMITSORT_LEAST_RECENTLY_ADDED,
+   ITDB_LIMITSORT_LEAST_OFTEN_PLAYED, ITDB_LIMITSORT_LEAST_RECENTLY_PLAYED, and
+   ITDB_LIMITSORT_LOWEST_RATING are really 0x10, 0x14, 0x15, 0x17, with the
    'limitsort_opposite' flag set.  This is the same value as the
-   "positive" value (i.e. LIMITSORT_LEAST_RECENTLY_ADDED), and is
+   "positive" value (i.e. ITDB_LIMITSORT_LEAST_RECENTLY_ADDED), and is
    really very terribly awfully weird, so we map the values to iPodDB
    specific values with the high bit set.
 
@@ -172,21 +177,21 @@
    from that. That way, we don't have to deal with programs using the
    class needing to set the wrong limit and then make it into the
    "opposite", which would be frickin' annoying. */
-enum {
-    LIMITSORT_RANDOM = 0x02,
-    LIMITSORT_SONG_NAME = 0x03,
-    LIMITSORT_ALBUM = 0x04,
-    LIMITSORT_ARTIST = 0x05,
-    LIMITSORT_GENRE = 0x07,
-    LIMITSORT_MOST_RECENTLY_ADDED = 0x10,
-    LIMITSORT_LEAST_RECENTLY_ADDED = 0x80000010, /* See note above */
-    LIMITSORT_MOST_OFTEN_PLAYED = 0x14,
-    LIMITSORT_LEAST_OFTEN_PLAYED = 0x80000014,   /* See note above */
-    LIMITSORT_MOST_RECENTLY_PLAYED = 0x15,
-    LIMITSORT_LEAST_RECENTLY_PLAYED = 0x80000015,/* See note above */
-    LIMITSORT_HIGHEST_RATING = 0x17,
-    LIMITSORT_LOWEST_RATING = 0x80000017,        /* See note above */
-};
+typedef enum {
+    ITDB_LIMITSORT_RANDOM = 0x02,
+    ITDB_LIMITSORT_SONG_NAME = 0x03,
+    ITDB_LIMITSORT_ALBUM = 0x04,
+    ITDB_LIMITSORT_ARTIST = 0x05,
+    ITDB_LIMITSORT_GENRE = 0x07,
+    ITDB_LIMITSORT_MOST_RECENTLY_ADDED = 0x10,
+    ITDB_LIMITSORT_LEAST_RECENTLY_ADDED = 0x80000010, /* See note above */
+    ITDB_LIMITSORT_MOST_OFTEN_PLAYED = 0x14,
+    ITDB_LIMITSORT_LEAST_OFTEN_PLAYED = 0x80000014,   /* See note above */
+    ITDB_LIMITSORT_MOST_RECENTLY_PLAYED = 0x15,
+    ITDB_LIMITSORT_LEAST_RECENTLY_PLAYED = 0x80000015,/* See note above */
+    ITDB_LIMITSORT_HIGHEST_RATING = 0x17,
+    ITDB_LIMITSORT_LOWEST_RATING = 0x80000017,        /* See note above */
+} ItdbLimitSort;
 
 /* Smartlist Actions - Used in the rules.
 Note by Otto (Samuel Wood):
@@ -207,136 +212,140 @@
  bit 9 = "in the last"
 */
 typedef enum {
-    SPLACTION_IS_INT = 0x00000001,          /* "Is Set" in iTunes */
-    SPLACTION_IS_GREATER_THAN = 0x00000010, /* "Is After" in iTunes */
-    SPLACTION_IS_LESS_THAN = 0x00000040,    /* "Is Before" in iTunes */
-    SPLACTION_IS_IN_THE_RANGE = 0x00000100,
-    SPLACTION_IS_IN_THE_LAST = 0x00000200,
+    ITDB_SPLACTION_IS_INT = 0x00000001,          /* "Is Set" in iTunes */
+    ITDB_SPLACTION_IS_GREATER_THAN = 0x00000010, /* "Is After" in iTunes */
+    ITDB_SPLACTION_IS_LESS_THAN = 0x00000040,    /* "Is Before" in iTunes */
+    ITDB_SPLACTION_IS_IN_THE_RANGE = 0x00000100,
+    ITDB_SPLACTION_IS_IN_THE_LAST = 0x00000200,
+    ITDB_SPLACTION_BINARY_AND = 0x00000400,
 
-    SPLACTION_IS_STRING = 0x01000001,
-    SPLACTION_CONTAINS = 0x01000002,
-    SPLACTION_STARTS_WITH = 0x01000004,
-    SPLACTION_ENDS_WITH = 0x01000008,
+    ITDB_SPLACTION_IS_STRING = 0x01000001,
+    ITDB_SPLACTION_CONTAINS = 0x01000002,
+    ITDB_SPLACTION_STARTS_WITH = 0x01000004,
+    ITDB_SPLACTION_ENDS_WITH = 0x01000008,
 
-    SPLACTION_IS_NOT_INT = 0x02000001,     /* "Is Not Set" in iTunes */
+    ITDB_SPLACTION_IS_NOT_INT = 0x02000001,     /* "Is Not Set" in iTunes */
 
     /* Note: Not available in iTunes 4.5 (untested on iPod) */
-    SPLACTION_IS_NOT_GREATER_THAN = 0x02000010,
+    ITDB_SPLACTION_IS_NOT_GREATER_THAN = 0x02000010,
     /* Note: Not available in iTunes 4.5 (untested on iPod) */
-    SPLACTION_IS_NOT_LESS_THAN = 0x02000040,
+    ITDB_SPLACTION_IS_NOT_LESS_THAN = 0x02000040,
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_IS_NOT_IN_THE_RANGE = 0x02000100,
+    ITDB_SPLACTION_IS_NOT_IN_THE_RANGE = 0x02000100,
 
-    SPLACTION_IS_NOT_IN_THE_LAST = 0x02000200,
-    SPLACTION_IS_NOT = 0x03000001,
-    SPLACTION_DOES_NOT_CONTAIN = 0x03000002,
+    ITDB_SPLACTION_IS_NOT_IN_THE_LAST = 0x02000200,
+    ITDB_SPLACTION_IS_NOT = 0x03000001,
+    ITDB_SPLACTION_DOES_NOT_CONTAIN = 0x03000002,
 
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_DOES_NOT_START_WITH = 0x03000004,
+    ITDB_SPLACTION_DOES_NOT_START_WITH = 0x03000004,
     /* Note: Not available in iTunes 4.5 (seems to work on iPod) */
-    SPLACTION_DOES_NOT_END_WITH = 0x03000008,
-} SPLAction;
+    ITDB_SPLACTION_DOES_NOT_END_WITH = 0x03000008,
+} ItdbSPLAction;
 
 typedef enum
 {
-    splft_string = 1,
-    splft_int,
-    splft_boolean,
-    splft_date,
-    splft_playlist,
-    splft_unknown
-} SPLFieldType;
+    ITDB_SPLFT_STRING = 1,
+    ITDB_SPLFT_INT,
+    ITDB_SPLFT_BOOLEAN,
+    ITDB_SPLFT_DATE,
+    ITDB_SPLFT_PLAYLIST,
+    ITDB_SPLFT_UNKNOWN,
+    ITDB_SPLFT_BINARY_AND
+} ItdbSPLFieldType;
 
 typedef enum
 {
-    splat_string = 1,
-    splat_int,
-    splat_date,
-    splat_range_int,
-    splat_range_date,
-    splat_inthelast,
-    splat_playlist,
-    splat_none,
-    splat_invalid,
-    splat_unknown
-} SPLActionType;
+    ITDB_SPLAT_STRING = 1,
+    ITDB_SPLAT_INT,
+    ITDB_SPLAT_DATE,
+    ITDB_SPLAT_RANGE_INT,
+    ITDB_SPLAT_RANGE_DATE,
+    ITDB_SPLAT_INTHELAST,
+    ITDB_SPLAT_PLAYLIST,
+    ITDB_SPLAT_NONE,
+    ITDB_SPLAT_INVALID,
+    ITDB_SPLAT_UNKNOWN,
+    ITDB_SPLAT_BINARY_AND
+} ItdbSPLActionType;
 
 
 /* These are to pass to AddRule() when you need a unit for the two "in
    the last" action types Or, in theory, you can use any time
    range... iTunes might not like it, but the iPod shouldn't care. */
-enum {
-    SPLACTION_LAST_DAYS_VALUE = 86400,    /* nr of secs in 24 hours */
-    SPLACTION_LAST_WEEKS_VALUE = 604800,  /* nr of secs in 7 days   */
-    SPLACTION_LAST_MONTHS_VALUE = 2628000,/* nr of secs in 30.4167
+typedef enum {
+    ITDB_SPLACTION_LAST_DAYS_VALUE = 86400,    /* nr of secs in 24 hours */
+    ITDB_SPLACTION_LAST_WEEKS_VALUE = 604800,  /* nr of secs in 7 days   */
+    ITDB_SPLACTION_LAST_MONTHS_VALUE = 2628000,/* nr of secs in 30.4167
 					     days ~= 1 month */
-} ;
+} ItdbSPLActionLast;
 
 #if 0
 // Hey, why limit ourselves to what iTunes can do? If the iPod can deal with it, excellent!
-#define SPLACTION_LAST_HOURS_VALUE		3600		// number of seconds in 1 hour
-#define SPLACTION_LAST_MINUTES_VALUE	60			// number of seconds in 1 minute
-#define SPLACTION_LAST_YEARS_VALUE		31536000 	// number of seconds in 365 days
+#define ITDB_SPLACTION_LAST_HOURS_VALUE		3600		// number of seconds in 1 hour
+#define ITDB_SPLACTION_LAST_MINUTES_VALUE	60			// number of seconds in 1 minute
+#define ITDB_SPLACTION_LAST_YEARS_VALUE		31536000 	// number of seconds in 365 days
 
 /* fun ones.. Near as I can tell, all of these work. It's open like that. :)*/
-#define SPLACTION_LAST_LUNARCYCLE_VALUE	2551443		// a "lunar cycle" is the time it takes the moon to circle the earth
-#define SPLACTION_LAST_SIDEREAL_DAY		86164		// a "sidereal day" is time in one revolution of earth on its axis
-#define SPLACTION_LAST_SWATCH_BEAT		86			// a "swatch beat" is 1/1000th of a day.. search for "internet time" on google
-#define SPLACTION_LAST_MOMENT			90			// a "moment" is 1/40th of an hour, or 1.5 minutes
-#define SPLACTION_LAST_OSTENT			600			// an "ostent" is 1/10th of an hour, or 6 minutes
-#define SPLACTION_LAST_FORTNIGHT		1209600 	// a "fortnight" is 14 days
-#define SPLACTION_LAST_VINAL			1728000 	// a "vinal" is 20 days
-#define SPLACTION_LAST_QUARTER			7889231		// a "quarter" is a quarter year
-#define SPLACTION_LAST_SOLAR_YEAR       31556926 	// a "solar year" is the time it takes the earth to go around the sun
-#define SPLACTION_LAST_SIDEREAL_YEAR 	31558150	// a "sidereal year" is the time it takes the earth to reach the same point in space again, compared to the stars
+#define ITDB_SPLACTION_LAST_LUNARCYCLE_VALUE	2551443		// a "lunar cycle" is the time it takes the moon to circle the earth
+#define ITDB_SPLACTION_LAST_SIDEREAL_DAY		86164		// a "sidereal day" is time in one revolution of earth on its axis
+#define ITDB_SPLACTION_LAST_SWATCH_BEAT		86			// a "swatch beat" is 1/1000th of a day.. search for "internet time" on google
+#define ITDB_SPLACTION_LAST_MOMENT			90			// a "moment" is 1/40th of an hour, or 1.5 minutes
+#define ITDB_SPLACTION_LAST_OSTENT			600			// an "ostent" is 1/10th of an hour, or 6 minutes
+#define ITDB_SPLACTION_LAST_FORTNIGHT		1209600 	// a "fortnight" is 14 days
+#define ITDB_SPLACTION_LAST_VINAL			1728000 	// a "vinal" is 20 days
+#define ITDB_SPLACTION_LAST_QUARTER			7889231		// a "quarter" is a quarter year
+#define ITDB_SPLACTION_LAST_SOLAR_YEAR       31556926 	// a "solar year" is the time it takes the earth to go around the sun
+#define ITDB_SPLACTION_LAST_SIDEREAL_YEAR 	31558150	// a "sidereal year" is the time it takes the earth to reach the same point in space again, compared to the stars
 #endif
 
 /* Smartlist fields - Used for rules. */
 typedef enum {
-    SPLFIELD_SONG_NAME = 0x02,    /* String */
-    SPLFIELD_ALBUM = 0x03,        /* String */
-    SPLFIELD_ARTIST = 0x04,       /* String */
-    SPLFIELD_BITRATE = 0x05,      /* Int (e.g. from/to = 128) */
-    SPLFIELD_SAMPLE_RATE = 0x06,  /* Int  (e.g. from/to = 44100) */
-    SPLFIELD_YEAR = 0x07,         /* Int  (e.g. from/to = 2004) */
-    SPLFIELD_GENRE = 0x08,        /* String */
-    SPLFIELD_KIND = 0x09,         /* String */
-    SPLFIELD_DATE_MODIFIED = 0x0a,/* Int/Mac Timestamp (e.g. from/to =
+    ITDB_SPLFIELD_SONG_NAME = 0x02,    /* String */
+    ITDB_SPLFIELD_ALBUM = 0x03,        /* String */
+    ITDB_SPLFIELD_ARTIST = 0x04,       /* String */
+    ITDB_SPLFIELD_BITRATE = 0x05,      /* Int (e.g. from/to = 128) */
+    ITDB_SPLFIELD_SAMPLE_RATE = 0x06,  /* Int  (e.g. from/to = 44100) */
+    ITDB_SPLFIELD_YEAR = 0x07,         /* Int  (e.g. from/to = 2004) */
+    ITDB_SPLFIELD_GENRE = 0x08,        /* String */
+    ITDB_SPLFIELD_KIND = 0x09,         /* String */
+    ITDB_SPLFIELD_DATE_MODIFIED = 0x0a,/* Int/Mac Timestamp (e.g. from/to =
                                      bcf93280 == is before 6/19/2004)*/
-    SPLFIELD_TRACKNUMBER = 0x0b,  /* Int (e.g. from = 1, to = 2) */
-    SPLFIELD_SIZE = 0x0c,         /* Int (e.g. from/to = 0x00600000
+    ITDB_SPLFIELD_TRACKNUMBER = 0x0b,  /* Int (e.g. from = 1, to = 2) */
+    ITDB_SPLFIELD_SIZE = 0x0c,         /* Int (e.g. from/to = 0x00600000
 				     for 6MB) */
-    SPLFIELD_TIME = 0x0d,         /* Int (e.g. from/to = 83999 for
+    ITDB_SPLFIELD_TIME = 0x0d,         /* Int (e.g. from/to = 83999 for
 				     1:23/83 seconds) */
-    SPLFIELD_COMMENT = 0x0e,      /* String */
-    SPLFIELD_DATE_ADDED = 0x10,   /* Int/Mac Timestamp (e.g. from/to =
+    ITDB_SPLFIELD_COMMENT = 0x0e,      /* String */
+    ITDB_SPLFIELD_DATE_ADDED = 0x10,   /* Int/Mac Timestamp (e.g. from/to =
                                      bcfa83ff == is after 6/19/2004) */
-    SPLFIELD_COMPOSER = 0x12,     /* String */
-    SPLFIELD_PLAYCOUNT = 0x16,    /* Int  (e.g. from/to = 1) */
-    SPLFIELD_LAST_PLAYED = 0x17,  /* Int/Mac Timestamp (e.g. from =
+    ITDB_SPLFIELD_COMPOSER = 0x12,     /* String */
+    ITDB_SPLFIELD_PLAYCOUNT = 0x16,    /* Int  (e.g. from/to = 1) */
+    ITDB_SPLFIELD_LAST_PLAYED = 0x17,  /* Int/Mac Timestamp (e.g. from =
                                      bcfa83ff (6/19/2004) to =
                                      0xbcfbd57f (6/20/2004)) */
-    SPLFIELD_DISC_NUMBER = 0x18,  /* Int  (e.g. from/to = 1) */
-    SPLFIELD_RATING = 0x19,       /* Int/Stars Rating (e.g. from/to =
+    ITDB_SPLFIELD_DISC_NUMBER = 0x18,  /* Int  (e.g. from/to = 1) */
+    ITDB_SPLFIELD_RATING = 0x19,       /* Int/Stars Rating (e.g. from/to =
                                      60 (3 stars)) */
-    SPLFIELD_COMPILATION = 0x1f,  /* Int (e.g. is set ->
-				     SPLACTION_IS_INT/from=1,
+    ITDB_SPLFIELD_COMPILATION = 0x1f,  /* Int (e.g. is set ->
+				     ITDB_SPLACTION_IS_INT/from=1,
 				     is not set ->
-				     SPLACTION_IS_NOT_INT/from=1) */
-    SPLFIELD_BPM = 0x23,          /* Int  (e.g. from/to = 60) */
-    SPLFIELD_GROUPING = 0x27,     /* String */
-    SPLFIELD_PLAYLIST = 0x28,     /* XXX - Unknown...not parsed
+				     ITDB_SPLACTION_IS_NOT_INT/from=1) */
+    ITDB_SPLFIELD_BPM = 0x23,          /* Int  (e.g. from/to = 60) */
+    ITDB_SPLFIELD_GROUPING = 0x27,     /* String */
+    ITDB_SPLFIELD_PLAYLIST = 0x28,     /* FIXME - Unknown...not parsed
 				     correctly...from/to = 0xb6fbad5f
-				     for * "Purchased Music".  Extra
-				     data after * "to"... */
-} SPLField;
+				     for "Purchased Music".  Extra
+				     data after "to"... */
+    ITDB_SPLFIELD_VIDEO_KIND = 0x3c,   /* Logic Int */
+    ITDB_SPLFIELD_TVSHOW = 0x3e,       /* String */
+    ITDB_SPLFIELD_SEASON_NR = 0x3f,    /* Int */
+    ITDB_SPLFIELD_SKIPCOUNT = 0x44,    /* Int */
+    ITDB_SPLFIELD_LAST_SKIPPED = 0x45, /* Int/Mac Timestamp */
+    ITDB_SPLFIELD_ALBUMARTIST = 0x47   /* String */
+} ItdbSPLField;
 
-#define SPLDATE_IDENTIFIER (G_GINT64_CONSTANT (0x2dae2dae2dae2daeU))
-
-/* Maximum string length that iTunes writes to the database */
-#define SPL_MAXSTRINGLENGTH 255
-
-struct _SPLPref
+struct _Itdb_SPLPref
 {
     guint8  liveupdate;        /* "live Updating" check box */
     guint8  checkrules;        /* "Match X of the following
@@ -346,11 +355,15 @@
     guint32 limitsort;         /* See types defined above */
     guint32 limitvalue;        /* The value typed next to "Limit
 				  type" */
-    guint8  matchcheckedonly;  /* "Match only checked songs" check
-				  box */
+    guint8  matchcheckedonly;  /* "Match only checked songs" check box */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
 };
 
-struct _SPLRule
+struct _Itdb_SPLRule
 {
     guint32 field;
     guint32 action;
@@ -376,15 +389,25 @@
     guint32 unk060;
     guint32 unk064;
     guint32 unk068;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
 };
 
 
-struct _SPLRules
+struct _Itdb_SPLRules
 {
     guint32 unk004;
-    guint32 match_operator;  /* "All" (logical AND): SPLMATCH_AND,
-				"Any" (logical OR): SPLMATCH_OR */
+    guint32 match_operator;  /* "All" (logical AND): Itdb_SPLMATCH_AND,
+				"Any" (logical OR): Itdb_SPLMATCH_OR */
     GList *rules;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
 };
 
 
@@ -436,6 +459,7 @@
 				 non-transfered thumbnails when
 				 filename == NULL */
     gsize   image_data_len;   /* length of data */
+    gpointer pixbuf;
     gint    rotation;         /* angle (0, 90, 180, 270) to rotate the image */
     guint32 offset;
     guint32 size;
@@ -443,6 +467,11 @@
     gint16  height;
     gint16  horizontal_padding;
     gint16  vertical_padding;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
 };
 
 struct _Itdb_Artwork {
@@ -452,14 +481,19 @@
     gint32  unk028;
     guint32 rating;        /* Rating from iPhoto * 20 (PhotoDB only) */
     gint32  unk036;
-    guint32 creation_date; /* Date the image file was created
+    time_t  creation_date;  /* Date the image file was created
 			      (creation date of image file (Mac type,
 			      PhotoDB only) */
-    guint32 digitized_date;/* Date the image was taken (EXIF
+    time_t  digitized_date;/* Date the image was taken (EXIF
 			      information, Mac type, PhotoDB only) */
     guint32 artwork_size;  /* Size in bytes of the original source
 			      image (PhotoDB only -- don't touch in
 			      case of ArtworkDB!) */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -474,6 +508,11 @@
     GList *photos;      /* (Itdb_Artwork *)     */
     GList *photoalbums; /* (Itdb_PhotoAlbum *)  */
     Itdb_Device *device;/* iPod device info     */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -490,6 +529,11 @@
     Itdb_Device *device;/* iPod device info     */
     guint32 version;
     guint64 id;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -526,6 +570,11 @@
     /* set automatically at time of writing the PhotoDB */
     gint32  album_id;
     gint32  prev_album_id;
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -545,14 +594,19 @@
     gint  num;            /* number of tracks in playlist          */
     GList *members;       /* tracks in playlist (Track *)          */
     gboolean is_spl;      /* smart playlist?                       */
-    guint32 timestamp;    /* timestamp of playlist creation        */
+    time_t timestamp;     /* timestamp of playlist creation        */
     guint64 id;           /* playlist ID                           */
     guint32 sortorder;    /* How to sort playlist -- see below     */
     guint32 podcastflag;  /* ITDB_PL_FLAG_NORM/_PODCAST            */
-    SPLPref splpref;      /* smart playlist prefs                  */
-    SPLRules splrules;    /* rules for smart playlists             */
-    gpointer reserved1;   /* reserved for MHOD100 implementation   */
-    gpointer reserved2;   /* reserved for MHOD100 implementation   */
+    Itdb_SPLPref splpref;      /* smart playlist prefs                  */
+    Itdb_SPLRules splrules;    /* rules for smart playlists             */
+    gpointer reserved100; /* reserved for MHOD100 implementation   */
+    gpointer reserved101; /* reserved for MHOD100 implementation   */
+    /* reserved for future use */
+    gint32 reserved_int1;
+    gint32 reserved_int2;
+    gpointer reserved1;
+    gpointer reserved2;
     /* below is for use by application */
     guint64 usertype;
     gpointer userdata;
@@ -628,28 +682,39 @@
 } ItdbPlaylistSortOrder;
 
 
+/* Mediatype definitions */
+typedef enum
+{
+    ITDB_MEDIATYPE_AUDIO      = 0x0001,
+    ITDB_MEDIATYPE_MOVIE      = 0x0002,
+    ITDB_MEDIATYPE_PODCAST    = 0x0004,
+    ITDB_MEDIATYPE_AUDIOBOOK  = 0x0008,
+    ITDB_MEDIATYPE_MUSICVIDEO = 0x0020,
+    ITDB_MEDIATYPE_TVSHOW     = 0x0040,
+} Itdb_Mediatype;
+
 /* some of the descriptive comments below are copied verbatim from
    http://ipodlinux.org/ITunesDB. 
    http://ipodlinux.org/ITunesDB is the best source for information
    about the iTunesDB and related files. */
 struct _Itdb_Track
 {
-  Itdb_iTunesDB *itdb;       /* pointer to iTunesDB (for convenience) */
-  gchar   *title;            /* title (utf8)           */
-  gchar   *ipod_path;        /* name of file on iPod: uses ":"
-				instead of "/"                        */
-  gchar   *album;            /* album (utf8)           */
-  gchar   *artist;           /* artist (utf8)          */
-  gchar   *genre;            /* genre (utf8)           */
-  gchar   *filetype;         /* eg. "MP3-File"...(utf8)*/
-  gchar   *comment;          /* comment (utf8)         */
-  gchar   *category;         /* Category for podcast   */
-  gchar   *composer;         /* Composer (utf8)        */
-  gchar   *grouping;         /* ? (utf8)               */
+  Itdb_iTunesDB *itdb;       /* pointer to iTunesDB (for convenience)   */
+  gchar   *title;            /* title (utf8)                            */
+  gchar   *ipod_path;        /* name of file on iPod: uses ":" instead
+				of "/" and is relative to mountpoint    */
+  gchar   *album;            /* album (utf8)                            */
+  gchar   *artist;           /* artist (utf8)                           */
+  gchar   *genre;            /* genre (utf8)                            */
+  gchar   *filetype;         /* eg. "MP3-File"...(utf8)                 */
+  gchar   *comment;          /* comment (utf8)                          */
+  gchar   *category;         /* Category for podcast                    */
+  gchar   *composer;         /* Composer (utf8)                         */
+  gchar   *grouping;         /* ? (utf8)                                */
   gchar   *description;      /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *podcasturl;       /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *podcastrss;       /* see note for MHOD_ID in itdb_itunesdb.c */
-  gchar   *chapterdata;      /* see note for MHOD_ID in itdb_itunesdb.c */
+  gpointer chapterdata;      /* not yet supported. Help welcome.        */
   gchar   *subtitle;         /* see note for MHOD_ID in itdb_itunesdb.c */
 /* the following 6 are new in libgpod 0.4.2... */
   gchar   *tvshow;           /* see note for MHOD_ID in itdb_itunesdb.c */
@@ -657,55 +722,74 @@
   gchar   *tvnetwork;        /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *albumartist;      /* see note for MHOD_ID in itdb_itunesdb.c */
   gchar   *keywords;         /* see note for MHOD_ID in itdb_itunesdb.c */
-  gchar   *reserved;         /* will probably be used for artistthe     */
-/* ... to here */
-  guint32 id;                /* unique ID of track     */
-  gint32  size;              /* size of file in bytes  */
-  gint32  tracklen;          /* Length of track in ms  */
-  gint32  cd_nr;             /* CD number              */
-  gint32  cds;               /* number of CDs          */
-  gint32  track_nr;          /* track number           */
-  gint32  tracks;            /* number of tracks       */
-  gint32  bitrate;           /* bitrate                */
-  guint16 samplerate;        /* samplerate (CD: 44100) */
+/* the following 6 are new in libgpod 0.5.0... */
+  /* You can set these strings to override the standard
+     sortorder. When set they take precedence over the default
+     'artist', 'album'... fields.
+
+     For example, in the case of an artist name like "The Artist",
+     iTunes will set sort_artist to "Artist, The" followed by five
+     0x01 characters. Why five 0x01 characters are added is not
+     completely understood.
+
+     If you do not set the sort_artist field, libgpod will pre-sort
+     the lists displayed by the iPod according to "Artist, The",
+     without setting the field.
+  */
+  gchar   *sort_artist;      /* artist (for sorting)                    */
+  gchar   *sort_title;       /* title (for sorting)                     */
+  gchar   *sort_album;       /* album (for sorting)                     */
+  gchar   *sort_albumartist; /* album artist (for sorting)              */
+  gchar   *sort_composer;    /* composer (for sorting)                  */
+  gchar   *sort_tvshow;      /* tv show (for sorting)                   */
+/* new fields in libgpod 0.5.0 up to here */
+  guint32 id;                /* unique ID of track                      */
+  gint32  size;              /* size of file in bytes                   */
+  gint32  tracklen;          /* Length of track in ms                   */
+  gint32  cd_nr;             /* CD number                               */
+  gint32  cds;               /* number of CDs                           */
+  gint32  track_nr;          /* track number                            */
+  gint32  tracks;            /* number of tracks                        */
+  gint32  bitrate;           /* bitrate                                 */
+  guint16 samplerate;        /* samplerate (CD: 44100)                  */
   guint16 samplerate_low;    /* in the iTunesDB the samplerate is
                                 multiplied by 0x10000 -- these are the
-				lower 16 bit, which are usually 0 */
-  gint32  year;              /* year                   */
-  gint32  volume;            /* volume adjustment              */
-  guint32 soundcheck;        /* volume adjustment "soundcheck" */
-  guint32 time_added;        /* time when added (Mac type)          */
-  guint32 time_played;       /* time of last play (Mac type)        */
-  guint32 time_modified;     /* time of last modification (Mac type)*/
-  guint32 bookmark_time;     /* bookmark set for (AudioBook) in ms  */
-  guint32 rating;            /* star rating (stars * RATING_STEP (20))     */
-  guint32 playcount;         /* number of times track was played    */
+				lower 16 bit, which are usually 0       */
+  gint32  year;              /* year                                    */
+  gint32  volume;            /* volume adjustment                       */
+  guint32 soundcheck;        /* volume adjustment "soundcheck"          */
+  time_t  time_added;        /* time when added (Mac type)              */
+  time_t  time_modified;     /* time of last modification (Mac type)    */
+  time_t  time_played;       /* time of last play (Mac type)            */
+  guint32 bookmark_time;     /* bookmark set for (AudioBook) in ms      */
+  guint32 rating;            /* star rating (stars * RATING_STEP (20))  */
+  guint32 playcount;         /* number of times track was played        */
   guint32 playcount2;        /* Also stores the play count of the
 				song.  Don't know if it ever differs
 				from the above value. During sync itdb
 				sets playcount2 to the same value as
-				playcount. */
-  guint32 recent_playcount;  /* times track was played since last sync */
-  gboolean transferred;      /* has file been transferred to iPod?  */
-  gint16  BPM;               /* supposed to vary the playback speed */
+				playcount.                              */
+  guint32 recent_playcount;  /* times track was played since last sync  */
+  gboolean transferred;      /* has file been transferred to iPod?      */
+  gint16  BPM;               /* BPM (beats per minute) of this track    */
   guint8  app_rating;        /* star rating set by appl. (not
 			      * iPod). If the rating set on the iPod
 			        and the rating field above differ, the
 				original rating is copied here and the
 				new rating is stored above. */
   guint8  type1;             /* CBR MP3s and AAC are 0x00, VBR MP3s are
-			        0x01 */
-  guint8  type2;             /* MP3s are 0x01, AAC are 0x00 */
+			        0x01                                    */
+  guint8  type2;             /* MP3s are 0x01, AAC are 0x00             */
   guint8  compilation;
   guint32 starttime;
   guint32 stoptime;
   guint8  checked;           /* 0x0: checkmark on track is set 0x1: not set */
-  guint64 dbid;              /* unique database ID */
+  guint64 dbid;              /* unique database ID                      */
   guint32 drm_userid;        /* Apple Store/Audible User ID (for DRM'ed
-				files only, set to 0 otherwise). */
+				files only, set to 0 otherwise).        */
   guint32 visible;           /*  If this value is 1, the song is visible
 				 on the iPod. All other values cause
-				 the file to be hidden. */
+				 the file to be hidden.                 */
   guint32 filetype_marker;   /* This appears to always be 0 on hard
                                 drive based iPods, but for the
                                 iTunesDB that is written to an iPod
@@ -715,7 +799,7 @@
                                 0x4d503320 -> 0x4d = 'M', 0x50 = 'P',
                                 0x33 = '3', 0x20 = <space>. (set to
 				the filename extension by itdb when
-				copying track to iPod)*/
+				copying track to iPod)                  */
   guint16 artwork_count;     /* The number of album artwork items
 				associated with this song. libgpod
 				updates this value when syncing */
@@ -724,23 +808,21 @@
 				converted to JPEG format. Observed in
 				iPodDB version 0x0b and with an iPod
 				Photo. libgpod updates this value when
-				syncing */
+				syncing                                 */
   float samplerate2;         /* The sample rate of the song expressed
 				as an IEEE 32 bit floating point
 				number.  It's uncertain why this is
 				here.  itdb will set this when adding
-				a track */
+				a track                                 */
 
   guint16 unk126;     /* unknown, but always seems to be 0xffff for
 			 MP3/AAC songs, 0x0 for uncompressed songs
 			 (like WAVE format), 0x1 for Audible. itdb
 			 will try to set this when adding a new track */
   guint32 unk132;     /* unknown */
-  guint32 time_released;/* date/time added to music store? definitely a
-			 timestamp, always appears to be a time of
-			 0700 GMT. For podcasts: release date as
-			 displayed next to the title in the Podcast
-			 playlist  */
+  time_t  time_released;/* date/time added to music store? 
+			   For podcasts: release date as displayed next to the 
+			   title in the Podcast playlist */
   guint16 unk144;     /* unknown, but MP3 songs appear to be always
 			 0x000c, AAC songs are always 0x0033, Audible
 			 files are 0x0029, WAV files are 0x0. itdb
@@ -853,6 +935,25 @@
   /* This is for Cover Art support */
   struct _Itdb_Artwork *artwork;
 
+  /* reserved for future use */
+  gint32 reserved_int1;
+  gint32 reserved_int2;
+  gint32 reserved_int3;
+  gint32 reserved_int4;
+  gint32 reserved_int5;
+  gint32 reserved_int6;
+  gpointer reserved1;
+  gpointer reserved2;
+  gpointer reserved3;
+  gpointer reserved4;
+  gpointer reserved5;
+  gpointer reserved6;
+
+  /* +++***+++***+++***+++***+++***+++***+++***+++***+++***+++***
+     When adding string fields don't forget to add them in
+     itdb_track_duplicate as well
+     +++***+++***+++***+++***+++***+++***+++***+++***+++***+++*** */
+
   /* below is for use by application */
   guint64 usertype;
   gpointer userdata;
@@ -871,11 +972,11 @@
 \* ------------------------------------------------------------ */
 typedef enum
 {
-    ITDB_FILE_ERROR_SEEK,      /* file corrupt: illegal seek occured */
-    ITDB_FILE_ERROR_CORRUPT,   /* file corrupt   */
-    ITDB_FILE_ERROR_NOTFOUND,  /* file not found */
-    ITDB_FILE_ERROR_RENAME,    /* file could not be renamed    */
-    ITDB_FILE_ERROR_ITDB_CORRUPT /* iTunesDB in memory corrupt */
+    ITDB_FILE_ERROR_SEEK,        /* file corrupt: illegal seek occured */
+    ITDB_FILE_ERROR_CORRUPT,     /* file corrupt                       */
+    ITDB_FILE_ERROR_NOTFOUND,    /* file not found                     */
+    ITDB_FILE_ERROR_RENAME,      /* file could not be renamed          */
+    ITDB_FILE_ERROR_ITDB_CORRUPT /* iTunesDB in memory corrupt         */
 } ItdbFileError;
 
 
@@ -911,10 +1012,18 @@
 gchar *itdb_resolve_path (const gchar *root,
 			  const gchar * const * components);
 gboolean itdb_rename_files (const gchar *mp, GError **error);
-gboolean itdb_cp_track_to_ipod (Itdb_Track *track,
-				gchar *filename, GError **error);
+gchar *itdb_cp_get_dest_filename (Itdb_Track *track,
+                                  const gchar *mountpoint,
+				  const gchar *filename,
+				  GError **error);
 gboolean itdb_cp (const gchar *from_file, const gchar *to_file,
 		  GError **error);
+Itdb_Track *itdb_cp_finalize (Itdb_Track *track,
+			      const gchar *mountpoint,
+			      const gchar *dest_filename,
+			      GError **error);
+gboolean itdb_cp_track_to_ipod (Itdb_Track *track,
+				const gchar *filename, GError **error);
 void itdb_filename_fs2ipod (gchar *filename);
 void itdb_filename_ipod2fs (gchar *ipod_file);
 gchar *itdb_filename_on_ipod (Itdb_Track *track);
@@ -944,6 +1053,8 @@
 			      const gchar *field, const gchar *value);
 const Itdb_IpodInfo *itdb_device_get_ipod_info (Itdb_Device *device);
 const Itdb_IpodInfo *itdb_info_get_ipod_info_table (void);
+gboolean itdb_device_supports_artwork (Itdb_Device *device);
+gboolean itdb_device_supports_photo (Itdb_Device *device);
 const gchar *itdb_info_get_ipod_model_name_string (Itdb_IpodModel model);
 const gchar *itdb_info_get_ipod_generation_string (Itdb_IpodGeneration generation);
 
@@ -990,15 +1101,15 @@
 void itdb_playlist_set_podcasts (Itdb_Playlist *pl);
 
 /* smart playlist functions */
-SPLFieldType itdb_splr_get_field_type (const SPLRule *splr);
-SPLActionType itdb_splr_get_action_type (const SPLRule *splr);
-void itdb_splr_validate (SPLRule *splr);
-void itdb_splr_remove (Itdb_Playlist *pl, SPLRule *splr);
-SPLRule *itdb_splr_new (void);
-void itdb_splr_add (Itdb_Playlist *pl, SPLRule *splr, gint pos);
-SPLRule *itdb_splr_add_new (Itdb_Playlist *pl, gint pos);
+ItdbSPLFieldType itdb_splr_get_field_type (const Itdb_SPLRule *splr);
+ItdbSPLActionType itdb_splr_get_action_type (const Itdb_SPLRule *splr);
+void itdb_splr_validate (Itdb_SPLRule *splr);
+void itdb_splr_remove (Itdb_Playlist *pl, Itdb_SPLRule *splr);
+Itdb_SPLRule *itdb_splr_new (void);
+void itdb_splr_add (Itdb_Playlist *pl, Itdb_SPLRule *splr, gint pos);
+Itdb_SPLRule *itdb_splr_add_new (Itdb_Playlist *pl, gint pos);
 void itdb_spl_copy_rules (Itdb_Playlist *dest, Itdb_Playlist *src);
-gboolean itdb_splr_eval (SPLRule *splr, Itdb_Track *track);
+gboolean itdb_splr_eval (Itdb_SPLRule *splr, Itdb_Track *track);
 void itdb_spl_update (Itdb_Playlist *spl);
 void itdb_spl_update_all (Itdb_iTunesDB *itdb);
 void itdb_spl_update_live (Itdb_iTunesDB *itdb);
@@ -1010,6 +1121,9 @@
 gboolean itdb_track_set_thumbnails_from_data (Itdb_Track *track,
 					      const guchar *image_data,
 					      gsize image_data_len);
+gboolean itdb_track_set_thumbnails_from_pixbuf (Itdb_Track *track,
+                                                gpointer pixbuf);
+
 void itdb_track_remove_thumbnails (Itdb_Track *track);
 
 /* photoalbum functions -- see itdb_photoalbum.c for instructions on
@@ -1024,6 +1138,11 @@
 						gint position,
 						gint rotation,
 						GError **error);
+Itdb_Artwork *itdb_photodb_add_photo_from_pixbuf (Itdb_PhotoDB *db,
+						  gpointer pixbuf,
+						  gint position,
+						  gint rotation,
+						  GError **error);
 void itdb_photodb_photoalbum_add_photo (Itdb_PhotoDB *db,
 					Itdb_PhotoAlbum *album,
 					Itdb_Artwork *photo,
@@ -1062,6 +1181,11 @@
 					       const guchar *image_data,
 					       gsize image_data_len,
 					       gint rotation, GError **error);
+gboolean itdb_artwork_add_thumbnail_from_pixbuf (Itdb_Artwork *artwork,
+                                                 ItdbThumbType type,
+                                                 gpointer pixbuf,
+                                                 gint rotation,
+                                                 GError **error);
 void itdb_artwork_remove_thumbnail (Itdb_Artwork *artwork,
 				    Itdb_Thumb *thumb);
 void itdb_artwork_remove_thumbnails (Itdb_Artwork *artwork);
@@ -1075,10 +1199,12 @@
 Itdb_Thumb *itdb_thumb_new (void);
 gchar *itdb_thumb_get_filename (Itdb_Device *device, Itdb_Thumb *thumb);
 
+#ifndef LIBGPOD_DISABLE_DEPRECATED
 /* time functions */
-guint64 itdb_time_get_mac_time (void);
-time_t itdb_time_mac_to_host (guint64 mactime);
-guint64 itdb_time_host_to_mac (time_t time);
+time_t itdb_time_get_mac_time (void);
+time_t itdb_time_mac_to_host (time_t time);
+time_t itdb_time_host_to_mac (time_t time);
+#endif
 
 /* Initialize a blank ipod */
 gboolean itdb_init_ipod (const gchar *mountpoint,

Modified: libgpod/branches/upstream/current/src/itdb_artwork.c
===================================================================
--- libgpod/branches/upstream/current/src/itdb_artwork.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_artwork.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,4 +1,4 @@
-/* Time-stamp: <2006-11-26 23:31:45 jcs>
+/* Time-stamp: <2007-03-21 17:30:57 jcs>
 |
 |  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
@@ -24,7 +24,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_artwork.c,v 1.18 2006/11/26 15:00:41 jcsjcs Exp $
+|  $Id: itdb_artwork.c 1427 2007-05-07 11:42:09Z jcsjcs $
 */
 
 #include <config.h>
@@ -122,7 +122,7 @@
  * @artwork: an #Itdb_Artwork
  * @thumb: an #Itdb_Thumb
  *
- * Removes @thumb from @artwork. The memory used by @thumb isn't freed.
+ * Removes @thumb from @artwork. The memory used by @thumb is freed.
  **/
 void
 itdb_artwork_remove_thumbnail (Itdb_Artwork *artwork, Itdb_Thumb *thumb)
@@ -131,6 +131,7 @@
     g_return_if_fail (thumb);
 
     artwork->thumbnails = g_list_remove (artwork->thumbnails, thumb);
+    itdb_thumb_free (thumb);
 }
 
 
@@ -217,7 +218,67 @@
 #endif
 }
 
+/**
+ * itdb_artwork_add_thumbnail_from_pixbuf
+ * @artwork: an #Itdb_Thumbnail
+ * @type: thumbnail size
+ * @pixbuf: #GdkPixbuf to use to create the thumbnail
+ * @rotation: angle by which the image should be rotated
+ * counterclockwise. Valid values are 0, 90, 180 and 270.
+ * @error: return location for a #GError or NULL
+ *
+ * Appends a thumbnail of type @type to existing thumbnails in @artwork. No 
+ * data is generated from @pixbuf yet, it will be done when @artwork is saved 
+ * to disk. @pixbuf is ref'ed by this function, but is not copied, so it should
+ * not be modified before the database is saved.
+ *
+ * For the rotation angle you can also use the gdk constants
+ * GDK_PIXBUF_ROTATE_NONE, ..._COUNTERCLOCKWISE, ..._UPSIDEDOWN AND
+ * ..._CLOCKWISE.
+ *
+ * Return value: TRUE if the thumbnail could be successfully added, FALSE
+ * otherwise. @error is set appropriately.
+ **/
+gboolean
+itdb_artwork_add_thumbnail_from_pixbuf (Itdb_Artwork *artwork,
+                                        ItdbThumbType type,
+                                        gpointer pixbuf,
+                                        gint rotation,
+                                        GError **error)
+{
+#ifdef HAVE_GDKPIXBUF
+/* This operation doesn't make sense when we can't save thumbnail files */
+    Itdb_Thumb *thumb;
+    GTimeVal time;
+    gint rowstride;
+    gint height;
 
+    g_return_val_if_fail (artwork, FALSE);
+    g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), FALSE);
+
+    g_get_current_time (&time);
+    g_object_get (G_OBJECT (pixbuf),
+                  "height", &height,
+                  "rowstride", &rowstride,
+                  NULL);
+    artwork->artwork_size  = rowstride * height;
+    artwork->creation_date = time.tv_sec;
+
+    thumb = itdb_thumb_new ();
+    g_object_ref (G_OBJECT (pixbuf));
+    thumb->pixbuf = pixbuf;
+    thumb->type = type;
+    thumb->rotation = rotation;
+    artwork->thumbnails = g_list_append (artwork->thumbnails, thumb);
+
+    return TRUE;
+#else
+    g_set_error (error, 0, -1,
+		 _("Artwork support not compiled into libgpod."));
+    return FALSE;
+#endif
+}
+
 /**
  * itdb_artwork_add_thumbnail_from_data
  * @artwork: an #Itdb_Thumbnail
@@ -666,6 +727,12 @@
 		    g_object_ref (pixbuf);
 		g_object_unref (loader);
 	}
+	else if (thumb->pixbuf)
+	{   /* use pixbuf data */
+	    pixbuf = gdk_pixbuf_scale_simple (thumb->pixbuf,
+					      width, height,
+					      GDK_INTERP_BILINEAR);
+	}
 
 	if (!pixbuf)
 	{
@@ -698,7 +765,7 @@
 
 	if (img_info == NULL)
 	{
-	    g_print (_("Unable to retreive thumbnail (appears to be on iPod, but no image info available): type: %d, filename: '%s'\n"),
+	    g_print (_("Unable to retrieve thumbnail (appears to be on iPod, but no image info available): type: %d, filename: '%s'\n"),
 		     thumb->type, thumb->filename);
 	    return NULL;
 	}
@@ -782,6 +849,9 @@
     g_return_if_fail (thumb);
 
     g_free (thumb->image_data);
+    if (thumb->pixbuf) {
+        g_object_unref (G_OBJECT (thumb->pixbuf));
+    }
     g_free (thumb->filename);
     g_free (thumb);
 }
@@ -813,6 +883,9 @@
 	memcpy (new_thumb->image_data, thumb->image_data,
 		new_thumb->image_data_len);
     }
+    if (thumb->pixbuf) {
+        g_object_ref (G_OBJECT (thumb->pixbuf));
+    }
     return new_thumb;
 }
 

Modified: libgpod/branches/upstream/current/src/itdb_device.c
===================================================================
--- libgpod/branches/upstream/current/src/itdb_device.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_device.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,6 +1,5 @@
-/* Time-stamp: <2006-11-12 23:07:06 jcs>
-|
-|  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
+/*
+|  Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
 | 
 |  URL: http://www.gtkpod.org/
@@ -28,10 +27,11 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_device.c,v 1.15 2007/01/10 13:25:10 jcsjcs Exp $
+|  $Id: itdb_device.c 1439 2007-05-27 14:58:41Z jcsjcs $
 */
 
 #include "itdb_device.h"
+#include "itdb_private.h"
 #include <ctype.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -268,6 +268,8 @@
 };
 
 
+static void itdb_device_set_timezone_info (Itdb_Device *device);
+
 /* Reset or create the SysInfo hash table */
 static void itdb_device_reset_sysinfo (Itdb_Device *device)
 {
@@ -328,11 +330,29 @@
 
     g_free (device->mountpoint);
     device->mountpoint = g_strdup (mp);
-    if (mp)
+    if (mp) {
 	itdb_device_read_sysinfo (device);
+        itdb_device_set_timezone_info (device);
+    }
 }
 
 
+G_GNUC_INTERNAL time_t device_time_mac_to_time_t (Itdb_Device *device, guint64 mactime)
+{
+    g_return_val_if_fail (device, 0);
+    if (mactime != 0)  return (time_t)(mactime - 2082844800 - device->timezone_shift);
+    else               return (time_t)mactime;
+}
+
+G_GNUC_INTERNAL guint64 device_time_time_t_to_mac (Itdb_Device *device, time_t timet)
+{
+    g_return_val_if_fail (device, 0);
+    if (timet != 0)
+	return ((guint64)timet) + 2082844800 + device->timezone_shift;
+    else return 0;
+}
+
+
 /** 
  * itdb_device_read_sysinfo:
  * @device: an #Itdb_Device
@@ -492,7 +512,7 @@
  * @value: value to set (or NULL to remove the field).
  *
  * Set specified field. It can later be written to the iPod using
- * itdb_device_read_sysinfo
+ * itdb_device_write_sysinfo()
  *
  **/
 void itdb_device_set_sysinfo (Itdb_Device *device,
@@ -570,6 +590,36 @@
 }
 
 
+
+/* Determine the number of F.. directories in iPod_Control/Music.*/
+G_GNUC_INTERNAL gint
+itdb_musicdirs_number_by_mountpoint (const gchar *mountpoint)
+{
+    gint dir_num;
+    gchar *music_dir = itdb_get_music_dir (mountpoint);
+
+    if (!music_dir) return 0;
+
+    /* count number of dirs */
+    for (dir_num=0; ;++dir_num)
+    {
+	gchar *dir_filename;
+	gchar dir_num_str[6];
+
+	g_snprintf (dir_num_str, 6, "F%02d", dir_num);
+  
+	dir_filename = itdb_get_path (music_dir, dir_num_str);
+
+	g_free (dir_filename);
+	if (!dir_filename)  break;
+    }
+
+    g_free (music_dir);
+
+    return dir_num;
+}
+
+
 /* Determine the number of F.. directories in iPod_Control/Music.
 
    If device->musicdirs is already set, simply return the previously
@@ -578,29 +628,11 @@
 G_GNUC_INTERNAL gint
 itdb_device_musicdirs_number (Itdb_Device *device)
 {
-    gchar *dir_filename = NULL;
-    gint dir_num;
-
     g_return_val_if_fail (device, 0);
 
     if (device->musicdirs <= 0)
     {
-	gchar *music_dir = itdb_get_music_dir (device->mountpoint);
-	if (!music_dir) return 0;
-	/* count number of dirs */
-	for (dir_num=0; ;++dir_num)
-	{
-	    gchar dir_num_str[5];
-
-	    g_snprintf (dir_num_str, 5, "F%02d", dir_num);
-  
-	    dir_filename = itdb_get_path (music_dir, dir_num_str);
-
-	    if (!dir_filename)  break;
-	    g_free (dir_filename);
-	}
-	device->musicdirs = dir_num;
-	g_free (music_dir);
+	device->musicdirs = itdb_musicdirs_number_by_mountpoint (device->mountpoint);
     }
     return device->musicdirs;
 }
@@ -781,3 +813,125 @@
     }
     return NULL;
 }
+
+
+/**
+ * itdb_device_supports_artwork:
+ * @device: an #Itdb_Device
+ *
+ * Indicates whether @device can display artwork or not. When dealing
+ * with a non-art capable ipod, no artwork data will be written to the
+ * iPod so you can spare calls to the artwork handling methods.
+ *
+ * Return value: true if @device can display artwork.
+ */
+
+gboolean itdb_device_supports_artwork (Itdb_Device *device)
+{
+    if (device == NULL) {
+        return FALSE;
+    }
+
+    return (itdb_device_get_artwork_formats (device) != NULL);
+}
+
+
+/**
+ * itdb_device_supports_photo:
+ * @device: an #Itdb_Device
+ *
+ * Indicates whether @device can display photos or not.
+ *
+ * Return value: true if @device can display photos.
+ */
+
+gboolean itdb_device_supports_photo (Itdb_Device *device)
+{
+    const Itdb_ArtworkFormat *formats;
+    const Itdb_ArtworkFormat *it;
+
+    if (device == NULL) {
+        return FALSE;
+    }
+
+    formats = itdb_device_get_artwork_formats (device);
+    if (formats == NULL) {
+	return FALSE;
+    }
+
+    it = formats;
+    while ((it->type != -1) && (it->type != ITDB_THUMB_PHOTO_FULL_SCREEN)) {
+	it++;
+    }
+    
+    return (it->type != -1);
+}
+
+
+/* This function reads the timezone information from the iPod and sets it in
+ * the Itdb_Device structure. If an error occurs, the function returns silently
+ * and the timezone shift is set to 0
+ */
+static void itdb_device_set_timezone_info (Itdb_Device *device)
+{
+    const gchar *p_preferences[] = {"Preferences", NULL};
+    char *dev_path;
+    char *prefs_filename;
+    FILE *f;
+    gint32 timezone;
+    const int GMT_OFFSET = 0x19;
+    int result;
+
+    device->timezone_shift = 0;
+
+    if (device->mountpoint == NULL) {
+        /* Assumes the iPod is in the UTC timezone for those cases */
+        return;
+    }
+
+    dev_path = itdb_get_device_dir (device->mountpoint);
+
+    if (dev_path == NULL) {
+        return ;
+    }
+
+    prefs_filename = itdb_resolve_path (dev_path, p_preferences);
+    g_free (dev_path);
+
+    f = fopen (prefs_filename, "r");
+    if (f == NULL) {
+        g_free (prefs_filename);
+        return;
+    }
+
+    result = fseek (f, 0xB10, SEEK_SET);
+    if (result != 0) {
+        fclose (f);
+        g_free (prefs_filename);
+        return;
+    }
+
+    result = fread (&timezone, sizeof (timezone), 1, f);
+    if (result != 1) {
+        fclose (f);
+        g_free (prefs_filename);
+        return;
+    }
+
+    fclose (f);
+    g_free (prefs_filename);
+
+    timezone = GINT32_FROM_LE (timezone);
+    if ((timezone < 0) || (timezone > (2*12) << 1)) {
+        /* invalid timezone */
+        return;
+    }
+
+    timezone -= GMT_OFFSET;
+
+    device->timezone_shift = (timezone >> 1) * 3600;
+    if (timezone & 1) {
+        /* Adjust for DST */
+        device->timezone_shift += 3600;
+    }
+}

Modified: libgpod/branches/upstream/current/src/itdb_device.h
===================================================================
--- libgpod/branches/upstream/current/src/itdb_device.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_device.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,6 +1,5 @@
-/* Time-stamp: <2006-11-12 23:03:35 jcs>
-|
-|  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
+/*
+|  Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
 | 
 |  URL: http://www.gtkpod.org/
@@ -30,7 +29,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_device.h,v 1.7 2006/11/12 15:12:40 jcsjcs Exp $
+|  $Id: itdb_device.h 1417 2007-04-27 14:09:59Z jcsjcs $
 */
 
 #ifndef __ITDB_DEVICE_H__
@@ -71,6 +70,10 @@
 			   * in Device/SysInfo */
     gboolean sysinfo_changed; /* Has the sysinfo hash been changed by
 				 the user (itdb_set_sysinfo) */
+    gint timezone_shift;  /* difference in seconds between the current
+                           * timezone and UTC
+                           */
+
 };
 
 struct _Itdb_ArtworkFormat

Modified: libgpod/branches/upstream/current/src/itdb_endianness.h
===================================================================
--- libgpod/branches/upstream/current/src/itdb_endianness.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_endianness.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -21,7 +21,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- *  $Id: itdb_endianness.h,v 1.4 2006/06/04 16:24:45 jcsjcs Exp $
+ *  $Id: itdb_endianness.h 1299 2006-06-04 16:24:45Z jcsjcs $
  */
 
 #ifndef __ITDB_ENDIANNESS_H__

Modified: libgpod/branches/upstream/current/src/itdb_itunesdb.c
===================================================================
--- libgpod/branches/upstream/current/src/itdb_itunesdb.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_itunesdb.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,6 +1,5 @@
-/* Time-stamp: <2007-01-15 01:55:47 jcs>
-|
-|  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
+/*
+|  Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
 | 
 |  URL: http://www.gtkpod.org/
@@ -31,7 +30,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_itunesdb.c,v 1.76 2007/01/14 14:28:37 jcsjcs Exp $
+|  $Id: itdb_itunesdb.c 1580 2007-06-23 05:10:26Z jcsjcs $
 */
 
 /* Some notes on how to use the functions in this file:
@@ -89,10 +88,6 @@
    void itunesdb_convert_filename_fs2ipod(gchar *ipod_file);
    void itunesdb_convert_filename_ipod2fs(gchar *ipod_file);
 
-   guint32 itunesdb_time_get_mac_time (void);
-   time_t itunesdb_time_mac_to_host (guint32 mactime);
-   guint32 itunesdb_time_host_to_mac (time_t time);
-
    void itunesdb_rename_files (const gchar *dirname);
 
    (Renames/removes some files on the iPod (Playcounts, OTG
@@ -173,46 +168,50 @@
   MHOD_ID_FILETYPE = 6,
 /* MHOD_ID_EQSETTING = 7, */
   MHOD_ID_COMMENT = 8,
-/* Category - This is the category ("Technology", "Music", etc.) where
-   the podcast was located. Introduced in db version 0x0d. */
+  /* Category - This is the category ("Technology", "Music", etc.) where
+     the podcast was located. Introduced in db version 0x0d. */
   MHOD_ID_CATEGORY = 9,
   MHOD_ID_COMPOSER = 12,
   MHOD_ID_GROUPING = 13,
-/* Description text (such as podcast show notes). Accessible by
-   wselecting the center button on the iPod, where this string is
-   displayed along with the song title, date, and
-   timestamp. Introduced in db version 0x0d. */
+  /* Description text (such as podcast show notes). Accessible by
+     wselecting the center button on the iPod, where this string is
+     displayed along with the song title, date, and
+     timestamp. Introduced in db version 0x0d. */
   MHOD_ID_DESCRIPTION = 14,
-/* Podcast Enclosure URL. Note: this is either a UTF-8 or ASCII
-   encoded string (NOT UTF-16). Also, there is no mhod::length value
-   for this type. Introduced in db version 0x0d.  */
+  /* Podcast Enclosure URL. Note: this is either a UTF-8 or ASCII
+     encoded string (NOT UTF-16). Also, there is no mhod::length value
+     for this type. Introduced in db version 0x0d.  */
   MHOD_ID_PODCASTURL = 15,
-/* Podcast RSS URL. Note: this is either a UTF-8 or ASCII encoded
-   string (NOT UTF-16). Also, there is no mhod::length value for this
-   type. Introduced in db version 0x0d. */
+  /* Podcast RSS URL. Note: this is either a UTF-8 or ASCII encoded
+     string (NOT UTF-16). Also, there is no mhod::length value for this
+     type. Introduced in db version 0x0d. */
   MHOD_ID_PODCASTRSS = 16,
-/* Chapter data. This is a m4a-style entry that is used to display
-   subsongs within a mhit. Introduced in db version 0x0d. */
+  /* Chapter data. This is a m4a-style entry that is used to display
+     subsongs within a mhit. Introduced in db version 0x0d. */
   MHOD_ID_CHAPTERDATA = 17,
-/* Subtitle (usually the same as Description). Introduced in db
-   version 0x0d. */
+  /* Subtitle (usually the same as Description). Introduced in db
+     version 0x0d. */
   MHOD_ID_SUBTITLE = 18,
-/* Show (for TV Shows only). Introduced in db version 0x0d? */
+  /* Show (for TV Shows only). Introduced in db version 0x0d? */
   MHOD_ID_TVSHOW = 19, 
-/* Episode # (for TV Shows only). Introduced in db version 0x0d? */
+  /* Episode # (for TV Shows only). Introduced in db version 0x0d? */
   MHOD_ID_TVEPISODE = 20,
-/* TV Network (for TV Shows only). Introduced in db version 0x0d? */
+  /* TV Network (for TV Shows only). Introduced in db version 0x0d? */
   MHOD_ID_TVNETWORK = 21,
-/* Album Artist. Introduced in db version 0x13? */
+  /* Album Artist. Introduced in db version 0x13? */
   MHOD_ID_ALBUMARTIST = 22,
-/* This only seems to appear if the Artist has "The" in front of it
-  (like "The Monkies") in which case it will be in the format "Artist,
-  The" and is followed by 5 0x01 UTF-16 characters. Introduced in db
-  version 0x13? */
-/*  MHOD_ID_ARTISTTHE = 23,   later */
-/* Appears to be a list of keywords pertaining to a track. Introduced
-   in db version 0x13? */
+  /* Sort key for artist. */
+  MHOD_ID_SORT_ARTIST = 23,
+  /* Appears to be a list of keywords pertaining to a track. Introduced
+     in db version 0x13? */
   MHOD_ID_KEYWORDS = 24,
+  /* more sort keys, taking precedence over the standard entries if
+     present */
+  MHOD_ID_SORT_TITLE = 27,
+  MHOD_ID_SORT_ALBUM = 28,
+  MHOD_ID_SORT_ALBUMARTIST = 29,
+  MHOD_ID_SORT_COMPOSER = 30,
+  MHOD_ID_SORT_TVSHOW = 31,
   MHOD_ID_SPLPREF = 50,  /* settings for smart playlist */
   MHOD_ID_SPLRULES = 51, /* rules for smart playlist     */
   MHOD_ID_LIBPLAYLISTINDEX = 52,  /* Library Playlist Index */
@@ -220,6 +219,35 @@
 };
 
 
+/* Used as first iPod ID when renumbering (re-assigning) the iPod
+   (track) IDs before writing out the iTunesDB. */
+static const gint FIRST_IPOD_ID=52;
+
+
+enum MHOD52_SORTTYPE {
+    MHOD52_SORTTYPE_TITLE    = 0x03,
+    MHOD52_SORTTYPE_ALBUM    = 0x04,
+    MHOD52_SORTTYPE_ARTIST   = 0x05,
+    MHOD52_SORTTYPE_GENRE    = 0x07,
+    MHOD52_SORTTYPE_COMPOSER = 0x12/*,
+    MHOD52_SORTTYPE_TVSHOW   = 0x1d,
+    MHOD52_SORTTYPE_TVSEASON = 0x1e,
+    MHOD52_SORTTYPE_TVEPISODE= 0x1f*/
+};
+
+struct mhod52track
+{
+    gchar *album;
+    gchar *title;
+    gchar *artist;
+    gchar *genre;
+    gchar *composer;
+    gint track_nr;
+    gint cd_nr;
+    gint index;
+    gint numtracks;
+};
+
 struct _MHODData
 {
     gboolean valid;
@@ -230,9 +258,14 @@
 	gchar *string;
 	gchar *chapterdata_raw;
 	Itdb_Track *chapterdata_track; /* for writing chapterdata */
-	SPLPref *splpref;
-	SPLRules *splrules;
+	Itdb_SPLPref *splpref;
+	Itdb_SPLRules *splrules;
+	GList *mhod52coltracks;
     } data;
+    union
+    {
+	enum MHOD52_SORTTYPE mhod52sorttype;
+    } data2;
 };
 
 typedef struct _MHODData MHODData;
@@ -240,7 +273,6 @@
 /* Declarations */
 static gboolean itdb_create_directories (Itdb_Device *device, GError **error);
 
-
 /* ID for error domain */
 GQuark itdb_file_error_quark (void)
 {
@@ -908,6 +940,7 @@
     CHECK_ERROR (fimp, FALSE);
     for (i=0; i<entry_num; ++i)
     {
+	guint32 mac_time;
 	struct playcount *playcount = g_new0 (struct playcount, 1);
 	glong seek = header_length + i*entry_length;
 
@@ -915,18 +948,10 @@
 	CHECK_ERROR (fimp, FALSE);	
 
 	fimp->playcounts = g_list_append (fimp->playcounts, playcount);
-	playcount->playcount = get32lint (cts, seek);
-	playcount->time_played = get32lint (cts, seek+4);
+	playcount->playcount = get32lint (cts, seek);	
+	mac_time = get32lint (cts, seek+4);
+	playcount->time_played = device_time_mac_to_time_t (fimp->itdb->device, mac_time);
 	playcount->bookmark_time = get32lint (cts, seek+8);
-	/* NOTE:
-	 *
-	 * The iPod (firmware 1.3, 2.0, ...?) doesn't seem to use the
-	 * timezone information correctly -- no matter what you set
-	 * iPod's timezone to, it will always record as if it were set
-	 * to UTC -- we need to subtract the difference between
-	 * current timezone and UTC to get a correct
-	 * display. -- this should be done by the application were
-	 * necessary */
 	
 	/* rating only exists if the entry length is at least 0x10 */
 	if (entry_length >= 0x10)
@@ -947,7 +972,10 @@
 	if (entry_length >= 0x1c)
 	{
 	    playcount->skipcount = get32lint (cts, seek+20);
-	    playcount->last_skipped = get32lint (cts, seek+24);
+	    mac_time = get32lint (cts, seek+24);
+	    playcount->last_skipped = device_time_mac_to_time_t (fimp->itdb->device,
+							       mac_time);
+
 	}
     }
     return TRUE;
@@ -1068,7 +1096,7 @@
   {
       /* skip if iTunesStats file has zero-length (often happens after
        * dosfsck) */
-      stat (plcname, &filestat);
+      stat (istname, &filestat);
       if (filestat.st_size >= 0x06)
       {
 	  cts = fcontents_read (istname, &fimp->error);
@@ -1253,7 +1281,7 @@
 
 /* Returns the contents of the mhod at position @mhod_seek. This can
    be a simple string or something more complicated as in the case for
-   SPLPREF OR SPLRULES.
+   Itdb_SPLPREF OR Itdb_SPLRULES.
 
    *mhod_len is set to the total length of the mhod (-1 in case an
    *error occured).
@@ -1266,7 +1294,7 @@
    .playlist_id/.string/.chapterdata/.splp/.splrs
 */
 
-static MHODData get_mhod (FContents *cts, glong mhod_seek, guint32 *ml)
+static MHODData get_mhod (FImport *fimp, glong mhod_seek, guint32 *ml)
 {
   gunichar2 *entry_utf16 = NULL;
   MHODData result;
@@ -1275,7 +1303,10 @@
   gint32 header_length;
   guint32 string_type;
   gulong seek;
-
+  FContents *cts;
+  
+  cts = fimp->fcontents;
+    
   result.valid = FALSE;
   result.type = -1;
   g_return_val_if_fail (ml, result);
@@ -1340,6 +1371,12 @@
   case MHOD_ID_TVNETWORK:
   case MHOD_ID_ALBUMARTIST:
   case MHOD_ID_KEYWORDS:
+  case MHOD_ID_SORT_ARTIST:
+  case MHOD_ID_SORT_TITLE:
+  case MHOD_ID_SORT_ALBUM:
+  case MHOD_ID_SORT_ALBUMARTIST:
+  case MHOD_ID_SORT_COMPOSER:
+  case MHOD_ID_SORT_TVSHOW:
       /* type of string: 0x02: UTF8, 0x01 or 0x00: UTF16 LE */
       string_type = get32lint (cts, seek);
       xl = get32lint (cts, seek+4);   /* length of string */
@@ -1395,7 +1432,7 @@
   case MHOD_ID_SPLPREF:  /* Settings for smart playlist */
       if (!check_seek (cts, seek, 14))
 	  return result;  /* *ml==-1, result.valid==FALSE */
-      result.data.splpref = g_new0 (SPLPref, 1);
+      result.data.splpref = g_new0 (Itdb_SPLPref, 1);
       result.data.splpref->liveupdate = get8int (cts, seek);
       result.data.splpref->checkrules = get8int (cts, seek+1);
       result.data.splpref->checklimits = get8int (cts, seek+2);
@@ -1418,7 +1455,7 @@
 	  guint32 numrules;
 	  if (!check_seek (cts, seek, 136))
 	      return result;  /* *ml==-1, result.valid==FALSE */
-	  result.data.splrules = g_new0 (SPLRules, 1);
+	  result.data.splrules = g_new0 (Itdb_SPLRules, 1);
 	  result.data.splrules->unk004 = get32bint (cts, seek+4);
 	  numrules = get32bint (cts, seek+8);
 	  result.data.splrules->match_operator = get32bint (cts, seek+12);
@@ -1427,61 +1464,83 @@
 	  for (i=0; i<numrules; ++i)
 	  {
 	      guint32 length;
-	      SPLRule *splr = g_new0 (SPLRule, 1);
+	      ItdbSPLFieldType ft;
+	      gunichar2 *string_utf16;
+	      Itdb_SPLRule *splr = g_new0 (Itdb_SPLRule, 1);
 	      result.data.splrules->rules = g_list_append (
 		  result.data.splrules->rules, splr);
 	      if (!check_seek (cts, seek, 56))
 		  goto splrules_error;
-      splr->field = get32bint (cts, seek);
+	      splr->field = get32bint (cts, seek);
 	      splr->action = get32bint (cts, seek+4);
+
+	      if (!itdb_spl_action_known (splr->action))
+	      {
+		  g_warning (_("Unknown smart rule action at %ld: %x. Trying to continue.\n"), seek, splr->action);
+	      }
+
 	      seek += 52;
 	      length = get32bint (cts, seek);
 	      g_return_val_if_fail (length < G_MAXUINT-2, result);
-	      if (itdb_spl_action_known (splr->action))
+
+	      ft = itdb_splr_get_field_type (splr);
+	      switch (ft)
 	      {
-		  gint ft = itdb_splr_get_field_type (splr);
-		  if (ft == splft_string)
+	      case ITDB_SPLFT_STRING:
+		  string_utf16 = g_new0 (gunichar2, (length+2)/2);
+		  if (!seek_get_n_bytes (cts, (gchar *)string_utf16,
+					 seek+4, length))
 		  {
-		      gunichar2 *string_utf16 = g_new0 (gunichar2,
-							(length+2)/2);
-		      if (!seek_get_n_bytes (cts, (gchar *)string_utf16,
-					     seek+4, length))
-		      {
-			  g_free (string_utf16);
-			  goto splrules_error;
-		      }
-		      fixup_big_utf16 (string_utf16);
-		      splr->string = g_utf16_to_utf8 (
-			  string_utf16, -1, NULL, NULL, NULL);
 		      g_free (string_utf16);
+		      goto splrules_error;
 		  }
-		  else
+		  fixup_big_utf16 (string_utf16);
+		  splr->string = g_utf16_to_utf8 (
+		      string_utf16, -1, NULL, NULL, NULL);
+		  g_free (string_utf16);
+		  break;
+	      case ITDB_SPLFT_INT:
+	      case ITDB_SPLFT_DATE:
+	      case ITDB_SPLFT_BOOLEAN:
+	      case ITDB_SPLFT_PLAYLIST:
+	      case ITDB_SPLFT_UNKNOWN:
+	      case ITDB_SPLFT_BINARY_AND:
+		  if (length != 0x44)
 		  {
-		      if (length != 0x44)
+		      g_warning (_("Length of smart playlist rule field (%d) not as expected. Trying to continue anyhow.\n"), length);
+		  }
+		  if (!check_seek (cts, seek, 72))
+		      goto splrules_error;
+		  splr->fromvalue = get64bint (cts, seek+4);
+		  splr->fromdate = get64bint (cts, seek+12);
+		  splr->fromunits = get64bint (cts, seek+20);
+		  splr->tovalue = get64bint (cts, seek+28);
+		  splr->todate = get64bint (cts, seek+36);
+		  splr->tounits = get64bint (cts, seek+44);
+		  /* ITDB_SPLFIELD_PLAYLIST seems to use these unknowns*/
+		  splr->unk052 = get32bint (cts, seek+52);
+		  splr->unk056 = get32bint (cts, seek+56);
+		  splr->unk060 = get32bint (cts, seek+60);
+		  splr->unk064 = get32bint (cts, seek+64);
+		  splr->unk068 = get32bint (cts, seek+68);
+
+		  if (ft == ITDB_SPLFT_DATE) {
+		      ItdbSPLActionType at;
+		      at = itdb_splr_get_action_type (splr);
+		      if ((at == ITDB_SPLAT_RANGE_DATE) ||
+			  (at == ITDB_SPLAT_DATE))
 		      {
-			  g_warning (_("Length of smart playlist rule field (%d) not as expected. Trying to continue anyhow.\n"), length);
+			  Itdb_iTunesDB *itdb = fimp->itdb;
+			  splr->fromvalue = device_time_mac_to_time_t (itdb->device,
+								     splr->fromvalue);
+			  splr->tovalue = device_time_mac_to_time_t (itdb->device,
+								   splr->tovalue);
 		      }
-		      if (!check_seek (cts, seek, 72))
-			  goto splrules_error;
-		      splr->fromvalue = get64bint (cts, seek+4);
-		      splr->fromdate = get64bint (cts, seek+12);
-		      splr->fromunits = get64bint (cts, seek+20);
-		      splr->tovalue = get64bint (cts, seek+28);
-		      splr->todate = get64bint (cts, seek+36);
-		      splr->tounits = get64bint (cts, seek+44);
-		      /* SPLFIELD_PLAYLIST seem to use these unknowns*/
-		      splr->unk052 = get32bint (cts, seek+52);
-		      splr->unk056 = get32bint (cts, seek+56);
-		      splr->unk060 = get32bint (cts, seek+60);
-		      splr->unk064 = get32bint (cts, seek+64);
-		      splr->unk068 = get32bint (cts, seek+68);
-		  }  
-		  seek += length+4;
+		  }
+
+		  break;
 	      }
-	      else
-	      {
-		  goto splrules_error;
-	      }
+	      seek += length+4;
 	  }
       }
       else
@@ -1519,10 +1578,13 @@
    UTF8). After use you must free the string with g_free(). Returns
    NULL if no string is avaible. *ml is set to -1 in case of error and
    cts->error is set appropriately. */
-static gchar *get_mhod_string (FContents *cts, glong seek, guint32 *ml, gint32 *mty)
+static gchar *get_mhod_string (FImport *fimp, glong seek, guint32 *ml, gint32 *mty)
 {
     MHODData mhoddata;
+    FContents *cts;
 
+    cts = fimp->fcontents;
+
     *mty = get_mhod_type (cts, seek, ml);
     if (cts->error) return NULL;
 
@@ -1547,7 +1609,13 @@
     case MHOD_ID_TVNETWORK:
     case MHOD_ID_ALBUMARTIST:
     case MHOD_ID_KEYWORDS:
-	mhoddata = get_mhod (cts, seek, ml);
+    case MHOD_ID_SORT_ARTIST:
+    case MHOD_ID_SORT_TITLE:
+    case MHOD_ID_SORT_ALBUM:
+    case MHOD_ID_SORT_ALBUMARTIST:
+    case MHOD_ID_SORT_COMPOSER:
+    case MHOD_ID_SORT_TVSHOW:
+	mhoddata = get_mhod (fimp, seek, ml);
 	if ((*ml != -1) && mhoddata.valid)
 	    return mhoddata.data.string;
 	else
@@ -1812,7 +1880,7 @@
 	if (mhod_type == MHOD_ID_PLAYLIST)
 	{
 	    MHODData mhod;
-	    mhod = get_mhod (cts, mhod_seek, &mhod_len);
+	    mhod = get_mhod (fimp, mhod_seek, &mhod_len);
 	    CHECK_ERROR (fimp, -1);
 	    pos = -1;
 	    if (mhod.valid && first_entry)
@@ -1935,6 +2003,7 @@
   plitem->flag2 = get8int (cts, mhyp_seek+22);
   plitem->flag3 = get8int (cts, mhyp_seek+23);
   plitem->timestamp = get32lint (cts, mhyp_seek+24);
+  plitem->timestamp = device_time_mac_to_time_t (fimp->itdb->device, plitem->timestamp);
   plitem->id = get64lint (cts, mhyp_seek+28);
 /*  plitem->mhodcount = get32lint (cts, mhyp_seek+36);   */
 /*  plitem->libmhodcount = get16lint (cts, mhyp_seek+40);*/
@@ -1958,7 +2027,7 @@
 	      /* here we could do something about the playlist settings */
 	      break;
 	  case MHOD_ID_TITLE:
-	      mhod = get_mhod (cts, mhod_seek, &header_len);
+	      mhod = get_mhod (fimp, mhod_seek, &header_len);
 	      CHECK_ERROR (fimp, -1);
 	      if (mhod.valid && mhod.data.string)
 	      {
@@ -1969,25 +2038,25 @@
 	      }
 	      break;
 	  case MHOD_ID_SPLPREF:
-	      mhod = get_mhod (cts, mhod_seek, &header_len);
+	      mhod = get_mhod (fimp, mhod_seek, &header_len);
 	      CHECK_ERROR (fimp, -1);
 	      if (mhod.valid && mhod.data.splpref)
 	      {
 		  plitem->is_spl = TRUE;
 		  memcpy (&plitem->splpref, mhod.data.splpref,
-			  sizeof (SPLPref));
+			  sizeof (Itdb_SPLPref));
 		  g_free (mhod.data.splpref);
 		  mhod.valid = FALSE;
 	      }
 	      break;
 	  case MHOD_ID_SPLRULES:
-	      mhod = get_mhod (cts, mhod_seek, &header_len);
+	      mhod = get_mhod (fimp, mhod_seek, &header_len);
 	      CHECK_ERROR (fimp, -1);
 	      if (mhod.valid && mhod.data.splrules)
 	      {
 		  plitem->is_spl = TRUE;
 		  memcpy (&plitem->splrules, mhod.data.splrules,
-			  sizeof (SPLRules));
+			  sizeof (Itdb_SPLRules));
 		  g_free (mhod.data.splrules);
 		  mhod.valid = FALSE;
 	      }
@@ -2011,6 +2080,12 @@
 	  case MHOD_ID_ALBUMARTIST:
 	  case MHOD_ID_KEYWORDS:
 	  case MHOD_ID_CHAPTERDATA:
+	  case MHOD_ID_SORT_ARTIST:
+	  case MHOD_ID_SORT_TITLE:
+	  case MHOD_ID_SORT_ALBUM:
+	  case MHOD_ID_SORT_ALBUMARTIST:
+	  case MHOD_ID_SORT_COMPOSER:
+	  case MHOD_ID_SORT_TVSHOW:
 	      /* these are not expected here */
 	      break;
 	  case MHOD_ID_LIBPLAYLISTINDEX:
@@ -2031,13 +2106,13 @@
   {   /* we did not read a valid mhod TITLE header -> */
       /* we simply make up our own name */
       if (itdb_playlist_is_mpl (plitem))
-	  plitem->name = _("Master-PL");
+	  plitem->name = g_strdup (_("Master-PL"));
       else
       {
 	  if (itdb_playlist_is_podcasts (plitem))
-	      plitem->name = _("Podcasts");
+	      plitem->name = g_strdup (_("Podcasts"));
 	  else
-	      plitem->name = _("Playlist");
+	      plitem->name = g_strdup (_("Playlist"));
       }
   }
 
@@ -2140,6 +2215,8 @@
       track->compilation = get8int (cts, seek+30);
       track->rating = get8int (cts, seek+31);
       track->time_modified = get32lint(cts, seek+32); /* time added       */
+      track->time_modified = device_time_mac_to_time_t (fimp->itdb->device, 
+						      track->time_modified);
       track->size = get32lint(cts, seek+36);       /* file size        */
       track->tracklen = get32lint(cts, seek+40);   /* time             */
       track->track_nr = get32lint(cts, seek+44);   /* track number     */
@@ -2156,12 +2233,16 @@
       track->playcount = get32lint (cts, seek+80); /* playcount        */
       track->playcount2 = get32lint (cts, seek+84);
       track->time_played = get32lint(cts, seek+88);/* last time played */
+      track->time_played = device_time_mac_to_time_t (fimp->itdb->device, 
+						    track->time_played);
       track->cd_nr = get32lint(cts, seek+92);      /* CD nr            */
       track->cds = get32lint(cts, seek+96);        /* CD nr of..       */
       /* Apple Store/Audible User ID (for DRM'ed files only, set to 0
 	 otherwise). */
       track->drm_userid = get32lint (cts, seek+100);
       track->time_added = get32lint(cts, seek+104);/* last mod. time */
+      track->time_added = device_time_mac_to_time_t (fimp->itdb->device, 
+						   track->time_added);
       track->bookmark_time = get32lint (cts, seek+108);/*time bookmarked*/
       track->dbid = get64lint (cts, seek+112);
       track->checked = get8int (cts, seek+120); /*Checked/Unchecked: 0/1*/
@@ -2175,6 +2256,8 @@
       track->unk132 = get32lint (cts, seek+132);
       track->samplerate2 = get32lfloat (cts, seek+136);
       track->time_released = get32lint (cts, seek+140);
+      track->time_released = device_time_mac_to_time_t (fimp->itdb->device,
+						      track->time_released);
       track->unk144 = get16lint (cts, seek+144);
       track->unk146 = get16lint (cts, seek+146);
       track->unk148 = get32lint (cts, seek+148);
@@ -2184,6 +2267,8 @@
   {
       track->skipcount = get32lint (cts, seek+156);
       track->last_skipped = get32lint (cts, seek+160);
+      track->last_skipped = device_time_mac_to_time_t (fimp->itdb->device, 
+						     track->last_skipped);
       track->has_artwork = get8int (cts, seek+164);
       track->skip_when_shuffling = get8int (cts, seek+165);
       track->remember_playback_position = get8int (cts, seek+166);
@@ -2225,7 +2310,7 @@
 
   for (i=0; i<mhod_nums; ++i)
   {
-      entry_utf8 = get_mhod_string (cts, seek, &zip, &type);
+      entry_utf8 = get_mhod_string (fimp, seek, &zip, &type);
       CHECK_ERROR (fimp, -1);
       if (entry_utf8 != NULL)
       {
@@ -2288,6 +2373,24 @@
 	  case MHOD_ID_KEYWORDS:
 	      track->keywords = entry_utf8;
 	      break;
+	  case MHOD_ID_SORT_ARTIST:
+	      track->sort_artist = entry_utf8;
+	      break;
+	  case MHOD_ID_SORT_TITLE:
+	      track->sort_title = entry_utf8;
+	      break;
+	  case MHOD_ID_SORT_ALBUM:
+	      track->sort_album = entry_utf8;
+	      break;
+	  case MHOD_ID_SORT_ALBUMARTIST:
+	      track->sort_albumartist = entry_utf8;
+	      break;
+	  case MHOD_ID_SORT_COMPOSER:
+	      track->sort_composer = entry_utf8;
+	      break;
+	  case MHOD_ID_SORT_TVSHOW:
+	      track->sort_tvshow = entry_utf8;
+	      break;
 	  case MHOD_ID_SPLPREF:
 	  case MHOD_ID_SPLRULES:
 	  case MHOD_ID_LIBPLAYLISTINDEX:
@@ -2305,7 +2408,7 @@
 	  case MHOD_ID_CHAPTERDATA:
 	      /* we just read the entire chapterdata info until we
 		 have a better way to parse and represent it */
-	      mhod = get_mhod (cts, seek, &zip);
+	      mhod = get_mhod (fimp, seek, &zip);
 	      if (mhod.valid && mhod.data.chapterdata_raw)
 	      {
 		  track->chapterdata_raw = mhod.data.chapterdata_raw;
@@ -2416,7 +2519,7 @@
 	g_set_error (&fimp->error,
 		     ITDB_FILE_ERROR,
 		     ITDB_FILE_ERROR_CORRUPT,
-		     _("OTG playlist file file ('%s'): entry length smaller than expected (%d<4)."),
+		     _("OTG playlist file ('%s'): entry length smaller than expected (%d<4)."),
 		     cts->filename, entry_length);
 	return FALSE;
     }
@@ -2766,6 +2869,42 @@
 }
 #endif
 
+
+static gboolean
+itdb_parse_internal (Itdb_iTunesDB *itdb, GError **error)
+{
+    FImport *fimp;
+    gboolean success = FALSE;
+
+    g_return_val_if_fail (itdb->filename != NULL, FALSE);
+    
+    fimp = g_new0 (FImport, 1);
+    fimp->itdb = itdb;
+
+    fimp->fcontents = fcontents_read (itdb->filename, error);
+
+    if (fimp->fcontents)
+    {
+	if (playcounts_init (fimp))
+	{
+	    if (parse_fimp (fimp))
+	    {
+		if (read_OTG_playlists (fimp))
+		{
+		    success = TRUE;
+		}
+	    }
+	}
+    }
+
+    if (fimp->error)
+	g_propagate_error (error, fimp->error);
+
+    itdb_free_fimp (fimp);
+
+    return success;
+}
+
 /**
  * itdb_parse:
  * @mp: mount point of the iPod (eg "/mnt/ipod) in local encoding
@@ -2785,6 +2924,7 @@
     Itdb_iTunesDB *itdb = NULL;
     const gchar *db[] = {"iTunesDB", NULL};
 
+
     itunes_dir = itdb_get_itunes_dir (mp);
 
     if (!itunes_dir)
@@ -2794,13 +2934,22 @@
     }
 
     filename = itdb_resolve_path (itunes_dir, db);
+
     if (filename)
     {
-	itdb = itdb_parse_file (filename, error);
+	itdb = itdb_new ();
+	
 	if (itdb)
 	{
+	    gboolean success;
+
 	    itdb_set_mountpoint (itdb, mp);
-
+	    itdb->filename = filename;
+	    success = itdb_parse_internal (itdb, error);
+	    if (!success) {
+		itdb_free (itdb);
+		itdb = NULL;
+	    }
 	    /* We don't test the return value of ipod_parse_artwork_db
 	     * since the database content will be consistent even if
 	     * we fail to get the various thumbnails, we ignore the
@@ -2825,7 +2974,6 @@
 	    ipod_parse_artwork_db (itdb);
 
 	}
-	g_free (filename);
     }
     else
     {
@@ -2841,6 +2989,7 @@
     return itdb;
 }
 
+
 /**
  * itdb_parse_file:
  * @filename: path to a file in iTunesDB format
@@ -2849,47 +2998,26 @@
  *  Same as itunesdb_parse(), but filename is specified directly.
  *
  * Return value: a newly allocated #Itdb_iTunesDB struct holding the tracks and
- * the playlists present on the iPod at @mp, NULL if @mp isn't an iPod mount
- * point. If non-NULL, the #Itdb_iTunesDB is to be freed with itdb_free() when
- * it's no longer needed
+ * the playlists present in @filename, NULL if @filename isn't a parsable 
+ * iTunesDB file. If non-NULL, the #Itdb_iTunesDB is to be freed with 
+ * itdb_free() when it's no longer needed
  **/
 Itdb_iTunesDB *itdb_parse_file (const gchar *filename, GError **error)
 {
-    FImport *fimp;
     Itdb_iTunesDB *itdb;
-    gboolean success = FALSE;
+    gboolean success;
 
     g_return_val_if_fail (filename, NULL);
 
-    fimp = g_new0 (FImport, 1);
     itdb = itdb_new ();
     itdb->filename = g_strdup (filename);
-    fimp->itdb = itdb;
 
-    fimp->fcontents = fcontents_read (filename, error);
-
-    if (fimp->fcontents)
-    {
-	if (playcounts_init (fimp))
-	{
-	    if (parse_fimp (fimp))
-	    {
-		if (read_OTG_playlists (fimp))
-		{
-		    success = TRUE;
-		}
-	    }
-	}
-    }
-
+    success = itdb_parse_internal (itdb, error);
     if (!success)
     {
 	itdb_free (itdb);
 	itdb = NULL;
-	if (fimp->error)
-	    g_propagate_error (error, fimp->error);
     }
-    itdb_free_fimp (fimp);
 
     return itdb;
 }
@@ -3350,6 +3478,7 @@
 /* Write out the mhit header. Size will be written later */
 static void mk_mhit (WContents *cts, Itdb_Track *track)
 {
+  guint32 mac_time;
   g_return_if_fail (cts);
   g_return_if_fail (track);
 
@@ -3365,7 +3494,8 @@
   put8int (cts, track->type2);
   put8int   (cts, track->compilation);
   put8int   (cts, track->rating);
-  put32lint (cts, track->time_modified); /* timestamp               */
+  mac_time = device_time_time_t_to_mac (track->itdb->device, track->time_modified);
+  put32lint (cts, mac_time); /* timestamp               */
   put32lint (cts, track->size);    /* filesize                   */
   put32lint (cts, track->tracklen);/* length of track in ms      */
   put32lint (cts, track->track_nr);/* track number               */
@@ -3381,11 +3511,13 @@
   put32lint (cts, track->playcount);/* playcount                 */
   track->playcount2 = track->playcount;
   put32lint (cts, track->playcount2);
-  put32lint (cts, track->time_played); /* last time played       */
+  mac_time = device_time_time_t_to_mac (track->itdb->device, track->time_played);
+  put32lint (cts, mac_time); /* last time played       */
   put32lint (cts, track->cd_nr);   /* CD number                  */
   put32lint (cts, track->cds);     /* number of CDs              */
   put32lint (cts, track->drm_userid);
-  put32lint (cts, track->time_added); /* timestamp            */
+  mac_time = device_time_time_t_to_mac (track->itdb->device, track->time_added);
+  put32lint (cts, mac_time); /* timestamp            */
   put32lint (cts, track->bookmark_time);
   put64lint (cts, track->dbid);
   if (track->checked)   put8int (cts, 1);
@@ -3397,14 +3529,16 @@
   put32lint (cts, track->artwork_size);
   put32lint (cts, track->unk132);
   put32lfloat (cts, track->samplerate2);
-  put32lint (cts, track->time_released);
+  mac_time = device_time_time_t_to_mac (track->itdb->device, track->time_released);
+  put32lint (cts, mac_time);
   put16lint (cts, track->unk144);
   put16lint (cts, track->unk146);
   put32lint (cts, track->unk148);
   put32lint (cts, track->unk152);
   /* since iTunesDB version 0x0c */
   put32lint (cts, track->skipcount);
-  put32lint (cts, track->last_skipped);
+  mac_time = device_time_time_t_to_mac (track->itdb->device, track->last_skipped);
+  put32lint (cts, mac_time);
   put8int (cts, track->has_artwork);
   put8int (cts, track->skip_when_shuffling);
   put8int (cts, track->remember_playback_position);
@@ -3450,15 +3584,236 @@
   put32lint_seek (cts, mhod_num, mhit_seek+12);
 }
 
+/* Returns:
+   - track->sort_artist if track->sort_artist is not NULL
 
+   - 'Artist, The' if track->sort_artist is NULL and track->artist of
+     of type 'The Artist'.
+
+   - NULL if track->sort_artist is NULL and track->artist is not of
+     type 'The Artist'.
+
+   You must g_free() the returned string */
+static gchar *get_sort_artist (Itdb_Track *track)
+{
+    g_return_val_if_fail (track, NULL);
+
+    if (track->sort_artist && *track->sort_artist)
+    {
+	return g_strdup (track->sort_artist);
+    }
+
+    if (!(track->artist && *track->artist))
+    {
+	return NULL;
+    }
+
+    /* check if artist is of type 'The Artist' */
+    if (g_ascii_strncasecmp ("The ", track->artist, 4) == 0)
+    {   /* return 'Artist, The', followed by five 0x01 chars
+	   (analogous to iTunes) */
+	return g_strdup_printf ("%s, The%c%c%c%c%c",
+				track->artist+4,
+				0x01, 0x01, 0x01, 0x01, 0x01);
+    }
+
+    return NULL;
+}
+
+
+
+
+static gint mhod52_sort_title (const struct mhod52track *a, const struct mhod52track *b)
+{
+    return strcmp (a->title, b->title);
+}
+
+
+static gint mhod52_sort_album (const struct mhod52track *a, const struct mhod52track *b)
+{
+    gint result;
+
+    result = strcmp (a->album, b->album);
+    if (result == 0)
+	result = a->cd_nr - b->cd_nr;
+    if (result == 0)
+	result = a->track_nr - b->track_nr;
+    if (result == 0)
+	result = strcmp (a->title, b->title);
+    return result;
+}
+
+static gint mhod52_sort_artist (struct mhod52track *a, struct mhod52track *b)
+{
+    gint result;
+
+    result = strcmp (a->artist, b->artist);
+    if (result == 0)
+	result = strcmp (a->album, b->album);
+    if (result == 0)
+	result = a->cd_nr - b->cd_nr;
+    if (result == 0)
+	result = a->track_nr - b->track_nr;
+    if (result == 0)
+	result = strcmp (a->title, b->title);
+    return result;
+}
+
+static gint mhod52_sort_genre (struct mhod52track *a, struct mhod52track *b)
+{
+    gint result;
+
+    result = strcmp (a->genre, b->genre);
+    if (result == 0)
+	result = strcmp (a->artist, b->artist);
+    if (result == 0)
+	result = strcmp (a->album, b->album);
+    if (result == 0)
+	result = a->cd_nr - b->cd_nr;
+    if (result == 0)
+	result = a->track_nr - b->track_nr;
+    if (result == 0)
+	result = strcmp (a->title, b->title);
+    return result;
+}
+
+static gint mhod52_sort_composer (struct mhod52track *a, struct mhod52track *b)
+{
+    gint result;
+
+    result = strcmp (a->composer, b->composer);
+    if (result == 0)
+	result = strcmp (a->title, b->title);
+    return result;
+}
+
+
+/* Create a new list containing all tracks but with collate keys
+   instead of the actual strings (title, artist, album, genre,
+   composer) */
+static GList *mhod52_make_collate_keys (GList *tracks)
+{
+    gint numtracks = g_list_length (tracks);
+    GList *gl, *coltracks = NULL;
+    gint index=0;
+
+    for (gl=tracks; gl; gl=gl->next)
+    {
+	gchar *str;
+	struct mhod52track *ct;
+	Itdb_Track *tr = gl->data;
+	g_return_val_if_fail (tr, NULL);
+
+	ct = g_new0 (struct mhod52track, 1);
+	coltracks = g_list_prepend (coltracks, ct);
+
+	/* album */
+	if (tr->sort_album && *tr->sort_album)
+	{
+	    ct->album = g_utf8_collate_key (tr->sort_album, -1);
+	}
+	else if (tr->album)
+	{
+	    ct->album = g_utf8_collate_key (tr->album, -1);
+	}
+	else
+	{
+	    ct->album = g_strdup ("");
+	}
+
+	/* title */
+	if (tr->sort_title && *tr->sort_title)
+	{
+	    ct->title = g_utf8_collate_key (tr->sort_title, -1);
+	}
+	else if (tr->title)
+	{
+	    ct->title = g_utf8_collate_key (tr->title, -1);
+	}
+	else
+	{
+	    ct->title = g_strdup ("");
+	}
+
+	/* artist */
+	str = get_sort_artist (tr);
+	if (str)
+	{
+	    ct->artist = g_utf8_collate_key (str, -1);
+	    g_free (str);
+	}
+	else if (tr->artist)
+	{
+	    ct->artist = g_utf8_collate_key (tr->artist, -1);
+	}
+	else
+	{
+	    ct->artist = g_strdup ("");
+	}
+
+	/* genre */
+	if (tr->genre)
+	{
+	    ct->genre = g_utf8_collate_key (tr->genre, -1);
+	}
+	else
+	{
+	    ct->genre = g_strdup ("");
+	}
+
+	/* composer */
+	if (tr->sort_composer && *tr->sort_composer)
+	{
+	    ct->composer = g_utf8_collate_key (tr->sort_composer, -1);
+	}
+	else if (tr->composer)
+	{
+	    ct->composer = g_utf8_collate_key (tr->composer, -1);
+	}
+	else
+	{
+	    ct->composer = g_strdup ("");
+	}
+
+	ct->track_nr = tr->track_nr;
+	ct->cd_nr = tr->cd_nr;
+	ct->numtracks = numtracks;
+	ct->index = index++;
+    }
+    return coltracks;
+}
+
+
+/* Free all memory used up by the collate keys */
+static void mhod52_free_collate_keys (GList *coltracks)
+{
+    GList *gl;
+
+    for (gl=coltracks; gl; gl=gl->next)
+    {
+	struct mhod52track *ct = gl->data;
+	g_return_if_fail (ct);
+	g_free (ct->album);
+	g_free (ct->title);
+	g_free (ct->artist);
+	g_free (ct->genre);
+	g_free (ct->composer);
+	g_free (ct);
+    }
+    g_list_free (coltracks);
+}
+
+
 /* Write out one mhod header.
      type: see enum of MHMOD_IDs;
      data: utf8 string for text items
            position indicator for MHOD_ID_PLAYLIST
-           SPLPref for MHOD_ID_SPLPREF
-	   SPLRules for MHOD_ID_SPLRULES */
-static void mk_mhod (WContents *cts, MHODData *mhod)
+           Itdb_SPLPref for MHOD_ID_SPLPREF
+	   Itdb_SPLRules for MHOD_ID_SPLRULES */
+static void mk_mhod (FExport *fexp, MHODData *mhod)
 {
+  WContents *cts = fexp->wcontents;
+
   g_return_if_fail (cts);
   g_return_if_fail (mhod->valid);
 
@@ -3481,6 +3836,12 @@
   case MHOD_ID_TVNETWORK:
   case MHOD_ID_ALBUMARTIST:
   case MHOD_ID_KEYWORDS:
+  case MHOD_ID_SORT_ARTIST:
+  case MHOD_ID_SORT_TITLE:
+  case MHOD_ID_SORT_ALBUM:
+  case MHOD_ID_SORT_ALBUMARTIST:
+  case MHOD_ID_SORT_COMPOSER:
+  case MHOD_ID_SORT_TVSHOW:
       g_return_if_fail (mhod->data.string);
       /* normal iTunesDBs seem to take utf16 strings), endian-inversed
 	 iTunesDBs seem to take utf8 strings */
@@ -3606,19 +3967,22 @@
 	  /* end of header, now follow the rules */
 	  for (gl=mhod->data.splrules->rules; gl; gl=gl->next)
 	  {
-	      SPLRule *splr = gl->data;
-	      gint ft;
+	      Itdb_SPLRule *splr = gl->data;
+	      ItdbSPLFieldType ft;
+	      gint len;
+	      gunichar2 *entry_utf16;
 	      g_return_if_fail (splr);
 	      ft = itdb_splr_get_field_type (splr);
 /*	      printf ("%p: field: %d ft: %d\n", splr, splr->field, ft);*/
 	      itdb_splr_validate (splr);
 	      put32bint (cts, splr->field);
 	      put32bint (cts, splr->action);
-	      put32_n0 (cts, 11);          /* unknown              */
-	      if (ft == splft_string)
-	      {   /* write string-type rule */
-		  gunichar2 *entry_utf16 = NULL;
-		  gint len;
+	      put32_n0 (cts, 11);          /* unknown              */	      
+	      switch (ft)
+	      {
+	      case ITDB_SPLFT_STRING:
+		  /* write string-type rule */
+		  entry_utf16 = NULL;
 		  /* splr->string may be NULL */
 		  if (splr->string)
 		      entry_utf16 = g_utf8_to_utf16 (splr->string,
@@ -3628,15 +3992,38 @@
 		  put32bint (cts, 2*len); /* length of string     */
 		  put_data (cts, (gchar *)entry_utf16, 2*len);
 		  g_free (entry_utf16);
-	      }
-	      else
-	      {   /* write non-string-type rule */
+		  break;
+	      case ITDB_SPLFT_DATE:
+	      case ITDB_SPLFT_INT:
+	      case ITDB_SPLFT_BOOLEAN:
+	      case ITDB_SPLFT_PLAYLIST:
+	      case ITDB_SPLFT_UNKNOWN:
+	      case ITDB_SPLFT_BINARY_AND: {
+		  guint64 fromvalue;	       
+		  guint64 tovalue;
+		  
+		  fromvalue = splr->fromvalue;
+		  tovalue = splr->tovalue;
+
+		  if (ft == ITDB_SPLFT_DATE) {
+		      ItdbSPLActionType at;
+		      at = itdb_splr_get_action_type (splr);
+		      if ((at == ITDB_SPLAT_RANGE_DATE) ||
+			  (at == ITDB_SPLAT_DATE))
+		      {
+			  Itdb_iTunesDB *itdb = fexp->itdb;
+			  fromvalue = device_time_time_t_to_mac (itdb->device, fromvalue);
+			  tovalue = device_time_time_t_to_mac (itdb->device, tovalue);
+		      }
+		  }
+
+		  /* write non-string-type rule */
 		  put32bint (cts, 0x44); /* length of data        */
 		  /* data */
-		  put64bint (cts, splr->fromvalue);
+		  put64bint (cts, fromvalue);
 		  put64bint (cts, splr->fromdate);
 		  put64bint (cts, splr->fromunits);
-		  put64bint (cts, splr->tovalue);
+		  put64bint (cts, tovalue);
 		  put64bint (cts, splr->todate);
 		  put64bint (cts, splr->tounits);
 		  put32bint (cts, splr->unk052);
@@ -3644,14 +4031,64 @@
 		  put32bint (cts, splr->unk060);
 		  put32bint (cts, splr->unk064);
 		  put32bint (cts, splr->unk068);
+		  break;
 	      }
+	      }
 	  }
 	  /* insert length of mhod junk */
 	  fix_header (cts, header_seek);
       }
       break;
   case MHOD_ID_LIBPLAYLISTINDEX:
-      g_warning (_("Cannot write mhod of type %d\n"), mhod->type);
+      g_return_if_fail (mhod->data.mhod52coltracks);
+      g_return_if_fail (mhod->data.mhod52coltracks->data);
+      {
+	  struct mhod52track *ct = mhod->data.mhod52coltracks->data;
+	  gint numtracks = ct->numtracks;
+	  GList *gl;
+	  gpointer compfunc = NULL;
+
+	  /* sort list */
+	  switch (mhod->data2.mhod52sorttype)
+	  {
+	  case MHOD52_SORTTYPE_TITLE:
+	      compfunc = mhod52_sort_title;
+	      break;
+	  case MHOD52_SORTTYPE_ALBUM:
+	      compfunc = mhod52_sort_album;
+	      break;
+	  case MHOD52_SORTTYPE_ARTIST:
+	      compfunc = mhod52_sort_artist;
+	      break;
+	  case MHOD52_SORTTYPE_GENRE:
+	      compfunc = mhod52_sort_genre;
+	      break;
+	  case MHOD52_SORTTYPE_COMPOSER:
+	      compfunc = mhod52_sort_composer;
+	      break;
+	  }
+	  g_return_if_fail (compfunc);
+
+	  /* sort the tracks */
+	  mhod->data.mhod52coltracks = g_list_sort (mhod->data.mhod52coltracks,
+						    compfunc);
+	  /* Write the MHOD */
+	  put_header (cts, "mhod");         /* header                     */
+	  put32lint (cts, 24);              /* size of header             */
+	  put32lint (cts, 4*numtracks+72);  /* size of header + body      */
+	  put32lint (cts, mhod->type);      /* type of the mhod           */
+	  put32_n0 (cts, 2);                /* unknown                    */
+	  /* end of header, start of data */
+	  put32lint (cts, mhod->data2.mhod52sorttype);   /* sort type     */
+	  put32lint (cts, numtracks);       /* number of entries          */
+	  put32_n0 (cts, 10);               /* unknown                    */
+	  for (gl=mhod->data.mhod52coltracks; gl; gl=gl->next)
+	  {
+	      ct = gl->data;
+	      g_return_if_fail (ct);
+	      put32lint (cts, ct->index);
+	  }
+      }
       break;
   }
 }
@@ -3751,6 +4188,7 @@
   put32lint (cts, podcastgroupflag);                /* 16 */
   put32lint (cts, podcastgroupid);                  /* 20 */
   put32lint (cts, trackid);                         /* 24 */
+  timestamp = device_time_time_t_to_mac (fexp->itdb->device, timestamp);
   put32lint (cts, timestamp);                       /* 28 */
   put32lint (cts, podcastgroupref);                 /* 32 */
   put32_n0 (cts, 10);                               /* 36 */
@@ -3791,140 +4229,182 @@
 	{
 	    mhod.type = MHOD_ID_TITLE;
 	    mhod.data.string = track->title;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->ipod_path && *track->ipod_path)
 	{
 	    mhod.type = MHOD_ID_PATH;
 	    mhod.data.string = track->ipod_path;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->album && *track->album)
 	{
 	    mhod.type = MHOD_ID_ALBUM;
 	    mhod.data.string = track->album;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->artist && *track->artist)
 	{
 	    mhod.type = MHOD_ID_ARTIST;
 	    mhod.data.string = track->artist;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->genre && *track->genre)
 	{
 	    mhod.type = MHOD_ID_GENRE;
 	    mhod.data.string = track->genre;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->filetype && *track->filetype)
 	{
 	    mhod.type = MHOD_ID_FILETYPE;
 	    mhod.data.string = track->filetype;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->comment && *track->comment)
 	{
 	    mhod.type = MHOD_ID_COMMENT;
 	    mhod.data.string = track->comment;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->category && *track->category)
 	{
 	    mhod.type = MHOD_ID_CATEGORY;
 	    mhod.data.string = track->category;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->composer && *track->composer)
 	{
 	    mhod.type = MHOD_ID_COMPOSER;
 	    mhod.data.string = track->composer;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->grouping && *track->grouping)
 	{
 	    mhod.type = MHOD_ID_GROUPING;
 	    mhod.data.string = track->grouping;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->description && *track->description)
 	{
 	    mhod.type = MHOD_ID_DESCRIPTION;
 	    mhod.data.string = track->description;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->subtitle && *track->subtitle)
 	{
 	    mhod.type = MHOD_ID_SUBTITLE;
 	    mhod.data.string = track->subtitle;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->tvshow && *track->tvshow)
 	{
 	    mhod.type = MHOD_ID_TVSHOW;
 	    mhod.data.string = track->tvshow;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->tvepisode && *track->tvepisode)
 	{
 	    mhod.type = MHOD_ID_TVEPISODE;
 	    mhod.data.string = track->tvepisode;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->tvnetwork && *track->tvnetwork)
 	{
 	    mhod.type = MHOD_ID_TVNETWORK;
 	    mhod.data.string = track->tvnetwork;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->albumartist && *track->albumartist)
 	{
 	    mhod.type = MHOD_ID_ALBUMARTIST;
 	    mhod.data.string = track->albumartist;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->keywords && *track->keywords)
 	{
 	    mhod.type = MHOD_ID_KEYWORDS;
 	    mhod.data.string = track->keywords;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->podcasturl && *track->podcasturl)
 	{
 	    mhod.type = MHOD_ID_PODCASTURL;
 	    mhod.data.string = track->podcasturl;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
 	if (track->podcastrss && *track->podcastrss)
 	{
 	    mhod.type = MHOD_ID_PODCASTRSS;
 	    mhod.data.string = track->podcastrss;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
+	if (track->sort_artist && *track->sort_artist)
+	{
+	    mhod.type = MHOD_ID_SORT_ARTIST;
+	    mhod.data.string = track->sort_artist;
+	    mk_mhod (fexp, &mhod);
+	    ++mhod_num;
+	}
+	if (track->sort_title && *track->sort_title)
+	{
+	    mhod.type = MHOD_ID_SORT_TITLE;
+	    mhod.data.string = track->sort_title;
+	    mk_mhod (fexp, &mhod);
+	    ++mhod_num;
+	}
+	if (track->sort_album && *track->sort_album)
+	{
+	    mhod.type = MHOD_ID_SORT_ALBUM;
+	    mhod.data.string = track->sort_album;
+	    mk_mhod (fexp, &mhod);
+	    ++mhod_num;
+	}
+	if (track->sort_albumartist && *track->sort_albumartist)
+	{
+	    mhod.type = MHOD_ID_SORT_ALBUMARTIST;
+	    mhod.data.string = track->sort_albumartist;
+	    mk_mhod (fexp, &mhod);
+	    ++mhod_num;
+	}
+	if (track->sort_composer && *track->sort_composer)
+	{
+	    mhod.type = MHOD_ID_SORT_COMPOSER;
+	    mhod.data.string = track->sort_composer;
+	    mk_mhod (fexp, &mhod);
+	    ++mhod_num;
+	}
+	if (track->sort_tvshow && *track->sort_tvshow)
+	{
+	    mhod.type = MHOD_ID_SORT_TVSHOW;
+	    mhod.data.string = track->sort_tvshow;
+	    mk_mhod (fexp, &mhod);
+	    ++mhod_num;
+	}
 	if (track->chapterdata_raw && track->chapterdata_raw_length)
 	{
 	    mhod.type = MHOD_ID_CHAPTERDATA;
 	    mhod.data.chapterdata_track = track;
-	    mk_mhod (cts, &mhod);
+	    mk_mhod (fexp, &mhod);
 	    ++mhod_num;
 	}
         /* Fill in the missing items of the mhit header */
@@ -3965,7 +4445,7 @@
 	mhod.valid = TRUE;
 	mhod.type = MHOD_ID_PLAYLIST;
 	mhod.data.track_pos = i;
-	mk_mhod (cts, &mhod);
+	mk_mhod (fexp, &mhod);
 	/* note: with iTunes 4.9 the mhod is counted as a child to
 	   mhip, so we have put the total length of the mhip and mhod
 	   into the mhip header */
@@ -4021,7 +4501,7 @@
     mhod.valid = TRUE;
     mhod.type = MHOD_ID_TITLE;
     mhod.data.string = album;
-    mk_mhod (cts, &mhod);
+    mk_mhod (fexp, &mhod);
     fix_header (cts, mhip_seek);
 
     /* write members */
@@ -4037,7 +4517,7 @@
 	mk_mhip (fexp, 1, 0, mhip_id, track->id, 0, groupid);
 	mhod.type = MHOD_ID_PLAYLIST;
 	mhod.data.track_pos = mhip_id;
-	mk_mhod (cts, &mhod);
+	mk_mhod (fexp, &mhod);
 	fix_header (cts, mhip_seek);
     }
 }
@@ -4102,7 +4582,6 @@
 }
 
 
-
 /* corresponds to mk_mhyp */
 /* mhsd_type: 2: write normal playlists
               3: write podcast playlist in special format */
@@ -4114,6 +4593,8 @@
     WContents *cts;
     gboolean result = TRUE;
     MHODData mhod;
+    gint mhodnum;
+    guint32 mac_time;
 
     g_return_val_if_fail (fexp, FALSE);
     g_return_val_if_fail (fexp->itdb, FALSE);
@@ -4130,23 +4611,30 @@
     put_header (cts, "mhyp");      /* header                    */
     put32lint (cts, 108);          /* length		        */
     put32lint (cts, -1);           /* size -> later             */
+    mhodnum = 2;
     if (pl->is_spl)
-	put32lint (cts, 4);        /* nr of mhods               */
+    {   /* 2 more SPL MHODs */
+	mhodnum += 2;
+    }
     else
-	put32lint (cts, 2);        /* nr of mhods               */
+    {
+	if ((pl->type == ITDB_PL_TYPE_MPL) && pl->members)
+	{   /* 5 more MHOD 52 lists */
+	    mhodnum += 5;
+	}
+    }
+    put32lint (cts, mhodnum);      /* nr of mhods               */
     /* number of tracks in plist */
     put32lint (cts, -1);           /* number of mhips -> later  */
     put8int (cts, pl->type);       /* 1 = main, 0 = visible     */
     put8int (cts, pl->flag1);      /* unknown                   */
     put8int (cts, pl->flag2);      /* unknown                   */
     put8int (cts, pl->flag3);      /* unknown                   */
-    put32lint (cts, pl->timestamp);/* some timestamp            */
+    mac_time = device_time_time_t_to_mac (fexp->itdb->device, pl->timestamp);
+    put32lint (cts, mac_time);     /* some timestamp            */
     put64lint (cts, pl->id);       /* 64 bit ID                 */
-    put32lint (cts, 1);            /* mhodcount: we only write
-				    * one mhod type < 50        */
-    put16lint (cts, 1);            /* libmhodcount: we don't write
-				      mhod type 52, and "1" seems to
-				      be the default            */
+    put32lint (cts, 0);            /* unknown, always 0?        */
+    put16lint (cts, 1);            /* string mhod count (1)     */
     put16lint (cts, pl->podcastflag);
     put32lint (cts, pl->sortorder);
     put32_n0 (cts, 15);            /* ?                         */
@@ -4154,18 +4642,38 @@
     mhod.valid = TRUE;
     mhod.type = MHOD_ID_TITLE;
     mhod.data.string = pl->name;
-    mk_mhod (cts, &mhod);
+    mk_mhod (fexp, &mhod);
     mk_long_mhod_id_playlist (fexp, pl);
 
-    if (pl->is_spl)
+    if ((pl->type == ITDB_PL_TYPE_MPL) && pl->members)
+    {   /* write out the MHOD 52 lists */
+	/* We have to sort all tracks five times. To speed this up,
+	   translate the utf8 keys into collate_keys and use the
+	   faster strcmp() for comparison */
+	mhod.valid = TRUE;
+	mhod.type = MHOD_ID_LIBPLAYLISTINDEX;
+	mhod.data.mhod52coltracks = mhod52_make_collate_keys (pl->members);
+	mhod.data2.mhod52sorttype = MHOD52_SORTTYPE_TITLE;
+	mk_mhod (fexp, &mhod);
+	mhod.data2.mhod52sorttype = MHOD52_SORTTYPE_ARTIST;
+	mk_mhod (fexp, &mhod);
+	mhod.data2.mhod52sorttype = MHOD52_SORTTYPE_ALBUM;
+	mk_mhod (fexp, &mhod);
+	mhod.data2.mhod52sorttype = MHOD52_SORTTYPE_GENRE;
+	mk_mhod (fexp, &mhod);
+	mhod.data2.mhod52sorttype = MHOD52_SORTTYPE_COMPOSER;
+	mk_mhod (fexp, &mhod);
+	mhod52_free_collate_keys (mhod.data.mhod52coltracks);
+    }
+    else  if (pl->is_spl)
     {  /* write the smart rules */
 	mhod.type = MHOD_ID_SPLPREF;
 	mhod.data.splpref = &pl->splpref;
-	mk_mhod (cts, &mhod);
+	mk_mhod (fexp, &mhod);
 
 	mhod.type = MHOD_ID_SPLRULES;
 	mhod.data.splrules = &pl->splrules;
-	mk_mhod (cts, &mhod);
+	mk_mhod (fexp, &mhod);
     }
 
     if (itdb_playlist_is_podcasts(pl) && (mhsd_type == 3))
@@ -4200,7 +4708,7 @@
     mk_mhsd (fexp, mhsd_type); /* write header */
     /* write header with nr. of playlists */
     mk_mhlp (fexp);
-    for(gl=fexp->itdb->playlists; gl; gl=gl->next)
+    for (gl=fexp->itdb->playlists; gl; gl=gl->next)
     {
 	Itdb_Playlist *pl = gl->data;
 	g_return_val_if_fail (pl, FALSE);
@@ -4286,9 +4794,10 @@
 }
 
 
-/* reassign the iPod IDs and make sure the itdb->tracks are in the
-   same order as the mpl */
-static void reassign_ids (FExport *fexp)
+/* - reassign the iPod IDs
+   - make sure the itdb->tracks are in the same order as the mpl
+*/
+static void prepare_itdb_for_write (FExport *fexp)
 {
     GList *gl;
     Itdb_iTunesDB *itdb;
@@ -4308,18 +4817,20 @@
 
     for (gl=g_list_last(mpl->members); gl; gl=gl->prev)
     {
+	GList *link;
 	Itdb_Track *track = gl->data;
 	g_return_if_fail (track);
-	g_return_if_fail (g_list_find (itdb->tracks, track));
+	link = g_list_find (itdb->tracks, track);
+	g_return_if_fail (link);
 
 	/* move this track to the beginning of itdb_tracks */
-	itdb->tracks = g_list_remove (itdb->tracks, track);
+	itdb->tracks = g_list_delete_link (itdb->tracks, link);
 	itdb->tracks = g_list_prepend (itdb->tracks, track);
     }
 
-    fexp->next_id = 52;
+    fexp->next_id = FIRST_IPOD_ID;
 
-    /* assign unique IDs */
+    /* assign unique IDs and create sort keys */
     for (gl=itdb->tracks; gl; gl=gl->next)
     {
 	Itdb_Track *track = gl->data;
@@ -4363,8 +4874,9 @@
        FIXME: figure out a way to store the artwork data when storing
        to local directories. At the moment it's the application's task
        to handle this. */
-    if (itdb->device && itdb_device_get_artwork_formats(itdb->device))
+    if (itdb_device_supports_artwork (itdb->device)) {
 		ipod_write_artwork_db (itdb);
+    }
 #endif
 
     fexp = g_new0 (FExport, 1);
@@ -4374,8 +4886,8 @@
 
     cts->reversed = (itdb->device->byte_order == G_BIG_ENDIAN);
 
-    reassign_ids (fexp);
-
+    prepare_itdb_for_write (fexp);
+    
     mk_mhbd (fexp, 3);   /* three mhsds */
     /* write tracklist */
     if (write_mhsd_tracks (fexp))
@@ -4677,7 +5189,7 @@
     fexp->wcontents = wcontents_new (filename);
     cts = fexp->wcontents;
 
-    reassign_ids (fexp);
+    prepare_itdb_for_write (fexp);
 
     put24bint (cts, itdb_tracks_number (itdb));
     put24bint (cts, 0x010600);
@@ -4975,9 +5487,290 @@
     return itdb_device_musicdirs_number (itdb->device);
 }
 
+/**
+ * itdb_cp_get_dest_filename:
+ * @track: track to transfer or NULL
+ * @mountpoint: mountpoint of your iPod or NULL
+ * @filename: the source file
+ * @error: return location for a #GError or NULL
+ *
+ * Creates a valid filename on the iPod where to copy @filename.
+ *
+ * You must either provide @track or @mountpoint. Providing @track is
+ * not thread-safe (accesses track->itdb->device and may even write to
+ * track->itdb->device). Providing @mountpoint is thread-safe but
+ * slightly slower because the number of music directories is counted
+ * each time the function is called.
+ *
+ * You can use #itdb_cp() to copy the track to the iPod or implement
+ * your own copy function. After the file was copied you have to call
+ * #itdb_cp_finalize() to obtain relevant update information for
+ * #Itdb_Track.
+ *
+ * Return value: a valid filename on the iPod to where @filename can
+ * be copied or NULL in case of an error. In that case @error is set
+ * accordingly. You must free the filename when it is no longer
+ * needed.
+ **/
+gchar *itdb_cp_get_dest_filename (Itdb_Track *track,
+                                  const gchar *mountpoint,
+				  const gchar *filename,
+				  GError **error)
+{
+    gchar *ipod_fullfile = NULL;
 
+    /* either supply mountpoint or track */
+    g_return_val_if_fail (mountpoint || track, NULL);
+    /* if mountpoint is not set, track->itdb is required */
+    g_return_val_if_fail (mountpoint || track->itdb, NULL);
+    g_return_val_if_fail (filename, NULL);
 
+    if (!mountpoint)
+    {
+	mountpoint = itdb_get_mountpoint (track->itdb);
+    }
+
+    if (!mountpoint)
+    {
+	g_set_error (error,
+		     ITDB_FILE_ERROR,
+		     ITDB_FILE_ERROR_NOTFOUND,
+		     _("Mountpoint not set."));
+	return NULL;
+    }
+
+    /* If track->ipod_path exists, we use that one instead. */
+    if (track)
+    {
+	ipod_fullfile = itdb_filename_on_ipod (track);
+    }
+
+    if (!ipod_fullfile)
+    {
+	gint dir_num, musicdirs_number;
+	gchar *dest_components[] = {NULL, NULL, NULL};
+	gchar *parent_dir_filename, *music_dir;
+	gchar *original_suffix;
+	gchar dir_num_str[6];
+	gint32 oops = 0;
+	gint32 rand = g_random_int_range (0, 899999); /* 0 to 900000 */
+
+	music_dir = itdb_get_music_dir (mountpoint);
+	if (!music_dir)
+	{
+	    error_no_music_dir (mountpoint, error);
+	    return NULL;
+	}
+
+	if (track)
+	{
+	    musicdirs_number = itdb_musicdirs_number (track->itdb);
+	}
+	else
+	{
+	    musicdirs_number = itdb_musicdirs_number_by_mountpoint (mountpoint);
+	}
+	if (musicdirs_number <= 0)
+	{
+	    g_set_error (error,
+			 ITDB_FILE_ERROR,
+			 ITDB_FILE_ERROR_NOTFOUND,
+			 _("No 'F..' directories found in '%s'."),
+			 music_dir);
+	    g_free (music_dir);
+	    return NULL;
+	}
+
+	dir_num = g_random_int_range (0, musicdirs_number);
+
+	g_snprintf (dir_num_str, 6, "F%02d", dir_num);
+	dest_components[0] = dir_num_str;
+  
+	parent_dir_filename =
+	    itdb_resolve_path (music_dir, (const gchar **)dest_components);
+	if(parent_dir_filename == NULL)
+	{
+	    /* Can't find the F%02d directory */
+	    gchar *str = g_build_filename (music_dir,
+					   dest_components[0], NULL);
+	    g_set_error (error,
+			 ITDB_FILE_ERROR,
+			 ITDB_FILE_ERROR_NOTFOUND,
+			 _("Path not found: '%s'."),
+			 str);
+	    g_free (str);
+	    g_free (music_dir);
+	    return NULL;
+	}
+
+	/* we need the original suffix of pcfile to construct a correct ipod
+	   filename */
+	original_suffix = strrchr (filename, '.');
+	/* If there is no ".mp3", ".m4a" etc, set original_suffix to empty
+	   string. Note: the iPod will most certainly ignore this file... */
+	if (!original_suffix) original_suffix = "";
+
+	/* use lower-case version of extension as some iPods seem to
+	   choke on upper-case extension. */
+	original_suffix = g_ascii_strdown (original_suffix, -1);
+
+	do
+	{   /* we need to loop until we find an unused filename */
+	    dest_components[1] = 
+		g_strdup_printf("gtkpod%06d%s",
+				rand + oops, original_suffix);
+	    ipod_fullfile = itdb_resolve_path (
+		parent_dir_filename,
+		(const gchar **)&dest_components[1]);
+	    if(ipod_fullfile)
+	    {   /* already exists -- try next */
+		g_free(ipod_fullfile);
+		ipod_fullfile = NULL;
+	    }
+	    else
+	    {   /* found unused file -- build filename */
+		ipod_fullfile = g_build_filename (parent_dir_filename,
+						  dest_components[1], NULL);
+	    }
+	    g_free (dest_components[1]);
+	    ++oops;
+	} while (!ipod_fullfile);
+	g_free(parent_dir_filename);
+	g_free (music_dir);
+	g_free (original_suffix);
+    }
+
+    return ipod_fullfile;
+}
+
+
 /**
+ * itdb_cp_finalize:
+ * @track: track to update or NULL
+ * @mountpoint: mountpoint of your iPod or NULL
+ * @dest_filename: the name of the file on the iPod copied to
+ * @error: return location for a #GError or NULL
+ *
+ * Updates information in @track necessary for the iPod. You must
+ * either supply @track or @mountpoint. If @track == NULL, a new track
+ * structure is created that must be freed with #itdb_track_free()
+ * when it is no longer needed.
+ *
+ * The following fields are updated:
+ *
+ * - ipod_path
+ * - filetype_marker
+ * - transferred
+ * - size
+ *
+ * Return value: on success a pointer to the #Itdb_Track item passed
+ * or a new #Itdb_Track item if @track was NULL. In the latter case
+ * you must free the memory using #itdb_track_free() when the item is
+ * no longer used. If an error occurs NULL is returned and @error is
+ * set accordingly. Errors occur when @dest_filename cannot be
+ * accessed or the mountpoint is not set.
+ **/
+Itdb_Track *itdb_cp_finalize (Itdb_Track *track,
+			      const gchar *mountpoint,
+			      const gchar *dest_filename,
+			      GError **error)
+{
+    const gchar *suffix;
+    Itdb_Track *use_track;
+    gint i, mplen;
+    struct stat statbuf;
+
+    /* either supply mountpoint or track */
+    g_return_val_if_fail (mountpoint || track, NULL);
+    /* if mountpoint is not set, track->itdb is required */
+    g_return_val_if_fail (mountpoint || track->itdb, NULL);
+    g_return_val_if_fail (dest_filename, NULL);
+
+    if (!mountpoint)
+    {
+	mountpoint = itdb_get_mountpoint (track->itdb);
+    }
+
+    if (!mountpoint)
+    {
+	g_set_error (error,
+		     ITDB_FILE_ERROR,
+		     ITDB_FILE_ERROR_NOTFOUND,
+		     _("Mountpoint not set."));
+	return NULL;
+    }
+
+    if (stat (dest_filename, &statbuf) == -1)
+    {
+	g_set_error (error,
+		     G_FILE_ERROR,
+		     g_file_error_from_errno (errno),
+		     _("'%s' could not be accessed (%s)."),
+		     dest_filename, g_strerror (errno));
+	return NULL;
+    }
+
+    if (strlen (mountpoint) >= strlen (dest_filename))
+    {
+	g_set_error (error,
+		     ITDB_FILE_ERROR,
+		     ITDB_FILE_ERROR_CORRUPT,
+		     _("Destination file '%s' does not appear to be on the iPod mounted at '%s'."),
+		     dest_filename, mountpoint);
+	return NULL;
+    }
+
+    if (!track)
+    {
+	use_track = itdb_track_new ();
+    }
+    else
+    {
+	use_track = track;
+    }
+
+    use_track->transferred = TRUE;
+    use_track->size = statbuf.st_size;
+
+    /* we need the original suffix of pcfile to construct a correct ipod
+       filename */
+    suffix = strrchr (dest_filename, '.');
+    /* If there is no ".mp3", ".m4a" etc, set original_suffix to empty
+       string. Note: the iPod will most certainly ignore this file... */
+    if (!suffix) suffix = ".";
+
+    /* set filetype from the suffix, e.g. '.mp3' -> 'MP3 ' */
+    use_track->filetype_marker = 0;
+    for (i=1; i<=4; ++i)   /* start with i=1 to skip the '.' */
+    {
+	use_track->filetype_marker = use_track->filetype_marker << 8;
+	if (strlen (suffix) > i)
+	    use_track->filetype_marker |= g_ascii_toupper (suffix[i]);
+	else
+	    use_track->filetype_marker |= ' ';
+    }
+
+    /* now extract filepath for use_track->ipod_path from ipod_fullfile */
+    /* ipod_path must begin with a '/' */
+    g_free (use_track->ipod_path);
+    mplen = strlen (mountpoint); /* length of mountpoint in bytes */
+    if (dest_filename[mplen] == G_DIR_SEPARATOR)
+    {
+	use_track->ipod_path = g_strdup (&dest_filename[mplen]);
+    }
+    else
+    {
+	use_track->ipod_path = g_strdup_printf ("%c%s", G_DIR_SEPARATOR,
+						&dest_filename[mplen]);
+    }
+    /* convert to iPod type */
+    itdb_filename_fs2ipod (use_track->ipod_path);
+
+    return use_track;
+}
+
+
+/**
  * itdb_cp_track_to_ipod:
  * @track: the #Itdb_Track to copy (containing @filename metadata)
  * @filename: the source file
@@ -4986,14 +5779,14 @@
  * Copy one track to the iPod. The PC filename is @filename
  * and is taken literally.
  *
- * The mountpoint of the iPod (in local encoding) is expected in
- * track-&gt;itdb-&gt;mountpoint.
+ * The mountpoint of the iPod (in local encoding) must have been set
+ * with itdb_set_mountpoint() (done automatically when reading an
+ * iTunesDB).
  *
  * If @track-&gt;transferred is set to TRUE, nothing is done. Upon
  * successful transfer @track-&gt;transferred is set to TRUE.
  *
- * For storage, the directories "f00 ... fnn" will be
- * cycled through.
+ * For storage, the directories "f00 ... fnn" will be used randomly.
  *
  * The filename is constructed as "gtkpod"&lt;random number&gt; and copied
  * to @track-&gt;ipod_path. If this file already exists, &lt;random number&gt;
@@ -5009,157 +5802,37 @@
  * set accordingly.
  **/
 gboolean itdb_cp_track_to_ipod (Itdb_Track *track,
-				gchar *filename, GError **error)
+				const gchar *filename, GError **error)
 {
-  static gint dir_num = -1;
-  gchar *track_db_path, *ipod_fullfile;
-  gboolean success;
-  gint mplen = 0;
-  gint i;
-  const gchar *mountpoint;
-  Itdb_iTunesDB *itdb;
+    gchar *dest_filename;
+    gboolean result = FALSE;
 
-  g_return_val_if_fail (track, FALSE);
-  g_return_val_if_fail (track->itdb, FALSE);
-  g_return_val_if_fail (itdb_get_mountpoint (track->itdb), FALSE);
-  g_return_val_if_fail (filename, FALSE);
+    g_return_val_if_fail (track, FALSE);
+    g_return_val_if_fail (track->itdb, FALSE);
+    g_return_val_if_fail (itdb_get_mountpoint (track->itdb), FALSE);
+    g_return_val_if_fail (filename, FALSE);
 
-  if(track->transferred)  return TRUE; /* nothing to do */ 
+    if(track->transferred)  return TRUE; /* nothing to do */ 
 
-  mountpoint = itdb_get_mountpoint (track->itdb);
-  itdb = track->itdb;
+    dest_filename = itdb_cp_get_dest_filename (track, NULL, filename, error);
 
-  /* If track->ipod_path exists, we use that one instead. */
-  ipod_fullfile = itdb_filename_on_ipod (track);
+    if (dest_filename)
+    {
+	if (itdb_cp (filename, dest_filename, error))
+	{
+	    if (itdb_cp_finalize (track, NULL, dest_filename, error))
+	    {
+		result = TRUE;
+	    }
+	}
+	g_free (dest_filename);
+    }
 
-  if (!ipod_fullfile)
-  {
-      gchar *dest_components[] = {NULL, NULL, NULL};
-      gchar *parent_dir_filename, *music_dir;
-      gchar *original_suffix;
-      gchar dir_num_str[5];
-      gint32 oops = 0;
-      gint32 rand = g_random_int_range (0, 899999); /* 0 to 900000 */
+    return result;
+}
 
-      music_dir = itdb_get_music_dir (mountpoint);
-      if (!music_dir)
-      {
-	  error_no_music_dir (mountpoint, error);
-	  return FALSE;
-      }
 
-      if (itdb_musicdirs_number (itdb) <= 0)
-      {
-	  g_set_error (error,
-		       ITDB_FILE_ERROR,
-		       ITDB_FILE_ERROR_NOTFOUND,
-		       _("No 'F..' directories found in '%s'."),
-		       music_dir);
-	  g_free (music_dir);
-	  return FALSE;
-      }
 
-      if (dir_num == -1)
-      {
-	  dir_num = g_random_int_range (0, itdb_musicdirs_number (itdb));
-      }
-      else
-      {
-	  dir_num = (dir_num + 1) % itdb_musicdirs_number (itdb);
-      }
-
-      g_snprintf (dir_num_str, 5, "F%02d", dir_num);
-      dest_components[0] = dir_num_str;
-  
-      parent_dir_filename =
-	  itdb_resolve_path (music_dir, (const gchar **)dest_components);
-      if(parent_dir_filename == NULL)
-      {
-	  /* Can't find the F%02d directory */
-	  gchar *str = g_build_filename (music_dir,
-					 dest_components[0], NULL);
-	  g_set_error (error,
-		       ITDB_FILE_ERROR,
-		       ITDB_FILE_ERROR_NOTFOUND,
-		       _("Path not found: '%s'."),
-		       str);
-	  g_free (str);
-	  g_free (music_dir);
-	  return FALSE;
-      }
-
-      /* we need the original suffix of pcfile to construct a correct ipod
-	 filename */
-      original_suffix = strrchr (filename, '.');
-      /* If there is no ".mp3", ".m4a" etc, set original_suffix to empty
-	 string. Note: the iPod will most certainly ignore this file... */
-      if (!original_suffix) original_suffix = "";
-
-      /* set filetype from the suffix, e.g. '.mp3' -> 'MP3 ' */
-      track->filetype_marker = 0;
-      for (i=1; i<=4; ++i)   /* start with i=1 to skip the '.' */
-      {
-	  track->filetype_marker = track->filetype_marker << 8;
-	  if (strlen (original_suffix) > i)
-	      track->filetype_marker |= g_ascii_toupper (original_suffix[i]);
-	  else
-	      track->filetype_marker |= g_ascii_toupper (' ');
-      }
-      do
-      {   /* we need to loop until we find an unused filename */
-	  dest_components[1] = 
-	      g_strdup_printf("gtkpod%06d%s",
-			      rand + oops, original_suffix);
-	  ipod_fullfile = itdb_resolve_path (
-	      parent_dir_filename,
-	      (const gchar **)&dest_components[1]);
-	  if(ipod_fullfile)
-	  {   /* already exists -- try next */
-              g_free(ipod_fullfile);
-              ipod_fullfile = NULL;
-	  }
-	  else
-	  {   /* found unused file -- build filename */
-	      ipod_fullfile = g_build_filename (parent_dir_filename,
-					        dest_components[1], NULL);
-	  }
-	  g_free (dest_components[1]);
-	  ++oops;
-      } while (!ipod_fullfile);
-      g_free(parent_dir_filename);
-      g_free (music_dir);
-  }
-  /* now extract filepath for track->ipod_path from ipod_fullfile */
-  /* ipod_path must begin with a '/' */
-  mplen = strlen (mountpoint); /* length of mountpoint in bytes */
-  if (ipod_fullfile[mplen] == G_DIR_SEPARATOR)
-  {
-      track_db_path = g_strdup (&ipod_fullfile[mplen]);
-  }
-  else
-  {
-      track_db_path = g_strdup_printf ("%c%s", G_DIR_SEPARATOR,
-				       &ipod_fullfile[mplen]);
-  }
-  /* convert to iPod type */
-  itdb_filename_fs2ipod (track_db_path);
-  
-/* 	printf ("ff: %s\ndb: %s\n", ipod_fullfile, track_db_path); */
-
-  success = itdb_cp (filename, ipod_fullfile, error);
-  if (success)
-  {
-      track->transferred = TRUE;
-      g_free (track->ipod_path);
-      track->ipod_path = g_strdup (track_db_path);
-  }
-
-  g_free (track_db_path);
-  g_free (ipod_fullfile);
-  return success;
-}
-
-
 /**
  * itdb_filename_on_ipod:
  * @track: an #Itdb_Track
@@ -5179,29 +5852,35 @@
 gchar *itdb_filename_on_ipod (Itdb_Track *track)
 {
     gchar *result = NULL;
+    gchar *buf;
     const gchar *mp;
 
     g_return_val_if_fail (track, NULL);
+
+    if (!track->ipod_path || !*track->ipod_path)
+    {   /* No filename set */
+	return NULL;
+    }
+
     g_return_val_if_fail (track->itdb, NULL);
 
     if (!itdb_get_mountpoint (track->itdb)) return NULL;
 
     mp = itdb_get_mountpoint (track->itdb);
 
-    if(track->ipod_path && *track->ipod_path)
+    buf = g_strdup (track->ipod_path);
+    itdb_filename_ipod2fs (buf);
+    result = g_build_filename (mp, buf, NULL);
+    g_free (buf);
+
+    if (!g_file_test (result, G_FILE_TEST_EXISTS))
     {
-	gchar *buf = g_strdup (track->ipod_path);
-	itdb_filename_ipod2fs (buf);
-	result = g_build_filename (mp, buf, NULL);
-	g_free (buf);
-	if (!g_file_test (result, G_FILE_TEST_EXISTS))
-	{
-	    gchar **components = g_strsplit (track->ipod_path,":",10);
-	    g_free (result);
-	    result = itdb_resolve_path (mp, (const gchar **)components);
-	    g_strfreev (components);
-	}
+	gchar **components = g_strsplit (track->ipod_path,":",10);
+	g_free (result);
+	result = itdb_resolve_path (mp, (const gchar **)components);
+	g_strfreev (components);
     }
+
     return result;
 }
 
@@ -5562,54 +6241,56 @@
 /**
  * itdb_time_get_mac_time:
  *
- * Gets the current time expressed in 'Mac' unit (ie in number of seconds since
- * 1/1/1904).
+ * Gets the current time in a format appropriate for storing in the libgpod
+ * data structures
  * 
- * Return value: current time in 'Mac' unit.
+ * Return value: current time
+ *
+ * Deprecated: kept for compatibility with older code, directly use 
+ * g_get_current_time() or time(NULL) instead
  **/
-guint64 itdb_time_get_mac_time (void)
+time_t itdb_time_get_mac_time (void)
 {
     GTimeVal time;
 
     g_get_current_time (&time);
-    return itdb_time_host_to_mac (time.tv_sec);
+
+    return time.tv_sec;
 }
 
 
 /**
  * itdb_time_mac_to_host:
- * @mactime: time expressed in 'Mac' unit
+ * @time: time expressed in libgpod format
  *
- * Convert a Mac timestamp to host system time stamp -- modify
- * this function if necessary to port to host systems with different
- * start of Epoch.
- * A "0" time will not be converted.
+ * Converts a timestamp from libgpod format to host system timestamp.
  *
  * Return value: timestamp for the host system
+ *
+ * Deprecated: It's been kept for compatibility with older code, but this
+ * function is now a no-op
  **/
-time_t itdb_time_mac_to_host (guint64 mactime)
+time_t itdb_time_mac_to_host (time_t time)
 {
-    if (mactime != 0)  return (time_t)(mactime - 2082844800);
-    else               return (time_t)mactime;
+    return time;
 }
 
-
 /**
  * itdb_time_host_to_mac:
  * @time: time expressed in host unit
  *
- * Convert host system timestamp to Mac time stamp -- modify
- * this function if necessary to port to host systems with different
- * start of Epoch 
+ * Convert host system timestamp to libgpod format timestamp
  *
- * Return value: a Mac timestamp
+ * Return value: a libgpod timestamp
+ *
+ * Deprecated: It's been kept for compatibility with older code, but this
+ * function is now a no-op
  **/
-guint64 itdb_time_host_to_mac (time_t time)
+time_t itdb_time_host_to_mac (time_t time)
 {
-    return (guint64)(((gint64)time) + 2082844800);
+    return time;
 }
 
-
 /**
  * itdb_init_ipod:
  * @mountpoint:   the iPod mountpoint

Modified: libgpod/branches/upstream/current/src/itdb_photoalbum.c
===================================================================
--- libgpod/branches/upstream/current/src/itdb_photoalbum.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_photoalbum.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,4 +1,4 @@
-/* Time-stamp: <2007-01-15 01:02:46 jcs>
+/* Time-stamp: <2007-06-01 23:03:58 jcs>
 |
 |  Copyright (C) 2002-2006 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
@@ -24,7 +24,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_photoalbum.c,v 1.16 2007/01/14 13:34:07 jcsjcs Exp $
+|  $Id: itdb_photoalbum.c 1515 2007-06-01 14:19:21Z jcsjcs $
 */
 #include <config.h>
 
@@ -35,8 +35,10 @@
 #include <stdio.h>
 #include <string.h>
 #include <glib/gi18n-lib.h>
+#ifdef HAVE_GDKPIXBUF
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#endif
 
-
 /* Short summary:
 
    itdb_photodb_parse():
@@ -222,6 +224,15 @@
     photodb = itdb_photodb_new ();
     itdb_device_set_mountpoint (photodb->device, mp);
     ipod_parse_photo_db (photodb);
+
+    /* if photodb is empty, create a valid photodb including the main
+       Photo Library album */
+    if (!photodb->photos && !photodb->photoalbums)
+    {
+	itdb_photodb_free (photodb);
+	photodb = itdb_photodb_create (mp);
+    }
+
     return photodb;
 }
 
@@ -331,6 +342,7 @@
 						      const gchar *filename,
 						      const guchar *image_data,
 						      gsize image_data_len,
+						      gpointer pixbuf,
 						      gint position,
 						      gint rotation,
 						      GError **error)
@@ -345,6 +357,7 @@
     g_return_val_if_fail (db->device, NULL);
     g_return_val_if_fail (filename || image_data, NULL);
     g_return_val_if_fail (!(image_data && (image_data_len == 0)), NULL);
+    g_return_val_if_fail (!(pixbuf && (!GDK_IS_PIXBUF (pixbuf))), NULL);
 
     if (!ipod_supports_photos (db->device))
     {
@@ -421,6 +434,14 @@
 							   rotation,
 							   error);
 	}
+	if (pixbuf) 
+	{
+	  result = itdb_artwork_add_thumbnail_from_pixbuf (artwork,
+							   format->type, 
+							   pixbuf,
+							   rotation,
+							   error);
+	}
     }
 
     if (result != TRUE)
@@ -483,7 +504,7 @@
     g_return_val_if_fail (db, FALSE);
     g_return_val_if_fail (filename, FALSE);
 
-    return itdb_photodb_add_photo_internal (db, filename, NULL, 0,
+    return itdb_photodb_add_photo_internal (db, filename, NULL, 0, NULL,
 					    position, rotation, error);
 }
 
@@ -520,7 +541,41 @@
     g_return_val_if_fail (db, FALSE);
     g_return_val_if_fail (image_data, FALSE);
 
-    return itdb_photodb_add_photo_internal (db, NULL, image_data, image_data_len,
+    return itdb_photodb_add_photo_internal (db, NULL, 
+					    image_data, image_data_len,
+					    NULL, position, rotation, error);
+}
+
+/**
+ * itdb_photodb_add_photo_from_pixbuf:
+ * @db: the #Itdb_PhotoDB to add the photo to.
+ * @pixbuf: a #GdkPixbuf to use as the image data
+ * @position: position where to insert the new photo (-1 to append at
+ * the end)
+ * @rotation: angle by which the image should be rotated
+ * counterclockwise. Valid values are 0, 90, 180 and 270.
+ * @error: return location for a #GError or NULL
+ * 
+ * Add a photo to the PhotoDB. The photo is automatically added to the
+ * first Photoalbum, which by default contains a list of all photos in
+ * the database. If no Photoalbums exist one is created automatically.
+ *
+ * For the rotation angle you can also use the gdk constants
+ * GDK_PIXBUF_ROTATE_NONE, ..._COUNTERCLOCKWISE, ..._UPSIDEDOWN AND
+ * ..._CLOCKWISE.
+ *
+ * Return value: a pointer to the added photo.
+ **/
+Itdb_Artwork *itdb_photodb_add_photo_from_pixbuf (Itdb_PhotoDB *db,
+						  gpointer pixbuf,
+						  gint position,
+						  gint rotation,
+						  GError **error)
+{
+    g_return_val_if_fail (db, FALSE);
+    g_return_val_if_fail (pixbuf, FALSE);
+
+    return itdb_photodb_add_photo_internal (db, NULL, NULL, 0, pixbuf,
 					    position, rotation, error);
 }
 

Modified: libgpod/branches/upstream/current/src/itdb_playlist.c
===================================================================
--- libgpod/branches/upstream/current/src/itdb_playlist.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_playlist.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,4 +1,4 @@
-/* Time-stamp: <2006-10-22 17:42:28 jcs>
+/* Time-stamp: <2007-02-25 11:52:48 jcs>
 |
 |  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
@@ -24,7 +24,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_playlist.c,v 1.20 2006/10/22 08:42:49 jcsjcs Exp $
+|  $Id: itdb_playlist.c 1423 2007-04-30 00:46:48Z jcsjcs $
 */
 
 #include "itdb_private.h"
@@ -47,30 +47,31 @@
  * Return value: TRUE if @action is known. Otherwise a warning is displayed 
  * and FALSE is returned. 
  **/
-gboolean itdb_spl_action_known (SPLAction action)
+gboolean itdb_spl_action_known (ItdbSPLAction action)
 {
     gboolean result = FALSE;
 
     switch (action)
     {
-    case SPLACTION_IS_INT:
-    case SPLACTION_IS_GREATER_THAN:
-    case SPLACTION_IS_NOT_GREATER_THAN:
-    case SPLACTION_IS_LESS_THAN:
-    case SPLACTION_IS_NOT_LESS_THAN:
-    case SPLACTION_IS_IN_THE_RANGE:
-    case SPLACTION_IS_NOT_IN_THE_RANGE:
-    case SPLACTION_IS_IN_THE_LAST:
-    case SPLACTION_IS_STRING:
-    case SPLACTION_CONTAINS:
-    case SPLACTION_STARTS_WITH:
-    case SPLACTION_DOES_NOT_START_WITH:
-    case SPLACTION_ENDS_WITH:
-    case SPLACTION_DOES_NOT_END_WITH:
-    case SPLACTION_IS_NOT_INT:
-    case SPLACTION_IS_NOT_IN_THE_LAST:
-    case SPLACTION_IS_NOT:
-    case SPLACTION_DOES_NOT_CONTAIN:
+    case ITDB_SPLACTION_IS_INT:
+    case ITDB_SPLACTION_IS_GREATER_THAN:
+    case ITDB_SPLACTION_IS_NOT_GREATER_THAN:
+    case ITDB_SPLACTION_IS_LESS_THAN:
+    case ITDB_SPLACTION_IS_NOT_LESS_THAN:
+    case ITDB_SPLACTION_IS_IN_THE_RANGE:
+    case ITDB_SPLACTION_IS_NOT_IN_THE_RANGE:
+    case ITDB_SPLACTION_IS_IN_THE_LAST:
+    case ITDB_SPLACTION_IS_STRING:
+    case ITDB_SPLACTION_CONTAINS:
+    case ITDB_SPLACTION_STARTS_WITH:
+    case ITDB_SPLACTION_DOES_NOT_START_WITH:
+    case ITDB_SPLACTION_ENDS_WITH:
+    case ITDB_SPLACTION_DOES_NOT_END_WITH:
+    case ITDB_SPLACTION_IS_NOT_INT:
+    case ITDB_SPLACTION_IS_NOT_IN_THE_LAST:
+    case ITDB_SPLACTION_IS_NOT:
+    case ITDB_SPLACTION_DOES_NOT_CONTAIN:
+    case ITDB_SPLACTION_BINARY_AND:
 	result = TRUE;
     }
     if (result == FALSE)
@@ -82,202 +83,232 @@
 
 /**
  * itdb_splr_get_field_type:
- * @splr: an #SPLRule
+ * @splr: an #Itdb_SPLRule
  *
  * Gets the type of the field of the @splr rule
  *
- * Return value: an #SPLFieldType corresponding to @splr field type 
+ * Return value: an #Itdb_SPLFieldType corresponding to @splr field type 
  * (string, int, date, ...)
  **/
-SPLFieldType itdb_splr_get_field_type (const SPLRule *splr)
+ItdbSPLFieldType itdb_splr_get_field_type (const Itdb_SPLRule *splr)
 {
-    g_return_val_if_fail (splr != NULL, splft_unknown);
+    g_return_val_if_fail (splr != NULL, ITDB_SPLFT_UNKNOWN);
 
-    switch(splr->field)
+    switch((ItdbSPLField)splr->field)
     {
-    case SPLFIELD_SONG_NAME:
-    case SPLFIELD_ALBUM:
-    case SPLFIELD_ARTIST:
-    case SPLFIELD_GENRE:
-    case SPLFIELD_KIND:
-    case SPLFIELD_COMMENT:
-    case SPLFIELD_COMPOSER:
-    case SPLFIELD_GROUPING:
-	return(splft_string);
-    case SPLFIELD_BITRATE:
-    case SPLFIELD_SAMPLE_RATE:
-    case SPLFIELD_YEAR:
-    case SPLFIELD_TRACKNUMBER:
-    case SPLFIELD_SIZE:
-    case SPLFIELD_PLAYCOUNT:
-    case SPLFIELD_DISC_NUMBER:
-    case SPLFIELD_BPM:
-    case SPLFIELD_RATING:
-    case SPLFIELD_TIME: /* time is the length of the track in
+    case ITDB_SPLFIELD_SONG_NAME:
+    case ITDB_SPLFIELD_ALBUM:
+    case ITDB_SPLFIELD_ALBUMARTIST:
+    case ITDB_SPLFIELD_ARTIST:
+    case ITDB_SPLFIELD_GENRE:
+    case ITDB_SPLFIELD_KIND:
+    case ITDB_SPLFIELD_COMMENT:
+    case ITDB_SPLFIELD_COMPOSER:
+    case ITDB_SPLFIELD_GROUPING:
+    case ITDB_SPLFIELD_TVSHOW:
+	return ITDB_SPLFT_STRING;
+    case ITDB_SPLFIELD_BITRATE:
+    case ITDB_SPLFIELD_SAMPLE_RATE:
+    case ITDB_SPLFIELD_YEAR:
+    case ITDB_SPLFIELD_TRACKNUMBER:
+    case ITDB_SPLFIELD_SIZE:
+    case ITDB_SPLFIELD_PLAYCOUNT:
+    case ITDB_SPLFIELD_DISC_NUMBER:
+    case ITDB_SPLFIELD_BPM:
+    case ITDB_SPLFIELD_RATING:
+    case ITDB_SPLFIELD_TIME: /* time is the length of the track in
 			   milliseconds */
-	return(splft_int);
-    case SPLFIELD_COMPILATION:
-	return(splft_boolean);
-    case SPLFIELD_DATE_MODIFIED:
-    case SPLFIELD_DATE_ADDED:
-    case SPLFIELD_LAST_PLAYED:
-	return(splft_date);
-    case SPLFIELD_PLAYLIST:
-	return(splft_playlist);
+    case ITDB_SPLFIELD_SEASON_NR:
+    case ITDB_SPLFIELD_SKIPCOUNT:
+	return ITDB_SPLFT_INT;
+    case ITDB_SPLFIELD_COMPILATION:
+	return ITDB_SPLFT_BOOLEAN;
+    case ITDB_SPLFIELD_DATE_MODIFIED:
+    case ITDB_SPLFIELD_DATE_ADDED:
+    case ITDB_SPLFIELD_LAST_PLAYED:
+    case ITDB_SPLFIELD_LAST_SKIPPED:
+	return ITDB_SPLFT_DATE;
+    case ITDB_SPLFIELD_PLAYLIST:
+	return ITDB_SPLFT_PLAYLIST;
+    case ITDB_SPLFIELD_VIDEO_KIND:
+	return ITDB_SPLFT_BINARY_AND;
     }
-    return(splft_unknown);
+    return(ITDB_SPLFT_UNKNOWN);
 }
 
 
 /**
  * itdb_splr_get_action_type:
- * @splr: an #SPLRule
+ * @splr: an #Itdb_SPLRule
  * 
  * Gets the type of the action associated with @splr.
  *
  * Return value: type (range, date, string...) of the action field 
  **/
-SPLActionType itdb_splr_get_action_type (const SPLRule *splr)
+ItdbSPLActionType itdb_splr_get_action_type (const Itdb_SPLRule *splr)
 {
-    SPLFieldType fieldType;
+    ItdbSPLFieldType fieldType;
 
-    g_return_val_if_fail (splr != NULL, splft_unknown);
+    g_return_val_if_fail (splr != NULL, ITDB_SPLAT_INVALID);
 
     fieldType = itdb_splr_get_field_type (splr);
 
     switch(fieldType)
     {
-    case splft_string:
-	switch (splr->action)
+    case ITDB_SPLFT_STRING:
+	switch ((ItdbSPLAction)splr->action)
 	{
-	case SPLACTION_IS_STRING:
-	case SPLACTION_IS_NOT:
-	case SPLACTION_CONTAINS:
-	case SPLACTION_DOES_NOT_CONTAIN:
-	case SPLACTION_STARTS_WITH:
-	case SPLACTION_DOES_NOT_START_WITH:
-	case SPLACTION_ENDS_WITH:
-	case SPLACTION_DOES_NOT_END_WITH:
-	    return splat_string;
-	case SPLACTION_IS_NOT_IN_THE_RANGE:
-	case SPLACTION_IS_INT:
-	case SPLACTION_IS_NOT_INT:
-	case SPLACTION_IS_GREATER_THAN:
-	case SPLACTION_IS_NOT_GREATER_THAN:
-	case SPLACTION_IS_LESS_THAN:
-	case SPLACTION_IS_NOT_LESS_THAN:
-	case SPLACTION_IS_IN_THE_RANGE:
-	case SPLACTION_IS_IN_THE_LAST:
-	case SPLACTION_IS_NOT_IN_THE_LAST:
-	    return splat_invalid;
-	default:
-	    /* Unknown action type */
-	    g_warning ("Unknown action type %d\n\n", splr->action);
-	    return splat_unknown;
+	case ITDB_SPLACTION_IS_STRING:
+	case ITDB_SPLACTION_IS_NOT:
+	case ITDB_SPLACTION_CONTAINS:
+	case ITDB_SPLACTION_DOES_NOT_CONTAIN:
+	case ITDB_SPLACTION_STARTS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_START_WITH:
+	case ITDB_SPLACTION_ENDS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_END_WITH:
+	    return ITDB_SPLAT_STRING;
+	case ITDB_SPLACTION_IS_NOT_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_INT:
+	case ITDB_SPLACTION_IS_NOT_INT:
+	case ITDB_SPLACTION_IS_GREATER_THAN:
+	case ITDB_SPLACTION_IS_NOT_GREATER_THAN:
+	case ITDB_SPLACTION_IS_LESS_THAN:
+	case ITDB_SPLACTION_IS_NOT_LESS_THAN:
+	case ITDB_SPLACTION_IS_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_LAST:
+	case ITDB_SPLACTION_BINARY_AND:
+	    return ITDB_SPLAT_INVALID;
 	}
-	break;
+	/* Unknown action type */
+	g_warning ("Unknown action type %d\n\n", splr->action);
+	return ITDB_SPLAT_UNKNOWN;
 
-    case splft_int:
-	switch (splr->action)
+    case ITDB_SPLFT_INT:
+	switch ((ItdbSPLAction)splr->action)
 	{
-	case SPLACTION_IS_INT:
-	case SPLACTION_IS_NOT_INT:
-	case SPLACTION_IS_GREATER_THAN:
-	case SPLACTION_IS_NOT_GREATER_THAN:
-	case SPLACTION_IS_LESS_THAN:
-	case SPLACTION_IS_NOT_LESS_THAN:
-	    return splat_int;
-	case SPLACTION_IS_NOT_IN_THE_RANGE:
-	case SPLACTION_IS_IN_THE_RANGE:
-	    return splat_range_int;
-	case SPLACTION_IS_STRING:
-	case SPLACTION_CONTAINS:
-	case SPLACTION_STARTS_WITH:
-	case SPLACTION_DOES_NOT_START_WITH:
-	case SPLACTION_ENDS_WITH:
-	case SPLACTION_DOES_NOT_END_WITH:
-	case SPLACTION_IS_IN_THE_LAST:
-	case SPLACTION_IS_NOT_IN_THE_LAST:
-	case SPLACTION_IS_NOT:
-	case SPLACTION_DOES_NOT_CONTAIN:
-	    return splat_invalid;
-	default:
-	    /* Unknown action type */
-	    g_warning ("Unknown action type %d\n\n", splr->action);
-	    return splat_unknown;
+	case ITDB_SPLACTION_IS_INT:
+	case ITDB_SPLACTION_IS_NOT_INT:
+	case ITDB_SPLACTION_IS_GREATER_THAN:
+	case ITDB_SPLACTION_IS_NOT_GREATER_THAN:
+	case ITDB_SPLACTION_IS_LESS_THAN:
+	case ITDB_SPLACTION_IS_NOT_LESS_THAN:
+	    return ITDB_SPLAT_INT;
+	case ITDB_SPLACTION_IS_NOT_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_IN_THE_RANGE:
+	    return ITDB_SPLAT_RANGE_INT;
+	case ITDB_SPLACTION_BINARY_AND:
+	case ITDB_SPLACTION_IS_STRING:
+	case ITDB_SPLACTION_CONTAINS:
+	case ITDB_SPLACTION_STARTS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_START_WITH:
+	case ITDB_SPLACTION_ENDS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_END_WITH:
+	case ITDB_SPLACTION_IS_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_NOT:
+	case ITDB_SPLACTION_DOES_NOT_CONTAIN:
+	    return ITDB_SPLAT_INVALID;
 	}
-	break;
+	/* Unknown action type */
+	g_warning ("Unknown action type %d\n\n", splr->action);
+	return ITDB_SPLAT_UNKNOWN;
 
-    case splft_boolean:
-	return splat_none;
+    case ITDB_SPLFT_BOOLEAN:
+	return ITDB_SPLAT_NONE;
 
-    case splft_date:
-	switch (splr->action)
+    case ITDB_SPLFT_DATE:
+	switch ((ItdbSPLAction)splr->action)
 	{
-	case SPLACTION_IS_INT:
-	case SPLACTION_IS_NOT_INT:
-	case SPLACTION_IS_GREATER_THAN:
-	case SPLACTION_IS_NOT_GREATER_THAN:
-	case SPLACTION_IS_LESS_THAN:
-	case SPLACTION_IS_NOT_LESS_THAN:
-	    return splat_date;
-	case SPLACTION_IS_IN_THE_LAST:
-	case SPLACTION_IS_NOT_IN_THE_LAST:
-	    return splat_inthelast;
-	case SPLACTION_IS_IN_THE_RANGE:
-	case SPLACTION_IS_NOT_IN_THE_RANGE:
-	    return splat_range_date;
-	case SPLACTION_IS_STRING:
-	case SPLACTION_CONTAINS:
-	case SPLACTION_STARTS_WITH:
-	case SPLACTION_DOES_NOT_START_WITH:
-	case SPLACTION_ENDS_WITH:
-	case SPLACTION_DOES_NOT_END_WITH:
-	case SPLACTION_IS_NOT:
-	case SPLACTION_DOES_NOT_CONTAIN:
-	    return splat_invalid;
-	default:
-	    /* Unknown action type */
-	    g_warning ("Unknown action type %d\n\n", splr->action);
-	    return splat_unknown;
+	case ITDB_SPLACTION_IS_INT:
+	case ITDB_SPLACTION_IS_NOT_INT:
+	case ITDB_SPLACTION_IS_GREATER_THAN:
+	case ITDB_SPLACTION_IS_NOT_GREATER_THAN:
+	case ITDB_SPLACTION_IS_LESS_THAN:
+	case ITDB_SPLACTION_IS_NOT_LESS_THAN:
+	    return ITDB_SPLAT_DATE;
+	case ITDB_SPLACTION_IS_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_LAST:
+	    return ITDB_SPLAT_INTHELAST;
+	case ITDB_SPLACTION_IS_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_RANGE:
+	    return ITDB_SPLAT_RANGE_DATE;
+	case ITDB_SPLACTION_IS_STRING:
+	case ITDB_SPLACTION_CONTAINS:
+	case ITDB_SPLACTION_STARTS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_START_WITH:
+	case ITDB_SPLACTION_ENDS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_END_WITH:
+	case ITDB_SPLACTION_IS_NOT:
+	case ITDB_SPLACTION_DOES_NOT_CONTAIN:
+	case ITDB_SPLACTION_BINARY_AND:
+	    return ITDB_SPLAT_INVALID;
 	}
-	break;
+    case ITDB_SPLFT_BINARY_AND:
+	switch ((ItdbSPLAction)splr->action)
+	{
+	case ITDB_SPLACTION_BINARY_AND:
+	    return ITDB_SPLAT_BINARY_AND;
+	case ITDB_SPLACTION_IS_INT:
+	case ITDB_SPLACTION_IS_NOT_INT:
+	case ITDB_SPLACTION_IS_GREATER_THAN:
+	case ITDB_SPLACTION_IS_NOT_GREATER_THAN:
+	case ITDB_SPLACTION_IS_LESS_THAN:
+	case ITDB_SPLACTION_IS_NOT_LESS_THAN:
+	case ITDB_SPLACTION_IS_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_STRING:
+	case ITDB_SPLACTION_CONTAINS:
+	case ITDB_SPLACTION_STARTS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_START_WITH:
+	case ITDB_SPLACTION_ENDS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_END_WITH:
+	case ITDB_SPLACTION_IS_NOT:
+	case ITDB_SPLACTION_DOES_NOT_CONTAIN:
+	    return ITDB_SPLAT_INVALID;
+	}
 
-    case splft_playlist:
-	switch (splr->action)
+	/* Unknown action type */
+	g_warning ("Unknown action type %d\n\n", splr->action);
+	return ITDB_SPLAT_UNKNOWN;
+
+    case ITDB_SPLFT_PLAYLIST:
+	switch ((ItdbSPLAction)splr->action)
 	{
-	case SPLACTION_IS_INT:
-	case SPLACTION_IS_NOT_INT:
-	    return splat_playlist;
-	case SPLACTION_IS_GREATER_THAN:
-	case SPLACTION_IS_NOT_GREATER_THAN:
-	case SPLACTION_IS_LESS_THAN:
-	case SPLACTION_IS_NOT_LESS_THAN:
-	case SPLACTION_IS_IN_THE_LAST:
-	case SPLACTION_IS_NOT_IN_THE_LAST:
-	case SPLACTION_IS_IN_THE_RANGE:
-	case SPLACTION_IS_NOT_IN_THE_RANGE:
-	case SPLACTION_IS_STRING:
-	case SPLACTION_CONTAINS:
-	case SPLACTION_STARTS_WITH:
-	case SPLACTION_DOES_NOT_START_WITH:
-	case SPLACTION_ENDS_WITH:
-	case SPLACTION_DOES_NOT_END_WITH:
-	case SPLACTION_IS_NOT:
-	case SPLACTION_DOES_NOT_CONTAIN:
-	    return splat_invalid;
-	default:
-	    /* Unknown action type */
-	    g_warning ("Unknown action type %d\n\n", splr->action);
-	    return splat_unknown;
+	case ITDB_SPLACTION_IS_INT:
+	case ITDB_SPLACTION_IS_NOT_INT:
+	    return ITDB_SPLAT_PLAYLIST;
+	case ITDB_SPLACTION_IS_GREATER_THAN:
+	case ITDB_SPLACTION_IS_NOT_GREATER_THAN:
+	case ITDB_SPLACTION_IS_LESS_THAN:
+	case ITDB_SPLACTION_IS_NOT_LESS_THAN:
+	case ITDB_SPLACTION_IS_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_STRING:
+	case ITDB_SPLACTION_CONTAINS:
+	case ITDB_SPLACTION_STARTS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_START_WITH:
+	case ITDB_SPLACTION_ENDS_WITH:
+	case ITDB_SPLACTION_DOES_NOT_END_WITH:
+	case ITDB_SPLACTION_IS_NOT:
+	case ITDB_SPLACTION_DOES_NOT_CONTAIN:
+	case ITDB_SPLACTION_BINARY_AND:
+	    return ITDB_SPLAT_INVALID;
 	}
+	/* Unknown action type */
+	g_warning ("Unknown action type %d\n\n", splr->action);
+	return ITDB_SPLAT_UNKNOWN;
 
-    case splft_unknown:
-	    /* Unknown action type */
-	    g_warning ("Unknown action type %d\n\n", splr->action);
-	    return splat_unknown;
+    case ITDB_SPLFT_UNKNOWN:
+	/* Unknown action type */
+	g_warning ("Unknown action type %d\n\n", splr->action);
+	return ITDB_SPLAT_UNKNOWN;
     }
-    return splat_unknown;
+    return ITDB_SPLAT_UNKNOWN;
 }
 
 /* -------------------------------------------------------------------
@@ -292,20 +323,21 @@
 
 /**
  * itdb_splr_eval:
- * @splr: an #SPLRule
+ * @splr: an #Itdb_SPLRule
  * @track: an #Itdb_Track
  *
  * Evaluates @splr's truth against @track. track-&gt;itdb must be set.
  *
  * Return value: TRUE if @track matches @splr, FALSE otherwise.
  **/
-gboolean itdb_splr_eval (SPLRule *splr, Itdb_Track *track)
+gboolean itdb_splr_eval (Itdb_SPLRule *splr, Itdb_Track *track)
 {
-    SPLFieldType ft;
-    SPLActionType at;
+    ItdbSPLFieldType ft;
+    ItdbSPLActionType at;
     gchar *strcomp = NULL;
     gint64 intcomp = 0;
     gboolean boolcomp = FALSE;
+    gboolean handled = FALSE;
     guint32 datecomp = 0;
     Itdb_Playlist *playcomp = NULL;
     time_t t;
@@ -318,202 +350,258 @@
     ft = itdb_splr_get_field_type (splr);
     at = itdb_splr_get_action_type (splr);
 
-    g_return_val_if_fail (at != splat_invalid, FALSE);
+    g_return_val_if_fail (at != ITDB_SPLAT_INVALID, FALSE);
 
     /* find what we need to compare in the track */
     switch (splr->field)
     {
-    case SPLFIELD_SONG_NAME:
+    case ITDB_SPLFIELD_SONG_NAME:
 	strcomp = track->title;
+	handled = TRUE;
 	break;
-    case SPLFIELD_ALBUM:
+    case ITDB_SPLFIELD_ALBUM:
 	strcomp = track->album;
+	handled = TRUE;
 	break;
-    case SPLFIELD_ARTIST:
+    case ITDB_SPLFIELD_ARTIST:
 	strcomp = track->artist;
+	handled = TRUE;
 	break;
-    case SPLFIELD_GENRE:
+    case ITDB_SPLFIELD_GENRE:
 	strcomp = track->genre;
+	handled = TRUE;
 	break;
-    case SPLFIELD_KIND:
+    case ITDB_SPLFIELD_KIND:
 	strcomp = track->filetype;
+	handled = TRUE;
 	break;
-    case SPLFIELD_COMMENT:
+    case ITDB_SPLFIELD_COMMENT:
 	strcomp = track->comment;
+	handled = TRUE;
 	break;
-    case SPLFIELD_COMPOSER:
+    case ITDB_SPLFIELD_COMPOSER:
 	strcomp = track->composer;
+	handled = TRUE;
 	break;
-    case SPLFIELD_GROUPING:
+    case ITDB_SPLFIELD_GROUPING:
 	strcomp = track->grouping;
+	handled = TRUE;
 	break;
-    case SPLFIELD_BITRATE:
+    case ITDB_SPLFIELD_BITRATE:
 	intcomp = track->bitrate;
+	handled = TRUE;
 	break;
-    case SPLFIELD_SAMPLE_RATE:
+    case ITDB_SPLFIELD_SAMPLE_RATE:
 	intcomp = track->samplerate;
+	handled = TRUE;
 	break;
-    case SPLFIELD_YEAR:
+    case ITDB_SPLFIELD_YEAR:
 	intcomp = track->year;
+	handled = TRUE;
 	break;
-    case SPLFIELD_TRACKNUMBER:
+    case ITDB_SPLFIELD_TRACKNUMBER:
 	intcomp = track->track_nr;
+	handled = TRUE;
 	break;
-    case SPLFIELD_SIZE:
+    case ITDB_SPLFIELD_SIZE:
 	intcomp = track->size;
+	handled = TRUE;
 	break;
-    case SPLFIELD_PLAYCOUNT:
+    case ITDB_SPLFIELD_PLAYCOUNT:
 	intcomp = track->playcount;
+	handled = TRUE;
 	break;
-    case SPLFIELD_DISC_NUMBER:
+    case ITDB_SPLFIELD_DISC_NUMBER:
 	intcomp = track->cd_nr;
+	handled = TRUE;
 	break;
-    case SPLFIELD_BPM:
+    case ITDB_SPLFIELD_BPM:
 	intcomp = track->BPM;
+	handled = TRUE;
 	break;
-    case SPLFIELD_RATING:
+    case ITDB_SPLFIELD_RATING:
 	intcomp = track->rating;
+	handled = TRUE;
 	break;
-    case SPLFIELD_TIME:
+    case ITDB_SPLFIELD_TIME:
 	intcomp = track->tracklen/1000;
+	handled = TRUE;
 	break;
-    case SPLFIELD_COMPILATION:
+    case ITDB_SPLFIELD_COMPILATION:
 	boolcomp = track->compilation;
+	handled = TRUE;
 	break;
-    case SPLFIELD_DATE_MODIFIED:
+    case ITDB_SPLFIELD_DATE_MODIFIED:
 	datecomp = track->time_modified;
+	handled = TRUE;
 	break;
-    case SPLFIELD_DATE_ADDED:
+    case ITDB_SPLFIELD_DATE_ADDED:
 	datecomp = track->time_added;
+	handled = TRUE;
 	break;
-    case SPLFIELD_LAST_PLAYED:
+    case ITDB_SPLFIELD_LAST_PLAYED:
 	datecomp = track->time_played;
+	handled = TRUE;
 	break;
-    case SPLFIELD_PLAYLIST:
+    case ITDB_SPLFIELD_PLAYLIST:
 	playcomp = itdb_playlist_by_id (track->itdb, splr->fromvalue);
+	handled = TRUE;
 	break;
-    default: /* unknown field type */
-	g_return_val_if_fail (FALSE, FALSE);
+    case ITDB_SPLFIELD_ALBUMARTIST:
+	strcomp = track->albumartist;
+	handled = TRUE;
+	break;
+    case ITDB_SPLFIELD_TVSHOW:
+	strcomp = track->tvshow;
+	handled = TRUE;
+	break;
+    case ITDB_SPLFIELD_LAST_SKIPPED:
+	datecomp = track->last_skipped;
+	handled = TRUE;
+	break;
+    case ITDB_SPLFIELD_SEASON_NR:
+	intcomp = track->season_nr;
+	handled = TRUE;
+	break;
+    case ITDB_SPLFIELD_SKIPCOUNT:
+	intcomp = track->skipcount;
+	handled = TRUE;
+	break;
+    case ITDB_SPLFIELD_VIDEO_KIND:
+	intcomp = track->mediatype;
+	handled = TRUE;
+	break;
     }
+    if (!handled)
+    {   /* unknown field type -- default to FALSE */
+	g_return_val_if_reached (FALSE);
+    }
 
     /* actually do the comparison to our rule */
     switch (ft)
     {
-    case splft_string:
+    case ITDB_SPLFT_STRING:
 	if(strcomp && splr->string)
 	{
 	    gint len1 = strlen (strcomp);
 	    gint len2 = strlen (splr->string);
 	    switch (splr->action)
 	    {
-	    case SPLACTION_IS_STRING:
+	    case ITDB_SPLACTION_IS_STRING:
 		return (strcmp (strcomp, splr->string) == 0);
-	    case SPLACTION_IS_NOT:
+	    case ITDB_SPLACTION_IS_NOT:
 		return (strcmp (strcomp, splr->string) != 0);
-	    case SPLACTION_CONTAINS:
+	    case ITDB_SPLACTION_CONTAINS:
 		return (strstr (strcomp, splr->string) != NULL);
-	    case SPLACTION_DOES_NOT_CONTAIN:
+	    case ITDB_SPLACTION_DOES_NOT_CONTAIN:
 		return (strstr (strcomp, splr->string) == NULL);
-	    case SPLACTION_STARTS_WITH:
+	    case ITDB_SPLACTION_STARTS_WITH:
 		return (strncmp (strcomp, splr->string, len2) == 0);
-	    case SPLACTION_ENDS_WITH:
+	    case ITDB_SPLACTION_ENDS_WITH:
 	    if (len2 > len1)  return FALSE;
 	    return (strncmp (strcomp+len1-len2,
 			     splr->string, len2) == 0);
-	    case SPLACTION_DOES_NOT_START_WITH:
+	    case ITDB_SPLACTION_DOES_NOT_START_WITH:
 		return (strncmp (strcomp, splr->string,
 				 strlen (splr->string)) != 0);
-	    case SPLACTION_DOES_NOT_END_WITH:
+	    case ITDB_SPLACTION_DOES_NOT_END_WITH:
 		if (len2 > len1)  return TRUE;
 		return (strncmp (strcomp+len1-len2,
 				 splr->string, len2) != 0);
 	    };
 	}
 	return FALSE;
-    case splft_int:
+    case ITDB_SPLFT_INT:
 	switch(splr->action)
 	{
-	case SPLACTION_IS_INT:
+	case ITDB_SPLACTION_IS_INT:
 	    return (intcomp == splr->fromvalue);
-	case SPLACTION_IS_NOT_INT:
+	case ITDB_SPLACTION_IS_NOT_INT:
 	    return (intcomp != splr->fromvalue);
-	case SPLACTION_IS_GREATER_THAN:
+	case ITDB_SPLACTION_IS_GREATER_THAN:
 	    return (intcomp > splr->fromvalue);
-	case SPLACTION_IS_LESS_THAN:
+	case ITDB_SPLACTION_IS_LESS_THAN:
 	    return (intcomp < splr->fromvalue);
-	case SPLACTION_IS_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_IN_THE_RANGE:
 	    return ((intcomp <= splr->fromvalue &&
 		     intcomp >= splr->tovalue) ||
 		    (intcomp >= splr->fromvalue &&
 		     intcomp <= splr->tovalue));
-	case SPLACTION_IS_NOT_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_RANGE:
 	    return ((intcomp < splr->fromvalue &&
 		     intcomp < splr->tovalue) ||
 		    (intcomp > splr->fromvalue &&
 		     intcomp > splr->tovalue));
 	}
 	return FALSE;
-    case splft_boolean:
+    case ITDB_SPLFT_BINARY_AND:
+	switch(splr->action)
+	{
+	case ITDB_SPLACTION_BINARY_AND:
+	    return (intcomp & splr->fromvalue)? TRUE:FALSE;
+	}
+	return FALSE;
+    case ITDB_SPLFT_BOOLEAN:
 	switch (splr->action)
 	{
-	case SPLACTION_IS_INT:	    /* aka "is set" */
+	case ITDB_SPLACTION_IS_INT:	    /* aka "is set" */
 	    return (boolcomp != 0);
-	case SPLACTION_IS_NOT_INT:  /* aka "is not set" */
+	case ITDB_SPLACTION_IS_NOT_INT:  /* aka "is not set" */
 	    return (boolcomp == 0);
 	}
 	return FALSE;
-    case splft_date:
+    case ITDB_SPLFT_DATE:
 	switch (splr->action)
 	{
-	case SPLACTION_IS_INT:
+	case ITDB_SPLACTION_IS_INT:
 	    return (datecomp == splr->fromvalue);
-	case SPLACTION_IS_NOT_INT:
+	case ITDB_SPLACTION_IS_NOT_INT:
 	    return (datecomp != splr->fromvalue);
-	case SPLACTION_IS_GREATER_THAN:
+	case ITDB_SPLACTION_IS_GREATER_THAN:
 	    return (datecomp > splr->fromvalue);
-	case SPLACTION_IS_LESS_THAN:
+	case ITDB_SPLACTION_IS_LESS_THAN:
 	    return (datecomp < splr->fromvalue);
-	case SPLACTION_IS_NOT_GREATER_THAN:
+	case ITDB_SPLACTION_IS_NOT_GREATER_THAN:
 	    return (datecomp <= splr->fromvalue);
-	case SPLACTION_IS_NOT_LESS_THAN:
+	case ITDB_SPLACTION_IS_NOT_LESS_THAN:
 	    return (datecomp >= splr->fromvalue);
-	case SPLACTION_IS_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_IN_THE_LAST:
 	    time (&t);
 	    t += (splr->fromdate * splr->fromunits);
 	    mactime = itdb_time_host_to_mac (t);
 	    return (datecomp > mactime);
-	case SPLACTION_IS_NOT_IN_THE_LAST:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_LAST:
 	    time (&t);
 	    t += (splr->fromdate * splr->fromunits);
 	    mactime = itdb_time_host_to_mac (t);
 	    return (datecomp <= mactime);
-	case SPLACTION_IS_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_IN_THE_RANGE:
 	    return ((datecomp <= splr->fromvalue &&
 		     datecomp >= splr->tovalue) ||
 		    (datecomp >= splr->fromvalue &&
 		     datecomp <= splr->tovalue));
-	case SPLACTION_IS_NOT_IN_THE_RANGE:
+	case ITDB_SPLACTION_IS_NOT_IN_THE_RANGE:
 	    return ((datecomp < splr->fromvalue &&
 		     datecomp < splr->tovalue) ||
 		    (datecomp > splr->fromvalue &&
 		     datecomp > splr->tovalue));
 	}
 	return FALSE;
-    case splft_playlist:
+    case ITDB_SPLFT_PLAYLIST:
 	/* if we didn't find the playlist, just exit instead of
 	   dealing with it */
 	if (playcomp == NULL) return FALSE;
 
 	switch(splr->action)
 	{
-	case SPLACTION_IS_INT:	  /* is this track in this playlist? */
+	case ITDB_SPLACTION_IS_INT:	  /* is this track in this playlist? */
 	    return (itdb_playlist_contains_track (playcomp, track));
-	case SPLACTION_IS_NOT_INT:/* NOT in this playlist? */
+	case ITDB_SPLACTION_IS_NOT_INT:/* NOT in this playlist? */
 	    return (!itdb_playlist_contains_track (playcomp, track));
 	}
 	return FALSE;
-    case splft_unknown:
-	g_return_val_if_fail (ft != splft_unknown, FALSE);
+    case ITDB_SPLFT_UNKNOWN:
+	g_return_val_if_fail (ft != ITDB_SPLFT_UNKNOWN, FALSE);
 	return FALSE;
     default: /* new type: warning to change this code */
 	g_return_val_if_fail (FALSE, FALSE);
@@ -552,11 +640,11 @@
 }
 static gint compMostOftenPlayed (Itdb_Track *a, Itdb_Track *b)
 {
-    return b->time_added - a->time_added;
+    return b->playcount - a->playcount;
 }
 static gint compLeastOftenPlayed (Itdb_Track *a, Itdb_Track *b)
 {
-    return a->time_added - b->time_added;
+    return a->playcount - b->playcount;
 }
 static gint compMostRecentlyPlayed (Itdb_Track *a, Itdb_Track *b)
 {
@@ -653,7 +741,7 @@
 	    gboolean matchrules;
 	    GList *gl;
 
-	    if (spl->splrules.match_operator == SPLMATCH_AND)
+	    if (spl->splrules.match_operator == ITDB_SPLMATCH_AND)
 		 matchrules = TRUE;
 	    else matchrules = FALSE;
 	    /* assume everything matches with no rules */
@@ -661,9 +749,9 @@
 	    /* match all rules */
 	    for (gl=spl->splrules.rules; gl; gl=gl->next)
 	    {
-		SPLRule* splr = gl->data;
+		Itdb_SPLRule* splr = gl->data;
 		gboolean ruletruth = itdb_splr_eval (splr, t);
-		if (spl->splrules.match_operator == SPLMATCH_AND)
+		if (spl->splrules.match_operator == ITDB_SPLMATCH_AND)
 		{
 		    if (!ruletruth)
 		    {   /* one rule did not match -- we can stop */
@@ -671,7 +759,7 @@
 			break;
 		    }
 		}
-		else if (spl->splrules.match_operator == SPLMATCH_OR)
+		else if (spl->splrules.match_operator == ITDB_SPLMATCH_OR)
 		{
 		    if (ruletruth)
 		    {   /* one rule matched -- we can stop */
@@ -710,50 +798,50 @@
 	/* first, we sort the list */
 	switch(spl->splpref.limitsort)
 	{
-	case LIMITSORT_RANDOM:
+	case ITDB_LIMITSORT_RANDOM:
 	    sel_tracks = randomize_glist (sel_tracks);
 	    break;
-	case LIMITSORT_SONG_NAME:
+	case ITDB_LIMITSORT_SONG_NAME:
 	    sel_tracks = g_list_sort (sel_tracks, (GCompareFunc)compTitle);
 	    break;
-	case LIMITSORT_ALBUM:
+	case ITDB_LIMITSORT_ALBUM:
 	    sel_tracks = g_list_sort (sel_tracks, (GCompareFunc)compAlbum);
 		break;
-	case LIMITSORT_ARTIST:
+	case ITDB_LIMITSORT_ARTIST:
 	    sel_tracks = g_list_sort (sel_tracks, (GCompareFunc)compArtist);
 	    break;
-	case LIMITSORT_GENRE:
+	case ITDB_LIMITSORT_GENRE:
 	    sel_tracks = g_list_sort (sel_tracks, (GCompareFunc)compGenre);
 	    break;
-	case LIMITSORT_MOST_RECENTLY_ADDED:
+	case ITDB_LIMITSORT_MOST_RECENTLY_ADDED:
 	    sel_tracks = g_list_sort (sel_tracks,
 			 (GCompareFunc)compMostRecentlyAdded);
 	    break;
-	case LIMITSORT_LEAST_RECENTLY_ADDED:
+	case ITDB_LIMITSORT_LEAST_RECENTLY_ADDED:
 	    sel_tracks = g_list_sort (sel_tracks,
 			 (GCompareFunc)compLeastRecentlyAdded);
 	    break;
-	case LIMITSORT_MOST_OFTEN_PLAYED:
+	case ITDB_LIMITSORT_MOST_OFTEN_PLAYED:
 	    sel_tracks = g_list_sort (sel_tracks,
 			 (GCompareFunc)compMostOftenPlayed);
 	    break;
-	case LIMITSORT_LEAST_OFTEN_PLAYED:
+	case ITDB_LIMITSORT_LEAST_OFTEN_PLAYED:
 	    sel_tracks = g_list_sort (sel_tracks,
 			 (GCompareFunc)compLeastOftenPlayed);
 	    break;
-	case LIMITSORT_MOST_RECENTLY_PLAYED:
+	case ITDB_LIMITSORT_MOST_RECENTLY_PLAYED:
 	    sel_tracks = g_list_sort (sel_tracks,
 			 (GCompareFunc)compMostRecentlyPlayed);
 	    break;
-	case LIMITSORT_LEAST_RECENTLY_PLAYED:
+	case ITDB_LIMITSORT_LEAST_RECENTLY_PLAYED:
 	    sel_tracks = g_list_sort (sel_tracks,
 			 (GCompareFunc)compLeastRecentlyPlayed);
 	    break;
-	case LIMITSORT_HIGHEST_RATING:
+	case ITDB_LIMITSORT_HIGHEST_RATING:
 	    sel_tracks = g_list_sort (sel_tracks,
 			 (GCompareFunc)compHighestRating);
 	    break;
-	case LIMITSORT_LOWEST_RATING:
+	case ITDB_LIMITSORT_LOWEST_RATING:
 	    sel_tracks = g_list_sort (sel_tracks,
 			 (GCompareFunc)compLowestRating);
 	    break;
@@ -777,19 +865,19 @@
 	    /* get the next song's value to add to running total */
 	    switch (spl->splpref.limittype)
 	    {
-	    case LIMITTYPE_MINUTES:
+	    case ITDB_LIMITTYPE_MINUTES:
 		currentvalue = (double)(t->tracklen)/(60*1000);
 		break;
-	    case LIMITTYPE_HOURS:
+	    case ITDB_LIMITTYPE_HOURS:
 		currentvalue = (double)(t->tracklen)/(60*60*1000);
 		break;
-	    case LIMITTYPE_MB:
+	    case ITDB_LIMITTYPE_MB:
 		currentvalue = (double)(t->size)/(1024*1024);
 		break;
-	    case LIMITTYPE_GB:
+	    case ITDB_LIMITTYPE_GB:
 		currentvalue = (double)(t->size)/(1024*1024*1024);
 		break;
-	    case LIMITTYPE_SONGS:
+	    case ITDB_LIMITTYPE_SONGS:
 		currentvalue = 1;
 		break;
 	    default:
@@ -868,45 +956,46 @@
 
 /**
  * itdb_splr_validate:
- * @splr: an #SPLRule
+ * @splr: an #Itdb_SPLRule
  *
  * Validates a rule 
  **/
-void itdb_splr_validate (SPLRule *splr)
+void itdb_splr_validate (Itdb_SPLRule *splr)
 {
-    SPLActionType at;
+    ItdbSPLActionType at;
 
     g_return_if_fail (splr != NULL);
 
     at = itdb_splr_get_action_type (splr);
 
-    g_return_if_fail (at != splat_unknown);
+    g_return_if_fail (at != ITDB_SPLAT_UNKNOWN);
 
     switch (at)
     {
-    case splat_int:
-    case splat_playlist:
-    case splat_date:
+    case ITDB_SPLAT_INT:
+    case ITDB_SPLAT_PLAYLIST:
+    case ITDB_SPLAT_DATE:
+    case ITDB_SPLAT_BINARY_AND:
 	splr->fromdate = 0;
 	splr->fromunits = 1;
 	splr->tovalue = splr->fromvalue;
 	splr->todate = 0;
 	splr->tounits = 1;
 	break;
-    case splat_range_int:
-    case splat_range_date:
+    case ITDB_SPLAT_RANGE_INT:
+    case ITDB_SPLAT_RANGE_DATE:
 	splr->fromdate = 0;
 	splr->fromunits = 1;
 	splr->todate = 0;
 	splr->tounits = 1;
 	break;
-    case splat_inthelast:
-	splr->fromvalue = SPLDATE_IDENTIFIER;
-	splr->tovalue = SPLDATE_IDENTIFIER;
+    case ITDB_SPLAT_INTHELAST:
+	splr->fromvalue = ITDB_SPL_DATE_IDENTIFIER;
+	splr->tovalue = ITDB_SPL_DATE_IDENTIFIER;
 	splr->tounits = 1;
 	break;
-    case splat_none:
-    case splat_string:
+    case ITDB_SPLAT_NONE:
+    case ITDB_SPLAT_STRING:
 	splr->fromvalue = 0;
 	splr->fromdate = 0;
 	splr->fromunits = 0;
@@ -914,8 +1003,8 @@
 	splr->todate = 0;
 	splr->tounits = 0;
 	break;
-    case splat_invalid:
-    case splat_unknown:
+    case ITDB_SPLAT_INVALID:
+    case ITDB_SPLAT_UNKNOWN:
 	g_return_if_fail (FALSE);
 	break;
     }
@@ -925,11 +1014,11 @@
 
 /**
  * itdb_splr_free:
- * @splr: an #SPLRule
+ * @splr: an #Itdb_SPLRule
  *
  * Frees the memory used by @splr 
  **/
-void itdb_splr_free (SPLRule *splr)
+void itdb_splr_free (Itdb_SPLRule *splr)
 {
     if (splr)
     {
@@ -941,12 +1030,12 @@
 /**
  * itdb_splr_remove:
  * @pl: an #Itdb_Playlist
- * @splr: an SPLRule
+ * @splr: an Itdb_SPLRule
  *
  * Removes the smart playlist rule @splr from playlist @pl. The memory used by
  * @splr is freed.
  **/
-void itdb_splr_remove (Itdb_Playlist *pl, SPLRule *splr)
+void itdb_splr_remove (Itdb_Playlist *pl, Itdb_SPLRule *splr)
 {
     g_return_if_fail (pl);
     g_return_if_fail (splr);
@@ -958,14 +1047,14 @@
 /**
  * itdb_splr_add:
  * @pl: an #Itdb_Playlist
- * @splr: an #SPLRule
+ * @splr: an #Itdb_SPLRule
  * @pos: position of the rule
  *
  * Adds the smart rule @splr to @pl at position @pos. If @pos is -1, @splr gets
  * appended to the end. After this call, @splr memory is managed by @pl, so 
  * you no longer need to call itdb_splr_free()
  **/
-void itdb_splr_add (Itdb_Playlist *pl, SPLRule *splr, gint pos)
+void itdb_splr_add (Itdb_Playlist *pl, Itdb_SPLRule *splr, gint pos)
 {
     g_return_if_fail (pl);
     g_return_if_fail (splr);
@@ -980,15 +1069,15 @@
  * 
  * Creates a new default smart rule 
  *
- * Return value: a new #SPLRule that must be freed with itdb_splr_free() when 
+ * Return value: a new #Itdb_SPLRule that must be freed with itdb_splr_free() when 
  * no longer needed
  **/
-SPLRule *itdb_splr_new (void)
+Itdb_SPLRule *itdb_splr_new (void)
 {
-    SPLRule *splr = g_new0 (SPLRule, 1);
+    Itdb_SPLRule *splr = g_new0 (Itdb_SPLRule, 1);
 
-    splr->field = SPLFIELD_ARTIST;
-    splr->action = SPLACTION_CONTAINS;
+    splr->field = ITDB_SPLFIELD_ARTIST;
+    splr->action = ITDB_SPLACTION_CONTAINS;
     splr->fromvalue = 0;
     splr->fromdate = 0;
     splr->fromunits = 0;
@@ -1008,12 +1097,12 @@
  * Creates a new smart rule and inserts it at position @pos in @pl. If @pos is
  * -1, the new rule gets appended to the end.
  *
- * Return value: pointer to the newly created #SPLRule. Its memory is handled 
+ * Return value: pointer to the newly created #Itdb_SPLRule. Its memory is handled 
  * by @pl though, so you don't need to explicitly call itdb_splr_free() on it
  **/
-SPLRule *itdb_splr_add_new (Itdb_Playlist *pl, gint pos)
+Itdb_SPLRule *itdb_splr_add_new (Itdb_Playlist *pl, gint pos)
 {
-    SPLRule *splr;
+    Itdb_SPLRule *splr;
 
     g_return_val_if_fail (pl, NULL);
 
@@ -1022,14 +1111,14 @@
     return splr;
 }
 
-/* Duplicate SPLRule @splr */
-static SPLRule *splr_duplicate (SPLRule *splr)
+/* Duplicate Itdb_SPLRule @splr */
+static Itdb_SPLRule *splr_duplicate (Itdb_SPLRule *splr)
 {
-    SPLRule *dup = NULL;
+    Itdb_SPLRule *dup = NULL;
     if (splr)
     {
-	dup = g_malloc (sizeof (SPLRule));
-	memcpy (dup, splr, sizeof (SPLRule));
+	dup = g_malloc (sizeof (Itdb_SPLRule));
+	memcpy (dup, splr, sizeof (Itdb_SPLRule));
 
 	/* Now copy the strings */
 	dup->string = g_strdup (splr->string);
@@ -1074,7 +1163,7 @@
     /* Copy rules */
     for (gl=pl->splrules.rules; gl; gl=gl->next)
     {
-	SPLRule *splr_dup = splr_duplicate (gl->data);
+	Itdb_SPLRule *splr_dup = splr_duplicate (gl->data);
 	pl_dup->splrules.rules = g_list_append (
 	    pl_dup->splrules.rules, splr_dup);
     }
@@ -1114,14 +1203,14 @@
     g_list_free (dest->splrules.rules);
 
     /* copy general spl settings */
-    memcpy (&dest->splpref, &src->splpref, sizeof (SPLPref));
-    memcpy (&dest->splrules, &src->splrules, sizeof (SPLRules));
+    memcpy (&dest->splpref, &src->splpref, sizeof (Itdb_SPLPref));
+    memcpy (&dest->splrules, &src->splrules, sizeof (Itdb_SPLRules));
     dest->splrules.rules = NULL;
 
     /* Copy rules */
     for (gl=src->splrules.rules; gl; gl=gl->next)
     {
-	SPLRule *splr_dup = splr_duplicate (gl->data);
+	Itdb_SPLRule *splr_dup = splr_duplicate (gl->data);
 	dest->splrules.rules = g_list_append (
 	    dest->splrules.rules, splr_dup);
     }
@@ -1157,11 +1246,11 @@
 	pl->splpref.liveupdate = TRUE;
 	pl->splpref.checkrules = TRUE;
 	pl->splpref.checklimits = FALSE;
-	pl->splpref.limittype = LIMITTYPE_HOURS;
-	pl->splpref.limitsort = LIMITSORT_RANDOM;
+	pl->splpref.limittype = ITDB_LIMITTYPE_HOURS;
+	pl->splpref.limitsort = ITDB_LIMITSORT_RANDOM;
 	pl->splpref.limitvalue = 2;
 	pl->splpref.matchcheckedonly = FALSE;
-	pl->splrules.match_operator = SPLMATCH_AND;
+	pl->splrules.match_operator = ITDB_SPLMATCH_AND;
 	/* add at least one rule */
 	itdb_splr_add_new (pl, 0);
     }

Modified: libgpod/branches/upstream/current/src/itdb_private.h
===================================================================
--- libgpod/branches/upstream/current/src/itdb_private.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_private.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,6 +1,5 @@
-/* Time-stamp: <2007-01-06 20:46:59 jcs>
-|
-|  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
+/*
+|  Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
 | 
 |  URL: http://www.gtkpod.org/
@@ -24,7 +23,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_private.h,v 1.16 2007/01/08 10:23:15 jcsjcs Exp $
+|  $Id: itdb_private.h 1439 2007-05-27 14:58:41Z jcsjcs $
 */
 
 #ifndef __ITDB_PRIVATE_H__
@@ -83,12 +82,12 @@
 struct playcount {
     guint32 playcount;
     guint32 skipped;     /* skipped (only for Shuffle's iTunesStats */
-    guint32 time_played;
+    time_t time_played;
     guint32 bookmark_time;
     gint32 rating;
     gint32 pc_unk16;     /* unknown field in Play Counts file */
     guint32 skipcount;
-    guint32 last_skipped;
+    time_t last_skipped;
     gint32 st_unk06;     /* unknown field in iTunesStats file */
     gint32 st_unk09;     /* unknown field in iTunesStats file */
 };
@@ -143,8 +142,8 @@
 
 typedef struct _Itdb_DB Itdb_DB;
 
-G_GNUC_INTERNAL gboolean itdb_spl_action_known (SPLAction action);
-G_GNUC_INTERNAL void itdb_splr_free (SPLRule *splr);
+G_GNUC_INTERNAL gboolean itdb_spl_action_known (ItdbSPLAction action);
+G_GNUC_INTERNAL void itdb_splr_free (Itdb_SPLRule *splr);
 G_GNUC_INTERNAL const gchar *itdb_photodb_get_mountpoint (Itdb_PhotoDB *photodb);
 G_GNUC_INTERNAL gchar *db_get_mountpoint (Itdb_DB *db);
 G_GNUC_INTERNAL Itdb_Device *db_get_device(Itdb_DB *db);
@@ -152,4 +151,9 @@
 G_GNUC_INTERNAL Itdb_iTunesDB *db_get_itunesdb (Itdb_DB *db);
 G_GNUC_INTERNAL Itdb_PhotoDB *db_get_photodb (Itdb_DB *db);
 G_GNUC_INTERNAL gint itdb_thumb_get_byteorder (ItdbThumbFormat format);
+G_GNUC_INTERNAL time_t device_time_mac_to_time_t (Itdb_Device *device, 
+						guint64 mactime);
+G_GNUC_INTERNAL guint64 device_time_time_t_to_mac (Itdb_Device *device,
+						 time_t timet);
+G_GNUC_INTERNAL gint itdb_musicdirs_number_by_mountpoint (const gchar *mountpoint);
 #endif

Modified: libgpod/branches/upstream/current/src/itdb_track.c
===================================================================
--- libgpod/branches/upstream/current/src/itdb_track.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/itdb_track.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,6 +1,5 @@
-/* Time-stamp: <2006-11-23 23:32:16 jcs>
-|
-|  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
+/*
+|  Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net>
 |  Part of the gtkpod project.
 | 
 |  URL: http://www.gtkpod.org/
@@ -24,7 +23,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_track.c,v 1.25 2007/01/13 20:24:50 tmzullinger Exp $
+|  $Id: itdb_track.c 1435 2007-05-17 10:39:36Z jcsjcs $
 */
 
 #include <config.h>
@@ -248,14 +247,15 @@
     g_return_if_fail (track);
 
     g_free (track->title);
+    g_free (track->ipod_path);
+    g_free (track->album);
     g_free (track->artist);
-    g_free (track->album);
     g_free (track->genre);
+    g_free (track->filetype);
+    g_free (track->comment);
+    g_free (track->category);
     g_free (track->composer);
-    g_free (track->comment);
-    g_free (track->filetype);
     g_free (track->grouping);
-    g_free (track->category);
     g_free (track->description);
     g_free (track->podcasturl);
     g_free (track->podcastrss);
@@ -265,12 +265,20 @@
     g_free (track->tvnetwork);
     g_free (track->albumartist);
     g_free (track->keywords);
-    g_free (track->ipod_path);
+    g_free (track->sort_artist);
+    g_free (track->sort_title);
+    g_free (track->sort_album);
+    g_free (track->sort_albumartist);
+    g_free (track->sort_composer);
+    g_free (track->sort_tvshow);
+
     g_free (track->chapterdata_raw);
-    itdb_artwork_remove_thumbnails (track->artwork);
-    g_free (track->artwork);
+
+    itdb_artwork_free (track->artwork);
+
     if (track->userdata && track->userdata_destroy)
 	(*track->userdata_destroy) (track->userdata);
+
     g_free (track);
 }
 
@@ -337,14 +345,14 @@
 
     /* copy strings */
     tr_dup->title = g_strdup (tr->title);
+    tr_dup->album = g_strdup (tr->album);
     tr_dup->artist = g_strdup (tr->artist);
-    tr_dup->album = g_strdup (tr->album);
     tr_dup->genre = g_strdup (tr->genre);
+    tr_dup->filetype = g_strdup (tr->filetype);
+    tr_dup->comment = g_strdup (tr->comment);
+    tr_dup->category = g_strdup (tr->category);
     tr_dup->composer = g_strdup (tr->composer);
-    tr_dup->comment = g_strdup (tr->comment);
-    tr_dup->filetype = g_strdup (tr->filetype);
     tr_dup->grouping = g_strdup (tr->grouping);
-    tr_dup->category = g_strdup (tr->category);
     tr_dup->description = g_strdup (tr->description);
     tr_dup->podcasturl = g_strdup (tr->podcasturl);
     tr_dup->podcastrss = g_strdup (tr->podcastrss);
@@ -355,7 +363,14 @@
     tr_dup->albumartist = g_strdup (tr->albumartist);
     tr_dup->keywords = g_strdup (tr->keywords);
     tr_dup->ipod_path = g_strdup (tr->ipod_path);
+    tr_dup->sort_artist = g_strdup (tr->sort_artist);
+    tr_dup->sort_title = g_strdup (tr->sort_title);
+    tr_dup->sort_album = g_strdup (tr->sort_album);
+    tr_dup->sort_albumartist = g_strdup (tr->sort_albumartist);
+    tr_dup->sort_composer = g_strdup (tr->sort_composer);
+    tr_dup->sort_tvshow = g_strdup (tr->sort_tvshow);
 
+
     /* Copy chapterdata */
     if (tr->chapterdata_raw)
     {
@@ -381,6 +396,7 @@
 						    const gchar *filename,
 						    const guchar *image_data,
 						    gsize image_data_len,
+                                                    gpointer *pixbuf,
 						    gint rotation,
 						    GError **error)
 {					     
@@ -414,6 +430,19 @@
 							   image_data_len,
 							   rotation, error);
     }
+    if (pixbuf)
+    {
+        result = itdb_artwork_add_thumbnail_from_pixbuf (track->artwork,
+                                                         ITDB_THUMB_COVER_SMALL,
+                                                         pixbuf, rotation,
+                                                         error);
+        if (result == TRUE) {
+            result = itdb_artwork_add_thumbnail_from_pixbuf (track->artwork,
+                                                             ITDB_THUMB_COVER_LARGE,
+                                                             pixbuf, rotation,
+                                                             error);
+        }
+    }
 
     if (result == TRUE)
     {
@@ -457,7 +486,7 @@
     g_return_val_if_fail (track, FALSE);
     g_return_val_if_fail (filename, FALSE);
 
-    return itdb_track_set_thumbnails_internal (track, filename, NULL, 0,
+    return itdb_track_set_thumbnails_internal (track, filename, NULL, 0, NULL,
 					       0, NULL);
 }
 
@@ -487,10 +516,31 @@
 
     return itdb_track_set_thumbnails_internal (track, NULL,
 					       image_data, image_data_len,
-					       0, NULL);
+                                               NULL, 0, NULL);
 }
 
+/**
+ * itdb_track_set_thumbnails_from_pixbuf:
+ * @track: an #Itdb_Track
+ * @pixbuf: a #GdkPixbuf used to generate the thumbnail
+ *
+ * Uses @pixbuf to generate iPod thumbnails. To save memory, the thumbnails
+ * will only be generated when necessary, ie when itdb_save() or a
+ * similar function is called.
+ *
+ * Return value: TRUE if the thumbnail could be added, FALSE otherwise.
+ **/
+gboolean itdb_track_set_thumbnails_from_pixbuf (Itdb_Track *track,
+                                                gpointer pixbuf)
+{
+    g_return_val_if_fail (track, FALSE);
+    g_return_val_if_fail (pixbuf, FALSE);
 
+    return itdb_track_set_thumbnails_internal (track, NULL, NULL, 0,
+                                               pixbuf, 0, NULL);
+}
+
+
 /**
  * itdb_track_remove_thumbnails:
  * @track: an #Itdb_Track

Modified: libgpod/branches/upstream/current/src/ithumb-writer.c
===================================================================
--- libgpod/branches/upstream/current/src/ithumb-writer.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/ithumb-writer.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,4 +1,4 @@
-/*  Time-stamp: <2007-01-09 22:00:03 jcs>
+/*  Time-stamp: <2007-02-10 01:00:40 jcs>
  *
  *  Copyright (C) 2005 Christophe Fergeau
  *
@@ -23,7 +23,7 @@
  * 
  *  This product is not supported/written/published by Apple!
  *
- *  $Id: ithumb-writer.c,v 1.26 2007/01/09 13:31:13 jcsjcs Exp $
+ *  $Id: ithumb-writer.c 1405 2007-03-21 08:37:20Z jcsjcs $
  */
 
 #include <config.h>
@@ -46,7 +46,9 @@
 #include <fcntl.h>
 
 
-#define ITHUMB_MAX_SIZE (500L*1000L*1000L)
+/* Maximum size for .ithmb files. Reduced from 500 MB to 256 MB after
+   reports of slow iPod interface behavior */
+#define ITHUMB_MAX_SIZE (256L*1000L*1000L)
 /* for testing: */
 /*#define ITHUMB_MAX_SIZE (1L*1000L*1000L)*/
 
@@ -355,6 +357,14 @@
 	thumb->image_data = NULL;
 	thumb->image_data_len = 0;
     }
+    else if (thumb->pixbuf)
+    {
+        pixbuf = gdk_pixbuf_scale_simple (GDK_PIXBUF(thumb->pixbuf),
+                                          width, height,
+                                          GDK_INTERP_BILINEAR);
+        g_object_unref (thumb->pixbuf);
+        thumb->pixbuf = NULL;
+    }
 
     if (pixbuf == NULL)
     {

Modified: libgpod/branches/upstream/current/src/pixmaps.c
===================================================================
--- libgpod/branches/upstream/current/src/pixmaps.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/pixmaps.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -30,7 +30,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: pixmaps.c,v 1.1 2007/01/09 13:31:13 jcsjcs Exp $
+|  $Id: pixmaps.c 1352 2007-01-09 13:31:14Z jcsjcs $
 */
 
 #include "pixmaps.h"

Modified: libgpod/branches/upstream/current/src/pixmaps.h
===================================================================
--- libgpod/branches/upstream/current/src/pixmaps.h	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/src/pixmaps.h	2007-06-27 21:44:37 UTC (rev 198)
@@ -30,7 +30,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: pixmaps.h,v 1.1 2007/01/09 13:31:14 jcsjcs Exp $
+|  $Id: pixmaps.h 1352 2007-01-09 13:31:14Z jcsjcs $
 */
 
 #ifndef __PIXMAPS_H__

Modified: libgpod/branches/upstream/current/tests/Makefile.am
===================================================================
--- libgpod/branches/upstream/current/tests/Makefile.am	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/tests/Makefile.am	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,5 +1,5 @@
 if HAVE_GDKPIXBUF
-TESTTHUMBS=test-thumbnails test-write-thumbnails test-photos
+TESTTHUMBS=test-thumbnails test-write-thumbnails test-photos get-timezone
 
 test_thumbnails_SOURCES = test-covers.c
 test_thumbnails_CFLAGS = $(AM_CFLAGS)
@@ -33,6 +33,8 @@
 test_init_ipod_SOURCES = test-init-ipod.c
 test_init_ipod_LDADD = 
 
+get_timezone_SOURCES = get-timezone.c
+
 noinst_PROGRAMS=test-itdb test-ls $(TESTTHUMBS) $(TESTTAGLIB) $(TESTMISC)
 
 INCLUDES=$(LIBGPOD_CFLAGS) -I$(top_srcdir)/src -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\"

Modified: libgpod/branches/upstream/current/tests/Makefile.in
===================================================================
--- libgpod/branches/upstream/current/tests/Makefile.in	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/tests/Makefile.in	2007-06-27 21:44:37 UTC (rev 198)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -21,6 +21,7 @@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 top_builddir = ..
+
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
@@ -34,88 +35,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
 host_triplet = @host@
-noinst_PROGRAMS = test-itdb$(EXEEXT) test-ls$(EXEEXT) $(am__EXEEXT_1) \
-	$(am__EXEEXT_2) $(am__EXEEXT_3)
-subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \
-	$(top_srcdir)/m4/swig.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
- at HAVE_GDKPIXBUF_TRUE@am__EXEEXT_1 = test-thumbnails$(EXEEXT) \
- at HAVE_GDKPIXBUF_TRUE@	test-write-thumbnails$(EXEEXT) \
- at HAVE_GDKPIXBUF_TRUE@	test-photos$(EXEEXT)
- at HAVE_TAGLIB_TRUE@am__EXEEXT_2 = test-rebuild-db$(EXEEXT)
-am__EXEEXT_3 = test-init-ipod$(EXEEXT)
-PROGRAMS = $(noinst_PROGRAMS)
-am_test_init_ipod_OBJECTS = test-init-ipod.$(OBJEXT)
-test_init_ipod_OBJECTS = $(am_test_init_ipod_OBJECTS)
-test_init_ipod_DEPENDENCIES =
-am_test_itdb_OBJECTS = itdb_main.$(OBJEXT)
-test_itdb_OBJECTS = $(am_test_itdb_OBJECTS)
-test_itdb_DEPENDENCIES =
-am_test_ls_OBJECTS = test-ls.$(OBJEXT)
-test_ls_OBJECTS = $(am_test_ls_OBJECTS)
-test_ls_DEPENDENCIES =
-am__test_photos_SOURCES_DIST = test-photos.c
- at HAVE_GDKPIXBUF_TRUE@am_test_photos_OBJECTS =  \
- at HAVE_GDKPIXBUF_TRUE@	test_photos-test-photos.$(OBJEXT)
-test_photos_OBJECTS = $(am_test_photos_OBJECTS)
-test_photos_LDADD = $(LDADD)
-am__test_rebuild_db_SOURCES_DIST = test-rebuild-db.cc
- at HAVE_TAGLIB_TRUE@am_test_rebuild_db_OBJECTS =  \
- at HAVE_TAGLIB_TRUE@	test_rebuild_db-test-rebuild-db.$(OBJEXT)
-test_rebuild_db_OBJECTS = $(am_test_rebuild_db_OBJECTS)
-am__DEPENDENCIES_1 =
- at HAVE_TAGLIB_TRUE@test_rebuild_db_DEPENDENCIES =  \
- at HAVE_TAGLIB_TRUE@	$(am__DEPENDENCIES_1)
-am__test_thumbnails_SOURCES_DIST = test-covers.c
- at HAVE_GDKPIXBUF_TRUE@am_test_thumbnails_OBJECTS =  \
- at HAVE_GDKPIXBUF_TRUE@	test_thumbnails-test-covers.$(OBJEXT)
-test_thumbnails_OBJECTS = $(am_test_thumbnails_OBJECTS)
-test_thumbnails_LDADD = $(LDADD)
-am__test_write_thumbnails_SOURCES_DIST = test-write-covers.c
- at HAVE_GDKPIXBUF_TRUE@am_test_write_thumbnails_OBJECTS = test_write_thumbnails-test-write-covers.$(OBJEXT)
-test_write_thumbnails_OBJECTS = $(am_test_write_thumbnails_OBJECTS)
-test_write_thumbnails_LDADD = $(LDADD)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(test_init_ipod_SOURCES) $(test_itdb_SOURCES) \
-	$(test_ls_SOURCES) $(test_photos_SOURCES) \
-	$(test_rebuild_db_SOURCES) $(test_thumbnails_SOURCES) \
-	$(test_write_thumbnails_SOURCES)
-DIST_SOURCES = $(test_init_ipod_SOURCES) $(test_itdb_SOURCES) \
-	$(test_ls_SOURCES) $(am__test_photos_SOURCES_DIST) \
-	$(am__test_rebuild_db_SOURCES_DIST) \
-	$(am__test_thumbnails_SOURCES_DIST) \
-	$(am__test_write_thumbnails_SOURCES_DIST)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -215,6 +135,7 @@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -236,6 +157,7 @@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -256,8 +178,6 @@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -283,7 +203,6 @@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
-mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -298,66 +217,172 @@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 @HAVE_GDKPIXBUF_FALSE at TESTTHUMBS = 
- at HAVE_GDKPIXBUF_TRUE@TESTTHUMBS = test-thumbnails test-write-thumbnails test-photos
+ at HAVE_GDKPIXBUF_TRUE@TESTTHUMBS = test-thumbnails test-write-thumbnails test-photos get-timezone
+
 @HAVE_GDKPIXBUF_TRUE at test_thumbnails_SOURCES = test-covers.c
 @HAVE_GDKPIXBUF_TRUE at test_thumbnails_CFLAGS = $(AM_CFLAGS)
+
 @HAVE_GDKPIXBUF_TRUE at test_write_thumbnails_SOURCES = test-write-covers.c
 @HAVE_GDKPIXBUF_TRUE at test_write_thumbnails_CFLAGS = $(AM_CFLAGS)
+
 @HAVE_GDKPIXBUF_TRUE at test_photos_SOURCES = test-photos.c
 @HAVE_GDKPIXBUF_TRUE at test_photos_CFLAGS = $(AM_CFLAGS)
+
 TESTMISC = test-init-ipod
 @HAVE_TAGLIB_FALSE at TESTTAGLIB = 
+
 @HAVE_TAGLIB_TRUE at TESTTAGLIB = test-rebuild-db
 @HAVE_TAGLIB_TRUE at test_rebuild_db_SOURCES = test-rebuild-db.cc
 @HAVE_TAGLIB_TRUE at test_rebuild_db_LDADD = $(TAGLIB_LIBS)
 @HAVE_TAGLIB_TRUE at test_rebuild_db_CXXFLAGS = $(TAGLIB_CFLAGS)
+
 test_itdb_SOURCES = itdb_main.c
 test_itdb_LDADD = 
+
 test_ls_SOURCES = test-ls.c
 test_ls_LDADD = 
+
 test_init_ipod_SOURCES = test-init-ipod.c
 test_init_ipod_LDADD = 
+
+get_timezone_SOURCES = get-timezone.c
+
+noinst_PROGRAMS = test-itdb test-ls $(TESTTHUMBS) $(TESTTAGLIB) $(TESTMISC)
+
 INCLUDES = $(LIBGPOD_CFLAGS) -I$(top_srcdir)/src -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\"
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_TRUE at noinst_PROGRAMS = \
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_TRUE@	test-itdb$(EXEEXT) \
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_TRUE@	test-ls$(EXEEXT) \
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_TRUE@	test-rebuild-db$(EXEEXT) \
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_TRUE@	test-init-ipod$(EXEEXT)
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_FALSE at noinst_PROGRAMS = \
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_FALSE@	test-itdb$(EXEEXT) \
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_FALSE@	test-ls$(EXEEXT) \
+ at HAVE_GDKPIXBUF_FALSE@@HAVE_TAGLIB_FALSE@	test-init-ipod$(EXEEXT)
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE at noinst_PROGRAMS = \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE@	test-itdb$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE@	test-ls$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE@	test-thumbnails$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE@	test-write-thumbnails$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE@	test-photos$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE@	get-timezone$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE@	test-rebuild-db$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_TRUE@	test-init-ipod$(EXEEXT)
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_FALSE at noinst_PROGRAMS = \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_FALSE@	test-itdb$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_FALSE@	test-ls$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_FALSE@	test-thumbnails$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_FALSE@	test-write-thumbnails$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_FALSE@	test-photos$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_FALSE@	get-timezone$(EXEEXT) \
+ at HAVE_GDKPIXBUF_TRUE@@HAVE_TAGLIB_FALSE@	test-init-ipod$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+
+am_get_timezone_OBJECTS = get-timezone.$(OBJEXT)
+get_timezone_OBJECTS = $(am_get_timezone_OBJECTS)
+get_timezone_LDADD = $(LDADD)
+get_timezone_DEPENDENCIES =
+get_timezone_LDFLAGS =
+am_test_init_ipod_OBJECTS = test-init-ipod.$(OBJEXT)
+test_init_ipod_OBJECTS = $(am_test_init_ipod_OBJECTS)
+test_init_ipod_DEPENDENCIES =
+test_init_ipod_LDFLAGS =
+am_test_itdb_OBJECTS = itdb_main.$(OBJEXT)
+test_itdb_OBJECTS = $(am_test_itdb_OBJECTS)
+test_itdb_DEPENDENCIES =
+test_itdb_LDFLAGS =
+am_test_ls_OBJECTS = test-ls.$(OBJEXT)
+test_ls_OBJECTS = $(am_test_ls_OBJECTS)
+test_ls_DEPENDENCIES =
+test_ls_LDFLAGS =
+am__test_photos_SOURCES_DIST = test-photos.c
+ at HAVE_GDKPIXBUF_TRUE@am_test_photos_OBJECTS = \
+ at HAVE_GDKPIXBUF_TRUE@	test_photos-test-photos.$(OBJEXT)
+test_photos_OBJECTS = $(am_test_photos_OBJECTS)
+test_photos_LDADD = $(LDADD)
+test_photos_DEPENDENCIES =
+test_photos_LDFLAGS =
+am__test_rebuild_db_SOURCES_DIST = test-rebuild-db.cc
+ at HAVE_TAGLIB_TRUE@am_test_rebuild_db_OBJECTS = \
+ at HAVE_TAGLIB_TRUE@	test_rebuild_db-test-rebuild-db.$(OBJEXT)
+test_rebuild_db_OBJECTS = $(am_test_rebuild_db_OBJECTS)
+ at HAVE_TAGLIB_TRUE@test_rebuild_db_DEPENDENCIES =
+ at HAVE_TAGLIB_FALSE@test_rebuild_db_DEPENDENCIES =
+test_rebuild_db_LDFLAGS =
+am__test_thumbnails_SOURCES_DIST = test-covers.c
+ at HAVE_GDKPIXBUF_TRUE@am_test_thumbnails_OBJECTS = \
+ at HAVE_GDKPIXBUF_TRUE@	test_thumbnails-test-covers.$(OBJEXT)
+test_thumbnails_OBJECTS = $(am_test_thumbnails_OBJECTS)
+test_thumbnails_LDADD = $(LDADD)
+test_thumbnails_DEPENDENCIES =
+test_thumbnails_LDFLAGS =
+am__test_write_thumbnails_SOURCES_DIST = test-write-covers.c
+ at HAVE_GDKPIXBUF_TRUE@am_test_write_thumbnails_OBJECTS = \
+ at HAVE_GDKPIXBUF_TRUE@	test_write_thumbnails-test-write-covers.$(OBJEXT)
+test_write_thumbnails_OBJECTS = $(am_test_write_thumbnails_OBJECTS)
+test_write_thumbnails_LDADD = $(LDADD)
+test_write_thumbnails_DEPENDENCIES =
+test_write_thumbnails_LDFLAGS =
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/get-timezone.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/itdb_main.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-init-ipod.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-ls.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test_photos-test-photos.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test_rebuild_db-test-rebuild-db.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test_thumbnails-test-covers.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test_write_thumbnails-test-write-covers.Po
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(get_timezone_SOURCES) $(test_init_ipod_SOURCES) \
+	$(test_itdb_SOURCES) $(test_ls_SOURCES) \
+	$(am__test_photos_SOURCES_DIST) \
+	$(am__test_rebuild_db_SOURCES_DIST) \
+	$(am__test_thumbnails_SOURCES_DIST) \
+	$(am__test_write_thumbnails_SOURCES_DIST)
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+SOURCES = $(get_timezone_SOURCES) $(test_init_ipod_SOURCES) $(test_itdb_SOURCES) $(test_ls_SOURCES) $(test_photos_SOURCES) $(test_rebuild_db_SOURCES) $(test_thumbnails_SOURCES) $(test_write_thumbnails_SOURCES)
+
 all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .cc .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  tests/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  tests/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
 
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
 clean-noinstPROGRAMS:
 	@list='$(noinst_PROGRAMS)'; for p in $$list; do \
 	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
 	  echo " rm -f $$p $$f"; \
 	  rm -f $$p $$f ; \
 	done
+get-timezone$(EXEEXT): $(get_timezone_OBJECTS) $(get_timezone_DEPENDENCIES) 
+	@rm -f get-timezone$(EXEEXT)
+	$(LINK) $(get_timezone_LDFLAGS) $(get_timezone_OBJECTS) $(get_timezone_LDADD) $(LIBS)
 test-init-ipod$(EXEEXT): $(test_init_ipod_OBJECTS) $(test_init_ipod_DEPENDENCIES) 
 	@rm -f test-init-ipod$(EXEEXT)
 	$(LINK) $(test_init_ipod_LDFLAGS) $(test_init_ipod_OBJECTS) $(test_init_ipod_LDADD) $(LIBS)
@@ -381,11 +406,12 @@
 	$(LINK) $(test_write_thumbnails_LDFLAGS) $(test_write_thumbnails_OBJECTS) $(test_write_thumbnails_LDADD) $(LIBS)
 
 mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
+	-rm -f *.$(OBJEXT) core *.core
 
 distclean-compile:
 	-rm -f *.tab.c
 
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get-timezone.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/itdb_main.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-init-ipod.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-ls.Po at am__quote@
@@ -395,103 +421,203 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_write_thumbnails-test-write-covers.Po at am__quote@
 
 .c.o:
- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
 
 .c.obj:
- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
 
 .c.lo:
- at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
 
 test_photos-test-photos.o: test-photos.c
- at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_photos_CFLAGS) $(CFLAGS) -MT test_photos-test-photos.o -MD -MP -MF "$(DEPDIR)/test_photos-test-photos.Tpo" -c -o test_photos-test-photos.o `test -f 'test-photos.c' || echo '$(srcdir)/'`test-photos.c; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_photos-test-photos.Tpo" "$(DEPDIR)/test_photos-test-photos.Po"; else rm -f "$(DEPDIR)/test_photos-test-photos.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_photos_CFLAGS) $(CFLAGS) -MT test_photos-test-photos.o -MD -MP -MF "$(DEPDIR)/test_photos-test-photos.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_photos-test-photos.o `test -f 'test-photos.c' || echo '$(srcdir)/'`test-photos.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_photos-test-photos.Tpo" "$(DEPDIR)/test_photos-test-photos.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_photos-test-photos.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-photos.c' object='test_photos-test-photos.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_photos-test-photos.Po' tmpdepfile='$(DEPDIR)/test_photos-test-photos.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_photos_CFLAGS) $(CFLAGS) -c -o test_photos-test-photos.o `test -f 'test-photos.c' || echo '$(srcdir)/'`test-photos.c
 
 test_photos-test-photos.obj: test-photos.c
- at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_photos_CFLAGS) $(CFLAGS) -MT test_photos-test-photos.obj -MD -MP -MF "$(DEPDIR)/test_photos-test-photos.Tpo" -c -o test_photos-test-photos.obj `if test -f 'test-photos.c'; then $(CYGPATH_W) 'test-photos.c'; else $(CYGPATH_W) '$(srcdir)/test-photos.c'; fi`; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_photos-test-photos.Tpo" "$(DEPDIR)/test_photos-test-photos.Po"; else rm -f "$(DEPDIR)/test_photos-test-photos.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_photos_CFLAGS) $(CFLAGS) -MT test_photos-test-photos.obj -MD -MP -MF "$(DEPDIR)/test_photos-test-photos.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_photos-test-photos.obj `if test -f 'test-photos.c'; then $(CYGPATH_W) 'test-photos.c'; else $(CYGPATH_W) '$(srcdir)/test-photos.c'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_photos-test-photos.Tpo" "$(DEPDIR)/test_photos-test-photos.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_photos-test-photos.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-photos.c' object='test_photos-test-photos.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_photos-test-photos.Po' tmpdepfile='$(DEPDIR)/test_photos-test-photos.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_photos_CFLAGS) $(CFLAGS) -c -o test_photos-test-photos.obj `if test -f 'test-photos.c'; then $(CYGPATH_W) 'test-photos.c'; else $(CYGPATH_W) '$(srcdir)/test-photos.c'; fi`
 
+test_photos-test-photos.lo: test-photos.c
+ at am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_photos_CFLAGS) $(CFLAGS) -MT test_photos-test-photos.lo -MD -MP -MF "$(DEPDIR)/test_photos-test-photos.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_photos-test-photos.lo `test -f 'test-photos.c' || echo '$(srcdir)/'`test-photos.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_photos-test-photos.Tpo" "$(DEPDIR)/test_photos-test-photos.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_photos-test-photos.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-photos.c' object='test_photos-test-photos.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_photos-test-photos.Plo' tmpdepfile='$(DEPDIR)/test_photos-test-photos.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_photos_CFLAGS) $(CFLAGS) -c -o test_photos-test-photos.lo `test -f 'test-photos.c' || echo '$(srcdir)/'`test-photos.c
+
 test_thumbnails-test-covers.o: test-covers.c
- at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_thumbnails_CFLAGS) $(CFLAGS) -MT test_thumbnails-test-covers.o -MD -MP -MF "$(DEPDIR)/test_thumbnails-test-covers.Tpo" -c -o test_thumbnails-test-covers.o `test -f 'test-covers.c' || echo '$(srcdir)/'`test-covers.c; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo" "$(DEPDIR)/test_thumbnails-test-covers.Po"; else rm -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_thumbnails_CFLAGS) $(CFLAGS) -MT test_thumbnails-test-covers.o -MD -MP -MF "$(DEPDIR)/test_thumbnails-test-covers.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_thumbnails-test-covers.o `test -f 'test-covers.c' || echo '$(srcdir)/'`test-covers.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo" "$(DEPDIR)/test_thumbnails-test-covers.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-covers.c' object='test_thumbnails-test-covers.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_thumbnails-test-covers.Po' tmpdepfile='$(DEPDIR)/test_thumbnails-test-covers.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_thumbnails_CFLAGS) $(CFLAGS) -c -o test_thumbnails-test-covers.o `test -f 'test-covers.c' || echo '$(srcdir)/'`test-covers.c
 
 test_thumbnails-test-covers.obj: test-covers.c
- at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_thumbnails_CFLAGS) $(CFLAGS) -MT test_thumbnails-test-covers.obj -MD -MP -MF "$(DEPDIR)/test_thumbnails-test-covers.Tpo" -c -o test_thumbnails-test-covers.obj `if test -f 'test-covers.c'; then $(CYGPATH_W) 'test-covers.c'; else $(CYGPATH_W) '$(srcdir)/test-covers.c'; fi`; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo" "$(DEPDIR)/test_thumbnails-test-covers.Po"; else rm -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_thumbnails_CFLAGS) $(CFLAGS) -MT test_thumbnails-test-covers.obj -MD -MP -MF "$(DEPDIR)/test_thumbnails-test-covers.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_thumbnails-test-covers.obj `if test -f 'test-covers.c'; then $(CYGPATH_W) 'test-covers.c'; else $(CYGPATH_W) '$(srcdir)/test-covers.c'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo" "$(DEPDIR)/test_thumbnails-test-covers.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-covers.c' object='test_thumbnails-test-covers.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_thumbnails-test-covers.Po' tmpdepfile='$(DEPDIR)/test_thumbnails-test-covers.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_thumbnails_CFLAGS) $(CFLAGS) -c -o test_thumbnails-test-covers.obj `if test -f 'test-covers.c'; then $(CYGPATH_W) 'test-covers.c'; else $(CYGPATH_W) '$(srcdir)/test-covers.c'; fi`
 
+test_thumbnails-test-covers.lo: test-covers.c
+ at am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_thumbnails_CFLAGS) $(CFLAGS) -MT test_thumbnails-test-covers.lo -MD -MP -MF "$(DEPDIR)/test_thumbnails-test-covers.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_thumbnails-test-covers.lo `test -f 'test-covers.c' || echo '$(srcdir)/'`test-covers.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo" "$(DEPDIR)/test_thumbnails-test-covers.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_thumbnails-test-covers.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-covers.c' object='test_thumbnails-test-covers.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_thumbnails-test-covers.Plo' tmpdepfile='$(DEPDIR)/test_thumbnails-test-covers.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_thumbnails_CFLAGS) $(CFLAGS) -c -o test_thumbnails-test-covers.lo `test -f 'test-covers.c' || echo '$(srcdir)/'`test-covers.c
+
 test_write_thumbnails-test-write-covers.o: test-write-covers.c
- at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_write_thumbnails_CFLAGS) $(CFLAGS) -MT test_write_thumbnails-test-write-covers.o -MD -MP -MF "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" -c -o test_write_thumbnails-test-write-covers.o `test -f 'test-write-covers.c' || echo '$(srcdir)/'`test-write-covers.c; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" "$(DEPDIR)/test_write_thumbnails-test-write-covers.Po"; else rm -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_write_thumbnails_CFLAGS) $(CFLAGS) -MT test_write_thumbnails-test-write-covers.o -MD -MP -MF "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_write_thumbnails-test-write-covers.o `test -f 'test-write-covers.c' || echo '$(srcdir)/'`test-write-covers.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" "$(DEPDIR)/test_write_thumbnails-test-write-covers.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-write-covers.c' object='test_write_thumbnails-test-write-covers.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_write_thumbnails-test-write-covers.Po' tmpdepfile='$(DEPDIR)/test_write_thumbnails-test-write-covers.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_write_thumbnails_CFLAGS) $(CFLAGS) -c -o test_write_thumbnails-test-write-covers.o `test -f 'test-write-covers.c' || echo '$(srcdir)/'`test-write-covers.c
 
 test_write_thumbnails-test-write-covers.obj: test-write-covers.c
- at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_write_thumbnails_CFLAGS) $(CFLAGS) -MT test_write_thumbnails-test-write-covers.obj -MD -MP -MF "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" -c -o test_write_thumbnails-test-write-covers.obj `if test -f 'test-write-covers.c'; then $(CYGPATH_W) 'test-write-covers.c'; else $(CYGPATH_W) '$(srcdir)/test-write-covers.c'; fi`; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" "$(DEPDIR)/test_write_thumbnails-test-write-covers.Po"; else rm -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo"; exit 1; fi
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_write_thumbnails_CFLAGS) $(CFLAGS) -MT test_write_thumbnails-test-write-covers.obj -MD -MP -MF "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_write_thumbnails-test-write-covers.obj `if test -f 'test-write-covers.c'; then $(CYGPATH_W) 'test-write-covers.c'; else $(CYGPATH_W) '$(srcdir)/test-write-covers.c'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" "$(DEPDIR)/test_write_thumbnails-test-write-covers.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-write-covers.c' object='test_write_thumbnails-test-write-covers.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_write_thumbnails-test-write-covers.Po' tmpdepfile='$(DEPDIR)/test_write_thumbnails-test-write-covers.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_write_thumbnails_CFLAGS) $(CFLAGS) -c -o test_write_thumbnails-test-write-covers.obj `if test -f 'test-write-covers.c'; then $(CYGPATH_W) 'test-write-covers.c'; else $(CYGPATH_W) '$(srcdir)/test-write-covers.c'; fi`
 
+test_write_thumbnails-test-write-covers.lo: test-write-covers.c
+ at am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_write_thumbnails_CFLAGS) $(CFLAGS) -MT test_write_thumbnails-test-write-covers.lo -MD -MP -MF "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o test_write_thumbnails-test-write-covers.lo `test -f 'test-write-covers.c' || echo '$(srcdir)/'`test-write-covers.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo" "$(DEPDIR)/test_write_thumbnails-test-write-covers.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test_write_thumbnails-test-write-covers.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-write-covers.c' object='test_write_thumbnails-test-write-covers.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_write_thumbnails-test-write-covers.Plo' tmpdepfile='$(DEPDIR)/test_write_thumbnails-test-write-covers.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_write_thumbnails_CFLAGS) $(CFLAGS) -c -o test_write_thumbnails-test-write-covers.lo `test -f 'test-write-covers.c' || echo '$(srcdir)/'`test-write-covers.c
+
 .cc.o:
- at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCXX_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCXX_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCXX_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCXX_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCXX_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCXX_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
 
 test_rebuild_db-test-rebuild-db.o: test-rebuild-db.cc
- at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rebuild_db_CXXFLAGS) $(CXXFLAGS) -MT test_rebuild_db-test-rebuild-db.o -MD -MP -MF "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" -c -o test_rebuild_db-test-rebuild-db.o `test -f 'test-rebuild-db.cc' || echo '$(srcdir)/'`test-rebuild-db.cc; \
- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Po"; else rm -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo"; exit 1; fi
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rebuild_db_CXXFLAGS) $(CXXFLAGS) -MT test_rebuild_db-test-rebuild-db.o -MD -MP -MF "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" \
+ at am__fastdepCXX_TRUE@	  -c -o test_rebuild_db-test-rebuild-db.o `test -f 'test-rebuild-db.cc' || echo '$(srcdir)/'`test-rebuild-db.cc; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Po"; \
+ at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo"; exit 1; \
+ at am__fastdepCXX_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='test-rebuild-db.cc' object='test_rebuild_db-test-rebuild-db.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/test_rebuild_db-test-rebuild-db.Po' tmpdepfile='$(DEPDIR)/test_rebuild_db-test-rebuild-db.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rebuild_db_CXXFLAGS) $(CXXFLAGS) -c -o test_rebuild_db-test-rebuild-db.o `test -f 'test-rebuild-db.cc' || echo '$(srcdir)/'`test-rebuild-db.cc
 
 test_rebuild_db-test-rebuild-db.obj: test-rebuild-db.cc
- at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rebuild_db_CXXFLAGS) $(CXXFLAGS) -MT test_rebuild_db-test-rebuild-db.obj -MD -MP -MF "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" -c -o test_rebuild_db-test-rebuild-db.obj `if test -f 'test-rebuild-db.cc'; then $(CYGPATH_W) 'test-rebuild-db.cc'; else $(CYGPATH_W) '$(srcdir)/test-rebuild-db.cc'; fi`; \
- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Po"; else rm -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo"; exit 1; fi
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rebuild_db_CXXFLAGS) $(CXXFLAGS) -MT test_rebuild_db-test-rebuild-db.obj -MD -MP -MF "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" \
+ at am__fastdepCXX_TRUE@	  -c -o test_rebuild_db-test-rebuild-db.obj `if test -f 'test-rebuild-db.cc'; then $(CYGPATH_W) 'test-rebuild-db.cc'; else $(CYGPATH_W) '$(srcdir)/test-rebuild-db.cc'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Po"; \
+ at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo"; exit 1; \
+ at am__fastdepCXX_TRUE@	fi
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='test-rebuild-db.cc' object='test_rebuild_db-test-rebuild-db.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/test_rebuild_db-test-rebuild-db.Po' tmpdepfile='$(DEPDIR)/test_rebuild_db-test-rebuild-db.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rebuild_db_CXXFLAGS) $(CXXFLAGS) -c -o test_rebuild_db-test-rebuild-db.obj `if test -f 'test-rebuild-db.cc'; then $(CYGPATH_W) 'test-rebuild-db.cc'; else $(CYGPATH_W) '$(srcdir)/test-rebuild-db.cc'; fi`
 
+test_rebuild_db-test-rebuild-db.lo: test-rebuild-db.cc
+ at am__fastdepCXX_TRUE@	if $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rebuild_db_CXXFLAGS) $(CXXFLAGS) -MT test_rebuild_db-test-rebuild-db.lo -MD -MP -MF "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" \
+ at am__fastdepCXX_TRUE@	  -c -o test_rebuild_db-test-rebuild-db.lo `test -f 'test-rebuild-db.cc' || echo '$(srcdir)/'`test-rebuild-db.cc; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo" "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Plo"; \
+ at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/test_rebuild_db-test-rebuild-db.Tpo"; exit 1; \
+ at am__fastdepCXX_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='test-rebuild-db.cc' object='test_rebuild_db-test-rebuild-db.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/test_rebuild_db-test-rebuild-db.Plo' tmpdepfile='$(DEPDIR)/test_rebuild_db-test-rebuild-db.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rebuild_db_CXXFLAGS) $(CXXFLAGS) -c -o test_rebuild_db-test-rebuild-db.lo `test -f 'test-rebuild-db.cc' || echo '$(srcdir)/'`test-rebuild-db.cc
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -502,6 +628,14 @@
 	-rm -f libtool
 uninstall-info-am:
 
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -510,7 +644,6 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	mkid -fID $$unique
-tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -522,11 +655,10 @@
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -549,7 +681,11 @@
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -562,7 +698,7 @@
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
 	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
 	  else \
 	    dir=''; \
 	  fi; \
@@ -580,6 +716,7 @@
 check-am: all-am
 check: check-am
 all-am: Makefile $(PROGRAMS)
+
 installdirs:
 install: install-am
 install-exec: install-exec-am
@@ -600,7 +737,7 @@
 clean-generic:
 
 distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -620,8 +757,6 @@
 
 dvi-am:
 
-html: html-am
-
 info: info-am
 
 info-am:
@@ -659,14 +794,13 @@
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
 	clean-libtool clean-noinstPROGRAMS ctags distclean \
 	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-exec \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
 	install-exec-am install-info install-info-am install-man \
 	install-strip installcheck installcheck-am installdirs \
 	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-info-am
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.

Added: libgpod/branches/upstream/current/tests/get-timezone.c
===================================================================
--- libgpod/branches/upstream/current/tests/get-timezone.c	                        (rev 0)
+++ libgpod/branches/upstream/current/tests/get-timezone.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -0,0 +1,82 @@
+/*
+ * Compile with:
+ * gcc $(pkg-config --cflags --libs libgpod-1.0) -o tz ./get-timezone.c
+ *
+ * then run:
+ * ./tz <ipod-mountpoint>
+ *
+ * This should output something like:
+ * Timezone: UTC+1 DST
+ *
+ * which means I'm living in an UTC+1 timezone with DST which adds a 1 hour
+ * shift, ie my local time is UTC+2. DST won't be shown if not active.
+ *
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <itdb.h>
+
+int main (int argc, char **argv)
+{
+    char *mountpoint;
+    char *device_dir;
+    char *prefs_filename;
+    FILE *f;
+    int result;
+    gint32 timezone;
+    const int GMT_OFFSET = 0x19;
+
+    if (argc >= 2) {
+        mountpoint = argv[1];
+    } else {
+        g_print ("Usage: %s <mountpoint>\n\n", g_basename(argv[0]));
+        return -1;
+    }
+
+    device_dir = itdb_get_device_dir (mountpoint);
+    if (device_dir == NULL) {
+        g_print ("No iPod mounted at %s\n", mountpoint);
+        return -1;
+    }
+    prefs_filename = itdb_get_path (device_dir, "Preferences");
+    g_free (device_dir);
+
+    f = fopen (prefs_filename, "r");
+    if (f == NULL) {
+        g_print ("Couldn't open %s: %s\n", prefs_filename, g_strerror (errno));
+        g_free (prefs_filename);
+        return -1;
+    }
+
+    result = fseek (f, 0xB10, SEEK_SET);
+    if (result != 0) {
+        g_print ("Couldn't seek in %s: %s\n", prefs_filename,
+                 g_strerror (errno));
+        fclose (f);
+        g_free (prefs_filename);
+        return -1;
+    }
+
+    result = fread (&timezone, sizeof (timezone), 1, f);
+    if (result != 1) {
+        g_print ("Couldn't read from %s: %s\n", prefs_filename,
+                 g_strerror (errno));
+        fclose (f);
+        g_free (prefs_filename);
+    }
+
+    fclose (f);
+    g_free (prefs_filename);
+
+    timezone = GINT32_FROM_LE (timezone);
+    timezone -= GMT_OFFSET;
+
+    g_print ("Timezone: UTC%+d", timezone >> 1);
+    if (timezone & 1) {
+        g_print (" DST");
+    }
+    g_print ("\n");
+
+    return 0;
+}

Modified: libgpod/branches/upstream/current/tests/itdb_main.c
===================================================================
--- libgpod/branches/upstream/current/tests/itdb_main.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/tests/itdb_main.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -22,7 +22,7 @@
 |
 |  This product is not supported/written/published by Apple!
 |
-|  $Id: itdb_main.c,v 1.3 2005/09/23 16:59:34 jcsjcs Exp $
+|  $Id: itdb_main.c 1100 2005-09-23 16:59:34Z jcsjcs $
 */
 /*
  * Initial main.c file generated by Glade. Edit as required.

Modified: libgpod/branches/upstream/current/tests/test-init-ipod.c
===================================================================
--- libgpod/branches/upstream/current/tests/test-init-ipod.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/tests/test-init-ipod.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -19,7 +19,7 @@
  *
  * This product is not supported/written/published by Apple!
  *
- * $Id: test-init-ipod.c,v 1.4 2006/10/02 13:17:58 jcsjcs Exp $
+ * $Id: test-init-ipod.c 1326 2006-10-02 13:17:58Z jcsjcs $
  *
  */
 

Modified: libgpod/branches/upstream/current/tests/test-ls.c
===================================================================
--- libgpod/branches/upstream/current/tests/test-ls.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/tests/test-ls.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -37,6 +37,36 @@
 #define LOCALDB "/.gtkpod/local_0.itdb"
 
 static void
+display_recently_played (Itdb_iTunesDB *db)
+{
+    Itdb_Playlist *mpl = itdb_playlist_mpl (db);
+    GList *it;
+
+    g_print ("Recently played:\n");
+    for (it = mpl->members; it != NULL; it = it->next) {
+        Itdb_Track *track = (Itdb_Track*)it->data;
+
+        if (track->recent_playcount != 0) {
+            char date[30];
+            time_t track_time = itdb_time_mac_to_host (track->time_played);
+
+            g_print ("%s - %s - %s:\n",
+                     track->artist, track->album, track->title);
+            strftime (date, sizeof (date), "%F %H:%M:%S",
+                      gmtime (&track_time));
+            g_print ("\tUTC: %s\n", date);
+            strftime (date, sizeof (date), "%F %H:%M:%S",
+                      localtime (&track_time));
+            g_print ("\tlocal: %s\n", date);
+            g_print ("track: %ld ", track_time);
+            time (&track_time);
+            g_print ("current: %ld\n", track_time);
+            g_print ("\n");
+        }
+    }
+}
+
+static void
 display_track (Itdb_Track *track, const char *prefix) 
 {
     g_print ("%s%s - %s - %s\n", prefix,  
@@ -131,6 +161,8 @@
 	  g_error_free (error);
 	  error = NULL;
       }
+
+      display_recently_played (itdb);
   }
 
   itdb_free (itdb);

Modified: libgpod/branches/upstream/current/tests/test-photos.c
===================================================================
--- libgpod/branches/upstream/current/tests/test-photos.c	2007-06-27 21:42:52 UTC (rev 197)
+++ libgpod/branches/upstream/current/tests/test-photos.c	2007-06-27 21:44:37 UTC (rev 198)
@@ -18,7 +18,7 @@
  *
  * This product is not supported/written/published by Apple!
  *
- * $Id: test-photos.c,v 1.12 2007/01/15 15:15:09 jcsjcs Exp $
+ * $Id: test-photos.c 1427 2007-05-07 11:42:09Z jcsjcs $
  *
  */
 
@@ -39,7 +39,7 @@
     g_print (_("Usage to add photos:\n  %s add <mountpoint> <albumname> [<filename(s)>]\n  <albumname> should be set to 'NULL' to add photos to the master photo album\n  (Photo Library) only. If you don't specify any filenames an empty album will\n  be created.\n"), name);
     g_print (_("Usage to dump all photos to <output_dir>:\n  %s dump <mountpoint> <output_dir>\n"), name);
     g_print (_("Usage to list all photos IDs to stdout:\n  %s list <mountpoint>\n"), name);
-    g_print (_("Usage to remove photo IDs from Photo Library:\n  %s remove <mountpoint> <albumname> [<ID(s)>]\n  <albumname> should be set to 'NULL' to to remove photos from the iPod\n  altogether. If you don't specify any IDs, the photoalbum will be removed\n  instead.\n  WARNING: IDs may change when writing the PhotoDB file.\n"), name);
+    g_print (_("Usage to remove photo IDs from Photo Library:\n  %s remove <mountpoint> <albumname> [<ID(s)>]\n  <albumname> should be set to 'NULL' to remove photos from the iPod\n  altogether. If you don't specify any IDs, the photoalbum will be removed\n  instead.\n  WARNING: IDs may change when writing the PhotoDB file.\n"), name);
 }
 
 /* Retrieve the photo whose ID is @id */
@@ -317,7 +317,7 @@
 	}
 	else
 	{
-	    g_print (_("Error reading iPod photo database"));
+	    g_print (_("Error reading iPod photo database.\n"));
 	}
 	return 1;
     }




More information about the Pkg-gtkpod-devel mailing list