Hello community,
here is the log from the commit of package libnjb
checked in at Fri Feb 1 22:48:00 CET 2008.
--------
--- libnjb/libnjb.changes 2007-10-03 22:25:40.000000000 +0200
+++ libnjb/libnjb.changes 2008-02-01 11:57:40.940218000 +0100
@@ -1,0 +2,8 @@
+Fri Feb 1 11:58:42 CET 2008 - rodrigo@suse.de
+
+- Update to version 2.2.6:
+ * Shape up udev rules so they look like the libsane stuff
+ * Add HAL FDI file
+ * Fixup libnjb udev rules to work with new udev and HAL
+
+-------------------------------------------------------------------
Old:
----
libnjb-2.2.5.tar.gz
New:
----
libnjb-2.2.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libnjb.spec ++++++
--- /var/tmp/diff_new_pack.N27135/_old 2008-02-01 22:47:27.000000000 +0100
+++ /var/tmp/diff_new_pack.N27135/_new 2008-02-01 22:47:27.000000000 +0100
@@ -1,7 +1,7 @@
#
-# spec file for package libnjb (Version 2.2.5)
+# spec file for package libnjb (Version 2.2.6)
#
-# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
@@ -16,8 +16,8 @@
License: BSD 3-Clause
Group: Development/Libraries/Other
AutoReqProv: on
-Version: 2.2.5
-Release: 104
+Version: 2.2.6
+Release: 1
Summary: Nomad Jukebox API
Source: %{name}-%{version}.tar.gz
Source1: 10-usb-music-players-libnjb.fdi
@@ -152,14 +152,20 @@
%{_libdir}/libnjb.so
%{_prefix}/include/libnjb.h
%{_libdir}/pkgconfig/libnjb.pc
+
%changelog
-* Wed Oct 03 2007 - maw@suse.de
+* Fri Feb 01 2008 rodrigo@suse.de
+- Update to version 2.2.6:
+ * Shape up udev rules so they look like the libsane stuff
+ * Add HAL FDI file
+ * Fixup libnjb udev rules to work with new udev and HAL
+* Wed Oct 03 2007 maw@suse.de
- Split out a libnjb5 subpackage.
-* Wed May 16 2007 - olh@suse.de
+* Wed May 16 2007 olh@suse.de
- Buildrequires libusb -> libusb-devel
Remove unneded Requires libusb
-devel package requires libusb-devel
-* Fri Sep 22 2006 - jhargadon@suse.de
+* Fri Sep 22 2006 jhargadon@suse.de
- update to version 2.2.5
- Added Dell DJ 3
- extended documentation following a register scan
@@ -167,11 +173,11 @@
- added a call to first clear the queue when the play command is called
- simplified device table which was growing wild. Merged protocol/USB
version detection into this file.
-* Tue Apr 18 2006 - gekker@suse.de
+* Tue Apr 18 2006 gekker@suse.de
- Instally our own hal fdi file for support of more devices (#149288)
-* Wed Jan 25 2006 - mls@suse.de
+* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
-* Sat Dec 31 2005 - ro@suse.de
+* Sat Dec 31 2005 ro@suse.de
- remove requires for "libusb-devel" (package does not exist)
-* Fri Dec 23 2005 - gekker@suse.de
+* Fri Dec 23 2005 gekker@suse.de
- Import version 2.2.4
++++++ libnjb-2.2.5.tar.gz -> libnjb-2.2.6.tar.gz ++++++
++++ 27771 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/ChangeLog new/libnjb-2.2.6/ChangeLog
--- old/libnjb-2.2.5/ChangeLog 2006-01-29 22:01:32.000000000 +0100
+++ new/libnjb-2.2.6/ChangeLog 2007-09-05 23:35:34.000000000 +0200
@@ -1,3 +1,31 @@
+2007-09-05 Linus Walleij
+
+ * nomad.rules: smak up the outdated udev syntax to modern
+ looks.
+ * Makefile.am: pick up libnjb.fdi.
+ * configure.ac: set to 2.2.6 and release long overdue update
+ of libnjb.
+
+2007-08-30 Linus Walleij
+
+ * src/unicode.c: subtle Chinese char bug found by
+ bookstack@users.sourceforge.net
+
+2007-07-27 Linus Walleij
+
+ * nomad.rules: handle renaming of subsystem by commenting
+ out some optimized GOTO.
+
+2007-06-04 Jeff Mitchell
+
+ * libnjb.fdi: Added HAL FDI rules
+ * hotplug.sh.in: Add HAL FDI rule install logic
+
+2006-02-17 Linus Walleij
+
+ * sample/sendtr.c: improvements to use cmdline-switches
+ only to send tracks.
+
2006-01-29 Linus Walleij
* Release libnjb 2.2.5.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/config.h.in new/libnjb-2.2.6/config.h.in
--- old/libnjb-2.2.5/config.h.in 2006-01-29 21:09:32.000000000 +0100
+++ new/libnjb-2.2.6/config.h.in 2007-09-05 23:31:54.000000000 +0200
@@ -142,8 +142,8 @@
/* Define to rpl_malloc if the replacement function should be used. */
#undef malloc
-/* Define to `long' if does not define. */
+/* Define to `long int' if does not define. */
#undef off_t
-/* Define to `unsigned' if does not define. */
+/* Define to `unsigned int' if does not define. */
#undef size_t
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/configure.ac new/libnjb-2.2.6/configure.ac
--- old/libnjb-2.2.5/configure.ac 2006-01-29 20:43:11.000000000 +0100
+++ new/libnjb-2.2.6/configure.ac 2007-09-05 23:28:57.000000000 +0200
@@ -1,6 +1,6 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)
-AC_INIT([libnjb], [2.2.5], [libnjb-users@lists.sourceforge.net])
+AC_INIT([libnjb], [2.2.6], [libnjb-users@lists.sourceforge.net])
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_SRCDIR([src/base.c])
AC_CONFIG_HEADER([config.h])
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/HACKING new/libnjb-2.2.6/HACKING
--- old/libnjb-2.2.5/HACKING 2006-01-19 23:19:40.000000000 +0100
+++ new/libnjb-2.2.6/HACKING 2006-02-23 22:59:41.000000000 +0100
@@ -522,15 +522,15 @@
* Zen Micro calendar, tasks and contacts synchronization.
-Database format:
+Root directory:
----------------
-The internal format of the database(s) used to store tracks,
+The internal format of the root directory used to store tracks,
files and playlists on the series 3 devices is actually known:
when listing the files on the device, an odd file with a 16-byte
serial number appears in the directory. This file actually
-contains the file database so it can be examined. (We don't know
-why it's there, perhaps for debugging?)
+contains the root directory so it can be examined. (We don't know
+why it's shown there, perhaps for debugging?)
A typical beginning of the file will look like this:
@@ -557,7 +557,7 @@
0x09280000 - filesize (little-endian)
0x0600 - size of next element (little-endian)
0x0016 - metadata file timestamp (big-endian)
-0x78ca7441 - timestamp (big-endian?)
+0x78ca7441 - timestamp, standard C format (little-endian)
0x0600 - size of next element (little-endian)
0x0018 - metadata file attributes (big-endian)
0x20000000 - Windows file attributes (big-endian)
@@ -596,9 +596,11 @@
It's a rough guess that "attrs.db" contain the metadata for
all tracks, "fhandle.db" contains the metadata for files, and
-"btree.db" contain the playlists. The following is a dump of
-the firmware index for a Zen Xtra (done using the fwupgrade
-program that comes with libnjb with no jukebox connected):
+"btree.db" contain the playlists. It is suspected that these
+databases may very well be stored by the BerkeleyDB database.
+The following is a dump of the firmware index for a Zen Xtra
+(done using the fwupgrade program that comes with libnjb with
+no jukebox connected):
Firmware CIFF image, 001e5c0c bytes:
Offset: Type: Size:
@@ -658,6 +660,30 @@
the database split (normalized?) in the recent MTP firmwares.
+Harddisk partitions:
+--------------------
+
+This info comes from quetacoatl at the Nomadness.net forum.
+The Creative devcies have a hard disk which is divided into
+tow separate volumes.
+
+At sector 0 of the disk is a master boot record, then on
+sector 1, a filesystem called "minifs" begins. This has
+clusters of 8 sectors and clusterchains, cluster allocation
+bitmaps, root directory etc. "minifs" has a root directory
+that can hold up to 255 entries. No file in this file system
+can be larger than 6 MB. The "minifs" filesystem has a
+hierarchical directory structure.
+
+Right after the "minifs" volume comes a "CFS" volume (We
+assume this is "Creative File System".) which has clusters
+of 16 sectors and its own clusterchains, root directory and
+cluster allocation bitmaps.
+
+It is suspected that CFS is modeled similarly to the Linux
+Ext2 filesystem (though different).
+
+
Smartvolume:
------------
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/hotplug.sh.in new/libnjb-2.2.6/hotplug.sh.in
--- old/libnjb-2.2.5/hotplug.sh.in 2006-01-29 20:53:10.000000000 +0100
+++ new/libnjb-2.2.6/hotplug.sh.in 2007-06-05 02:02:55.000000000 +0200
@@ -6,6 +6,9 @@
USERMAP=nomad.usermap
UDEVPATH=/etc/udev/rules.d
UDEVRULES=nomad.rules
+HALBASEPATH=/usr/share/hal/fdi/information
+HALPATH=/usr/share/hal/fdi/information/20thirdparty
+HALRULES=libnjb.fdi
# See if the parameter script ($2), device ($3) and productid ($4)
# are already defined in the usermap ($1)
@@ -83,6 +86,19 @@
fi
fi
+# Check for HAL next
+if test -d ${HALBASEPATH} ; then
+ echo "You seem to have HAL on your system. Installing HAL rules..."
+ mkdir -p ${HALPATH}
+ ${INSTALL} ${HALRULES} ${HALPATH}
+ echo "Do you also want to install the old hotplug support (y/n)?"
+ read IN
+ if [ "$IN" = "y" ] || [ "$IN" = "Y" ]; then
+ echo "Continuing..."
+ else
+ exit 0
+ fi
+fi
# Check prerequisites
COMMAND=`which grep 2> /dev/null`
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/INSTALL new/libnjb-2.2.6/INSTALL
--- old/libnjb-2.2.5/INSTALL 2006-01-29 21:03:36.000000000 +0100
+++ new/libnjb-2.2.6/INSTALL 2006-03-29 19:31:18.000000000 +0200
@@ -22,17 +22,21 @@
----------------------
Shared library linking is supported. You will need to 'make install'
-the library before you can execute the sample binaries, or add the
-libnjb src directory to your shared library search path (generally
-the LD_LIBRARY_PATH environment variable). For example:
+the library before you can execute the sample binaries, and add the
+libnjb directory to your shared library search path.
- % export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
-
-On Linux, to make this change permanent, you would add the line
-"/usr/local/lib" to your "/etc/ld.so.conf" file and run the
+On Linux, you would add the line "/usr/local/lib" to your
+"/etc/ld.so.conf" or as a oneliner in for example a
+"/etc/ld.so.conf.d/local.conf" file and run the
program "ldconfig" to scan in the new path. This is a part of
the Linux shared library loader actually.
+To access the library from real odd locations you can use
+the LD_LIBRARY_PATH environment variable, for example:
+
+ % export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
+
+This way of enabling the library to link is a workaround hack.
Note that the LD_LIBRARY_PATH is actually supposed to be used for
testing, not production systems or distributions. It is commonly
used as a workaround when a user is installing libraries in her/his
@@ -48,10 +52,6 @@
of the shared library. The latest version is always named
$PREFIX/lib/libnjb.so.
-If you're building a bundled application for a distribution (like
-a DEB or RPM package) consider linking libnjb statically. It is
-not that big.
-
libusb Support
--------------
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/libnjb.fdi new/libnjb-2.2.6/libnjb.fdi
--- old/libnjb-2.2.5/libnjb.fdi 1970-01-01 01:00:00.000000000 +0100
+++ new/libnjb-2.2.6/libnjb.fdi 2007-06-05 02:02:55.000000000 +0200
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
+<deviceinfo version="0.2">
+ <device>
+ <match key="info.bus" string="usb">
+ <match key="usb.vendor_id" int="0x0471">
+ <match key="usb.product_id" int="0x0222">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="oasis">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">oasis</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">oasis</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4100">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox 2</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4101">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox 3</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4108">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox Zen</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x410b">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox Zen USB 2.0</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4109">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox Zen NX</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4110">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox Zen Xtra</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4111">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Dell Digital Jukebox</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x411b">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox Zen Touch</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x411d">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Zen</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x411e">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Nomad Jukebox Zen Micro</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4126">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Dell Digital Jukebox (2nd Generation)</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4127">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Dell Pocket DJ</merge>
+ </match>
+ </match>
+ <match key="usb.vendor_id" int="0x041e">
+ <match key="usb.product_id" int="0x4136">
+ <match key="info.capabilities" contains_not="portable_audio_player">
+ <append key="info.capabilities" type="strlist">portable_audio_player</append>
+ </match>
+ <merge key="info.category" type="string">portable_audio_player</merge>
+ <merge key="portable_audio_player.access_method" type="string">user</merge>
+ <match key="portable_audio_player.access_method.protocols" contains_not="pde">
+ <append key="portable_audio_player.access_method.protocols" type="strlist">pde</append>
+ </match>
+ <append key="portable_audio_player.access_method.drivers" type="strlist">libnjb</append>
+ <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+ </match>
+ <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">
+ <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
+ </match>
+ <merge key="portable_audio_player.libnjb.protocol" type="string">pde</merge>
+ <merge key="portable_audio_player.libnjb.name" type="string">Creative Zen Sleek</merge>
+ </match>
+ </match>
+ </match>
+ </device>
+</deviceinfo>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/libnjb.pc new/libnjb-2.2.6/libnjb.pc
--- old/libnjb-2.2.5/libnjb.pc 2006-01-29 20:53:49.000000000 +0100
+++ new/libnjb-2.2.6/libnjb.pc 2007-09-05 23:36:38.000000000 +0200
@@ -7,7 +7,7 @@
Name: libnjb
Description: libnjb is a library for accessing Creative Labs Nomad Jukeboxes
-Version: 2.2.5
+Version: 2.2.6
Requires:
Conflicts:
# libnjb nowadays always use libusb
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/Makefile.am new/libnjb-2.2.6/Makefile.am
--- old/libnjb-2.2.5/Makefile.am 2006-01-25 20:47:37.000000000 +0100
+++ new/libnjb-2.2.6/Makefile.am 2007-09-05 23:34:00.000000000 +0200
@@ -6,6 +6,7 @@
nomad.usermap \
nomad.rules \
nomadjukebox \
+libnjb.fdi \
ChangeLog-old \
FAQ LICENSE HACKING \
windows
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/missing new/libnjb-2.2.6/missing
--- old/libnjb-2.2.5/missing 2005-02-13 16:53:27.000000000 +0100
+++ new/libnjb-2.2.6/missing 2007-02-20 13:56:51.000000000 +0100
@@ -1,9 +1,9 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2005-02-08.22
+scriptversion=2006-05-10.23
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard , 1996.
@@ -19,8 +19,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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -33,6 +33,8 @@
fi
run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
@@ -44,7 +46,7 @@
msg="missing on your system"
-case "$1" in
+case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
@@ -77,6 +79,7 @@
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
@@ -106,7 +109,7 @@
# 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
+case $1 in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
@@ -135,7 +138,7 @@
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
-case "$1" in
+case $1 in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
@@ -164,7 +167,7 @@
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
- case "$f" in
+ case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
@@ -192,8 +195,8 @@
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
@@ -214,25 +217,25 @@
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
- if [ $# -ne 1 ]; then
+ if test $# -ne 1; then
eval LASTARG="\${$#}"
- case "$LASTARG" in
+ case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
- if [ ! -f y.tab.h ]; then
+ if test ! -f y.tab.h; then
echo >y.tab.h
fi
- if [ ! -f y.tab.c ]; then
+ if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
@@ -244,18 +247,18 @@
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
- if [ $# -ne 1 ]; then
+ if test $# -ne 1; then
eval LASTARG="\${$#}"
- case "$LASTARG" in
+ case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
- if [ ! -f lex.yy.c ]; then
+ if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
@@ -267,11 +270,9 @@
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
- fi
- if [ -f "$file" ]; then
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
@@ -289,14 +290,23 @@
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'`
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
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`
+ 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
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
;;
@@ -314,13 +324,13 @@
fi
firstarg="$1"
if shift; then
- case "$firstarg" in
+ case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
- case "$firstarg" in
+ case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/nomad.rules new/libnjb-2.2.6/nomad.rules
--- old/libnjb-2.2.5/nomad.rules 2006-01-29 21:08:14.000000000 +0100
+++ new/libnjb-2.2.6/nomad.rules 2007-09-05 23:27:14.000000000 +0200
@@ -29,40 +29,75 @@
printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", \
NAME="%c", MODE="0644"
-# Old erroneous rule used for debug purposes.
-# ACTION=="add", SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'X=%k X=$${X#usbdev} B=$${X%%%%.*} D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c", RUN="/home/linus/bin/boxplugin %c"
+ACTION!="add", GOTO="nomad_rules_end"
+ATTR{dev}!="?*", GOTO="nomad_rules_end"
+SUBSYSTEM=="usb", GOTO="nomad_usb_rules"
+SUBSYSTEM=="usb_device", GOTO="nomad_usb_device_rules"
+GOTO="nomad_rules_end"
-SUBSYSTEM!="usb_device", ACTION!="add", GOTO="nomad_rules_end"
+LABEL="nomad_usb_rules"
# Creative Nomad Jukebox
-SYSFS{idVendor}=="0471", SYSFS{idProduct}=="0222", MODE="666"
+ATTR{idVendor}=="0471", ATTR{idProduct}=="0222", SYMLINK+="libnjb-%k", MODE="666"
# Creative Nomad Jukebox 2
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4100", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4100", SYMLINK+="libnjb-%k", MODE="666"
# Creative Nomad Jukebox 3
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4101", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4101", SYMLINK+="libnjb-%k", MODE="666"
# Creative Nomad Jukebox Zen
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4108", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4108", SYMLINK+="libnjb-%k", MODE="666"
# Creative Nomad Jukebox Zen USB 2.0
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="410b", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="410b", SYMLINK+="libnjb-%k", MODE="666"
# Creative Nomad Jukebox Zen NX
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4109", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4109", SYMLINK+="libnjb-%k", MODE="666"
# Creative Nomad Jukebox Zen Xtra
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4110", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4110", SYMLINK+="libnjb-%k", MODE="666"
# Dell Digital Jukebox
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4111", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4111", SYMLINK+="libnjb-%k", MODE="666"
# Creative Nomad Jukebox Zen Touch
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="411b", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="411b", SYMLINK+="libnjb-%k", MODE="666"
# Creative Zen (Zen Micro variant)
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="411d", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="411d", SYMLINK+="libnjb-%k", MODE="666"
# Creative Nomad Jukebox Zen Micro
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="411e", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="411e", SYMLINK+="libnjb-%k", MODE="666"
# Second Generation Dell Digital Jukebox
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4126", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4126", SYMLINK+="libnjb-%k", MODE="666"
# Dell Pocket DJ
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4127", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4127", SYMLINK+="libnjb-%k", MODE="666"
# Creative Zen Sleek
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="4136", MODE="666"
-# Third Generation Dell Digital Jukebox
-SYSFS{idVendor}=="041e", SYSFS{idProduct}=="412f", MODE="666"
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4136", SYMLINK+="libnjb-%k", MODE="666"
+
+GOTO="nomad_rules_end"
+
+LABEL="nomad_usb_device_rules"
+
+# Creative Nomad Jukebox
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="0222", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Nomad Jukebox 2
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4100", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Nomad Jukebox 3
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4101", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Nomad Jukebox Zen
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4108", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Nomad Jukebox Zen USB 2.0
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="410b", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Nomad Jukebox Zen NX
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4109", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Nomad Jukebox Zen Xtra
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4110", SYMLINK+="libnjb-%k", MODE="666"
+# Dell Digital Jukebox
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4111", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Nomad Jukebox Zen Touch
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="411b", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Zen (Zen Micro variant)
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="411d", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Nomad Jukebox Zen Micro
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="411e", SYMLINK+="libnjb-%k", MODE="666"
+# Second Generation Dell Digital Jukebox
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4126", SYMLINK+="libnjb-%k", MODE="666"
+# Dell Pocket DJ
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4127", SYMLINK+="libnjb-%k", MODE="666"
+# Creative Zen Sleek
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4136", SYMLINK+="libnjb-%k", MODE="666"
+
LABEL="nomad_rules_end"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/nomad.usermap new/libnjb-2.2.6/nomad.usermap
--- old/libnjb-2.2.5/nomad.usermap 2005-12-02 20:51:17.000000000 +0100
+++ new/libnjb-2.2.6/nomad.usermap 2006-03-22 12:33:37.000000000 +0100
@@ -26,5 +26,3 @@
nomadjukebox 0x0003 0x041e 0x4127 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
# Creative Zen Sleek
nomadjukebox 0x0003 0x041e 0x4136 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
-# Third Generation Dell Digital Jukebox
-nomadjukebox 0x0003 0x041e 0x412f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/README new/libnjb-2.2.6/README
--- old/libnjb-2.2.5/README 2006-01-29 21:04:54.000000000 +0100
+++ new/libnjb-2.2.6/README 2007-09-05 23:29:37.000000000 +0200
@@ -1,6 +1,6 @@
Nomad Jukebox API
-v2.2.5
-2006-01-29
+v2.2.6
+2007-09-05
http://libnjb.sourceforge.net/
http://www.sourceforge.net/projects/libnjb/
@@ -246,11 +246,12 @@
such as WINE if desired).
Newer firmwares, such as the Zen Micro firmwares, seem to be
-uncompressed.
+uncompressed or compressed with RAR. Try to extract the contents
+using a RAR un-archiver, perhaps WinRAR.
What we do is to go into a Windows executable and extract the
firmware, which is compressed with the free software library
-zlib.
+zlib. Newer firmware seem to not be compressed with zlib.
Needless to say, there is no guarantee about anything related to
fwupgrade. And by the way, don't use fwupgrade.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/sample/gettr.c new/libnjb-2.2.6/sample/gettr.c
--- old/libnjb-2.2.5/sample/gettr.c 2005-08-30 13:30:32.000000000 +0200
+++ new/libnjb-2.2.6/sample/gettr.c 2006-02-17 15:37:56.000000000 +0100
@@ -14,7 +14,7 @@
static void usage (void)
{
- fprintf(stderr, "get [ -s size ] <trackid> <filename>\n");
+ fprintf(stderr, "gettr [ -s size ] <trackid> <filename>\n");
}
int main (int argc, char **argv)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/sample/sendtr.c new/libnjb-2.2.6/sample/sendtr.c
--- old/libnjb-2.2.5/sample/sendtr.c 2005-08-30 13:33:02.000000000 +0200
+++ new/libnjb-2.2.6/sample/sendtr.c 2006-02-17 15:37:56.000000000 +0100
@@ -5,6 +5,12 @@
#include /* basename() */
#endif
+/*
+ * This is an improved commandline track transfer program
+ * based on Enrique Jorreto Ledesma's work on the original program by
+ * Shaun Jackman and Linus Walleij.
+ */
+
/* Function that compensate for missing libgen.h on Windows */
#ifndef HAVE_LIBGEN_H
static char *basename(char *in) {
@@ -45,10 +51,10 @@
return NULL;
}
- cp= strrchr(buffer, '\n');
- if ( cp != NULL ) *cp= '\0';
+ cp = strrchr(buffer, '\n');
+ if ( cp != NULL ) *cp = '\0';
- bp= buffer;
+ bp = buffer;
while ( bp != cp ) {
if ( *bp != ' ' && *bp != '\t' ) return bp;
bp++;
@@ -58,13 +64,14 @@
}
}
-static void usage (void)
+static void usage(void)
{
- fprintf(stderr, "usage: sendtr [ -D debuglvl ] <path>\n");
+ fprintf(stderr, "usage: sendtr [ -D debuglvl ] [ -q ] -t <title> -a <artist> -l <album> -c <codec>\n");
+ fprintf(stderr, " -g <genre> -n <track number> -d <duration in seconds> <path>\n");
+ fprintf(stderr, "(-q means the program will not ask for missing information.)\n");
exit(1);
}
-
int main(int argc, char **argv)
{
njb_t njbs[NJB_MAX_DEVICES], *njb;
@@ -74,8 +81,15 @@
char *path, *filename;
char artist[80], title[80], genre[80], codec[80], album[80];
char num[80];
- char *partist, *ptitle, *pgenre, *pcodec, *palbum, *pnum;
- u_int16_t tracknum, length, year;
+ char *partist = NULL;
+ char *ptitle = NULL;
+ char *pgenre = NULL;
+ char *pcodec = NULL;
+ char *palbum = NULL;
+ u_int16_t tracknum = 0;
+ u_int16_t length = 0;
+ u_int16_t year = 0;
+ u_int16_t quiet = 0;
u_int32_t filesize;
struct stat sb;
u_int32_t trackid;
@@ -83,11 +97,37 @@
njb_songid_t *songid;
njb_songid_frame_t *frame;
- debug= 0;
- while ( (opt= getopt(argc, argv, "D:")) != -1 ) {
+ debug = 0;
+
+ /* Arguments parsing from njbputtrack (njbtools) */
+ while ( (opt = getopt(argc, argv, "qD:t:a:l:c:g:n:d:")) != -1 ) {
switch (opt) {
case 'D':
- debug= atoi(optarg);
+ debug = atoi(optarg);
+ break;
+ case 't':
+ ptitle = strdup(optarg);
+ break;
+ case 'a':
+ partist = strdup(optarg);
+ break;
+ case 'l':
+ palbum = strdup(optarg);
+ break;
+ case 'c':
+ pcodec = strdup(optarg); // XXX DSM check for MP3, WAV or WMA
+ break;
+ case 'g':
+ pgenre = strdup(optarg);
+ break;
+ case 'n':
+ tracknum = atoi(optarg);
+ break;
+ case 'd':
+ length = atoi(optarg);
+ break;
+ case 'q':
+ quiet = 1;
break;
default:
usage();
@@ -96,8 +136,14 @@
argc-= optind;
argv+= optind;
- if ( argc != 1 ) usage();
- if ( debug ) NJB_Set_Debug(debug);
+ if ( argc != 1 ) {
+ printf("You need to pass a filename.\n");
+ usage();
+ }
+ if ( debug ) {
+ NJB_Set_Debug(debug);
+ }
+
/*
* Check environment variables $LANG and $LC_CTYPE
@@ -123,42 +169,83 @@
return 1;
}
filesize = (u_int32_t) sb.st_size;
-
- if ( (pcodec = prompt("Codec", codec, 80, 1)) == NULL ) return 1;
-
- if ( (ptitle = prompt("Title", title, 80, 0)) == NULL ) return 1;
- if ( ! strlen(ptitle) ) ptitle= NULL;
-
- if ( (palbum = prompt("Album", album, 80, 0)) == NULL ) return 1;
- if ( ! strlen(palbum) ) palbum= NULL;
-
- if ( (partist = prompt("Artist", artist, 80, 0)) == NULL ) return 1;
- if ( ! strlen(partist) ) partist= NULL;
-
- if ( (pgenre = prompt("Genre", genre, 80, 0)) == NULL ) return 1;
- if ( ! strlen(pgenre) ) pgenre= NULL;
-
- if ( (pnum = prompt("Track number", num, 80, 0)) == NULL ) return 1;
- if ( strlen(pnum) ) {
- tracknum = strtoul(pnum, 0, 10);
- } else {
- tracknum = 0;
- }
-
- if ( (pnum = prompt("Year", num, 80, 0)) == NULL ) return 1;
- if ( strlen(pnum) ) {
- year = strtoul(pnum, 0, 10);
- } else {
- year = 0;
- }
-
- if ( (pnum = prompt("Length", num, 80, 0)) == NULL ) return 1;
- if ( strlen(pnum) ) {
- length = strtoul(pnum, 0, 10);
- } else {
- length = 0;
+
+ /* Ask for missing parameters if not quiet */
+ if (!quiet) {
+ if (pcodec == NULL) {
+ if ( (pcodec = prompt("Codec", codec, 80, 1)) == NULL ) {
+ printf("A codec name is required.\n");
+ usage();
+ }
+ }
+ if (!strlen(pcodec)) {
+ printf("A codec name is required.\n");
+ usage();
+ }
+
+ if (ptitle == NULL) {
+ if ( (ptitle = prompt("Title", title, 80, 0)) == NULL )
+ usage();
+ }
+ if (!strlen(ptitle))
+ ptitle = NULL;
+
+
+ if (palbum == NULL) {
+ if ( (palbum = prompt("Album", album, 80, 0)) == NULL )
+ usage();
+ }
+ if (!strlen(palbum))
+ palbum = NULL;
+
+ if (partist == NULL) {
+ if ( (partist = prompt("Artist", artist, 80, 0)) == NULL )
+ usage();
+ }
+ if (!strlen(partist))
+ partist = NULL;
+
+ if (pgenre == NULL) {
+ if ( (pgenre = prompt("Genre", genre, 80, 0)) == NULL )
+ usage();
+ }
+ if (!strlen(pgenre))
+ pgenre = NULL;
+
+ if (tracknum == 0) {
+ char *pnum;
+ if ( (pnum = prompt("Track number", num, 80, 0)) == NULL )
+ tracknum = 0;
+ if ( strlen(pnum) ) {
+ tracknum = strtoul(pnum, 0, 10);
+ } else {
+ tracknum = 0;
+ }
+ }
+
+ if (year == 0) {
+ char *pnum;
+ if ( (pnum = prompt("Year", num, 80, 0)) == NULL )
+ year = 0;
+ if ( strlen(pnum) ) {
+ year = strtoul(pnum, 0, 10);
+ } else {
+ year = 0;
+ }
+ }
+
+ if (length == 0) {
+ char *pnum;
+ if ( (pnum = prompt("Length", num, 80, 0)) == NULL )
+ length = 0;
+ if ( strlen(pnum) ) {
+ length = strtoul(pnum, 0, 10);
+ } else {
+ length = 0;
+ }
+ }
}
-
+
printf("Sending track:\n");
printf("Codec: %s\n", pcodec);
if (ptitle) printf("Title: %s\n", ptitle);
@@ -166,8 +253,8 @@
if (partist) printf("Artist: %s\n", partist);
if (pgenre) printf("Genre: %s\n", pgenre);
if (year > 0) printf("Year: %d\n", year);
- if (tracknum) printf("Track no: %d\n", tracknum);
- if (length) printf("Length: %d\n", length);
+ if (tracknum > 0) printf("Track no: %d\n", tracknum);
+ if (length > 0) printf("Length: %d\n", length);
if (NJB_Discover(njbs, 0, &n) == -1) {
fprintf(stderr, "could not locate any jukeboxes\n");
@@ -179,7 +266,7 @@
return 0;
}
- njb= njbs;
+ njb = njbs;
if ( NJB_Open(njb) == -1 ) {
NJB_Error_Dump(njb,stderr);
@@ -225,4 +312,3 @@
return 0;
}
-
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/src/base.c new/libnjb-2.2.6/src/base.c
--- old/libnjb-2.2.5/src/base.c 2006-01-25 21:42:41.000000000 +0100
+++ new/libnjb-2.2.6/src/base.c 2006-03-22 12:33:37.000000000 +0100
@@ -32,9 +32,11 @@
*
* MTP devices currently unsupported:
* 0x041e:0x4123: Creative Portable Media Center
+ * 0x041e:0x4130: Creative Zen Micro (MTP mode)
* 0x041e:0x4131: Creative Zen Touch (MTP mode)
* 0x041e:0x4137: Creative Zen Sleek (MTP mode)
* 0x041e:0x413c: Creative Zen MicroPhoto
+ * 0x041e:0x412f: Third generation Dell DJ
*/
static njb_device_entry_t njb_device_table[] = {
{ "NOMAD Jukebox (1)", 0x0471, 0x0222, NJB_PROTOCOL_OASIS, 0, NJB_DEVICE_NJB1 },
@@ -50,8 +52,7 @@
{ "Second Generation Dell DJ", 0x041e, 0x4126, NJB_PROTOCOL_PDE, 1, NJB_DEVICE_DELLDJ2 },
{ "Dell Pocket DJ", 0x041e, 0x4127, NJB_PROTOCOL_PDE, 1, NJB_DEVICE_POCKETDJ },
{ "Creative Zen Sleek", 0x041e, 0x4136, NJB_PROTOCOL_PDE, 1, NJB_DEVICE_ZENSLEEK },
- { "Creative Zen (Micro variant)", 0x041e, 0x411d, NJB_PROTOCOL_PDE, 1, NJB_DEVICE_CREATIVEZEN },
- { "Third Generation Dell DJ", 0x041e, 0x412f, NJB_PROTOCOL_PDE, 1, NJB_DEVICE_DELLDJ3 }
+ { "Creative Zen (Micro variant)", 0x041e, 0x411d, NJB_PROTOCOL_PDE, 1, NJB_DEVICE_CREATIVEZEN }
};
static const int njb_device_table_size = sizeof(njb_device_table) / sizeof(njb_device_entry_t);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/src/libnjb.h new/libnjb-2.2.6/src/libnjb.h
--- old/libnjb-2.2.5/src/libnjb.h 2006-01-29 20:53:48.000000000 +0100
+++ new/libnjb-2.2.6/src/libnjb.h 2007-09-05 23:36:38.000000000 +0200
@@ -14,7 +14,7 @@
#define __LIBNJB__H
/** The version of this installation of libnjb */
-#define LIBNJB_VERSION 2.2.5
+#define LIBNJB_VERSION 2.2.6
/** A legacy definition - nowadays we always compile for libusb */
#define LIBNJB_COMPILED_FOR_LIBUSB 1
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/src/protocol3.c new/libnjb-2.2.6/src/protocol3.c
--- old/libnjb-2.2.5/src/protocol3.c 2005-12-02 20:51:18.000000000 +0100
+++ new/libnjb-2.2.6/src/protocol3.c 2006-02-28 21:32:33.000000000 +0100
@@ -915,6 +915,25 @@
* To create a compatible bitmap, take a 132x64 PBM file
* (of course not a ASCII-coded, but a binary "P4") and
* cut off the header.
+ *
+ * Explaination of the JBM1 file format:
+ * <pre>
+ * Byte offset: Contents:
+ * 0x00 - 0x03 "JBM1"
+ * 0x04 - 0x05 width of bitmap in pixels 16bit
+ * unsigned bigendian integer
+ * 0x06 - 0x07 height of bitmap in pixels 16bit
+ * unsigned bigendian integer
+ * 0x08 - 0x0b file format version? contains 0x00000001
+ * as a 32bit unsigned bigendian integer
+ * 0x0c - fileend actual bitmap data
+ * </pre>
+ *
+ * The bitmap data is black-and-white and each bit represents
+ * a single pixel. A set pixel is 1 and a cleared pixel is 0.
+ * The bitmap is stored in 16bit unsigned integers which are
+ * little-endian, and each of these 16bit integers form a
+ * vertical, eight-pixel high and two-pixel wide "bar".
*/
int njb3_set_bitmap(njb_t *njb, u_int16_t x_size, u_int16_t y_size,
const unsigned char *bitmap)
@@ -939,11 +958,7 @@
* 4 bytes signature "JBM1"
* 2 bytes width 0x0084 = 132
* 2 bytes height 0x0040 = 64
- * 2 bytes unknown 0x0000
- * 2 bytes unknown 0x0001
- *
- * Maybe the last two words of the image header are used as
- * palette index or something.
+ * 4 bytes unknown 0x00000001
*/
/* The real image data starts at ... */
u_int32_t totlen;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libnjb-2.2.5/src/unicode.c new/libnjb-2.2.6/src/unicode.c
--- old/libnjb-2.2.5/src/unicode.c 2005-10-16 20:10:06.000000000 +0200
+++ new/libnjb-2.2.6/src/unicode.c 2007-08-30 23:55:20.000000000 +0200
@@ -287,13 +287,13 @@
}
/* UCS-2 can handle no more than 3 UTF-8 encoded bytes */
if (numbytes <= 3) {
- if (numbytes == 2 && str[i+1] > 0x80) {
+ if (numbytes == 2 && str[i+1] >= 0x80) {
/* This character can always be handled correctly */
buffer[length] = (str[i]>>2 & 0x07);
buffer[length+1] = (str[i]<<6 & 0xC0) | (str[i+1] & 0x3F);
i += 2;
length += 2;
- } else if (numbytes == 3 && str[i+1] > 0x80 && str[i+2] > 0x80) {
+ } else if (numbytes == 3 && str[i+1] >= 0x80 && str[i+2] >= 0x80) {
buffer[length] = (str[i]<<4 & 0xF0) | (str[i+1]>>2 & 0x0F);
buffer[length+1]= (str[i+1]<<6 & 0xC0) | (str[i+2] & 0x3F);
i += 3;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org