You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(2) |
Apr
(4) |
May
(6) |
Jun
(56) |
Jul
(101) |
Aug
(14) |
Sep
|
Oct
(1) |
Nov
|
Dec
(40) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(66) |
Feb
(106) |
Mar
(1) |
Apr
(2) |
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
(10) |
Oct
(7) |
Nov
|
Dec
|
2008 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <suc...@us...> - 2006-07-29 20:34:27
|
Revision: 150 Author: sucknblow Date: 2006-07-29 13:34:19 -0700 (Sat, 29 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=150&view=rev Log Message: ----------- It's a generated file, but it might as well be added since its produced using 'tidy', which isn't installed on the Sourceforge shell server. Added Paths: ----------- trunk/webpage/easypmp.html Added: trunk/webpage/easypmp.html =================================================================== --- trunk/webpage/easypmp.html (rev 0) +++ trunk/webpage/easypmp.html 2006-07-29 20:34:19 UTC (rev 150) @@ -0,0 +1,218 @@ +<h2>Index</h2> +<dl> +<dt><a href="#lbAB">NAME</a></dt> +<dt><a href="#lbAC">SYNOPSIS</a></dt> +<dt><a href="#lbAD">DESCRIPTION</a></dt> +<dt><a href="#lbAE">DEVICE SUPPORT</a></dt> +<dt><a href="#lbAF">OPTIONS</a></dt> +<dt><a href="#lbAG">EXAMPLES</a></dt> +<dt><a href="#lbAH">AUTHORS</a></dt> +</dl> +<a name="lbAB" id="lbAB"> </a> +<h2>NAME</h2> +easypmp - create music databases used by portable media +players<br /> +<a name="lbAC" id="lbAC"> </a> +<h2>SYNOPSIS</h2> +<b>easypmp</b> [<b>-c</b>|<b>-u</b>] [<b>-p</b>] [<b>-m</b>] +[<b>-t</b> <i>csv-word-list</i>] [<b>-R</b> [<b>-L</b> +<i>level</i>]] [<b>-d</b> <i>device-id</i>] +[<i>mount-point</i>]<br /> +<b>easypmp</b> [<b>-h</b>|<b>-v</b>|<b>-l</b>] +<p><a name="lbAD" id="lbAD"> </a></p> +<h2>DESCRIPTION</h2> +<b>easypmp</b> is a command line utility used to create and +maintain the music database on a variety of portable media players. +<p>Many portable music players allow the user to browse tracks by +artist, album, genre, predefined playlists etc. In order to do this +efficiently, they require a database of track information. Without +this database, the player may require the user to browse tracks +using only the directory structure. <b>easypmp</b> exists to create +that database, based on the tracks and playlists that are stored on +the player.</p> +<p>Normally, <b>easypmp</b> is able to detect the type of any +supported media player automatically. It does so by comparing the +files and directories found at the specified mount point with the +list of files it expects to find on each type of device that it +supports. If no mount point is specified, the current working +directory is assumed to be the mount point.</p> +<p>In order to check that <b>easypmp</b> can identify the type of +media player, the media player should be mounted as a USB device. +The program should then be run without any command line switches +(although the mount point should be specified if it is not the +current directory). If the device is recognised, <b>easypmp</b> +displays information about the device, including the directories in +which it expects to find music and playlists on that device. If the +device is not recognised, an error message to this effect is +shown.</p> +<p>For a quick introduction on how to use <b>easypmp</b>, see the +<b>EXAMPLES</b> section below.</p> +<p><a name="lbAE" id="lbAE"> </a></p> +<h2>DEVICE SUPPORT</h2> +<b>easypmp</b> currently only works with media players that can be +mounted as <i>USB Mass Storage</i> (UMS) devices. Specifically, it +has been tested with the following devices: +<ul> +<li>iRiver H100 series</li> +<li>iRiver H300 series</li> +<li>iRiver H10 UMS</li> +<li> +iRiver H10 MTP (with emergency connect mode)</li> +<li>iRiver H10Jr. UMS</li> +<li>iRiver U10 UMS</li> +<li>MEDION MDJuke220 and MDJuke440</li> +<li>Samsung YH-820, YH-920 and YH-925</li> +</ul> +<p>Note that some of the iRiver devices listed above may not +support UMS as shipped. For example, in Europe and the United +States, the iRiver U10 ships with support for a proprietary file +transfer protocol called <i>Media Transfer Protocol</i> (MTP). In +order to use these devices with <b>easypmp</b>, it is necessary to +re-program (or `flash') the firmware on the device to make it +support UMS. This can be accomplished by running the iRiver +firmware updater for iRiver products. At the time of writing this +works with T10, T20, T30, U10 and N12 models, with the exception of +256MB and 2GB models in these series. The firmware updater can be +downloaded from:<br /> +<br /> + <a href= +"http://www.iriver.com/mtp/">http://www.iriver.com/mtp/</a></p> +<p>Note that the iRiver firmware updater is a Windows program. The +program requires that your computer be connected to the Internet +when run, in order to download the latest firmware for the device. +Please note that updating the firmware on a device using this +program will erase any data already stored on the device.</p> +<p><a name="lbAF" id="lbAF"> </a></p> +<h2>OPTIONS</h2> +<b>easypmp</b> follows the usual GNU command line syntax, with long +options starting with two dashes (`-'). A summary of options is +included below. +<dl compact="compact"> +<dt class="c1">-c, --create</dt> +<dd>Create a new music database from scratch. The music files in +the directory on the device used for storing music files is scanned +recursively for music files. For each file found, the meta-data +stored in that file - including the genre, artist, album and track +name - is read, and used to add a record for that file in the music +database stored on the device.</dd> +<dt class="c1">-u, --update</dt> +<dd>Update the music database stored on the device. This is similar +to the <b>-c</b> option, with the exception that, when an entry for +a given music file already exists in the database stored on the +device, the meta-data already stored in the database is not +updated. +<p>Using this option means that <b>easypmp</b> does not need to +re-read the meta-data in every music file on the device. Rather, it +only has to read the meta-data in music files that were not on the +device the last time the database was updated. Thus this option is +a faster way creating the music database when only a few tracks on +the device have been changed since the database was last created or +updated. However, if the meta-data in existing files has changed, +this may not be reflected in the database when using this +option.</p> +</dd> +<dt class="c1">-p, --playlist</dt> +<dd>Many programs for playing music allow playlists to be created +and saved on disk, ready to be played later. Such playlists +frequently have a <b>.m3u</b> extension. However, the playlists +saved by most programs cannot be used directly on portable media +players. Instead, it is necessary to convert (or `compile') each +playlist into a format that the media player can read. +<p>When the <b>-p</b>/<b>--playlist</b> option is specified, +<b>easypmp</b> will search the playlist directory on the device for +playlists that can be converted into a form that the media player +can read (see the <b>DESCRIPTION</b> section above for information +on how to determine the playlist directory for a particular media +player).</p> +</dd> +<dt class="c1">-m, --music</dt> +<dd>The <b>-m</b>/<b>--music</b> option is similar to the +<b>-p</b>/<b>--playlist</b> option. However, instead of searching +the playlist directory on the media player for playlists, it +searches in the music directory on the player instead.</dd> +<dt class="c1">-R, --repr</dt> +<dd>Output a textual representation of the music database on +standard output. This option is seldom used: it may be useful for +debugging purposes, or if bored.</dd> +<dt><b>-L</b> <i>level</i>, --repr-level=<i>level</i></dt> +<dd>Specifies the format of the textual representation of the music +database. This option is only meaningful if the <b>-R</b> option is +used. The value of <i>level</i> should be an natural number: that +is, either 0 or a positive integer. The meaning of the given value +depends on the type of media player in use. Currently, the only +values of <i>level</i> that may produce different results are 0 and +1.</dd> +<dt class="c1">-l, --list-device</dt> +<dd>Shows the list of supported devices. This includes the names of +the directories where music and playlists are expected to be found +and the playlist extension used by each device. The list also +includes the `device identifier' for each device. For more +information on the device identifier, see the <b>-d</b> +option.</dd> +<dt><b>-d</b> <i>device-id</i>, --device=<i>device-id</i></dt> +<dd>Specifies a device identifier for the player. The device +identifier is used to determine where <b>easypmp</b> looks for +music files and playlists, and the location and format of the +database that it creates. It is not normally necessary to specify +the device identifier because it is normally detected +automatically, based on the names of system files and directories +on the device.</dd> +<dt><b>-t</b> <i>csv-word-list</i>, +--strip-words=<i>csv-word-list</i></dt> +<dd>Specify a list of words to remove from the start of artist +names when adding new tracks to the database. The list of words +should be comma-separated: that is, a comma (,) should be used to +between each word. +<p>For example, <b>easypmp -ct the</b> will strip the +word 'The' from the start of artist names. Hence, +'The Proclaimers' and 'The Cat Empire' will appear +in the music database as 'Proclaimers' and 'Cat Empire' +respectively.</p> +<p>The list is not limited to individual words. Phrases that +include spaces may also be specified from the command line, by +including the whole list in quotes, separating each word or phrase +by a comma. For example: <b>easypmp -ct 'the,pipes and drums +of'</b>.</p> +<p>When used with the <b>-u</b>/<b>--update</b> option, only new +tracks that are not already in the database are affected by this +option. To use this option with all tracks, including those that +already exist in the database, it is necessary to re-build the +database with <b>-c</b>/<b>--create</b>. This option does not +modify music files, it only has an effect on the music +database.</p> +</dd> +<dt class="c1">-h, --help</dt> +<dd>Show summary of options.</dd> +<dt class="c1">-v, --version</dt> +<dd>Show version of program.</dd> +</dl> +<a name="lbAG" id="lbAG"> </a> +<h2>EXAMPLES</h2> +These examples assume a media player has been mounted as a normal +USB disk using /media/sda as a mount point. +<p>Firstly, it is advisable to check that <b>easypmp</b> can +support your media player:</p> +<p class="c2">easypmp /media/sda</p> +<p>If <b>easypmp</b> supports your device, this will show the paths +where music and playlists should be copied to, prior to creating +the database. Once music and playlists have been copied into these +directories, the music database can be constructed as follows:</p> +<p class="c2">easypmp -c /media/sda</p> +<p>Note that, if the current directory is the mount point. it is +not necessary to specify this on the command line. Therefore, when +running <b>easypmp</b> several times, it is useful to change to the +mount point directory first, in order to avoid having to specify it +repeatedly.</p> +<p>After adding or removing tracks from the media player, the +database no longer reflect the files stored on the device. The +database can be updated, without reading tags for files that +already exist in the database:</p> +<p class="c2">easypmp -u /media/sda</p> +<p><br /> +<a name="lbAH" id="lbAH"> </a></p> +<h2>AUTHORS</h2> +<b>easypmp</b> was written by Nyaochi , who also wrote an initial +POSIX port using the Cygwin environment. +<p>This manual page was written by Martin Ellis , who also +contributed bug fixes for the POSIX port.</p> +Time: 20:13:34 GMT, July 29, 2006 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <suc...@us...> - 2006-07-29 20:30:50
|
Revision: 149 Author: sucknblow Date: 2006-07-29 13:30:38 -0700 (Sat, 29 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=149&view=rev Log Message: ----------- Ugly hack to get the manual page on the website. We probably ought to redo the manual using Docbook. Modified Paths: -------------- trunk/doc/snapshot trunk/frontend/easypmp/cui/easypmp.1 trunk/webpage/Makefile trunk/webpage/about.xml trunk/webpage/document.xml trunk/webpage/pmplib.xsl Added Paths: ----------- trunk/webpage/document_easypmp_manual.xml.in Modified: trunk/doc/snapshot =================================================================== --- trunk/doc/snapshot 2006-07-29 17:47:45 UTC (rev 148) +++ trunk/doc/snapshot 2006-07-29 20:30:38 UTC (rev 149) @@ -59,11 +59,3 @@ debian-src-snapshot-upload: debian-src-snapshot snapshot-upload scp $(SNAPSHOTS)/$(SNAPVER)/debian/* $(UPLOAD_TO) -man2html: - sed '/AUTHOR/,//d' trunk/frontend/easypmp/cui/easypmp.1 | \ - man2html | \ - sed '1,2d; /^$$/d' > easypmp.html - echo -e "H\n/<A/\ns/<A.*//\n/\ns\nka\n/index/,/This.doc/-1m\nw" | \ - ed easypmp.html - - Modified: trunk/frontend/easypmp/cui/easypmp.1 =================================================================== --- trunk/frontend/easypmp/cui/easypmp.1 2006-07-29 17:47:45 UTC (rev 148) +++ trunk/frontend/easypmp/cui/easypmp.1 2006-07-29 20:30:38 UTC (rev 149) @@ -1,5 +1,5 @@ .\" Hey, EMACS: -*- nroff -*- -.TH EASYPMP 1 "June 25, 2006" +.TH EASYPMP 1 "July 29, 2006" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -7,8 +7,6 @@ .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins -.\" .nf disable filling -.\" .fi enable filling .\" .br insert line break .\" .sp <n> insert n+1 empty lines .\" for manpage-specific macros, see man(7) @@ -224,7 +222,7 @@ .B easypmp -u /media/sda .br -.SH AUTHOR +.SH AUTHORS \fBeasypmp\fP was written by Nyaochi <nyaochi@ny...@sa...>, who also wrote an initial POSIX port using the Cygwin environment. Modified: trunk/webpage/Makefile =================================================================== --- trunk/webpage/Makefile 2006-07-29 17:47:45 UTC (rev 148) +++ trunk/webpage/Makefile 2006-07-29 20:30:38 UTC (rev 149) @@ -5,11 +5,13 @@ download.html \ document.html \ document_easypmp_tutorial.html \ + document_easypmp_manual.html \ document_jspl.html \ faq.html \ about.html \ links.html \ index.rss \ + easypmp.pdf all: $(TARGETS) @@ -24,3 +26,32 @@ index.rss: newsrss.xsl news.xml xsltproc --stringparam date "`date -R`" newsrss.xsl news.xml > $@ +# This is an ugly hack to include the manual page on the web-site +# We ought to re-write it in DocBook perhaps. +easypmp.html: + man2html ../frontend/easypmp/cui/easypmp.1 | \ + sed 's^<<A HREF="mailto:\(.*\)">\(.*\)</A>.*>^^' | \ + sed '1,2d; /^$$/d' > easypmp.html + # Move the index to the top + echo -e "H\n/<A/\ns/<A.*//\n/\ns\nka\n/index/,/This document/-1m\nw" | ed easypmp.html + # Remove "This document was... " text + echo -e "H\n/^This document was\nd\nd\nd\nw\n"|ed easypmp.html + # Add a space before the synopsys section + echo -e "/<H2>SYNOPSIS\n-2\na\n<br />\n.\nw\n" | ed easypmp.html + # Convert *'s to list items + sed -i 's#^<BR> \* #<li>#' easypmp.html + # Convert to xhtml + tidy -m -asxhtml -c easypmp.html || true + # Trim top and bottom + sed -i '1,/id="index"/d' easypmp.html + sed -i '/<\/body>/,/.*/d' easypmp.html + sed -i '/^<hr \/>$$/d' easypmp.html + +easypmp.pdf: + groff -m mandoc ../frontend/easypmp/cui/easypmp.1 > easypmp.pdf + +document_easypmp_manual.html: document_easypmp_manual.xml.in pmplib.xsl easypmp.html + xsltproc pmplib.xsl document_easypmp_manual.xml.in > document_easypmp_manual.xml + m4 document_easypmp_manual.xml > document_easypmp_manual.html + + Modified: trunk/webpage/about.xml =================================================================== --- trunk/webpage/about.xml 2006-07-29 17:47:45 UTC (rev 148) +++ trunk/webpage/about.xml 2006-07-29 20:30:38 UTC (rev 149) @@ -35,7 +35,8 @@ <dt>Martin Ellis</dt> <dd> -Project admin and core developer. +Project admin and core developer. Owns an iriver U10 [1GB].<br/> +<img src="http://martin.ellis.name/img/martin.ellis.kdemail.net.png" /> </dd> </dl> Modified: trunk/webpage/document.xml =================================================================== --- trunk/webpage/document.xml 2006-07-29 17:47:45 UTC (rev 148) +++ trunk/webpage/document.xml 2006-07-29 20:30:38 UTC (rev 149) @@ -9,13 +9,16 @@ <body> -<section caption="PMPlib Document"> +<section caption="PMPlib Documentation"> <dl> <dt><a href="./document_easypmp_tutorial.html">EasyPMP Tutorial</a></dt> -<dd>This article presents a life with EasyPMP. I strongly suggest one to read this before using EasyPMP.</dd> +<dd>This article presents a life with EasyPMP. It illustrates the use of the easypmp program for Windows. Reading this before using EasyPMP on Windows is strongly recommended.</dd> +<dt><a href="./document_easypmp_manual.html">EasyPMP Manual</a></dt> +<dd>This is the manual page for the easypmp command line program. Reading this before using <tt>easypmp</tt> on Linux, or other POSIX-style systems, is strongly recommended.</dd> + <dt><a href="./document_jspl.html">JavaScript playlist (JSPL)</a></dt> <dd>Specification of JavaScript playlist (JSPL)</dd> Copied: trunk/webpage/document_easypmp_manual.xml.in (from rev 147, trunk/webpage/document_easypmp_tutorial.xml) =================================================================== --- trunk/webpage/document_easypmp_manual.xml.in (rev 0) +++ trunk/webpage/document_easypmp_manual.xml.in 2006-07-29 20:30:38 UTC (rev 149) @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<title>EasyPMP Manual</title> +<last-update>$Date$</last-update> +</head> + +<body> + +<section caption="EasyPMP Manual"> +<p> +This manual page describes the use of the <tt>easypmp</tt> command +line program. +</p> + +<p>A <a href="easypmp.pdf">PDF version</a> of the manual is also +available for printing. +</p> + +</section> + +include(easypmp.html) + +</body> +</page> Modified: trunk/webpage/pmplib.xsl =================================================================== --- trunk/webpage/pmplib.xsl 2006-07-29 17:47:45 UTC (rev 148) +++ trunk/webpage/pmplib.xsl 2006-07-29 20:30:38 UTC (rev 149) @@ -291,9 +291,10 @@ <li><a href="index.html">Home</a></li> <li><a href="news.html">News</a></li> <li><a href="download.html">Download</a></li> - <li><a href="document.html">Document</a> + <li><a href="document.html">EasyPMP Documentation</a> <ul> - <li><a href="document_easypmp_tutorial.html">EasyPMP Tutorial</a></li> + <li><a href="document_easypmp_tutorial.html">Tutorial (Windows)</a></li> + <li><a href="document_easypmp_manual.html">Manual (POSIX)</a></li> <li><a href="document_jspl.html">JavaScript Playlist (JSPL)</a></li> </ul> </li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <suc...@us...> - 2006-07-29 17:47:51
|
Revision: 148 Author: sucknblow Date: 2006-07-29 10:47:45 -0700 (Sat, 29 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=148&view=rev Log Message: ----------- Document the -t/--strip-words option. Modified Paths: -------------- trunk/frontend/easypmp/cui/easypmp.1 Modified: trunk/frontend/easypmp/cui/easypmp.1 =================================================================== --- trunk/frontend/easypmp/cui/easypmp.1 2006-07-29 16:17:38 UTC (rev 147) +++ trunk/frontend/easypmp/cui/easypmp.1 2006-07-29 17:47:45 UTC (rev 148) @@ -16,8 +16,10 @@ easypmp \- create music databases used by portable media players .SH SYNOPSIS .B easypmp -.RB [ -c | -u "] [" -p "] [" -m "] [" -R " [" -L -.IR level "] ]" +.RB [ -c | -u "] [" -p "] [" -m "] [" -t +.IR csv-word-list ] +.RB [ -R " [" -L +.IR level "]]" .RB [ -d .IR device-id ] .RI [ mount-point ] @@ -164,6 +166,29 @@ identifier because it is normally detected automatically, based on the names of system files and directories on the device. .TP +.B \-t \fIcsv-word-list\fP, \-\-strip-words=\fIcsv-word-list\fP +Specify a list of words to remove from the start of artist names when +adding new tracks to the database. The list of words should be +comma-separated: that is, a comma (,) should be used to between each +word. + +For example, \fBeasypmp\ -ct\ the\fP will strip the word 'The' +from the start of artist names. Hence, 'The\ Proclaimers' +and 'The\ Cat\ Empire' will appear in the music database +as 'Proclaimers' and 'Cat\ Empire' respectively. + +The list is not limited to individual words. Phrases that include +spaces may also be specified from the command line, by including the +whole list in quotes, separating each word or phrase by a comma. For +example: \fBeasypmp -ct 'the,pipes and drums of'\fP. + +When used with the \fB\-u\fP/\fB\-\-update\fP option, only new tracks +that are not already in the database are affected by this option. To +use this option with all tracks, including those that already exist in +the database, it is necessary to re-build the database with +\fB\-c\fP/\fB\-\-create\fP. This option does not modify music files, +it only has an effect on the music database. +.TP .B \-h, \-\-help Show summary of options. .TP This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-29 16:17:43
|
Revision: 147 Author: nyaochi Date: 2006-07-29 09:17:38 -0700 (Sat, 29 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=147&view=rev Log Message: ----------- Removed a reference to syncpmp, which is not comitted in the SVN repository. Modified Paths: -------------- trunk/pmp.sln Modified: trunk/pmp.sln =================================================================== --- trunk/pmp.sln 2006-07-29 16:12:42 UTC (rev 146) +++ trunk/pmp.sln 2006-07-29 16:17:38 UTC (rev 147) @@ -71,15 +71,6 @@ {8BFE7DD6-F825-42BA-A7D7-EFCDCC9D686A} = {8BFE7DD6-F825-42BA-A7D7-EFCDCC9D686A} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "syncpmp_win32gui", "frontend\syncpmp\syncpmp_win32gui\syncpmp_win32gui.vcproj", "{E173B48E-95A6-4B16-9A27-57F168C93355}" - ProjectSection(ProjectDependencies) = postProject - {AA8DA82B-C209-4ABE-ABA1-22352962426D} = {AA8DA82B-C209-4ABE-ABA1-22352962426D} - {FA6E7B73-7CF8-47DD-A016-77382A1FD904} = {FA6E7B73-7CF8-47DD-A016-77382A1FD904} - {3419FA86-F518-4D3B-94C6-B05436439102} = {3419FA86-F518-4D3B-94C6-B05436439102} - {3575EFC2-9051-467A-BEB4-E71E2F8664D7} = {3575EFC2-9051-467A-BEB4-E71E2F8664D7} - {8BFE7DD6-F825-42BA-A7D7-EFCDCC9D686A} = {8BFE7DD6-F825-42BA-A7D7-EFCDCC9D686A} - EndProjectSection -EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug @@ -126,10 +117,6 @@ {544769C2-6989-452F-B626-E442CAC6553B}.Debug.Build.0 = Debug|Win32 {544769C2-6989-452F-B626-E442CAC6553B}.Release.ActiveCfg = Release|Win32 {544769C2-6989-452F-B626-E442CAC6553B}.Release.Build.0 = Release|Win32 - {E173B48E-95A6-4B16-9A27-57F168C93355}.Debug.ActiveCfg = Debug|Win32 - {E173B48E-95A6-4B16-9A27-57F168C93355}.Debug.Build.0 = Debug|Win32 - {E173B48E-95A6-4B16-9A27-57F168C93355}.Release.ActiveCfg = Release|Win32 - {E173B48E-95A6-4B16-9A27-57F168C93355}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-29 16:12:45
|
Revision: 146 Author: nyaochi Date: 2006-07-29 09:12:42 -0700 (Sat, 29 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=146&view=rev Log Message: ----------- Reduce another warning, (all warnings are now gone). Modified Paths: -------------- trunk/lib/pmp_iriverplus2/ip2db_idx.c Modified: trunk/lib/pmp_iriverplus2/ip2db_idx.c =================================================================== --- trunk/lib/pmp_iriverplus2/ip2db_idx.c 2006-07-29 16:05:24 UTC (rev 145) +++ trunk/lib/pmp_iriverplus2/ip2db_idx.c 2006-07-29 16:12:42 UTC (rev 146) @@ -45,6 +45,7 @@ static uint32_t nums_children[] = { 0, 0, 0, 127, 42, 42, 42, 42, 42, 25, 25, 18, 25, 84, 84, 84, 84, }; + typedef int (*qsort_comp_t)(const void *, const void *); if (!sortitems) { free(idxkeys); @@ -78,7 +79,7 @@ sortitems, num_records, sizeof(sortitem_t), - idxexp->comp + (qsort_comp_t)idxexp->comp ); /* Convert record_t elements into idxkey elements. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-29 16:05:34
|
Revision: 145 Author: nyaochi Date: 2006-07-29 09:05:24 -0700 (Sat, 29 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=145&view=rev Log Message: ----------- Reduce a warning. Modified Paths: -------------- trunk/include/pmp.h trunk/lib/pmp_iriverplus2/ip2db.h trunk/lib/pmp_iriverplus2/playlist.c trunk/lib/pmp_iriverplus2/pmp_iriverplus2.c trunk/lib/pmp_irivnavi/irivnavi.h trunk/lib/pmp_irivnavi/playlist.c trunk/lib/pmp_irivnavi/pmp_irivnavi.c trunk/lib/pmp_portalplayer1/playlist.c trunk/lib/pmp_portalplayer1/pmp_portalplayer1.c trunk/lib/pmp_portalplayer1/pp1db.h Modified: trunk/include/pmp.h =================================================================== --- trunk/include/pmp.h 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/include/pmp.h 2006-07-29 16:05:24 UTC (rev 145) @@ -162,7 +162,7 @@ uint32_t (*add_ref)(pmppl_t* pmppl); uint32_t (*release)(pmppl_t* pmppl); - result_t (*write)(pmppl_t* pmppl, const ucs2char_t* filename, const ucs2char_t** files, uint32_t num_files); + result_t (*write)(pmppl_t* pmppl, const ucs2char_t* filename, ucs2char_t * const files[], uint32_t num_files); }; typedef result_t (*pmp_create_t)(pmp_t** pmp, const ucs2char_t* path_to_device, const char *devid); Modified: trunk/lib/pmp_iriverplus2/ip2db.h =================================================================== --- trunk/lib/pmp_iriverplus2/ip2db.h 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_iriverplus2/ip2db.h 2006-07-29 16:05:24 UTC (rev 145) @@ -278,7 +278,7 @@ int ip2db_playlist_write( ip2db_t* db, const ucs2char_t *filename, - const ucs2char_t *mediafiles[], + ucs2char_t* const mediafiles[], int num_mediafiles, const ucs2char_t *path_to_root ); Modified: trunk/lib/pmp_iriverplus2/playlist.c =================================================================== --- trunk/lib/pmp_iriverplus2/playlist.c 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_iriverplus2/playlist.c 2006-07-29 16:05:24 UTC (rev 145) @@ -93,7 +93,7 @@ int ip2db_playlist_write( ip2db_t* db, const ucs2char_t *filename, - const ucs2char_t *mediafiles[], + ucs2char_t* const mediafiles[], int num_mediafiles, const ucs2char_t *path_to_root ) Modified: trunk/lib/pmp_iriverplus2/pmp_iriverplus2.c =================================================================== --- trunk/lib/pmp_iriverplus2/pmp_iriverplus2.c 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_iriverplus2/pmp_iriverplus2.c 2006-07-29 16:05:24 UTC (rev 145) @@ -130,7 +130,7 @@ static uint32_t pmppl_add_ref(pmppl_t* pmppl); static uint32_t pmppl_release(pmppl_t* pmppl); -static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, const ucs2char_t* files[], uint32_t num_files); +static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, ucs2char_t* const files[], uint32_t num_files); static void set_environment( @@ -539,7 +539,7 @@ return count; } -static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, const ucs2char_t* files[], uint32_t num_files) +static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, ucs2char_t* const files[], uint32_t num_files) { pmppl_internal_t* pmppli = (pmppl_internal_t*)pmppl->instance; pmp_internal_t* pmpi = (pmp_internal_t*)pmppl->pmp->instance; Modified: trunk/lib/pmp_irivnavi/irivnavi.h =================================================================== --- trunk/lib/pmp_irivnavi/irivnavi.h 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_irivnavi/irivnavi.h 2006-07-29 16:05:24 UTC (rev 145) @@ -70,7 +70,7 @@ int playlist_write( const ucs2char_t *filename, - const ucs2char_t *mediafiles[], + ucs2char_t* const mediafiles[], int num_mediafiles, const ucs2char_t *path_to_root ); Modified: trunk/lib/pmp_irivnavi/playlist.c =================================================================== --- trunk/lib/pmp_irivnavi/playlist.c 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_irivnavi/playlist.c 2006-07-29 16:05:24 UTC (rev 145) @@ -44,7 +44,7 @@ int playlist_write( const ucs2char_t *filename, - const ucs2char_t *mediafiles[], + ucs2char_t* const mediafiles[], int num_mediafiles, const ucs2char_t *path_to_root ) Modified: trunk/lib/pmp_irivnavi/pmp_irivnavi.c =================================================================== --- trunk/lib/pmp_irivnavi/pmp_irivnavi.c 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_irivnavi/pmp_irivnavi.c 2006-07-29 16:05:24 UTC (rev 145) @@ -102,7 +102,7 @@ static uint32_t pmppl_add_ref(pmppl_t* pmppl); static uint32_t pmppl_release(pmppl_t* pmppl); -static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, const ucs2char_t* files[], uint32_t num_files); +static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, ucs2char_t* const files[], uint32_t num_files); int exists_sysfile(const ucs2char_t* path_to_device, const ucs2char_t* sysfilename) { @@ -582,7 +582,7 @@ return count; } -static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, const ucs2char_t* files[], uint32_t num_files) +static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, ucs2char_t* const files[], uint32_t num_files) { pmp_internal_t* pmpi = (pmp_internal_t*)pmppl->pmp->instance; if (playlist_write(filename, files, num_files, pmpi->env.path_to_root) != 0) { Modified: trunk/lib/pmp_portalplayer1/playlist.c =================================================================== --- trunk/lib/pmp_portalplayer1/playlist.c 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_portalplayer1/playlist.c 2006-07-29 16:05:24 UTC (rev 145) @@ -52,7 +52,7 @@ int playlist_write( const ucs2char_t *filename, - const ucs2char_t *mediafiles[], + ucs2char_t* const mediafiles[], int num_mediafiles, const ucs2char_t *path_to_root ) Modified: trunk/lib/pmp_portalplayer1/pmp_portalplayer1.c =================================================================== --- trunk/lib/pmp_portalplayer1/pmp_portalplayer1.c 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_portalplayer1/pmp_portalplayer1.c 2006-07-29 16:05:24 UTC (rev 145) @@ -225,7 +225,7 @@ static uint32_t pmppl_add_ref(pmppl_t* pmppl); static uint32_t pmppl_release(pmppl_t* pmppl); -static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, const ucs2char_t* files[], uint32_t num_files); +static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, ucs2char_t* const files[], uint32_t num_files); @@ -570,7 +570,7 @@ return count; } -static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, const ucs2char_t* files[], uint32_t num_files) +static result_t pmppl_write(pmppl_t* pmppl, const ucs2char_t* filename, ucs2char_t* const files[], uint32_t num_files) { pmp_internal_t* pmpi = (pmp_internal_t*)pmppl->pmp->instance; if (playlist_write(filename, files, num_files, pmpi->env.path_to_root) != 0) { Modified: trunk/lib/pmp_portalplayer1/pp1db.h =================================================================== --- trunk/lib/pmp_portalplayer1/pp1db.h 2006-07-29 15:41:31 UTC (rev 144) +++ trunk/lib/pmp_portalplayer1/pp1db.h 2006-07-29 16:05:24 UTC (rev 145) @@ -151,7 +151,7 @@ // playlist.c int playlist_write( const ucs2char_t *filename, - const ucs2char_t *mediafiles[], + ucs2char_t* const mediafiles[], int num_mediafiles, const ucs2char_t *path_to_root ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-29 15:46:36
|
Revision: 143 Author: nyaochi Date: 2006-07-29 08:27:47 -0700 (Sat, 29 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=143&view=rev Log Message: ----------- Updated ChangeLog. Modified Paths: -------------- trunk/ChangeLog Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-07-29 05:26:08 UTC (rev 142) +++ trunk/ChangeLog 2006-07-29 15:27:47 UTC (rev 143) @@ -12,7 +12,10 @@ - Fixed crash when updating databases on Samsung devices. - Fixed crash when reading Ogg Vorbis tags. - Fixed crash when using --strip-words on files with no artist tag. +- Bug fix in string conversion with iconv. +- Bug fix for stripping words such as 'the' in artist names. - Bug fix for reading playists using iriverplus2 devices. +- Show error messages from SpiderMonkey (JavaScript engine). - Information about copyright owners and licenses now more comprehensive. Changes in 0.11 (2006-06-06) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-29 15:41:42
|
Revision: 144 Author: nyaochi Date: 2006-07-29 08:41:31 -0700 (Sat, 29 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=144&view=rev Log Message: ----------- Reduced warnings, which were caused by the iconv 'const' problem. Modified Paths: -------------- trunk/lib/ucs2/ucs2char_iconv.c Modified: trunk/lib/ucs2/ucs2char_iconv.c =================================================================== --- trunk/lib/ucs2/ucs2char_iconv.c 2006-07-29 15:27:47 UTC (rev 143) +++ trunk/lib/ucs2/ucs2char_iconv.c 2006-07-29 15:41:31 UTC (rev 144) @@ -45,6 +45,10 @@ #define iconv_close libiconv_close #endif/*USE_LIBICONV_GNU*/ +#ifndef ICONV_CONST +#define ICONV_CONST +#endif/*ICONV_CONST*/ + #define MBS_CHARSET "UTF-8" static char g_encoding[128]; @@ -166,7 +170,7 @@ if (*outbuf && out_size) { size_t inbytesleft = in_size; size_t outbytesleft = out_size; - iconv(cd, (const char **)inbuf, &inbytesleft, (char **)outbuf, &outbytesleft); + iconv(cd, (ICONV_CONST char **)inbuf, &inbytesleft, (char **)outbuf, &outbytesleft); ret = (out_size - outbytesleft); } else { size_t inbytesleft = in_size; @@ -174,7 +178,7 @@ char buffer[1024]; char *p = buffer; size_t outbytesleft = 1024; - int iconvret = iconv(cd, (const char **)inbuf, &inbytesleft, &p, &outbytesleft); + int iconvret = iconv(cd, (ICONV_CONST char **)inbuf, &inbytesleft, &p, &outbytesleft); if (iconvret == -1 && errno != E2BIG) { return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-29 05:26:36
|
Revision: 142 Author: nyaochi Date: 2006-07-28 22:26:08 -0700 (Fri, 28 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=142&view=rev Log Message: ----------- SVN property change. Modified Paths: -------------- trunk/webpage/about.xml trunk/webpage/document.xml trunk/webpage/document_easypmp_tutorial.xml trunk/webpage/document_jspl.xml trunk/webpage/download.xml trunk/webpage/faq.xml trunk/webpage/index.xml trunk/webpage/links.xml trunk/webpage/news.xml Property Changed: ---------------- trunk/webpage/1024px.css trunk/webpage/HACKING trunk/webpage/Makefile trunk/webpage/about.xml trunk/webpage/document.xml trunk/webpage/document_easypmp_tutorial.xml trunk/webpage/document_jspl.xml trunk/webpage/download.xml trunk/webpage/faq.xml trunk/webpage/index.xml trunk/webpage/links.xml trunk/webpage/news.xml trunk/webpage/newsrss.xsl trunk/webpage/pmplib.xsl Property changes on: trunk/webpage/1024px.css ___________________________________________________________________ Name: svn:keywords + Id Date Author Property changes on: trunk/webpage/HACKING ___________________________________________________________________ Name: svn:keywords + Id Date Author Property changes on: trunk/webpage/Makefile ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/about.xml =================================================================== --- trunk/webpage/about.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/about.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -4,7 +4,7 @@ <page> <head> <title>About</title> -<last-update>$Date: 2005/10/10 09:28:51 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/about.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/document.xml =================================================================== --- trunk/webpage/document.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/document.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -4,7 +4,7 @@ <page> <head> <title>Manual</title> -<last-update>$Date: 2005/10/31 00:06:44 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/document.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/document_easypmp_tutorial.xml =================================================================== --- trunk/webpage/document_easypmp_tutorial.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/document_easypmp_tutorial.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -4,7 +4,7 @@ <page> <head> <title>Tutorial</title> -<last-update>$Date: 2005/10/31 00:06:44 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/document_easypmp_tutorial.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/document_jspl.xml =================================================================== --- trunk/webpage/document_jspl.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/document_jspl.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -4,7 +4,7 @@ <page> <head> <title>JavaScript playlist (JSPL)</title> -<last-update>$Date: 2006/04/30 16:32:02 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/document_jspl.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/download.xml =================================================================== --- trunk/webpage/download.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/download.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -4,7 +4,7 @@ <page> <head> <title>Download</title> -<last-update>$Date: 2006/04/30 16:32:00 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/download.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/faq.xml =================================================================== --- trunk/webpage/faq.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/faq.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -4,7 +4,7 @@ <page> <head> <title>Frequently Asked Questions (FAQ)</title> -<last-update>$Date: 2006/01/23 20:52:40 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/faq.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/index.xml =================================================================== --- trunk/webpage/index.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/index.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -4,7 +4,7 @@ <page> <head> <include-rss /> -<last-update>$Date: 2006/01/17 14:07:30 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/index.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/links.xml =================================================================== --- trunk/webpage/links.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/links.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -4,7 +4,7 @@ <page> <head> <title>Links</title> -<last-update>$Date: 2005/10/31 00:06:44 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/links.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Modified: trunk/webpage/news.xml =================================================================== --- trunk/webpage/news.xml 2006-07-29 05:18:48 UTC (rev 141) +++ trunk/webpage/news.xml 2006-07-29 05:26:08 UTC (rev 142) @@ -5,7 +5,7 @@ <head> <include-rss /> <title>News</title> -<last-update>$Date: 2006/04/30 16:32:02 $</last-update> +<last-update>$Date$</last-update> </head> <body> Property changes on: trunk/webpage/news.xml ___________________________________________________________________ Name: svn:keywords + Id Date Author Property changes on: trunk/webpage/newsrss.xsl ___________________________________________________________________ Name: svn:keywords + Id Date Author Property changes on: trunk/webpage/pmplib.xsl ___________________________________________________________________ Name: svn:keywords + Id Date Author This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-29 05:19:09
|
Revision: 141 Author: nyaochi Date: 2006-07-28 22:18:48 -0700 (Fri, 28 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=141&view=rev Log Message: ----------- Added the source files for PMPlib web pages. We will scrap the current web pages powered by MODx and migrate to simple HTML pages. The source files consist of XML files describing the content, several image files, XSL files to generate HTML and RSS files (xsltproc is necessary), and Makefile that generate the necessary files for web pages by typing 'make'. Added Paths: ----------- trunk/webpage/ trunk/webpage/1024px.css trunk/webpage/HACKING trunk/webpage/Makefile trunk/webpage/about.xml trunk/webpage/document.xml trunk/webpage/document_easypmp_tutorial.xml trunk/webpage/document_jspl.xml trunk/webpage/download.xml trunk/webpage/faq.xml trunk/webpage/images/ trunk/webpage/images/background-800px.gif trunk/webpage/images/background.gif trunk/webpage/images/eac.png trunk/webpage/images/easypmp_win32gui_screenshot.png trunk/webpage/images/example.jpg trunk/webpage/images/fb2k-button.png trunk/webpage/images/fb2k_playlist.png trunk/webpage/images/music-folder.png trunk/webpage/index.xml trunk/webpage/links.xml trunk/webpage/news.xml trunk/webpage/newsrss.xsl trunk/webpage/pmplib.xsl Added: trunk/webpage/1024px.css =================================================================== --- trunk/webpage/1024px.css (rev 0) +++ trunk/webpage/1024px.css 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,216 @@ +/* 1024px - An open source xhtml/css website template by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. + +Version: 1.2, April 20, 2006 */ + +/******** General tags ********/ +body{ + font:76% Verdana,Tahoma,Arial,sans-serif; + background:#ffffff url(images/background.gif) top center repeat-y; + color:#404040; + line-height:1.2em; + margin:0 auto; + padding:0; +} + +a{ + text-decoration:none; + color:#4088b8; +} + +a img{ + border:0; +} + +p { + margin:0 0 10px 10px; +} + +img { + margin: 0 0 10px 10px; +} +ul,ol,dl { + margin: 2px 0 16px 16px; +} +ul ul,ol ol { + margin:4px 0 4px 16px; +} + +h1{ +font-size:4.2em; +letter-spacing:-5px; +margin:0 0 30px 25px; +color:#4088b8; +} + +h1 a{text-transform:none; color:#4088b8;} + +h2{ +font-size:1.4em; +color:#4088b8; +border-bottom:4px solid #dadada; +padding:0 2px 2px 5px; +margin:0 0 10px 0; +letter-spacing:-1px; +} + +h3{ +font-size:1.2em; +font-weight:bold; +color:#4088b8; +border-bottom:1px solid #dadada; +margin:10px 0 8px 0; +padding:1px 2px 2px 3px; +} + +blockquote{ +font-size:0.9em; +border:1px solid #dadada; +margin:20px 10px; +padding:8px; +} + +/******** Main wrap ********/ +#wrap{ +color:#404040; +width:970px; +margin:10px auto; +padding:0; +} + +#header{margin:0;} + +#toplinks{text-align:right; padding:5px 2px 2px 3px;} + +#slogan{ +font-size:1.5em; +color:#808080; +font-weight:bold; +letter-spacing:-1px; +margin:15px 0px 20px 35px; +line-height:1.2em; +} + +/******** sidebar ********/ +#sidebar{ +float:left; +width:195px; +margin:0 0 5px 0; +padding:1px 0 0 0; +} + +#sidebar ul{ +list-style:none; +font-size:0.9em; +margin:0; +padding:0 0 15px 10px; +} + +#sidebar li{ +list-style:none; +margin:0 0 4px 0; +padding:0; +} + +#sidebar li a{ +font-size:1.2em; +font-weight:bold; +padding:2px; +} + +#sidebar ul ul{ +margin:4px 0 3px 15px; +line-height:1.2em; +padding:0; +} + +#sidebar ul ul li a{font-weight:normal;} +#sidebar h2{margin:3px 0px 8px 0px;} + +/******** Content variations ********/ +#content{ +line-height:1.5em; +width:750px; +float:right; +text-align:left; +margin:0; +padding:0; +} + +#contentalt{ +line-height:1.5em; +width:750px; +float:left; +text-align:left; +padding:0; +margin-right:20px; +} + +#content h3, #contentalt h3{margin:10px 0 8px;} + +/******** Footer ********/ +#footer{ +clear:both; +text-align:right; +color:#808080; +font-size:0.9em; +border-top:4px solid #dadada; +margin:0 auto; +padding:8px 0; +line-height:1.6em; +} + +#footer p{margin:0; padding:0;} +#footer a{color:#808080;} + +/******** Various classes ********/ +.box{ +color:#ffffff; +font-size:0.9em; +background-color:#4088b8; +border:1px solid #c8c8c8; +line-height:1.3em; +padding:5px 5px 5px 8px; +} + +.box a{color:#f0f0f0;} +.left{float:left; margin:0 15px 4px 0;} +.right{float:right; margin:0 0 4px 15px;} +.textright{text-align:right;} +.readmore{text-align:right; margin:-10px 10px 12px 0;} + +.center{text-align:center;} +.blue{color:#4088b8;} +.big{font-size:1.3em;} +.small{font-size:0.8em;} +.bold{font-weight:bold;} + +.clear{clear:both;} +.hide{display:none;} +.fade{color:#c8c8c8;} +.gray{color:#808080;} + +.photo{ +border:1px solid #bababa; +padding:2px; +background-color:#ffffff; +margin:6px 18px 2px 5px; +} + +table { + margin: 8px; +} + +code { + font: 1em 'Courier New', Courier, monospace; + color: #444; + white-space: pre; + width: 640px; + height: auto; + overflow: auto; + display: block; + border: 1px solid #999; + border-width: 2px 0; + padding: 1em; + margin: 0 0 1em 48px; + background-color: #fafafa; +} Added: trunk/webpage/HACKING =================================================================== --- trunk/webpage/HACKING (rev 0) +++ trunk/webpage/HACKING 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,15 @@ +1. How to write a Web content + +All Web pages are written in XML files. The specification was defined by me +(Nyaochi), and no documentation is available for the specification. However, +I think the specification is quite easy to guess from the existing XML files. + + +2. How to convert XML files into HTML files + +Just type +$ make +This will generate HTML files by applying an XSLT stylesheet (pmplib.xsl) +to updated XML file(s). You need xsltproc for XSLT processor. + + Added: trunk/webpage/Makefile =================================================================== --- trunk/webpage/Makefile (rev 0) +++ trunk/webpage/Makefile 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,26 @@ + +TARGETS = \ + index.html \ + news.html \ + download.html \ + document.html \ + document_easypmp_tutorial.html \ + document_jspl.html \ + faq.html \ + about.html \ + links.html \ + index.rss \ + +all: $(TARGETS) + +.SUFFIXES: +.SUFFIXES: .html .xml + +index.html: index.xml news.xml + +.xml.html: pmplib.xsl + xsltproc pmplib.xsl $< > $@ + +index.rss: newsrss.xsl news.xml + xsltproc --stringparam date "`date -R`" newsrss.xsl news.xml > $@ + Added: trunk/webpage/about.xml =================================================================== --- trunk/webpage/about.xml (rev 0) +++ trunk/webpage/about.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<title>About</title> +<last-update>$Date: 2005/10/10 09:28:51 $</last-update> +</head> + +<body> + +<section caption="What is PMPlib project?"> +<p> +Portable Media Player library (PMPlib) is an open source project for the development of management software/library for various portable media players. +The immediate objectives of this project: +</p> +<ul> +<li>to understand the specifications of media database and playlists used in various portable media players</li> +<li>to provide an alternative way to organize a player other than through bundled software or Windows Media Player</li> +<li>to provide libraries for other applications to manage a player</li> +<li>to make your player more accessible</li> +</ul> +</section> + +<section caption="Project members"> +<p> +<dl> +<dt>Nyaochi</dt> +<dd> +Project founder, admin, and core developer. +He owns iriver H320, H10 UMS [5GB], H10Jr UMS [1GB], U10 UMS [512MB], and E10 [6GB]. +<br/> +<img src="http://nyaochi.sakura.ne.jp/nyaochi-mail.png" /> +</dd> + +<dt>Martin Ellis</dt> +<dd> +Project admin and core developer. +</dd> + +</dl> +</p> +</section> + +<section caption="Acknowledgement"> +<p> +PMPlib uses the following libraries: +</p> +<ul> +<li><a href="http://www.vorbis.com">libogg, libvorbis, libvorbisfile</a> licensed under BSD.</li> +<li><a href="http://www.underbit.com/products/mad/">libid3tag</a> licensed under GPL.</li> +<li><a href="http://www.gzip.org/zlib/">zlib</a> licensed under zlib licence.</li> +<li><a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey (JavaScript-C) Engine</a> licensed under MPL 1.1/GPL 2.0/LGPL 2.1</li> +</ul> + +<p> +PMPlib consults the following information (and source codes): +</p> +<ul> +<li><a href="http://www.netrino.com/Connecting/2000-01/">Easier Said Than Done (CRC-32 calculation)</a> by Michael Barr.</li> +</ul> + +</section> + +<section caption="Contact"> +<p> +If you find any problems or have any suggestions, don't hesitate to contact us. +</p> +</section> + +</body> +</page> Added: trunk/webpage/document.xml =================================================================== --- trunk/webpage/document.xml (rev 0) +++ trunk/webpage/document.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<title>Manual</title> +<last-update>$Date: 2005/10/31 00:06:44 $</last-update> +</head> + +<body> + +<section caption="PMPlib Document"> + +<dl> + +<dt><a href="./document_easypmp_tutorial.html">EasyPMP Tutorial</a></dt> +<dd>This article presents a life with EasyPMP. I strongly suggest one to read this before using EasyPMP.</dd> + +<dt><a href="./document_jspl.html">JavaScript playlist (JSPL)</a></dt> +<dd>Specification of JavaScript playlist (JSPL)</dd> + +</dl> + +</section> + +</body> +</page> Added: trunk/webpage/document_easypmp_tutorial.xml =================================================================== --- trunk/webpage/document_easypmp_tutorial.xml (rev 0) +++ trunk/webpage/document_easypmp_tutorial.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<title>Tutorial</title> +<last-update>$Date: 2005/10/31 00:06:44 $</last-update> +</head> + +<body> + +<section caption="EasyPMP Tutorial"> +<p> +Can you imagine what life with EasyPMP is like? +If not, check this tutorial before looking at the manuals. +This tutorial presents a brief introduction of EasyPMP [Win32 GUI] and EasyPMP [CUI] versions. +</p> + +<subsection caption="Prepare music files in your favorite way"> +<p> +EasyPMP does not have built-in components to prepare music files, e.g., to extract music files from audio CD, to encode music files to the format supported by the player, to edit media information (e.g., track title, artist, album) in music files, etc. +The absence of such components in EasyPMP is because we may prefer a number of useful and excellent software that has already been released for free. +Here is a list of links to the software to manage music files: +</p> + +<ul> +<li><a href="http://www.exactaudiocopy.de/">Exact Audio Copy</a> (king-of-quality CD ripper)</li> +<li><a href="http://cdexos.sourceforge.net/">CDex</a> (easy-to-use CD ripper of good quality)</li> +<li><a href="http://lame.sourceforge.net/">LAME</a> (king-of-quality MP3 encoder)</li> +<li><a href="http://www.vorbis.com/">Ogg Vorbis</a> (king-of-quality lossy audio codec)</li> +<li><a href="http://www.foobar2000.org/">foobar2000</a> (multifunctional music player with CD ripper and encoders integrated)</li> + +<li><a href="http://www.quinnware.com/">Quintessential Player</a> (multifunctional music player with CD ripper and encoders integrated)</li> +<li><a href="http://www.mp3tag.de/en/">MP3TAG</a> (tagging software)</li> +<li><a href="http://users.otenet.gr/~jtcliper/tgf/">The GodFather</a> (tagging software)</li> +</ul> + +<p> +<a href="http://www.exactaudiocopy.de/"><img src="http://www.exactaudiocopy.de/eacbanner.png" height="31" width="88" /></a> +<a href="http://www.foobar2000.org/"><img src="images/fb2k-button.png" height="31" width="88" /></a> +<a href="http://www.quinnware.com/downloads.php"><img src="http://www.quinnware.com/img/bug3.gif" width="88" height="31" border="0" /></a> + +</p> +<img src="images/eac.png" width="449" height="273" /> +</subsection> + +<subsection caption="Transfer the music files that you want to listen to"> +<p> +Refer to <a href="">the list of supported players</a> for the location where we should place them. +You can transfer the music files into your player by Explorer, or synchronization software (e.g. <a href="http://www.microsoft.com/windowsxp/using/digitalphotography/prophoto/synctoy.mspx">SyncToy for Windows XP</a>, <a href="http://samba.anu.edu.au/rsync/">rsync</a>, and <a href="http://www.cis.upenn.edu/~bcpierce/unison/">Unison</a>). +</p> +<img src="images/music-folder.png" width="386" height="285" /> +</subsection> + +<subsection caption="Transfer the playlist files that you want to use in your player"> +<p> +Refer to <a href="">the list of supported players</a> for the location where we should place them. +EasyPMP converts M3U/M3U8/PLS playlists into the native format recognized by your player. +Just as music files, you can prepare playlist files in your favorite software such as <a href="http://www.winamp.com">WinAmp</a>, <a href="http://www.foobar2000.org/">foobar2000</a>, etc. +EasyPMP can also generate dynamic playlists based on media information (e.g., all tracks by a specific artist, top 50 tracks played frequently, etc.) by describing JavaScript playlist (JSPL). +</p> +<img src="images/fb2k_playlist.png" width="385" height="277" /> +</subsection> + +<subsection caption="Run EasyPMP"> +<p> +Run EasyPMP and choose a player location and determine processing modes (<i>update</i> or <i>rebuild</i>) for media database construction and playlist conversion. +Press [OK] button in the previous dialog and wait for EasyPMP to complete the preparation. +EasyPMP enumerates all music files located under music folders and constructs the media database (if necessary). +It also converts M3U/M3U8/PLS/JSPL playlist files into respective playlist files (if necessary) that are recognized by your player. +</p> +<img src="images/easypmp_win32gui_screenshot.png" width="602" height="324" /> +<p> +Note that EasyPMP <b>never interferes your style of preparing music files and transferring them into your player</b>. +You don't have to stick with Windows Media Player 10 or cumbersome bundled software any more. +</p> +</subsection> +</section> + +</body> +</page> Added: trunk/webpage/document_jspl.xml =================================================================== --- trunk/webpage/document_jspl.xml (rev 0) +++ trunk/webpage/document_jspl.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,482 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<title>JavaScript playlist (JSPL)</title> +<last-update>$Date: 2006/04/30 16:32:02 $</last-update> +</head> + +<body> + +<section caption="JavaScript playlist (JSPL)"> + +<subsection caption="Introduction"> +<p> +A <i>playlist</i> is a sequence (ordered list) of media tracks (i.e., songs and movies) to specify one's favorite tracks and their order. +In general, a playlist stores a sequence of file names (either in relative or absolute paths). +For example, an M3U playlist is mere a text file in which each line describes a reference (i.e., a file name in relative or absolute path) to a media track. +Therefore, playlists are <i>static</i> in the sense that the user must revise them to change the track list or sequence. +Although it is useful to represent one's best tracks in his or her collection, some might want to organize playlist automatically with some rules, for example, +</p> +<ul> +<li>All tracks in the player arranged in a random order;</li> +<li>All tracks performed by the Beatles;</li> +<li>All tracks with genre "Rock";</li> +<li>Top 100 tracks played frequently in the player.</li> +</ul> +<p> +We call such playlists described by the rules as <i>dynamic playlists</i>. +Dynamic playlists can be achieved by introducing a user interface (e.g., GUI form) to specify artist name, genre name, playback count, etc. +However, such approach lacks the versatility: a user might not be satisfied with a predefined GUI form if he or she wants a playlist with more complicated rules. +For this reason, we introduce a scripting language in which a user can access to the media information of all tracks, choose necessary tracks based on the media information, and arrange the tracks in an arbitrary order. +EasyPMP employs <i>JavaScript</i> as the scripting language for describing dynamic playlists. +</p> +<p> +JavaScript is best known as the scripting language for dynamic web contents and has a great number of users. +Some might presume that JavaScript is just for web contents, but it is also used as a scripting language embedded in other applications, e.g., Virtual Reality Modeling Language (VRML), Scalable Vector Graphics (SVG), etc. +Moreover, JavaScript has a powerful language specification for describing dynamic playlist, featuring: +</p> +<ul> +<li>Object Oriented Programing (OOP)</li> +<li>Useful built-in objects such as Array, Math, Object, String, etc.</li> +<li>Unicode support in String object.</li> +<li>Regular Expression (RegExp) object.</li> +</ul> +</subsection> + +<subsection caption="The function to be implemented: main"> +<p> +Any JavaScript playlist must implement function <i>main</i>. +This function chooses tracks to be included in the target playlist(s) from media information of all tracks in a portable player. +For generating a single playlist, the function should return a JavaScript Array instance that represents a sequence (ordered list) of tracks. +For generating multiple playlists, the function should return a JavaScript Object instance storing associations from playlist names to their corresponding track sequences. +The application such as EasyPMP sets the necessary arguments (e.g., media information) to the function, receives the JavaScript value from the <i>main</i> function, and generates the corresponding playlist(s). +</p> +<p> +The following describes a skeleton code implementing the minimum components for a valid JSPL, not including any tracks to the corresponding plylist. +</p> +<code><![CDATA[/** + * A skeleton code for JSPL. + * @param media The array of media information of all tracks. + * @param src The full-path name of this JSPL file. + * @return A JavaScript array (for singple playlist); + * a JavaScript object (for multiple playlists). + */ +function main(media, src) +{ +} +]]></code> +<p> +Content of a playlist is determined by the array returned by the function <i>main</i>. +For example, if an implementation collects tracks by a specific artist, the corresponding playlist will have the tracks by the artist. +The primary task of the <i>main</i> function is to choose a set of preferred tracks by implementing a conditional expression. +The following code extracts tracks performed by the Beatles. +</p> +<code><![CDATA[/* JSPL with all tracks by Beatles. */ + +function main(media, src) +{ + // Create a JavaScript array representing a playlist. + var pl = new Array(); + + for (var i = 0;i < media.length;++i) { + var track = media[i]; + + // Add the current track if the artist name is "Beatles". + if (track.artist == "Beatles") { + pl.push(track); + } + } + + // Return the playlist. + return pl; +} +]]></code> +<p> +In addition, the playback order of a playlist is determined by the order of tracks stored in the JavaScript Array object. +For example, if a returned array contains all tracks in a portable player in a random order, the corresponding playlist will be a random playlist with all tracks. +The function is responsible for sorting tracks in a preferred order, e.g., numerical order of track numbers, alphabetical order of track titles, etc. +The following code extracts all tracks in a player and arranges them in an alphabetical order of track titles. +The sorting implementation can be simplified by using Playlist class "playlist.js" (described later). +</p> +<code><![CDATA[/* JSPL with all tracks in an alphabetical order. */ + +function comp_title(x, y) +{ + return ((x.title)>(y.title))-((x.title)<(y.title)); +} + +function main(media, src) +{ + // Create a JavaScript array representing a playlist. + var pl = new Array(); + + // Add all tracks to the playlist. + for (var i = 0;i < media.length;++i) { + pl.push(media[i]); + } + + // Sort the playlist in an alphabetical order of track titles. + pl.sort(comp_title); + + // Return the playlist. + return pl; +} +]]></code> +<p> +A JavaScript playlist can generate multiple playlists, e.g., playlists each of which represents tracks by an artist. +The <i>main</i> function must return a JavaScript object storing mappings from playlist names and their playlist contents. +According to the JavaScript language specification, any JavaScript object incorporates an <i>associative array</i> that associates attribute names and their values. +In JavaScript playlist, an attribute name represents a playlist name, and its value corresponds to a JavaScript array storing the track list. +The following JSPL collects the tracks performed by the same artist into a playlist and generates such playlists for all artists. +</p> +<code><![CDATA[/* JSPL for organizing multiple playlists by artist names. */ + +function main(media, src) +{ + // Container storing multiple playlists. + var pls = new Object(); + + for (var i = 0;i < media.length;++i) { + var track = media[i]; + + // Access to the playlist named as the artist name. + var pl = pls[track.artist]; + + // Create a new playlist if such playlist does not exist. + if (pl == undefined) { + pl = pls[track.artist] = new Array(); + } + + // Add this track to the playlist. + pl.push(track); + } + + // Return the container of multiple playlists. + return pls; +} +]]></code> +</subsection> + +<subsection caption="Arguments to main function"> +<p> +Function <i>main</i> receives two arguments, <i>media</i> and <i>src</i>. +The first argument <i>media</i> is an array of JavaScript objects each of which represents media information of a track in a portable player. +Each element in the array has a set of attributes that represents the media information. +A JavaScript playlist makes use of the attributes to extract preferred tracks and to arrange them in a preferred order. +The following is the list of the attributes in each element. +</p> + +<table border="1"> +<tr><th>Field name</th><th>Type</th><th>Description</th><th>Example</th></tr> +<tr> +<td>id</td> +<td>Integer</td> +<td>Unique identifier</td> +<td>1</td> +</tr> + +<tr> +<td>filename</td> +<td>String</td> +<td>Full-path name of the media file</td> +<td>D:\Music\Beatles\YellowSubmarine\02.mp3</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title name</td> + +<td>Hey Bulldog</td> +</tr> +<tr> +<td>artist</td> +<td>String</td> +<td>Artist name</td> +<td>Beatles</td> +</tr> +<tr> +<td>composer</td> +<td>String</td> + +<td>Composer of this track typically used for classical music.</td> +<td>John Lennon & Paul McCartney</td> +</tr> +<tr> +<td>album</td> +<td>String</td> +<td>Album name</td> +<td>Yellow Submarine</td> +</tr> +<tr> + +<td>genre</td> +<td>String</td> +<td>Genre name</td> +<td>Rock</td> +</tr> +<tr> +<td>codec</td> +<td>Integer</td> +<td>Codec identifier</td> +<td>Codec.OggVorbis</td> + +</tr> +<tr> +<td>track_number</td> +<td>Integer</td> +<td>Track number</td> +<td>2</td> +</tr> +<tr> +<td>sample_rate</td> +<td>Integer</td> +<td>Sample rate in Hz</td> + +<td>44100</td> +</tr> +<tr> +<td>bitrate</td> +<td>Integer</td> +<td>Bitrate in bps</td> +<td>128000</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> + +<td>Track length in seconds</td> +<td>193</td> +</tr> +<tr> +<td>rating</td> +<td>Integer</td> +<td>Rating value</td> +<td>5</td> +</tr> +<tr> +<td>play_count</td> + +<td>Integer</td> +<td>The number of playback times</td> +<td>3</td> +</tr> +<tr> +<td>update_timestamp</td> +<td>Integer</td> +<td>Timestamp of the last modified</td> +<td>193</td> +</tr> + +<tr> +<td>import_timestamp</td> +<td>Integer</td> +<td>Timestamp when this track was added to the database</td> +<td>193</td> +</tr> +<tr> +<td>playback_timestamp</td> +<td>Integer</td> +<td>Timestamp when this track was played in the player</td> + +<td>193</td> +</tr> +</table> + +<p> +The second argument <i>src</i> presents the full-path name of the current JavaScript playlist. +</p> +</subsection> + +<subsection caption="JSPL extension to ECMAScript"> +<p> +For debugging purpose, JSPL defines a global function <i>print</i> to display values. +The function takes multiple arguments and outputs the argument values. +The following code outputs artist, album, and title names of all tracks. +</p> +<code><![CDATA[/* JSPL displaying track artists, albums, and titles. */ + +function main(media, src) +{ + for (var i = 0;i < media.length;++i) { + var track = media[i]; + print(track.artist, track.album, track.title); + } +} +]]></code> +<p> +JSPL defines a global function <i>include</i> to evaluate an external JavaScript file. +This function is useful to modularize reusable components. +The following code import "playlist.js" located in JSPL include path (typically "jspl" directory under EasyPMP executable). +</p> +<code><![CDATA[include("playlist.js"); +]]></code> +</subsection> + +<subsection caption="Codec object (defined as a global object)"> +<p> +<i>Codec</i> object defines codec identifiers used by <i>codec</i> field in media information. +Following member variables are defined: +</p> + +<dl> +<dt>MP3</dt><dd>MPEG Audio Layer III</dd> +<dt>OggVorbis</dt><dd>Ogg Vorbis</dd> +<dt>WAV</dt><dd>Microsoft WAVE</dd> +<dt>WMA</dt><dd>Windows Media Audio</dd> +</dl> +</subsection> + +<subsection caption="Playlist object (playlist.js)"> +<p> +Playlist class is a specialization of JavaScript Array for the management of a playlist. +In addition to the member function in Array, Playlist class has two member functions, <i>order</i> and <i>shuffle</i>. +</p> + +<subsubsection caption="order function"> +<p> +Member function <i>order</i> is useful to arrange tracks in a playlist. +Although JavaScript Array class has member function <i>sort</i>, it is boring to implement a comparison function to arrange tracks in a preferred order. +The function arranges tracks by the field(s) specified by the argument(s). +Each argument represents the field name to predicate the order of two tracks. +Receiving "title" as an argument, for example, the function arranges tracks in a alphabetical (descending) order of title names. +If the function receives an argument beginning with character '-', tracks are arranged in an ascending order. +</p> +<p> +If the values of two tracks are identical by a comparison with the field specified by the first argument, the function tries the next field specified by the second argument (if any). +This process will be repeated while the values of two tracks are identical. +If two tracks are identical even after comparing with all fields, the order is left undefined. +</p> +<p> +The following snippet arranges tracks in an alphabetical order of artist names. +If artist names of two tracks are identical, the order is determined by the alphabetical order of album names. +If artist and album names of two tracks are the same, the order is determined by the numerical order of track numbers. +</p> +<code><![CDATA[include("playlist.js"); + +pl = new Playlist(); +... +/* Arrange tracks by artists, albums, and track numbers. */ +pl.order("artist", "album", "track_number"); +]]></code> +<p> +The following code arranges tracks in a <i>descending</i> order of play counts, i.e., in a popularity order. +</p> +<code><![CDATA[include("playlist.js"); + +pl = new Playlist(); +... +/* Arrange tracks in a descending order of play counts. */ +pl.order("-play_count"); +]]></code> +</subsubsection> + +<subsubsection caption="shuffle function"> +<p> +Member function <i>shuffle</i> randomizes the order of tracks in a playlist. +The function is useful to generate a shuffle playlist. +</p> +<code><![CDATA[include("playlist.js"); + +pl = new Playlist(); +... +/* Arrange tracks in a random order. */ +pl.shuffle(); +]]></code> +</subsubsection> +</subsection> + +<subsection caption="Examples"> + +<subsubsection caption="Artist.jspl"> +<code><![CDATA[/* + * Artist playlist + * + * This JSPL extracts tracks performed by the artist whose name is + * is specified by either variable 'artist_name' or filename of this JSPL. + * + */ + +// Change this to specify the artist name +var artist_name = ""; + +include("playlist.js"); + +function main(media, source) +{ + // Check artist_name. + if (!artist_name) { + // Retrieve an artist name from the filename. + var begin = 0, end = source.length; + for (var i = 0;i < source.length;++i) { + if (source[i] == '\' || source[i] == '/') + begin = i; + if (source[i] == '.') + end = i; + } + artist_name = source.slice(begin, end); + } + + // Convert the artist name to lower case. + artist_name = artist_name.toLowerCase(); + + var pl = new Playlist(); + for (var i = 0;i < media.length;++i) + if (media[i].artist.toLowerCase() == artist_name) + pl.push(media[i]); + pl.order("album", "track_number"); + + return pl; +} +]]></code> +</subsubsection> + +<subsubsection caption="Artists.jspl"> +<code><![CDATA[/* + * Artists playlist + * + * This JSPL generates multiple playlists each of which collects tracks + * performed by an artist. + * + */ + +include("playlist.js"); + +function main(media, playlist) +{ + var pls = new Object(); + + for (var i = 0;i < media.length;++i) { + var artist = media[i].artist.toLowerCase(); + var pl = pls[artist]; + if (pl == undefined) + pl = pls[artist] = new Playlist(); + pl.push(media[i]); + } + + for (var name in pls) { + var pl = pls[name]; + pl.order("album", "track_number"); + } + + return pls; +} +]]></code> +</subsubsection> +</subsection> + +<subsection caption="Reference"> +<ul> +<li> +<a href="http://developer.mozilla.org/en/docs/JavaScript">JavaScript - MDC</a>: Documentation of the JavaScript language used by Gecko-based browsers (e.g., FireFox) and also by EasyPMP (libplaylist). + +</li> +<li> +<a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a>: The JavaScript engine used by EasyPMP (libplaylist). It is Gecko's JavaScript engine written in C. It is used in various Mozilla products, and is available under MPL/GPL/LGPL tri-license. +</li> +</ul> +</subsection> +</section> +</body> +</page> Added: trunk/webpage/download.xml =================================================================== --- trunk/webpage/download.xml (rev 0) +++ trunk/webpage/download.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<title>Download</title> +<last-update>$Date: 2006/04/30 16:32:00 $</last-update> +</head> + +<body> + +<section caption="Download"> +<p> +Currently, EasyPMP is the only application we develop and release. +</p> + +<subsection caption="EasyPMP [Win32]"> +<p> +Download the <a href="http://sourceforge.net/project/showfiles.php?group_id=157298&package_id=175772">EasyPMP binary for Windows 2000/XP</a> at sourceforge.net. +</p> +</subsection> + +<subsection caption="EasyPMP [POSIX]"> +<p> +Download the <a href="http://sourceforge.net/project/showfiles.php?group_id=157298&package_id=175772">source code of pmplib</a> at sourceforge.net. +</p> +</subsection> +</section> + +<section caption="Accessing the source code through SVN"> +<p> +The source code is available at the <a href="http://sourceforge.net/svn/?group_id=157298">subversion repository</a>. +You can also <a href="http://svn.sourceforge.net/pmplib">browse the source code</a> through the web browsers. +</p> +</section> + +</body> +</page> Added: trunk/webpage/faq.xml =================================================================== --- trunk/webpage/faq.xml (rev 0) +++ trunk/webpage/faq.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<title>Frequently Asked Questions (FAQ)</title> +<last-update>$Date: 2006/01/23 20:52:40 $</last-update> +</head> + +<body> +<makeindex caption="Table of Contents: PMPlib FAQ" /> + +<section caption="EasyH10 Frequently Asked Questions (FAQ)"> +<subsection caption="item #1"> +</subsection> +</section> + +</body> +</page> Added: trunk/webpage/images/background-800px.gif =================================================================== (Binary files differ) Property changes on: trunk/webpage/images/background-800px.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/webpage/images/background.gif =================================================================== (Binary files differ) Property changes on: trunk/webpage/images/background.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/webpage/images/eac.png =================================================================== (Binary files differ) Property changes on: trunk/webpage/images/eac.png ___________________________________________________________________ Name: svn:mime-type + image/png Added: trunk/webpage/images/easypmp_win32gui_screenshot.png =================================================================== (Binary files differ) Property changes on: trunk/webpage/images/easypmp_win32gui_screenshot.png ___________________________________________________________________ Name: svn:mime-type + image/png Added: trunk/webpage/images/example.jpg =================================================================== (Binary files differ) Property changes on: trunk/webpage/images/example.jpg ___________________________________________________________________ Name: svn:mime-type + image/jpeg Added: trunk/webpage/images/fb2k-button.png =================================================================== (Binary files differ) Property changes on: trunk/webpage/images/fb2k-button.png ___________________________________________________________________ Name: svn:mime-type + image/png Added: trunk/webpage/images/fb2k_playlist.png =================================================================== (Binary files differ) Property changes on: trunk/webpage/images/fb2k_playlist.png ___________________________________________________________________ Name: svn:mime-type + image/png Added: trunk/webpage/images/music-folder.png =================================================================== (Binary files differ) Property changes on: trunk/webpage/images/music-folder.png ___________________________________________________________________ Name: svn:mime-type + image/png Added: trunk/webpage/index.xml =================================================================== --- trunk/webpage/index.xml (rev 0) +++ trunk/webpage/index.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<include-rss /> +<last-update>$Date: 2006/01/17 14:07:30 $</last-update> +</head> + +<body> + +<section caption="Welcome to PMPlib project!"> +<p> +Portable Media Player library (PMPlib) is an open source project for the development of management software/library for various portable media players. PMPlib project currently supports the following hardware: +</p> +<ul> +<li>iRiver H100 series</li> +<li>iRiver H300 series</li> +<li>iRiver H10 UMS</li> +<li>iRiver H10 MTP (with emergency connect mode)</li> +<li>iRiver H10Jr. UMS</li> +<li>iRiver U10 UMS</li> +<li>MEDION MDJuke220</li> +<li>MEDION MDJuke440</li> +<li>Samsung YH-820</li> +<li>Samsung YH-920</li> +<li>Samsung YH-925</li> +</ul> +</section> + +<section caption="News"> +<include-news /> +</section> + +</body> +</page> Added: trunk/webpage/links.xml =================================================================== --- trunk/webpage/links.xml (rev 0) +++ trunk/webpage/links.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<title>Links</title> +<last-update>$Date: 2005/10/31 00:06:44 $</last-update> +</head> + +<body> + +<section caption="Links"> +<p> +If you know other useful sites or create a web site related to PMPlib, please let us know. +</p> +</section> + +</body> +</page> Added: trunk/webpage/news.xml =================================================================== --- trunk/webpage/news.xml (rev 0) +++ trunk/webpage/news.xml 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml-stylesheet href="./pmplib.xsl" type="application/xml"?> + +<page> +<head> +<include-rss /> +<title>News</title> +<last-update>$Date: 2006/04/30 16:32:02 $</last-update> +</head> + +<body> + +<news> + +<ni caption="EasyPMP version 0.11 released" date="2006-06-06"> +<p> +We are pleased to annouce that PMPlib 0.11 was released with the source-code distribution for POSIX environments. +</p> +<ul> +<li><b>The memorable release of PMPlib source code for POSIX environments.</b> Martin Ellis, who joined the PMPlib project as a developer, achieved this miracle with his brilliant skill of programming. We confirmed that the current source code worked fine on Debian GNU/Linux 3.1. Note that libid3tag, libz, libogg, libvorbis, SpiderMonkey are necessary for building EasyPMP. Please report the workability or problems on your environments because we are not sure about the portability with other Linux distributions and Mac OS.</li> + +<li>A serious bug-fix in playlist conversion for iRiver U10 and H10Jr. Playlist conversion did not work correctly if multiple files whose names begin with the same eight letters exist.</li> +<li>Implemented a function to strip preceding words such as 'the' in artist names.</li> +<li>Supported U10 UMS firmware 1.65.</li> +</ul> +</ni> + +<ni caption="EasyPMP version 0.10 released" date="2006-05-25"> +<p> +<b>Welcome to EasyPMP, iRiver U10 users worldwide!</b> +</p> +<p> +Following <a href="http://www.iriver.com/mtp/">iRiver's great decision</a> of releasing the UMS firmware for U10 shipped with the MTP firmware, we are pleased to release EasyPMP version 0.10 alpha to support the latest firmware, U10 UMS firmware version 1.64. +The difference between the previous version to the current is only that EasyPMP now recognizes U10 UMS 1.64 automatically. +Even though this is a minor change to the source code, we release a new version to celebrate the new firmware! +</p> +</ni> + +<ni caption="EasyPMP version 0.9 released" date="2006-05-05"> +<p> +EasyPMP version 0.9 was released. +</p> +<ul> +<li>Revised the specification of JavaScript playlist for better flexibility. The new specification is totally incompatible with the old one. Please refer to the <a href="jspl.html">JSPL documentation</a>.</li> +<li>Load the media database automatically when enabling JSPL.</li> +<li>Supported Samsung YH-820 player.</li> +<li>Supported Samsung YH-925 player (to be confirmed; maybe...)</li> +<li>Launched the official web site.</li> +</ul> +</ni> + +<ni caption="EasyPMP version 0.8 released" date="2006-02-13"> +<p> +EasyPMP version 0.8 was released. +</p> +<ul> +<li>Supported JavaScript Playlist (JSPL). Put artists.jspl into your playlist folder to experience how powerful it is.</li> +<li>Supported configurable sources of media information. EasyPMP can now make use of folder structure and file name for obtaining media information.</li> +<li>Bug-fix in playlist generation for PortalPlayer based players.</li> +</ul> +</ni> + +<ni caption="EasyPMP version 0.7 released" date="2006-02-11"> +<p> +EasyPMP version 0.7 was released. +</p> +<ul> +<li>Supported Medion MDJuke 440, MDJuke220.</li> +</ul> +</ni> + +<ni caption="EasyPMP version 0.6 released" date="2006-01-24"> +<p> +EasyPMP version 0.6 was released. +</p> +<ul> +<li>Bug fix in database construction for H10Jr/U10</li> +</ul> +</ni> + +<ni caption="EasyPMP version 0.5 released" date="2006-01-09"> +<p> +EasyPMP version 0.5 was the initial release of Win32 GUI version. +</p> +</ni> + +<ni caption="EasyPMP version 0.4 released" date="2006-01-03"> +<p> +EasyPMP version 0.4 was released. +</p> +<ul> +<li>Implemented the incremental update of media database and playlists.</li> +<li>Revised command-line switches.</li> +<li>Changed the license of some DLLs to LGPL.</li> +</ul> +</ni> + +<ni caption="EasyPMP version 0.3 released" date="2006-01-01"> +<p> +EasyPMP version 0.3 was released. +</p> +<ul> +<li>Changed the application name to EasyPMP.</li> +<li>Supported iRiver H10 players.</li> +<li>Implemented playlist conversion.</li> +<li>Fixed a bug in the database construction for iRiver H10Jr/U10.</li> +<li>Exported the internal libraries as dynamic link libraries (DLLs) for the future use.</li> +</ul> +</ni> + +<ni caption="DMPSync version 0.2 released" date="2005-12-24"> +<p> +DMPSync version 0.2 was released. +</p> +<ul> +<li>Supported iRiver H100/H300 database (iRivNavi.iDB)</li> +</ul> +</ni> + +<ni caption="DMPSync version 0.1 released" date="2005-12-23"> +<p> +This is the initial attemp to construct a media database for iriver H10Jr/U10 players. +Only Win32 CUI version was released. +No playlist conversion at this moment. +</p> +</ni> + +</news> + +</body> +</page> Added: trunk/webpage/newsrss.xsl =================================================================== --- trunk/webpage/newsrss.xsl (rev 0) +++ trunk/webpage/newsrss.xsl 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + +<xsl:output + method="xml" + encoding="ISO-8859-1" + /> + +<xsl:template match="/"> + <rss version="2.0"> + <channel> + <title>PMPlib News</title> + <link>http://pmplib.sourceforge.net/</link> + <description>Portable Media Player library (PMPlib) is an open source project for the development of management software and library for various portable media players.</description> + <copyright><xsl:call-template name="copyright" /></copyright> + <lastBuildDate><xsl:value-of select="$date" /></lastBuildDate> + <generator>PMPlib News RSS generator</generator> + <xsl:apply-templates select="/page/body/news" /> + </channel> + </rss> +</xsl:template> + + +<xsl:template match="news"> +<xsl:apply-templates select="ni[1]" /> +<xsl:apply-templates select="ni[2]" /> +<xsl:apply-templates select="ni[3]" /> +<xsl:apply-templates select="ni[4]" /> +<xsl:apply-templates select="ni[5]" /> +<xsl:apply-templates select="ni[6]" /> +<xsl:apply-templates select="ni[7]" /> +<xsl:apply-templates select="ni[8]" /> +<xsl:apply-templates select="ni[9]" /> +<xsl:apply-templates select="ni[10]" /> +</xsl:template> + +<xsl:template match="ni"> +<item> +<title><xsl:value-of select="@caption" /> (<xsl:value-of select="@date" />)</title> +<description><xsl:apply-templates /></description> +<author>Nyaochi</author> +<link>http://easyh10.sourceforge.net/news.html#<xsl:value-of select="generate-id()" /></link> +<guid isPermaLink="true">http://easyh10.sourceforge.net/news.html#<xsl:value-of select="generate-id()" /></guid> +</item> +</xsl:template> + + + + + +<xsl:template match="a"> +<a> + <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute> + <xsl:apply-templates /> +</a> +</xsl:template> + +<xsl:template match="p"><p><xsl:apply-templates /></p></xsl:template> +<xsl:template match="br"><br/></xsl:template> +<xsl:template match="i"><i><xsl:apply-templates /></i></xsl:template> +<xsl:template match="b"><b><xsl:apply-templates /></b></xsl:template><xsl:template match="u"><u><xsl:apply-templates /></u></xsl:template> +<xsl:template match="table"> +<div align="center"> +<xsl:if test="@caption"><br/><b><xsl:value-of select="@caption" /></b></xsl:if> +<table border="1"> +<xsl:if test="@border"><xsl:attribute name="border"><xsl:value-of select="@border" /></xsl:attribute></xsl:if> +<xsl:apply-templates /> +</table> +</div> +</xsl:template> +<xsl:template match="tr"><tr><xsl:apply-templates /></tr></xsl:template> +<xsl:template match="td"><td><xsl:if test="@colspan"><xsl:attribute name="colspan"><xsl:value-of select="@colspan" /></xsl:attribute></xsl:if><xsl:apply-templates /></td></xsl:template> +<xsl:template match="th"><th><xsl:if test="@width"><xsl:attribute name="width"><xsl:value-of select="@width" /></xsl:attribute></xsl:if><xsl:apply-templates /></th></xsl:template> + +<xsl:template match="shell"><pre class="shell"><xsl:apply-templates /></pre></xsl:template><xsl:template match="br"><br/></xsl:template> +<xsl:template match="pre"><pre><xsl:apply-templates /></pre></xsl:template> +<xsl:template match="source"><pre class="source"><xsl:apply-templates /></pre></xsl:template> +<xsl:template match="ul"><ul><xsl:apply-templates /></ul></xsl:template> +<xsl:template match="ol"><ol><xsl:apply-templates /></ol></xsl:template> +<xsl:template match="li"><li><xsl:apply-templates /></li></xsl:template> +<xsl:template match="dl"><dl><xsl:apply-templates /></dl></xsl:template> +<xsl:template match="dt"><dt><xsl:apply-templates /></dt></xsl:template> +<xsl:template match="dd"><dd><xsl:apply-templates /></dd></xsl:template> + +<xsl:template match="fig"><p align="center"> +<xsl:choose> +<xsl:when test="@detail-src"> +<a><xsl:attribute name="href">fig/<xsl:value-of select="@detail-src" /></xsl:attribute><img><xsl:attribute name="src">http://www.iriver.co.jp/images/supporter/670_52/<xsl:value-of select="@src" /></xsl:attribute></img></a> +</xsl:when> +<xsl:otherwise> +<img><xsl:attribute name="src">fig/<xsl:value-of select="@src" /></xsl:attribute></img> +</xsl:otherwise> +</xsl:choose> +<xsl:if test="@caption"><br/><b><xsl:value-of select="@caption" /></b></xsl:if></p></xsl:template> + +<xsl:template match="img"> +<img><xsl:attribute name="src"><xsl:value-of select="@src" /></xsl:attribute><xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute></img> +</xsl:template> + +<xsl:template match="jpg"><div align="center"> +<a><xsl:attribute name="href">fig/<xsl:value-of select="@src" />.jpg</xsl:attribute><img><xsl:attribute name="src">fig/<xsl:value-of select="@src" />-s.jpg</xsl:attribute></img></a> +<xsl:if test="@caption"><br/><b><xsl:value-of select="@caption" /></b></xsl:if> +</div> +</xsl:template> + +<xsl:template match="gif"><div align="center"> +<a><xsl:attribute name="href">fig/<xsl:value-of select="@src" />.gif</xsl:attribute><img><xsl:attribute name="src">fig/<xsl:value-of select="@src" />-s.gif</xsl:attribute></img></a> +<xsl:if test="@caption"><br/><b><xsl:value-of select="@caption" /></b></xsl:if> +</div> +</xsl:template> + +<xsl:template match="section-table"> +<table border="1"> +<xsl:apply-templates mode="section-table"/> +</table> +</xsl:template> + +<xsl:template match="ts" mode="section-table"> +<xsl:apply-templates mode="section-table"> + <xsl:with-param name="section_caption" select="@caption" /> + <xsl:with-param name="num_rowspan" select="count(tr)" /> +</xsl:apply-templates> +</xsl:template> + +<xsl:template match="tr" mode="section-table"> + <xsl:param name="section_caption"></xsl:param> + <xsl:param name="num_rowspan">1</xsl:param> + <tr> + <xsl:choose> + <xsl:when test="@superior='1'"><xsl:attribute name="bgcolor">#DDDDFF</xsl:attribute></xsl:when> + <xsl:when test="@superior='2'"><xsl:attribute name="bgcolor">#FFDDDD</xsl:attribute></xsl:when> + <xsl:otherwise></xsl:otherwise> + </xsl:choose> + <xsl:if test="position() = 2"> + <td align="middle" bgcolor="#DDDDDD"> + <xsl:attribute name="rowspan"><xsl:value-of select="$num_rowspan" /></xsl:attribute> + <xsl:value-of select="$section_caption" /> + </td> + </xsl:if> + <td><xsl:value-of select="@caption" /></td> + <xsl:apply-templates /> + </tr> +</xsl:template> + +<xsl:template match="thr" mode="section-table"> +<tr bgcolor="#AAAAAA"><xsl:apply-templates /></tr> +</xsl:template> + + +<!-- Named Template --> +<xsl:template name="copyright">Copyright (c) 2005-2006 PMPlib project.</xsl:template> + +</xsl:stylesheet> Added: trunk/webpage/pmplib.xsl =================================================================== --- trunk/webpage/pmplib.xsl (rev 0) +++ trunk/webpage/pmplib.xsl 2006-07-29 05:18:48 UTC (rev 141) @@ -0,0 +1,313 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + +<xsl:output + method="xml" + encoding="ISO-8859-1" + doctype-public="-//W3C//DTD XHTML 1.1//EN" + doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" + /> + +<xsl:template match="/"> + <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/html; charaset=ISO-8859-1" /> + <meta name="keywords" content="PMPlib,EasyPMP,Portable Media Player,database,playlist" /> + <meta name="description" content="Portable Media Player library (PMPlib) is an open source project for the development of management software/library for various portable media players." /> + <meta name="author" content="http://pmplib.sourceforge.net/" /> + <meta name="copyright" content="Copyright (c) 2005-2006 by PMPlib project" /> + + <link rel="stylesheet" href="./1024px.css" type="text/css" title="1024px style" media="screen,projection"/> + <xsl:if test="/page/head/include-rss"><link rel="alternate" type="application/rss+xml" title="RSS" href="./index.rss" /></xsl:if> + + <title><xsl:call-template name="title" /></title> + </head> + <body> + <div id="wrap"> + + <div id="header"> + <p id="toplinks">Skip to: <a href="#content">Content</a> | <a href="#sidebar">Navigation</a> | <a href="#footer">Footer</a></p> + <h1><a href="index.html">PMP<span class="fade">lib</span></a></h1> + <p id="slogan"></p> + </div> + + <div id="content"> + <xsl:apply-templates select="/page/body" /> + </div> + + <div id="sidebar"> + + <h2>Pages:</h2> + <xsl:call-template name="topmenu" /> + + <h2>Site news:</h2> + <xsl:call-template name="sitenews" /> + + <h2>About us</h2> + <p>Portable Media Player library (PMPlib) is an open source project for the development of management software and library for various portable media players.</p> + + <p><a href="http://sourceforge.net"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=157298&type=1" width="88" height="31" border="0" alt="SourceForge.net Logo" /></a></p> + + </div> + + <div id="footer"> + <xsl:call-template name="footer" /> + </div> + + </div> + </body> + </html> +</xsl:template> + +<xsl:template match="body"> +<xsl:apply-templates /> +</xsl:template> + +<xsl:template match="include-news"> +<xsl:apply-templates select="document('news.xml')/page/body/news/ni[1]" /> +<xsl:apply-templates select="document('news.xml')/page/body/news/ni[2]" /> +<xsl:apply-templates select="document('news.xml')/page/body/news/ni[3]" /> +</xsl:template> + +<xsl:template match="makeindex"> +<h2> +<xsl:choose> + <xsl:when test="@caption"><xsl:value-of select="@caption" /></xsl:when> + <xsl:otherwise>Table of Contents</xsl:otherwise> +</xsl:choose> +</h2> +<xsl:choose> + <xsl:when test="@ordered[.='yes']"> + <ol class="index"> + <xsl:apply-templates select="../section" mode="makeindex"> + <xsl:with-param name="list-element">ol</xsl:with-param> + </xsl:apply-templates> + </ol> + </xsl:when> + <xsl:otherwise> + <ul class="index"> + <xsl:apply-templates select="../section" mode="makeindex"> + <xsl:with-param name="list-element">ul</xsl:with-param> + </xsl:apply-templates> + </ul> + </xsl:otherwise> +</xsl:choose> +</xsl:template> + +<!-- + Implementation of <section> element +--> +<xsl:template match="section"> +<h2><a name="{generate-id()}"><xsl:value-of select="@caption" /></a></h2> +<xsl:apply-templates /> +</xsl:template> + +<xsl:template match="section" mode="makeindex"> + <xsl:param name="list-element">ul</xsl:param> + <li> + <a href="#{generate-id()}"><xsl:value-of select="@caption" /></a> + <xsl:element name="{$list-element}"> + <xsl:attribute name="class">index</xsl:attribute> + <xsl:apply-templates select="subsection" mode="makeindex"> + </xsl:apply-templates> + </xsl:element> + </li> +</xsl:template> + + + +<!-- + Implementation of <subsection> element +--> +<xsl:template match="subsection"> +<h3><a name="{generate-id()}"><xsl:value-of select="@caption" /></a></h3> +<xsl:apply-templates /> +</xsl:template> + +<xsl:template match="subsection" mode="makeindex"> + <xsl:param name="list-element">ul</xsl:param> + <li> + <a href="#{generate-id()}"><xsl:value-of select="@caption" /></a> + <xsl:element name="{$list-element}"> + <xsl:attribute name="class">index</xsl:attribute> + <xsl:apply-templates select="subsubsection" mode="makeindex"> + </xsl:apply-templates> + </xsl:element> + </li> +</xsl:template> + +<!-- + Implementation of <subsubsection> element +--> +<xsl:template match="subsubsection"> +<h4><a name="{generate-id()}"><xsl:value-of select="@caption" /></a></h4> +<xsl:apply-templates /> +</xsl:template> + +<xsl:template match="subsubsection" mode="makeindex"> + <xsl:param name="list-element">ul</xsl:param> + <li> + <a href="#{generate-id()}"><xsl:value-of select="@caption" /></a> + <xsl:element name="{$list-element}"> + <xsl:attribute name="class">index</xsl:attribute> + <xsl:apply-templates select="subsubsection" mode="makeindex"> + </xsl:apply-templates> + </xsl:element> + </li> +</xsl:template> + + +<xsl:template match="news"> +<h2>News</h2> +<xsl:apply-templates select="ni" /> +</xsl:template> + +<xsl:template match="ni"> +<h3><a name="{generate-id()}"><xsl:value-of select="@caption" /> (<xsl:value-of select="@date" />)</a></h3> +<xsl:apply-templates /> +</xsl:template> + +<xsl:template match="ni" mode="title"> +<p> +<strong><xsl:value-of select="@date" /></strong> +<br/> +<xsl:value-of select="@caption" /> +</p> +</xsl:template> + + +<xsl:template match="a"> +<a> + <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute> + <xsl:apply-templates /> +</a> +</xsl:template> + +<xsl:template match="p"><p><xsl:apply-templates /></p></xsl:template> +<xsl:template match="br"><br/></xsl:template> +<xsl:template match="i"><i><xsl:apply-templates /></i></xsl:template> +<xsl:template match="s"><s><xsl:apply-templates /></s></xsl:template> +<xsl:template match="b"><b><xsl:apply-templates /></b></xsl:template><xsl:template match="u"><u><xsl:apply-templates /></u></xsl:template> +<xsl:template match="table"> +<div align="center"> +<xsl:if test="@caption"><br/><b><xsl:value-of select="@caption" /></b></xsl:if> +<table border="1"> +<xsl:if test="@border"><xsl:attribute name="border"><xsl:value-of select="@border" /></xsl:attribute></xsl:if> +<xsl:apply-templates /> +</table> +</div> +</xsl:template> +<xsl:template match="tr"><tr><xsl:apply-templates /></tr></xsl:template> +<xsl:template match="td"><td><xsl:if test="@colspan"><xsl:attribute name="colspan"><xsl:value-of select="@colspan" /></xsl:attribute></xsl:if><xsl:apply-templates /></td></xsl:template> +<xsl:template match="th"><th><xsl:if test="@width"><xsl:attribute name="width"><xsl:value-of select="@width" /></xsl:attribute></xsl:if><xsl:apply-templates /></th></xsl:template> + +<xsl:template match="shell"><pre class="shell"><xsl:apply-templates /></pre></xsl:template><xsl:template match="br"><br/></xsl:template> +<xsl:template match="pre"><pre><xsl:apply-templates /></pre></xsl:template> +<xsl:template match="code"><code><xsl:apply-templates /></code></xsl:template> +<xsl:template match="source"><pre class="source"><xsl:apply-templates /></pre></xsl:template> +<xsl:template match="ul"><ul><xsl:apply-templates /></ul></xsl:template> +<xsl:template match="ol"><ol><xsl:apply-templates /></ol></xsl:template> +<xsl:template match="li"><li><xsl:apply-templates /></li></xsl:template> +<xsl:template match="dl"><dl><xsl:apply-templates /></dl></xsl:template> +<xsl:template match="dt"><dt><xsl:apply-templates /></dt></xsl:template> +<xsl:template match="dd"><dd><xsl:apply-templates /></dd></xsl:template> + +<xsl:template match="fig"><p align="center"> +<xsl:choose> +<xsl:when test="@detail-src"> +<a><xsl:attribute name="href">fig/<xsl:value-of select="@detail-src" /></xsl:attribute><img><xsl:attribute name="src">http://www.iriver.co.jp/images/supporter/670_52/<xsl:value-of select="@src" /></xsl:attribute></img></a> +</xsl:when> +<xsl:otherwise> +<img><xsl:attribute name="src">fig/<xsl:value-of select="@src" /></xsl:attribute></img> +</xsl:otherwise> +</xsl:choose> +<xsl:if test="@caption"><br/><b><xsl:value-of select="@caption" /></b></xsl:if></p></xsl:template> + +<xsl:template match="img"> +<img><xsl:attribute name="src"><xsl:value-of select="@src" /></xsl:attribute><xsl:choose><xsl:when test="@caption"><xsl:attribute name="alt"><xsl:value-of select="@caption" /></xsl:attribute></xsl:when><xsl:otherwise><xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute></xsl:otherwise></xsl:choose></img> +</xsl:template> + +<xsl:template match="jpg"><div align="center"> +<a><xsl:attribute name="href">fig/<xsl:value-of select="@src" />.jpg</xsl:attribute><img><xsl:attribute name="src">fig/<xsl:value-of select="@src" />-s.jpg</xsl:attribute></img></a> +<xsl:if test="@caption"><br/><b><xsl:value-of select="@caption" /></b></xsl:if> +</div> +</xsl:template> + +<xsl:template match="gif"><div align="center"> +<a><xsl:attribute name="href">fig/<xsl:value-of select="@src" />.gif</xsl:attribute><img><xsl:attribute name="src">fig/<xsl:value-of select="@src" />-s.gif</xsl:attribute></img></a> +<xsl:if test="@caption"><br/><b><xsl:value-of select="@caption" /></b></xsl:if> +</div> +</xsl:template> + +<xsl:template match="section-table"> +<table border="1"> +<xsl:apply-templates mode="section-table"/> +</table> +</xsl:template> + +<xsl:template match="ts" mode="section-table"> +<xsl:apply-templates mode="section-table"> + <xsl:with-param name="section_caption" select="@caption" /> + <xsl:with-param name="num_rowspan" select="count(tr)" /> +</xsl:apply-templates> +</xsl:template> + +<xsl:template match="tr" mode="section-table"> + <xsl:param name="section_caption"></xsl:param> + <xsl:param name="num_rowspan">1</xsl:param> + <tr> + <xsl:choose> + <xsl:when test="@superior='1'"><xsl:attribute name="bgcolor">#DDDDFF</xsl:attribute></xsl:when> + <xsl:when test="@superior='2'"><xsl:attribute name="bgcolor">#FFDDDD</xsl:attribute></xsl:when> + <xsl:otherwise></xsl:otherwise> + </xsl:choose> + <xsl:if test="position() = 2"> + <td align="middle" bgcolor="#DDDDDD"> + <xsl:attribute name="rowspan"><xsl:value-of select="$num_rowspan" /></xsl:attribute> + <xsl:value-of select="$section_caption" /> + </td> + </xsl:if> + <td><xsl:value-of select="@caption" /></td> + <xsl:apply-templates /> + </tr> +</xsl:template> + +<xsl:template match="thr" mode="section-table"> +<tr bgcolor="#AAAAAA"><xsl:apply-templates /></tr> +</xsl:template> + + +<!-- Named Template --> +<xsl:template name="title">PMPlib project <xsl:value-of select="/page/head/title" /></xsl:template> + +<xsl:template name="sitenews"> +<xsl:apply-templates select="document('news.xml')/page/body/news/ni[1]" mode="title" /> +<xsl:apply-templates select="document('news.xml')/page/body/news/ni[2]" mode="title" /> +<xsl:apply-templates select="document('news.xml')/page/body/news/ni[3]" mode="title" /> +</xsl:template> + +<xsl:template name="topmenu"> +<ul> + <li><a href="index.html">Home</a></li> + <li><a href="news.html">News</a></li> ... [truncated message content] |
From: <ny...@us...> - 2006-07-28 14:41:39
|
Revision: 140 Author: nyaochi Date: 2006-07-28 07:41:33 -0700 (Fri, 28 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=140&view=rev Log Message: ----------- Commit revision 138 again to the trunk. It's strange to see revision 134, which was also directed to branch_0.12, has already been included in the trunk though... ViewCVS Links: ------------- http://svn.sourceforge.net/pmplib/?rev=138&view=rev http://svn.sourceforge.net/pmplib/?rev=134&view=rev Modified Paths: -------------- trunk/lib/playlist/playlist.vcproj Modified: trunk/lib/playlist/playlist.vcproj =================================================================== --- trunk/lib/playlist/playlist.vcproj 2006-07-28 03:53:05 UTC (rev 139) +++ trunk/lib/playlist/playlist.vcproj 2006-07-28 14:41:33 UTC (rev 140) @@ -20,7 +20,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="$(SolutionDir)include,.\contrib\js" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PLAYLIST_EXPORTS;XP_WIN" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PLAYLIST_EXPORTS;XP_WIN;HAVE_JSAPI_H" MinimalRebuild="TRUE" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -70,7 +70,7 @@ <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="$(SolutionDir)include,.\contrib\js" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLAYLIST_EXPORTS;XP_WIN" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLAYLIST_EXPORTS;XP_WIN;HAVE_JSAPI_H" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-28 03:53:10
|
Revision: 139 Author: nyaochi Date: 2006-07-27 20:53:05 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=139&view=rev Log Message: ----------- Output JSPL messages to STDOUT (not to STDERR). Modified Paths: -------------- trunk/frontend/easypmp/cui/main.c Modified: trunk/frontend/easypmp/cui/main.c =================================================================== --- trunk/frontend/easypmp/cui/main.c 2006-07-28 03:51:16 UTC (rev 138) +++ trunk/frontend/easypmp/cui/main.c 2006-07-28 03:53:05 UTC (rev 139) @@ -84,6 +84,7 @@ ucs2char_t* param_str ) { + FILE *fpo = stdout; FILE *fpe = stderr; switch (phase) { @@ -158,7 +159,7 @@ fprints(fpe, " line: %s\n", param_str); break; case EASYPMPPLP_CONVERT|EASYPMPSP_JSPL_OUTPUT: - fprints(fpe, " JSPL: %s\n", param_str); + fprints(fpo, " JSPL: %s\n", param_str); break; case EASYPMPPLP_CONVERT|EASYPMPSP_END: fprintf(fpe, "\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-28 03:51:22
|
Revision: 138 Author: nyaochi Date: 2006-07-27 20:51:16 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=138&view=rev Log Message: ----------- Define HAVE_JSAPI_H for MSVC compile. Modified Paths: -------------- branches/branch_0.12/lib/playlist/playlist.vcproj Modified: branches/branch_0.12/lib/playlist/playlist.vcproj =================================================================== --- branches/branch_0.12/lib/playlist/playlist.vcproj 2006-07-28 02:16:31 UTC (rev 137) +++ branches/branch_0.12/lib/playlist/playlist.vcproj 2006-07-28 03:51:16 UTC (rev 138) @@ -20,7 +20,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="$(SolutionDir)include,.\contrib\js" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PLAYLIST_EXPORTS;XP_WIN" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PLAYLIST_EXPORTS;XP_WIN;HAVE_JSAPI_H" MinimalRebuild="TRUE" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -70,7 +70,7 @@ <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="$(SolutionDir)include,.\contrib\js" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLAYLIST_EXPORTS;XP_WIN" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLAYLIST_EXPORTS;XP_WIN;HAVE_JSAPI_H" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <suc...@us...> - 2006-07-28 02:16:45
|
Revision: 137 Author: sucknblow Date: 2006-07-27 19:16:31 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=137&view=rev Log Message: ----------- Javascript engine is now an optional dependency * Gives a warning if the engine is not found * Should really remove the options from the UI where such features aren't present (TODO) Use internal getopt if the platform doesn't provide it: * Now compiles on OS X. Modified Paths: -------------- trunk/AUTHORS trunk/configure.in trunk/doc/roadmap.txt trunk/frontend/easypmp/cui/Makefile.am trunk/lib/playlist/Makefile.am trunk/lib/playlist/playlist.c trunk/m4/smjs.m4 Modified: trunk/AUTHORS =================================================================== --- trunk/AUTHORS 2006-07-28 01:40:13 UTC (rev 136) +++ trunk/AUTHORS 2006-07-28 02:16:31 UTC (rev 137) @@ -1 +1,2 @@ -Nyaochi +Nyaochi <ny...@ny...> +Martin Ellis <mar...@kd...> Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2006-07-28 01:40:13 UTC (rev 136) +++ trunk/configure.in 2006-07-28 02:16:31 UTC (rev 137) @@ -28,7 +28,7 @@ dnl Initialization for automake dnl ------------------------------------------------------------------ AM_INIT_AUTOMAKE(pmplib, 0.11) -AM_CONFIG_HEADER(config.h) +AC_CONFIG_HEADERS(config.h) AM_MAINTAINER_MODE AM_C_PROTOTYPES @@ -201,9 +201,24 @@ AC_SUBST(JS_CFLAGS) AC_SUBST(JS_LIBS) +AM_CONDITIONAL(have_jsapi, test -n "$JS_CFLAGS") +AM_CONDITIONAL(have_getopt, test "$ac_cv_header_getopt_h" = "yes") dnl ------------------------------------------------------------------ dnl Output the configure results. dnl ------------------------------------------------------------------ AC_CONFIG_FILES(Makefile m4/Makefile lib/ucs2/Makefile lib/filepath/Makefile lib/gmi/Makefile lib/pmp/Makefile lib/pmp_irivnavi/Makefile lib/pmp_portalplayer1/Makefile lib/pmp_iriverplus2/Makefile lib/playlist/Makefile frontend/easypmp/cui/Makefile) + +if test -n "$JS_CFLAGS" ; then + AC_DEFINE([HAVE_JSAPI_H], 1, [Define if you have the jsapi.h header]) +fi + AC_OUTPUT + +if test -z "$JS_CFLAGS" ; then + if test "$enable_js" != no ; then + echo + echo " Warning: JavaScript interpreter engine not found" + fi + echo " pmplib will be build without support for JavaScript playlists." +fi Modified: trunk/doc/roadmap.txt =================================================================== --- trunk/doc/roadmap.txt 2006-07-28 01:40:13 UTC (rev 136) +++ trunk/doc/roadmap.txt 2006-07-28 02:16:31 UTC (rev 137) @@ -16,8 +16,6 @@ - Write documents (build instruction, usage, programing interface, etc.) Long-term plan -- Make the JavaScript engine an optional dependency (it's terrible trying - to build easypmp without pre-built packages of this) - Analyze database format (4th generation) used in iriver E10. Implement database reader/writer for iriver E10. - Support tuner preset conversion. Modified: trunk/frontend/easypmp/cui/Makefile.am =================================================================== --- trunk/frontend/easypmp/cui/Makefile.am 2006-07-28 01:40:13 UTC (rev 136) +++ trunk/frontend/easypmp/cui/Makefile.am 2006-07-28 02:16:31 UTC (rev 137) @@ -4,6 +4,10 @@ man_MANS = easypmp.1 EXTRA_DIST = ${man_MANS} getopt.c getopt1.c +if !have_getopt + getopt = getopt.c getopt1.c +endif + easypmp_SOURCES = \ ../common/easypmp.h \ ../common/database.c \ @@ -13,6 +17,7 @@ option.c \ option.h \ getopt.h \ + $(getopt) \ util.c \ util.h \ main.c Modified: trunk/lib/playlist/Makefile.am =================================================================== --- trunk/lib/playlist/Makefile.am 2006-07-28 01:40:13 UTC (rev 136) +++ trunk/lib/playlist/Makefile.am 2006-07-28 02:16:31 UTC (rev 137) @@ -1,12 +1,17 @@ # $Id$ -jspldir = $(prefix)/share/@PACKAGE@/jspl -jspl_DATA = \ +if have_jsapi + jspl_files = \ jspl/playlist.js \ jspl/artist.jspl \ jspl/artists.jspl \ jspl/top_ranking.jspl + jspl_c = jspl.c + jspldir = $(prefix)/share/@PACKAGE@/jspl + jspl_DATA = $(jspl_files) +endif + lib_LTLIBRARIES = libpmpplaylist.la libpmpplaylist_la_SOURCES = \ @@ -14,7 +19,7 @@ rw_m3u.c \ rw_pls.c \ playlist.c \ - jspl.c + $(jspl_c) libpmpplaylist_la_CPPFLAGS = $(JS_CFLAGS) -DJS_THREADSAFE Modified: trunk/lib/playlist/playlist.c =================================================================== --- trunk/lib/playlist/playlist.c 2006-07-28 01:40:13 UTC (rev 136) +++ trunk/lib/playlist/playlist.c 2006-07-28 02:16:31 UTC (rev 137) @@ -40,10 +40,15 @@ static const ucs2char_t ucs2cs_m3u[] = {'.','m','3','u',0}; static const ucs2char_t ucs2cs_m3u8[] = {'.','m','3','u','8',0}; static const ucs2char_t ucs2cs_pls[] = {'.','p','l','s',0}; + +#ifdef HAVE_JSAPI_H static const ucs2char_t ucs2cs_jspl[] = {'.','j','s','p','l',0}; +#endif/*HAVE_JSAPI_H*/ int playlist_m3u_read(playlists_t* pls, const ucs2char_t *filename, int is_utf8); int playlist_pls_read(playlists_t* pls, const ucs2char_t *filename); + +#ifdef HAVE_JSAPI_H int playlist_jspl_read( playlists_t* pls, const ucs2char_t *filename, @@ -53,6 +58,7 @@ playlist_callback_t callback, void *instance ); +#endif/*HAVE_JSAPI_H*/ void playlist_init(playlists_t* pls) { @@ -84,8 +90,10 @@ return playlist_m3u_read(pls, filename, 1); } else if (filepath_hasext(filename, ucs2cs_pls)) { return playlist_pls_read(pls, filename); +#ifdef HAVE_JSAPI_H } else if (records && filepath_hasext(filename, ucs2cs_jspl)) { return playlist_jspl_read(pls, filename, path_to_include, records, num_records, callback, instance); +#endif/*HAVE_JSAPI_H*/ } else { return -1; } @@ -138,9 +146,13 @@ ret |= filepath_hasext(filename, ucs2cs_m3u); ret |= filepath_hasext(filename, ucs2cs_m3u8); ret |= filepath_hasext(filename, ucs2cs_pls); + +#ifdef HAVE_JSAPI_H if (flag & PLAYLIST_JSPL) { ret |= filepath_hasext(filename, ucs2cs_jspl); } +#endif/*HAVE_JSAPI_H*/ + return ret; } Modified: trunk/m4/smjs.m4 =================================================================== --- trunk/m4/smjs.m4 2006-07-28 01:40:13 UTC (rev 136) +++ trunk/m4/smjs.m4 2006-07-28 02:16:31 UTC (rev 137) @@ -35,22 +35,8 @@ [#define XP_UNIX]) ]) -AC_DEFUN([AC_PATH_SPIDERMONKEY], - [AC_ARG_WITH([spidermonkey], - [AS_HELP_STRING([--with-spidermonkey],[prefix where libjs/libsmjs is installed (optional)])], - [JS_CFLAGS="-I$withval"], [JS_CFLAGS='']) - - AC_ARG_ENABLE([libjs], - [AS_HELP_STRING([--disable-libjs],[don't look for libjs/libsmjs])]) - AC_ARG_ENABLE([mozjs], - [AS_HELP_STRING([--disable-mozjs],[don't look for Mozilla libmozjs])]) - AC_ARG_ENABLE([ffjs], - [AS_HELP_STRING([--disable-ffjs], [don't look for Firefox libmozjs])]) - - test "$enable_libjs$enable_mozjs$enable_ffjs" = "nonono" && - AC_MSG_ERROR([cannot search for no JS library - try removing a --disable-*js option]) - - if test x"$JS_CFLAGS" = x; then +m4_define([spidermonkey_checkall], + [if test x"$JS_CFLAGS" = x; then AC_MSG_NOTICE([looking for the Spidermonkey Javascript library in various places.]) # Try libsmjs/libjs @@ -114,7 +100,7 @@ # Failed... if test x"$JS_CFLAGS" = x; then - AC_MSG_ERROR([libjs not found]) + AC_MSG_WARN([libjs not found]) fi else saved_CFLAGS="$CFLAGS" @@ -132,10 +118,33 @@ JS_LIBS="`spidermonkey_locate_lib([$JS_LIBS])`js" AC_DEFINE(HAVE_LIBSMJS, 1, [Define if you have jsapi.h]) ], - [AC_MSG_ERROR([libjs not found])], + [AC_MSG_WARN([libjs not found])], [#define XP_UNIX]) CFLAGS="$saved_CFLAGS" fi AC_SUBST(JS_CFLAGS) AC_SUBST(JS_LIBS) +]) + +AC_DEFUN([AC_PATH_SPIDERMONKEY], + [AC_ARG_WITH([spidermonkey], + [AS_HELP_STRING([--with-spidermonkey],[prefix where libjs/libsmjs is installed (optional)])], + [JS_CFLAGS="-I$withval"], [JS_CFLAGS='']) + + AC_ARG_ENABLE([js], + [AS_HELP_STRING([--disable-js], [don't build Javascript playlist support])]) + AC_ARG_ENABLE([libjs], + [AS_HELP_STRING([--disable-libjs],[don't look for libjs/libsmjs])]) + AC_ARG_ENABLE([mozjs], + [AS_HELP_STRING([--disable-mozjs],[don't look for Mozilla libmozjs])]) + AC_ARG_ENABLE([ffjs], + [AS_HELP_STRING([--disable-ffjs], [don't look for Firefox libmozjs])]) + +dnl test "$enable_libjs$enable_mozjs$enable_ffjs" = "nonono" && +dnl AC_MSG_ERROR([cannot search for no JS library - try removing a --disable-*js option]) + + if test "$enable_js" != "no" ; then + spidermonkey_checkall + fi + ]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <suc...@us...> - 2006-07-28 01:40:18
|
Revision: 136 Author: sucknblow Date: 2006-07-27 18:40:13 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=136&view=rev Log Message: ----------- Pass -liconv to linker on platforms that need it Modified Paths: -------------- trunk/lib/ucs2/Makefile.am Modified: trunk/lib/ucs2/Makefile.am =================================================================== --- trunk/lib/ucs2/Makefile.am 2006-07-28 01:37:08 UTC (rev 135) +++ trunk/lib/ucs2/Makefile.am 2006-07-28 01:40:13 UTC (rev 136) @@ -7,7 +7,7 @@ ucs2char.c \ ucs2char_iconv.c -libpmpucs2_la_LDFLAGS = @ICONV_LIBS@ -no-undefined +libpmpucs2_la_LDFLAGS = @ICONV_LIBS@ @LIBICONV@ -no-undefined AM_CFLAGS = @CFLAGS@ INCLUDES = @INCLUDES@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <suc...@us...> - 2006-07-28 01:37:13
|
Revision: 135 Author: sucknblow Date: 2006-07-27 18:37:08 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=135&view=rev Log Message: ----------- Fix path separator on POSIX platforms when displaying paths in playlists. Modified Paths: -------------- trunk/frontend/easypmp/common/playlist.c Modified: trunk/frontend/easypmp/common/playlist.c =================================================================== --- trunk/frontend/easypmp/common/playlist.c 2006-07-28 00:40:12 UTC (rev 134) +++ trunk/frontend/easypmp/common/playlist.c 2006-07-28 01:37:08 UTC (rev 135) @@ -116,13 +116,16 @@ // Loop over playlist files. for (i = 0;i < playlists->num_elements;++i) { playlists_t pls; + ucs2char_t plf_path[MAX_PATH]; ucs2char_t src[MAX_PATH]; const easypmp_filename_t* plf = &playlists->elements[i]; int k = 0; int n = 0; // Generate the source filename - filepath_combinepath(src, MAX_PATH, plf->pathname, plf->filename); + ucs2cpy(plf_path, plf->pathname); + filepath_decode(plf_path); + filepath_combinepath(src, MAX_PATH, plf_path, plf->filename); // Report the source filename. if (progress(instance, EASYPMPPLP_CONVERT | EASYPMPSP_PROGRESS, i, 0, src) != 0) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-28 00:40:22
|
Revision: 134 Author: nyaochi Date: 2006-07-27 17:40:12 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=134&view=rev Log Message: ----------- Fixed an incorrect function declaration. Modified Paths: -------------- branches/branch_0.12/lib/pmp_portalplayer1/hdr_template.h Modified: branches/branch_0.12/lib/pmp_portalplayer1/hdr_template.h =================================================================== --- branches/branch_0.12/lib/pmp_portalplayer1/hdr_template.h 2006-07-28 00:35:04 UTC (rev 133) +++ branches/branch_0.12/lib/pmp_portalplayer1/hdr_template.h 2006-07-28 00:40:12 UTC (rev 134) @@ -59,7 +59,7 @@ int apply_template(hdr_t* hdr, const hdr_template_t* tmpl); int compare_version(const char *x, const char *y); -int hdr_init_h10_5gb_ums_0205_0252(hdr_t* hdr); +int hdr_init_h10_5gb_ums_0205_0253(hdr_t* hdr); int hdr_init_h10_5gb_mtp_0203_0210(hdr_t* hdr); int hdr_init_h10_5gb_mtp_0251(hdr_t* hdr); int hdr_init_h10_20gb_mtp_0100_0102(hdr_t* hdr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-28 00:35:19
|
Revision: 133 Author: nyaochi Date: 2006-07-27 17:35:04 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=133&view=rev Log Message: ----------- Disable stripping 'the' by default. Modified Paths: -------------- trunk/frontend/easypmp/cui/option.c Modified: trunk/frontend/easypmp/cui/option.c =================================================================== --- trunk/frontend/easypmp/cui/option.c 2006-07-27 16:07:48 UTC (rev 132) +++ trunk/frontend/easypmp/cui/option.c 2006-07-28 00:35:04 UTC (rev 133) @@ -119,7 +119,6 @@ opt->media_info_source |= (GMIF_TAG | GMIF_STRIP_ARTIST); opt->system_encoding = get_default_encoding(); opt->music_encoding = get_default_encoding(); - opt->mbs_strip_words = strdup("the "); } void option_finish(option_t* opt) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-27 16:07:55
|
Revision: 132 Author: nyaochi Date: 2006-07-27 09:07:48 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=132&view=rev Log Message: ----------- Fix for stripping preceding words in artist names: - We must not call any string conversion routine from the option parser since the character encoding has not been decided yet. - The previous implementation could not parse CSV values correctly. Modified Paths: -------------- trunk/frontend/easypmp/common/database.c trunk/frontend/easypmp/common/easypmp.h trunk/frontend/easypmp/cui/main.c trunk/frontend/easypmp/cui/option.c Modified: trunk/frontend/easypmp/common/database.c =================================================================== --- trunk/frontend/easypmp/common/database.c 2006-07-26 15:11:46 UTC (rev 131) +++ trunk/frontend/easypmp/common/database.c 2006-07-27 16:07:48 UTC (rev 132) @@ -429,11 +429,10 @@ memset(opt->strip_words[i], 0, sizeof(ucs2char_t) * (length+1)); ucs2ncpy(opt->strip_words[i], p, length); opt->strip_words[i][length] = 0; - if (!*q) { - break; - } else { + if (*q) { p = q+1; } + break; } q++; } Modified: trunk/frontend/easypmp/common/easypmp.h =================================================================== --- trunk/frontend/easypmp/common/easypmp.h 2006-07-26 15:11:46 UTC (rev 131) +++ trunk/frontend/easypmp/common/easypmp.h 2006-07-27 16:07:48 UTC (rev 132) @@ -91,6 +91,7 @@ char model[128]; char *system_encoding; char *music_encoding; + char *mbs_strip_words; ucs2char_t** strip_words; int num_strip_words; } option_t; Modified: trunk/frontend/easypmp/cui/main.c =================================================================== --- trunk/frontend/easypmp/cui/main.c 2006-07-26 15:11:46 UTC (rev 131) +++ trunk/frontend/easypmp/cui/main.c 2006-07-27 16:07:48 UTC (rev 132) @@ -233,6 +233,13 @@ } #endif/*_WIN32*/ + /* Set words to be stripped from artist names. */ + if (opt.mbs_strip_words) { + ucs2char_t* ucs2str = mbsdupucs2(opt.mbs_strip_words); + easypmp_set_strip_words(&opt, ucs2str); + ucs2free(ucs2str); + } + /* Obtain the path to root directory (path_to_root) from the command line if any. */ if (used_args < argc) { size_t length = strlen(argv[used_args]); Modified: trunk/frontend/easypmp/cui/option.c =================================================================== --- trunk/frontend/easypmp/cui/option.c 2006-07-26 15:11:46 UTC (rev 131) +++ trunk/frontend/easypmp/cui/option.c 2006-07-27 16:07:48 UTC (rev 132) @@ -99,12 +99,6 @@ fprintf(fp, " -h, --help Show this help message and exit\n"); } -static void set_strip_words(option_t* opt, const char *str) -{ - ucs2char_t* ucs2str = mbsdupucs2(str); - easypmp_set_strip_words(opt, ucs2str); -} - static char *get_default_encoding() { const char *encoding = getenv("CHARSET"); @@ -123,9 +117,9 @@ // Set default values here. opt->media_info_source |= (GMIF_TAG | GMIF_STRIP_ARTIST); - set_strip_words(opt, "the "); opt->system_encoding = get_default_encoding(); opt->music_encoding = get_default_encoding(); + opt->mbs_strip_words = strdup("the "); } void option_finish(option_t* opt) @@ -145,7 +139,11 @@ { int used_args = 0; - /* Parse the command-line arguments. */ + /* + * Parse the command-line arguments. + * We must not use the charaset conversion routine from this function + * since the character encoding has not been decided at this moment. + */ for (;;) { int this_option_optind = optind ? optind : 1; int option_index = 0; @@ -210,7 +208,8 @@ opt->repr_level = atoi(optarg); break; case 't': - set_strip_words(opt, optarg); + free(opt->mbs_strip_words); + opt->mbs_strip_words = strdup(optarg); break; case 'p': opt->verb |= (MODE_PLAYLIST | MODE_PLAYLIST_PLAYLIST); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-26 19:45:40
|
Revision: 131 Author: nyaochi Date: 2006-07-26 08:11:46 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=131&view=rev Log Message: ----------- Fixed a bug in string conversion. A string conversion always fails with a source string longer than 512 bytes (MBS -> UCS-2) due to the incorrect handling of returned values from iconv. This bug was the root of the JSPL problem I've been investigating. Modified Paths: -------------- trunk/lib/ucs2/ucs2char_iconv.c Modified: trunk/lib/ucs2/ucs2char_iconv.c =================================================================== --- trunk/lib/ucs2/ucs2char_iconv.c 2006-07-10 19:26:30 UTC (rev 130) +++ trunk/lib/ucs2/ucs2char_iconv.c 2006-07-26 15:11:46 UTC (rev 131) @@ -29,6 +29,7 @@ #include <os.h> #include <sys/types.h> #include <sys/stat.h> +#include <errno.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> @@ -174,7 +175,7 @@ char *p = buffer; size_t outbytesleft = 1024; int iconvret = iconv(cd, (const char **)inbuf, &inbytesleft, &p, &outbytesleft); - if (iconvret == -1) { + if (iconvret == -1 && errno != E2BIG) { return 0; } ret += (1024 - outbytesleft); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-10 19:26:37
|
Revision: 130 Author: nyaochi Date: 2006-07-10 12:26:30 -0700 (Mon, 10 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=130&view=rev Log Message: ----------- Enable LF->CR conversion. EasyPMP still has difficulty in evaluating the script for Playlist object implementation. Modified Paths: -------------- trunk/lib/playlist/jspl.c Modified: trunk/lib/playlist/jspl.c =================================================================== --- trunk/lib/playlist/jspl.c 2006-07-10 19:15:25 UTC (rev 129) +++ trunk/lib/playlist/jspl.c 2006-07-10 19:26:30 UTC (rev 130) @@ -37,7 +37,6 @@ #include <pmp.h> #include <playlist.h> -#define JS_THREADSAFE #include <jsapi.h> #define MAX_SOURCE_DEPTH 64 @@ -441,7 +440,7 @@ jsval retval; /* Open the JavaScript file. */ - fp = ucs2fopen(filename, "rb"); + fp = ucs2fopen(filename, "r"); if (!fp) { return -1; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-10 19:15:31
|
Revision: 129 Author: nyaochi Date: 2006-07-10 12:15:25 -0700 (Mon, 10 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=129&view=rev Log Message: ----------- Fix for NULL error messages. Modified Paths: -------------- trunk/lib/playlist/jspl.c Modified: trunk/lib/playlist/jspl.c =================================================================== --- trunk/lib/playlist/jspl.c 2006-07-10 18:32:34 UTC (rev 128) +++ trunk/lib/playlist/jspl.c 2006-07-10 19:15:25 UTC (rev 129) @@ -37,6 +37,7 @@ #include <pmp.h> #include <playlist.h> +#define JS_THREADSAFE #include <jsapi.h> #define MAX_SOURCE_DEPTH 64 @@ -92,15 +93,17 @@ static void error_handler(JSContext *cx, const char *message, JSErrorReport *report) { + ucs2char_t* ucs2 = NULL; jspl_t* jspl = (jspl_t*)JS_GetContextPrivate(cx); - ucs2char_t* ucs2 = NULL; - char *pos = alloca(strlen(report->filename) + 64); /* extra 64 bytes for line numbers. */ + const char *msg = message ? message : "Unknown error"; + const char *filename = report->filename ? report->filename : "(Unknown filename)"; + char *pos = alloca(strlen(filename) + 64); /* extra 64 bytes for line numbers. */ - ucs2 = mbsdupucs2(message); + ucs2 = mbsdupucs2(msg); jspl->callback(jspl->instance, PLCALLBACK_JSPL_ERROR, ucs2); ucs2free(ucs2); - sprintf(pos, "lines %d in %s", report->lineno, report->filename); + sprintf(pos, "lines %d in %s", report->lineno, filename); ucs2 = mbsdupucs2(pos); jspl->callback(jspl->instance, PLCALLBACK_JSPL_ERROR_POS, ucs2); ucs2free(ucs2); @@ -608,10 +611,10 @@ } /* Check if main() function exists. */ - if (!function_exists(jspl, "main")) { + /*if (!function_exists(jspl, "main")) { ret = PLAYLIST_E_JSMAINNOTFOUND; goto error_exit; - } + }*/ /* Call main() function. */ argv[0] = OBJECT_TO_JSVAL(jspl->tracks); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-10 18:32:49
|
Revision: 128 Author: nyaochi Date: 2006-07-10 11:32:34 -0700 (Mon, 10 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=128&view=rev Log Message: ----------- Improved error messages when JavaScript errors occur. Modified Paths: -------------- trunk/frontend/easypmp/common/easypmp.h trunk/frontend/easypmp/common/playlist.c trunk/frontend/easypmp/cui/main.c trunk/include/playlist.h trunk/lib/playlist/jspl.c Modified: trunk/frontend/easypmp/common/easypmp.h =================================================================== --- trunk/frontend/easypmp/common/easypmp.h 2006-07-10 16:51:26 UTC (rev 127) +++ trunk/frontend/easypmp/common/easypmp.h 2006-07-10 18:32:34 UTC (rev 128) @@ -31,26 +31,28 @@ #endif/*__cplusplus*/ enum { - EASYPMPDBP_START = 0x00010000, - EASYPMPDBP_READ = 0x00020000, - EASYPMPDBP_GMI = 0x00030000, - EASYPMPDBP_UPDATE = 0x00040000, - EASYPMPDBP_WRITE = 0x00050000, - EASYPMPDBP_END = 0x00060000, + EASYPMPDBP_START = 0x00010000, + EASYPMPDBP_READ = 0x00020000, + EASYPMPDBP_GMI = 0x00030000, + EASYPMPDBP_UPDATE = 0x00040000, + EASYPMPDBP_WRITE = 0x00050000, + EASYPMPDBP_END = 0x00060000, - EASYPMPPLP_START = 0x01000000, - EASYPMPPLP_CONVERT = 0x02000000, - EASYPMPPLP_END = 0x03000000, + EASYPMPPLP_START = 0x01000000, + EASYPMPPLP_CONVERT = 0x02000000, + EASYPMPPLP_END = 0x03000000, - EASYPMPSP_START = 0x00000001, - EASYPMPSP_PROGRESS = 0x00000002, - EASYPMPSP_SKIPPED = 0x00000003, - EASYPMPSP_WARN_PLAYLIST = 0x00000004, - EASYPMPSP_SKIP_PLAYLIST = 0x00000005, - EASYPMPSP_MISSING_MEDIA = 0x00000006, - EASYPMPSP_JSPL_ERROR = 0x00000007, - EASYPMPSP_JSPL_OUTPUT = 0x00000008, - EASYPMPSP_END = 0x00000009, + EASYPMPSP_START = 0x00000001, + EASYPMPSP_PROGRESS = 0x00000002, + EASYPMPSP_SKIPPED = 0x00000003, + EASYPMPSP_WARN_PLAYLIST = 0x00000004, + EASYPMPSP_SKIP_PLAYLIST = 0x00000005, + EASYPMPSP_MISSING_MEDIA = 0x00000006, + EASYPMPSP_JSPL_ERROR = 0x00000007, + EASYPMPSP_JSPL_ERROR_POS = 0x00000008, + EASYPMPSP_JSPL_ERROR_LINE = 0x00000009, + EASYPMPSP_JSPL_OUTPUT = 0x0000000A, + EASYPMPSP_END = 0x0000000B, }; enum { Modified: trunk/frontend/easypmp/common/playlist.c =================================================================== --- trunk/frontend/easypmp/common/playlist.c 2006-07-10 16:51:26 UTC (rev 127) +++ trunk/frontend/easypmp/common/playlist.c 2006-07-10 18:32:34 UTC (rev 128) @@ -47,9 +47,11 @@ callback_data_t* cd = (callback_data_t*)instance; switch (level) { - case PLCALLBACK_JSPL_MESSAGE: phase |= EASYPMPSP_JSPL_OUTPUT; break; - case PLCALLBACK_JSPL_ERROR: phase |= EASYPMPSP_JSPL_ERROR; break; - default: phase |= EASYPMPSP_PROGRESS; break; + case PLCALLBACK_JSPL_MESSAGE: phase |= EASYPMPSP_JSPL_OUTPUT; break; + case PLCALLBACK_JSPL_ERROR: phase |= EASYPMPSP_JSPL_ERROR; break; + case PLCALLBACK_JSPL_ERROR_POS: phase |= EASYPMPSP_JSPL_ERROR_POS; break; + case PLCALLBACK_JSPL_ERROR_LINE: phase |= EASYPMPSP_JSPL_ERROR_LINE; break; + default: phase |= EASYPMPSP_PROGRESS; break; } cd->progress(cd->instance, phase, 0, 0, message); Modified: trunk/frontend/easypmp/cui/main.c =================================================================== --- trunk/frontend/easypmp/cui/main.c 2006-07-10 16:51:26 UTC (rev 127) +++ trunk/frontend/easypmp/cui/main.c 2006-07-10 18:32:34 UTC (rev 128) @@ -151,6 +151,12 @@ case EASYPMPPLP_CONVERT|EASYPMPSP_JSPL_ERROR: fprints(fpe, " JSPL(ERROR): %s\n", param_str); break; + case EASYPMPPLP_CONVERT|EASYPMPSP_JSPL_ERROR_POS: + fprints(fpe, " at: %s\n", param_str); + break; + case EASYPMPPLP_CONVERT|EASYPMPSP_JSPL_ERROR_LINE: + fprints(fpe, " line: %s\n", param_str); + break; case EASYPMPPLP_CONVERT|EASYPMPSP_JSPL_OUTPUT: fprints(fpe, " JSPL: %s\n", param_str); break; Modified: trunk/include/playlist.h =================================================================== --- trunk/include/playlist.h 2006-07-10 16:51:26 UTC (rev 127) +++ trunk/include/playlist.h 2006-07-10 18:32:34 UTC (rev 128) @@ -45,6 +45,8 @@ PLCALLBACK_NONE, PLCALLBACK_JSPL_MESSAGE, PLCALLBACK_JSPL_ERROR, + PLCALLBACK_JSPL_ERROR_POS, + PLCALLBACK_JSPL_ERROR_LINE, }; enum { Modified: trunk/lib/playlist/jspl.c =================================================================== --- trunk/lib/playlist/jspl.c 2006-07-10 16:51:26 UTC (rev 127) +++ trunk/lib/playlist/jspl.c 2006-07-10 18:32:34 UTC (rev 128) @@ -93,9 +93,25 @@ static void error_handler(JSContext *cx, const char *message, JSErrorReport *report) { jspl_t* jspl = (jspl_t*)JS_GetContextPrivate(cx); - ucs2char_t* ucs2 = mbsdupucs2(message); + ucs2char_t* ucs2 = NULL; + char *pos = alloca(strlen(report->filename) + 64); /* extra 64 bytes for line numbers. */ + + ucs2 = mbsdupucs2(message); jspl->callback(jspl->instance, PLCALLBACK_JSPL_ERROR, ucs2); ucs2free(ucs2); + + sprintf(pos, "lines %d in %s", report->lineno, report->filename); + ucs2 = mbsdupucs2(pos); + jspl->callback(jspl->instance, PLCALLBACK_JSPL_ERROR_POS, ucs2); + ucs2free(ucs2); + + if (report->uclinebuf) { + jspl->callback(jspl->instance, PLCALLBACK_JSPL_ERROR_LINE, (ucs2char_t*)report->uclinebuf); + } else { + ucs2 = mbsdupucs2(report->linebuf); + jspl->callback(jspl->instance, PLCALLBACK_JSPL_ERROR_LINE, ucs2); + ucs2free(ucs2); + } } static int function_exists(jspl_t* jspl, const char *funcname) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-10 16:51:30
|
Revision: 127 Author: nyaochi Date: 2006-07-10 09:51:26 -0700 (Mon, 10 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=127&view=rev Log Message: ----------- Check return value from JS_EvaluateUCScript(). Modified Paths: -------------- trunk/lib/playlist/jspl.c Modified: trunk/lib/playlist/jspl.c =================================================================== --- trunk/lib/playlist/jspl.c 2006-07-10 16:14:40 UTC (rev 126) +++ trunk/lib/playlist/jspl.c 2006-07-10 16:51:26 UTC (rev 127) @@ -461,6 +461,9 @@ /* Evaluate the script. */ ret = JS_EvaluateUCScript(jspl->context, jspl->global, script, ucs2len(script), mbsfilename, 1, &retval); + if (!ret) { + return -1; + } ucs2free(script); free(buff); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-07-10 16:14:45
|
Revision: 126 Author: nyaochi Date: 2006-07-10 09:14:40 -0700 (Mon, 10 Jul 2006) ViewCVS: http://svn.sourceforge.net/pmplib/?rev=126&view=rev Log Message: ----------- A quick fix for JSPL in POSIX environments. I have no idea who should take responsible for 'JS_THREADSAFE' symbol at this moment though. Can we assume all SpiderMonkey libraries have been built with multi-thread support enabled? Modified Paths: -------------- trunk/lib/playlist/Makefile.am Modified: trunk/lib/playlist/Makefile.am =================================================================== --- trunk/lib/playlist/Makefile.am 2006-07-06 18:33:09 UTC (rev 125) +++ trunk/lib/playlist/Makefile.am 2006-07-10 16:14:40 UTC (rev 126) @@ -16,7 +16,7 @@ playlist.c \ jspl.c -libpmpplaylist_la_CPPFLAGS = $(JS_CFLAGS) +libpmpplaylist_la_CPPFLAGS = $(JS_CFLAGS) -DJS_THREADSAFE libpmpplaylist_la_LDFLAGS = \ -no-undefined This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |