abcde.conf
authorJesus Climent <mooch@debian.org>
Sun, 3 Oct 2004 22:37:03 +0000 (22:37 +0000)
committerJesus Climent <mooch@debian.org>
Sun, 3 Oct 2004 22:37:03 +0000 (22:37 +0000)
 - EXTRAVERBOSE added
debian/changelog
 - New modifications added
debian/copyright
 - Removed Robert from Upstream, and added as original author.
TODO
 - CD1...CDn resolved
FAQ,README
 - Super rework. All technical questions/problems have been moved to the FAQ
abcde.1
 - Some small changes about Robert and me
abcde
 - Deleted the -f, -s flags
 - added -t, -T for arbitrary track numbering
 - moved the action resolver out of discid
 - Eliminating -f in favour of -n -L, which cleans out some code
 - Functions moved to the function part of the script
 - plenty of if;then changed with []&&
 - plenty of echo $ACTIONS changed with []&& since we have the actions already defined
 - POSIX compatibility added in one FIXME
 - the CDPARANOIA check for data tracks COULD NOT BE WORKING. i have to find when i fscked it up

FAQ
README
TODO
abcde
abcde.1
abcde.conf
debian/changelog
debian/copyright

diff --git a/FAQ b/FAQ
index 0624322..7e934bc 100644 (file)
--- a/FAQ
+++ b/FAQ
@@ -1,3 +1,11 @@
+0. INTRODUCTION
+   ============
+
+Q. Who created abcde? Who develops it nowadays?
+A. It was originally created by Robert Woodcook. He decided to give up 
+   maintaining it at some point in 2002 and Jesus Climent took over.  Contact
+   jesus.climent@hispalinux.es if you have a problem or a suggestion.
+
 
 1. INSTALLATION
    ============
@@ -12,42 +20,78 @@ A. To get abcde you can use a pre-packaged version, available for Debian,
 
    abcde needs cd-discid. Grab it from:
    http://www.hispalinux.es/~data/files/cd-discid/
+
+   Read the README files for a complete list of requirements.
    
 
 2. EXECUTION
    =========
 
-3. FORMATS
-   =======
-
-4. MISC PROBLEMS
-   ==== ========
-
-Q. What happened with normalize?
-A. Normalize has changed its name under Debian, which is the GNU/Linux 
-   distribution for developing abcde (well, is The GNU/Linux Distribution
-   i only use, at the moment). Now it is called normalize-audio.
-   If you are using some other flavour of OS, you need to change the name
-   of the executable in your abcde.conf file.
-
-Q. I am using MacOSX and I am having problems to use abcde.
-A. Well, I have a Mac, but I use linux on it. I have not been able to find
-   a way to make it work there, since I do not have the development tools
-   installed. I have placed a basic support, but some user reports are just
-   complaining about abcde not encoding the ripped tracks, as if 
-   cdda2wav/cdparanoia/cddafs would never end reading them. If you have such
-   a system and experience problems, please, report them, and I will try to
-   work them out with your help.
+Q. Low on disk space?
+A. abcde has different algorithms to schedule ripping and encoding - to 
+   optimize for disk conservation, use -l. You can also define
+   WAVOUTPUTDIR=/some/other/path to your /etc/abcde.conf or ~/.abcde.conf to
+   store the WAV files on another NFS shared fisk, for example.
+
+Q. How can i make abcde encode faster? My CD reader is way faster than the pace
+   it can encode my tracks.
+A. abcde can take advantage of SMP systems, just like make. Try 'abcde -j 2' -
+   it'll run two encoder jobs while it rips the next track.
+   You can also make use of systems which are networked, with the help of
+   distmp3. For example, MachineA has a better CPU power and MachineB has a CD
+   drive. Run distmp3host (included in distmp3) on Machine A, and then run
+   abcde -r MachineA from MachineB (where "MachineA" is a dns name or IP
+   address). Use this in combination with '-j 0' to shift all encoding off the
+   local machine.
+
+Having trouble getting cdparanoia to read from your drive as a user?  Add
+yourself to the cdrom group, change the permissions on your cdrom device to 660,
+and if you have a SCSI cdrom drive, check the permissions on
+/dev/sg* as well.
 
 Q. I would like to give the trackname and the artist_name directly to the
    encoder (in my case oggenc), but found no documentation.
 A. That is not possible, since abcde gets the information from CDDB database.
-   You can create a template and fill it with the option "-n".
+   You can create a template and fill it with the option "-n". Also, you can 
+   get the CDDB entry and edit it yourself. abcde has also an option to drop
+   back to a template if you like none of the CDDB entries, selecting 0 from
+   the CDDB options.
 
-Q. What formats can I encode my music to?
-A. As for version 2.2, abcde includes support for MP3, Ogg/Vorbis, 
-   Ogg/Speex, Flac and MPP/MP+(Musepack). Support for AAC will be added once
-   an FLOSS encoder/decoder is working.
+Q. (Thanks to Amaya) Where are those options and settings defined? Why dont
+   you include a proper abcde.conf as an example?
+A. I do. It should be installed under /etc/abcde.conf and contains more or
+   less all the defaults abcde uses. You can use $(HOME)/.abcde.conf to 
+   override those defaults. More information can be obtained from the man page
+   which can be consulted using "man abcde".
+   
+Q. I keep on getting files with ".ogg.ogg" extension. What am I doing wrong?
+A. The code for multiple-output adds automatically the extension of the
+   different outputs you select with the "-o" extension (or with OUTPUTTYPE
+   variable). Erase the ".${OUTPUTTYPE}" part from the OUTPUTFORMAT variable
+   in /etc/abcde.conf or ~/.abcde.conf
+
+Q. I have modified some of the options, and now CDDB has stopped working.
+A. Check that you have modified everything in the right way. For instance, if
+   you modify the HTTPGET program you might want to set some options of your
+   own. If you use the predefined ones (wget, curl and fetch) abcde will try
+   to use some defaults. Keep in mind that the output should go to the output
+   as standard output, to be saved in a file for later use.
+   
+   If abcde seems to be ignoring your configuration options or not running
+   commands such as the encoder, you may have misquoted something. Config
+   options such as the following do not work:
+
+   LAMEOPTS=-h -k
+
+   Try this instead:
+
+   LAMEOPTS='-h -k'
+
+Q. How can I separate the different output files I get using multiple-output
+   support?
+A. Use the OUTPUT variable in PLAYLISTFORMAT and OUTPUTFORMAT. It holds the 
+   different output file types you passed to abcde (i.e., ogg, mp3, flac) 
+   during playlist creation and file/directory creation.
 
 Q. I have a CD with a data track, and abcde complaints it cannot read/encode
    it.
@@ -59,17 +103,65 @@ A. It is not easy to find a data track on a CD. Right now, I can only think
    Version 2.2 includes some checkings with cdparanoia, to try to get this
    right.
 
-Q. How can I separate the different output files I get using multiple-output
-   support?
-A. Use the OUTPUT variable in PLAYLISTFORMAT and OUTPUTFORMAT. It holds the 
-   different output file types you passed to abcde (i.e., ogg, mp3, flac) 
-   during playlist creation and file/directory creation.
+Q. I am requested to have "eject" when setting the speed although I do not use
+   it for anything.
+A. If you do not use cdparanoia, eject is used for setting the speed of the 
+   cdrom drive. You can substitute it for "setcd" with "-x" as the argument,
+   but you have to install it manually (setcd is, at least, available in 
+   Debian).
+   Another way to get the same results is using the pre_read function, defined
+   in your /etc/abcde.conf file.
    
-Q. I keep on getting files with ".ogg.ogg" extension. What am I doing wrong?
-A. The code for multiple-output adds automatically the extension of the
-   different outputs you select with the "-o" extension (or with OUTPUTTYPE
-   variable). Erase the ".${OUTPUTTYPE}" part from the OUTPUTFORMAT variable
-   in /etc/abcde.conf or ~/.abcde.conf
+Q. I have a CD set with 1+ discs, and want to have them in the same directory,
+   sorted properly. What can abcde do for me?
+A. Set abcde to rip the first CD and give it the option "-t 101". Use a generic
+   name for the CD, and reuse it with the rest of the CDs, editing the CDDB
+   entries. Use "-t 201" for the second CD and so on. Use "-w <comment>" to
+   add a comment about the CD you are ripping (-w "disc #"). Alternatively you
+   can use only the "-t ###" option and then move all the files to the same
+   directory. If you want the tagged track number to be set to the modified
+   number you should use "-T ###".
+
+Q. I have a live concert. I want to encode it in a single file. How do i do it?
+A. Use "-1" and it will be encoded in a single file.
+
+3. CDDB
+   ====
+
+Q. I need to go through an HTTP proxy for CDDB access. 
+A. No problem, just export your http_proxy variable first so wget/fetch/curl 
+   can see it.
+
+Q. I already store CDDB entries in my hard disc. Can I make use of them?
+A. Piece of cake. Just edit CDDBLOCALDIR to point to the repository and give
+   abcde the "-L" flag to make use of it.
+
+Q. Fine, now it uses local CDDB, but I have no network connection. How can I
+   disable CDDB checks?
+A. Use the "-L -n" combination. It will try to use local CDDB entries, and if
+   nothing can be found, it will use a template. You will be also given the
+   choice to edit such template.
+
+Q. How can I use some other CDDB information provider?
+A. abcde now uses FreeDB by default. To use a different FreeDB mirror or 
+   another CDDB service, change the CDDBURL option in your abcde.conf.
+
+
+3. FORMATS
+   =======
+
+Q. What formats can I encode my music to?
+A. As for version 2.2, abcde includes support for MP3, Ogg/Vorbis, 
+   Ogg/Speex, Flac and MPP/MP+(Musepack). Support for AAC will be added once
+   an FLOSS encoder/decoder is working.
+
+Q. I want the new *put the newest and coolest codec there* format to be 
+   supported by abcde. Abcde is so cool but i want to encode also to this
+   new format...
+A. Patches are welcome! ;)
+   No, seriously, if the format is usable, available for Linux and open
+   source/free software, it should be fairly easy to integrate. Support for
+   AAC (m4p) should be the next one to be introduced.
 
 Q. I use Debian/RedHat/(put your Unix flavour here) and MP3 encoding is not 
    working. What am I doing wrong?
@@ -102,60 +194,35 @@ A. Since MP3 is considered non-free (you get it for free, but hardware players
 
    Others : Please, help me here.
 
-Q. I have modified some of the options, and now CDDB has stopped working.
-A. Check that you have modified everything in the right way. For instance, if
-   you modify the HTTPGET program you might want to set some options of your
-   own. If you use the predefined ones (wget, curl and fetch) abcde will try
-   to use some defaults. Keep in mind that the output should go to the output
-   as standard output, to be saved in a file for later use.
+Q. Huh! Why is MPPENCODER (with MPP) and .mpc the extension?
+A. Dunno. You must ask the guys who created and defined the format. The 
+   standard is MPEGplus (MPP/MP+) but the files use .mpc extension.
    
-   If abcde seems to be ignoring your configuration options or not running commands
-   such as the encoder, you may have misquoted something. Config options such as
-   the following do not work:
-
-   LAMEOPTS=-h -k
+   
+4. MISC PROBLEMS
+   ==== ========
 
-   Try this instead:
+Q. What happened with normalize?
+A. Normalize has changed its name under Debian, which is the GNU/Linux 
+   distribution for developing abcde (well, is The GNU/Linux Distribution
+   i only use, at the moment). Now it is called normalize-audio.
+   If you are using some other flavour of OS, you need to change the name
+   of the executable in your abcde.conf file.
 
-   LAMEOPTS='-h -k'
+Q. I am using MacOSX and I am having problems to use abcde.
+A. Well, I have a Mac, but I use linux on it. I have not been able to find
+   a way to make it work there, since I do not have the development tools
+   installed. I have placed a basic support, but some user reports are just
+   complaining about abcde not encoding the ripped tracks, as if 
+   cdda2wav/cdparanoia/cddafs would never end reading them. If you have such
+   a system and experience problems, please, report them, and I will try to
+   work them out with your help.
 
 Q. My hardware player (put it here) does not recognize the playlists created
    with abcde. What I am doing wrong?
 A. Try using "-m" when creating the playlists, or setting DOSPLAYLIST as an
    option in the config file.
 
-Q. I am requested to have eject when setting the speed although I do not use
-   for anything.
-A. If you do not use cdparanoia, eject is used for setting the speed of the 
-   cdrom drive. You can substitute it for "setcd" with "-x" as the argument,
-   but you have to install it manually (setcd is, at least, available in 
-   Debian).
-   Another way to get the same results is using the pre_read function, defined
-   in your /etc/abcde.conf file.
-
-Q. Huh! Why is MPPENCODER (with MPP) and .mpc the extension?
-A. Dunno. You must ask the guys who created and defined the format. The 
-   standard is MPEGplus (MPP/MP+) but the files use .mpc extension.
-
-Q. I want the new *put the newest and coolest codec there* format to be 
-   supported by abcde. Abcde is so cool but i want to encode also to this
-   new format...
-A. Patches are welcome! ;)
-   No, seriously, if the format is usable, available for Linux and open
-   source/free software, it should be fairly easy to integrate. Support for
-   AAC (m4p) should be the next one to be introduced.
-
-Q. (Thanks to Amaya) Where are those options and settings defined? Why dont
-   you include a proper abcde.conf as an example?
-A. I do. It should be installed under /etc/abcde.conf and contains more or
-   less all the defaults abcde uses. You can use $(HOME)/.abcde.conf to 
-   override those defaults. More information can be obtained from the man page
-   which can be consulted using "man abcde".
-
-Q. I am running out of disc space.
-A. You have to options. Use -l or define WAVOUTPUTDIR=/some/other/path to your
-   /etc/abcde.conf or ~/.abcde.conf.
-   
 OBSOLETE
 --------
 Q. I set KEEPWAVS to "y" but abcde insists on erasing my directory, along
diff --git a/README b/README
index adf338b..813a79d 100644 (file)
--- a/README
+++ b/README
@@ -13,31 +13,9 @@ end result usually looks like: Our_Lady_Peace/01.Supermans_Dead.ogg This
 filename munging is customizable - edit the mungefilename function in your
 abcde.conf to change it.
 
-Need to go through an HTTP proxy for CDDB access? No problem, just export your
-http_proxy variable first so wget/fetch/curl can see it.
-
-You already store CDDB entries for your CD collection on your hard disk? Piece
-of cake. Just edit CDDBLOCALDIR to point to the repository and give abcde the
-"-L" flag to make use of it.
-
-Low on disk space? abcde has different algorithms to schedule ripping and
-encoding - to optimize for disk conservation, use -l.
-
-abcde can also take advantage of SMP systems, just like make. Try 'abcde -j 2' -
-it'll run two encoder jobs while it rips the next track.
-
-abcde now uses FreeDB by default. To use a different FreeDB mirror or another
-CDDB service, change the CDDBURL option in your abcde.conf.
-
-Frustrated that you can't use the CPU power on Machine A sitting right next to
-Machine B with the fast cdrom drive? Now you don't have to be - Run distmp3host
-(included in distmp3) on Machine A, and then run abcde -r MachineA from Machine
-B (where "MachineA" is a dns name or IP address). Use this in combination with
-'-j 0' to shift all encoding off the local machine.
-
-You do not have internet connection, or just feel with free time to write down
-all the song names and artists instead of using CDDB? Use -n and edit the
-template.
+Many of the questions related of problems executing abcde have been moved to the
+FAQ, which should be distributed along with this package. Reffer to that file 
+for help.
 
 To make abcde 2.x work more like 1.x, put these options in your abcde.conf:
 
@@ -68,8 +46,6 @@ Changes in 2.2-pre2:
   system.
 * New mungegenre function to switch off (or modify) the default behaviour of
   transforming uppercase characters to lowercase.
-* No network but you have been using abcde with local CDDB storage before?
-  Use -f and it will try the local CDDB and fallback to an empty template.
 
 Changes in 2.2-pre1:
 
@@ -203,13 +179,6 @@ abcde requires the following backend tools to work:
 * (optional) distmp3, a client/server for distributed mp3 encoding.
   You can get distmp3 at http://wlug.westbo.se/medlprog/medlprog.html
 
-Potential problems:
-
-Having trouble getting cdparanoia to read from your drive as a user?  Add
-yourself to the cdrom group, change the permissions on your cdrom device to 660,
-and if you have a SCSI cdrom drive, check the permissions on
-/dev/sg* as well.
-
 Abcde's new mailing list is abcde@listas.hispalinux.es. So far has not
 been actively used.
 The posts from non-subscribers are moderated to prevent spam.
@@ -218,11 +187,9 @@ Archives of the old list are publically available at:
 http://lly.org/~rcw/abcde/list/current/threads.html
 
 Abcde's current page is at http://www.hispalinux.es/~data/abcde.php
-Abcde's new homepage will be at http://abcde.hispalinux.es/.
 Abcde's old homepage is at http://lly.org/~rcw/abcde/page/.
 --
 Jesus Climent <jesus.climent@hispalinux.es>
 
-abcde was originally created by Robert Woodcock <rcw@debian.org>, but is
-currently maintained by Jesus Climent <jesus.climent@hispalinux.es>
+abcde was originally created by Robert Woodcock <rcw@debian.org>
 
diff --git a/TODO b/TODO
index 0a5783a..401e24f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -6,8 +6,6 @@ TODO:
 * read the TOC and CDTEXT files and store them
 * read the complete CD to a single file, storing TOC seems a good idea to
   recreate the index entries if we decide to burn the cd.
-* Make concatenating CD1...Cdn sets into one album possible: Maybe a "start
-  with number for files" flag?
 
 * read_and_encode function that uses named pipes for further ripping/encoding
   parallelization where possible
diff --git a/abcde b/abcde
index c874b1f..44875bd 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -26,7 +26,6 @@ echo "-c    Specify a configuration file (overrides system and user config files
 echo "-C    Specify discid to resume from (only needed if you no longer have the cd)"
 echo "-d    Specify CDROM device to grab"
 echo "-D    Debugging mode (equivalent to sh -x abcde)"
-echo "-f    Force the use of a local CDDB entry. Use an empty template if not found"
 echo "-h    This help information"
 #echo "-i    Tag files while encoding, when possible (local only) -NWY-"
 echo "-j    Number of encoder processes to run at once"
@@ -38,8 +37,9 @@ echo "-N    Noninteractive. Never prompt for anything"
 echo "-m    Modify playlist to include CRLF endings, to comply with some players"
 echo "-o    Output file type(s) (ogg,mp3,flac,spx,mpc). Defaults to ogg"
 echo "-p    Pad track numbers with 0's (if less than 10 tracks)"
+#echo "-P    Use UNIX pipes to read+encode without wav files"
 echo "-r    [host1,host2...] Also encode on these remote hosts"
-echo "-R    Add replaygain values to the tag info (ogg,flac)"
+echo "-R    Add replaygain values to the tag info (only for ogg,flac)"
 echo "-s    Start the track numbering at a given number [DEPRECATED: use -t]"
 echo "-S    Set the CD speed"
 #echo "-t    File types to preprocess (wav)"
@@ -49,7 +49,7 @@ echo "-T    Start the track numbering at a given number, modifying tag numbering
 echo "-v    Show version number and exit"
 echo "-V    Be a bit more verbose about what is happening behind the scenes"
 echo "-x    Eject CD after all tracks are read"
-echo "-w    <comment> Add a comment to the CD tracks"
+echo "-w    [comment] Add a comment to the CD tracks"
 echo "Tracks is a space-delimited list of tracks to grab."
 echo "Ranges specified with hyphens are allowed."
 }
@@ -412,7 +412,7 @@ do_encode ()
                for OUTPUT in $(echo $OUTPUTTYPE | tr , \ )
                do
                        OUT="$ABCDETEMPDIR/track$1.$OUTPUT"
-                       run_command '' echo "Encoding track $1 of $TRACKS: $TRACKNAME..."
+                       echo "Encoding track $1 of $TRACKS: $TRACKNAME..." >&2
                        case "$OUTPUT" in
                        mp3)
                                case "$2" in
@@ -965,35 +965,6 @@ do_discid ()
        
        # Create the discid file
        echo "$TRACKINFO" > "$ABCDETEMPDIR/discid"
-
-       # Determine what actions are to be done from $ACTIONS and set the
-       # following environment variables for them:
-       DOCDDB=n
-       DOREAD=n
-       DONORMALIZE=n
-       DOPREPROCESS=n
-       DOENCODE=n
-       DOPOSTPROCESS=n
-       DOTAG=n
-       DOMOVE=n
-       DOPLAYLIST=n
-       DOCLEAN=n
-
-       for ACTION in $(echo $ACTIONS | tr , \ )
-       do
-               case $ACTION in
-               cddb) DOCDDB=y;;
-               read) DOREAD=y;;
-               normalize) DONORMALIZE=y; DOREAD=y;;
-               preprocess) DOPREPROCESS=y; DOREAD=y;;
-               encode) DOENCODE=y; DOREAD=y;;
-               postprocess) DOPREPROCESS=y; DOENCODE=y; DOREAD=y;;
-               tag) DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;;
-               move) DOMOVE=y; DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;;
-               playlist) DOCDDB=y; DOPLAYLIST=y;;
-               clean) DOCLEAN=y;;
-               esac
-       done
 }
 
 # do_cddbparse
@@ -1053,12 +1024,6 @@ do_localcddb ()
                                #echo "Not using local copy of CDDB data"
                                CDDBLOCALSUCCESS="n"
                        fi
-               elif [ "$FORCECDDBUSELOCAL" = "y" ]; then
-                       $CDDBTOOL template $(cat "$ABCDETEMPDIR/discid") > "$ABCDETEMPDIR/cddbread.0"
-                       echo 998 > "$ABCDETEMPDIR/cddbquery" # Assuming 998 isn't used by CDDB
-                       echo cddb-readcomplete >> "$ABCDETEMPDIR/status"
-                       do_cddbparse "${CDDBLOCALFILE}" > "$ABCDETEMPDIR/cddbchoices"
-                       echo cddb-choice=0 >> "$ABCDETEMPDIR/status"
                        CDDBLOCALSUCCESS="y"
                else
                        CDDBLOCALSUCCESS="n"
@@ -1676,6 +1641,28 @@ if [ x"$EXTRAVERBOSE" != "x" ]; then
 fi
 }
 
+# User-redefinable functions
+# Custom filename munging:
+mungefilename ()
+{
+       echo "$@" | sed s,:,\ -,g | tr \ /\* __+ | tr -d \'\"\?\[:cntrl:\]
+}
+
+# Custom genre munging:
+mungegenre ()
+{
+       echo $CDGENRE | tr "[:upper:]" "[:lower:]"
+}
+
+# pre_read
+# Empty pre_read function, to be defined in the configuration file.
+pre_read ()
+{
+:
+}
+
+# End of functions
+#
 # Start of execution
 
 # Builtin defaults
@@ -1795,26 +1782,6 @@ MAXPROCS=1
 # List of actions to perform - by default, run to completion
 ACTIONS=cddb,read,encode,tag,move,clean
 
-# User-redefinable functions
-# Custom filename munging:
-mungefilename ()
-{
-       echo "$@" | sed s,:,\ -,g | tr \ /\* __+ | tr -d \'\"\?\[:cntrl:\]
-}
-
-# Custom genre munging:
-mungegenre ()
-{
-       echo $CDGENRE | tr "[:upper:]" "[:lower:]"
-}
-
-# pre_read
-# Empty pre_read function, to be defined in the configuration file.
-pre_read ()
-{
-:
-}
-
 # Asume fetch if under FreeBSD. curl is used for Mac OS X. wget is used for Linux/OpenBSD/NetBSD.
 # Let's use these checkings to determine the OS flavour, which will be used later
 if [ X$(uname) = "XFreeBSD" ] ; then
@@ -1856,7 +1823,7 @@ if [ -r $HOME/.abcde.conf ]; then
 fi
 
 # By this time, we need some HTTPGETOPTS already defined.
-# If the user has defined its own, we should not be empty.
+# If the user has defined a non-default HTTPGET method, we should not be empty.
 
 if [ "$HTTPGETOPTS" = "" ] ; then
        case $HTTPGET in
@@ -1886,7 +1853,7 @@ fi
 
 # Parse command line options
 #while getopts 1a:bc:C:d:Dhj:klLnNo:pr:S:t:T:vVx opt ; do
-while getopts 1a:A:bc:C:d:Dfhj:klLnNo:pr:Rs:S:t:T:vVxw: opt ; do
+while getopts 1a:A:bc:C:d:Dhj:klLnNo:pr:Rs:S:t:T:vVxw: opt ; do
        case "$opt" in
                1) ONETRACK=y ;;
                a) ACTIONS="$OPTARG" ;;
@@ -1897,17 +1864,18 @@ while getopts 1a:A:bc:C:d:Dfhj:klLnNo:pr:Rs:S:t:T:vVxw: opt ; do
                d) CDROM="$OPTARG" ;;
                D) set -x ;;
                h) usage; exit ;;
-               f) FORCECDDBUSELOCAL=y ;;
+#              f) FORCECDDBUSELOCAL=y ;;
                i) INLINETAG=y ;;
                j) MAXPROCS="$OPTARG" ;;
                k) KEEPWAVS=y ;;
                l) LOWDISK=y ;;
-               L) CDDBUSELOCAL="y" ;;
-               n) CDDBAVAIL="n" ;;
-               N) INTERACTIVE="n" ;;
+               L) CDDBUSELOCAL=y ;;
+               n) CDDBAVAIL=n ;;
+               N) INTERACTIVE=n ;;
                m) DOSPLAYLIST=y ;;
                o) OUTPUTTYPE="$OPTARG" ;;
-               p) PADTRACKS="y" ;;
+               p) PADTRACKS=y ;;
+               P) USEPIPES=y ;;
                r) REMOTEHOSTS="$OPTARG" ;;
                R) REPLAYGAIN=y ;;
                s) STARTTRACKNUMBER="$OPTARG" ;;
@@ -1960,6 +1928,40 @@ else
        done
 fi
 
+# List of valid actions: cddb,read,normalize,encode,tag,move,playlist,clean
+# List of experimental actions: retag,transcode
+
+# Determine what actions are to be done from $ACTIONS and set the
+# following environment variables for them:
+DOCDDB=n
+DOREAD=n
+DONORMALIZE=n
+DOPREPROCESS=n
+DOENCODE=n
+DOPOSTPROCESS=n
+DOTAG=n
+DOMOVE=n
+DOPLAYLIST=n
+DOCLEAN=n
+
+for ACTION in $(echo $ACTIONS | tr , \ )
+do
+       case $ACTION in
+       cddb) DOCDDB=y;;
+       read) DOREAD=y;;
+       normalize) DONORMALIZE=y; DOREAD=y;;
+#      preprocess) DOPREPROCESS=y; DOREAD=y;;
+       encode) DOENCODE=y; DOREAD=y;;
+#      postprocess) DOPREPROCESS=y; DOENCODE=y; DOREAD=y;;
+       tag) DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;;
+       move) DOMOVE=y; DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;;
+       playlist) DOCDDB=y; DOPLAYLIST=y;;
+       clean) DOCLEAN=y;;
+       esac
+done
+
+# Sanity checks:
+
 # At this point a CDROM has to be defined, so we check it exists.
 if [ "$CDROM" != "" ] ; then 
        if [ "$CDROMREADERSYNTAX" = "cdda2wav" ] && [ "$NEEDCDROMID" = "y" ] ; then
@@ -2014,14 +2016,14 @@ for OUTPUT in $(echo $OUTPUTTYPE | tr , \ )
 do
        case $OUTPUT in
                ogg)  [ "$OGGENCODERSYNTAX" = "default" ] && OGGENCODERSYNTAX=oggenc
-                     echo $ACTIONS | grep tag > /dev/null 2>&1 && NEEDCOMMENTER=y
-                     if [ "$REPLAYGAIN" = "y" ]; then NEEDVORBISGAIN=y; fi
+                     [ "$DOTAG" = "y" ] && NEEDCOMMENTER=y
+                     [ "$REPLAYGAIN" = "y" ] && NEEDVORBISGAIN=y
                        ;;
                mp3)  [ "$MP3ENCODERSYNTAX" = "default" ] && MP3ENCODERSYNTAX=lame
-                     echo $ACTIONS | grep tag > /dev/null 2>&1 && NEEDTAGGER=y
+                     [ "$DOTAG" = "y" ] && NEEDTAGGER=y
                        ;;
                flac) [ "$FLACENCODERSYNTAX" = "default" ] && FLACENCODERSYNTAX=flac
-                     echo $ACTIONS | grep tag > /dev/null 2>&1 && NEEDMETAFLAC=y
+                     [ "$DOTAG" = "y" ] && NEEDMETAFLAC=y
                        ;;
                spx) [ "$SPEEXENCODERSYNTAX" = "default" ] && SPEEXENCODERSYNTAX=speexenc ;;
                mpc) [ "$MPPENCODERSYNTAX" = "default" ] && MPPENCODERSYNTAX=mppenc ;;
@@ -2111,9 +2113,9 @@ fi
 
 # Don't check for stuff if it's not needed
 if [ "$REMOTEHOSTS" ]; then NEEDDISTMP3=y; fi
-if echo $ACTIONS | grep normalize > /dev/null 2>&1 ; then NEEDNORMALIZER=y; fi
-if [ "$EJECTCD" = "y" ]; then NEEDEJECT=y; fi
-if echo $ACTIONS | grep cddb > /dev/null 2>&1 ; then NEEDHTTPGET=y ; fi
+[ "$DONORMALIZE" = "y" ] && NEEDNORMALIZER=y
+[ "$EJECTCD" = "y" ] && NEEDEJECT=y
+[ ! "$CDDBAVAIL" = "n" ] && [ "$DOCDDB" = "y" ] && NEEDHTTPGET=y
 
 if [ X"$CDSPEEDVALUE" != "X" ]; then
        case "$CDROMREADERSYNTAX" in
@@ -2149,10 +2151,7 @@ HTTPGET="$HTTPGET $HTTPGETOPTS"
 
 # Here it used to say:
 # One thousand lines in, we can start doing stuff with things
-# Well, right now we are at line 2139 ;)
-
-# List of valid actions: cddb,read,normalize,encode,tag,playlist,move,clean
-# List of experimental actions: retag,transcode
+# Well, right now we are at line 2157 ;)
 
 # Export needed things so they can be read in this subshell
 export CDDBTOOL ABCDETEMPDIR TRACKQUEUE LOWDISK EJECTCD EJECT EJECTOPTS
@@ -2173,11 +2172,14 @@ if [ "$DOCDDB" = "y" ]; then
        if [ $CDDBUSELOCAL = "y" ]; then
                do_localcddb
        fi
-       ## FIXME ## ! is non-portable
-       if ! checkstatus cddb-choice > /dev/null && [ ! "$CDDBLOCALSUCCESS" = "y" ] ; then
-               do_cddbstat
-               do_cddbquery
-               do_cddbread
+       if checkstatus cddb-choice > /dev/null; then
+               :
+       else 
+               if [ ! "$CDDBLOCALSUCCESS" = "y" ] ; then
+                       do_cddbstat
+                       do_cddbquery
+                       do_cddbread
+               fi
        fi
        do_cddbedit
 
@@ -2204,7 +2206,7 @@ if [ "$STRIPDATATRACKS" = "y" ] && [ ! "$ONETRACK" = "y" ]; then
                                vecho "Querying the CD to obtain a list of valid audio tracks..."
                                $CDROMREADER -Q > $ABCDETEMPDIR/cdparanoia-query 2>&1
                                # Obtain a list of valid audio tracks from the results of the query
-                               CDTRACKQUEUE=$( cat $ABCDETEMODIR/cdparanoia- | egrep '^[[:space:]]+[[:digit:]]' | awk '{print $1}' | tr -d "." | tr '\n' ' ' )
+                               CDTRACKQUEUE=$( cat $ABCDETEMPDIR/cdparanoia-query | egrep '^[[:space:]]+[[:digit:]]' | awk '{print $1}' | tr -d "." | tr '\n' ' ' )
                        fi
                        # Obtain the track padding value from the before-processing list and pad the CD list
                        TRACKNUMPADDING=$( echo $TRACKQUEUE | awk '{print $1}' | tr -d " \n" | wc -c )
diff --git a/abcde.1 b/abcde.1
index d97a78f..418594a 100644 (file)
--- a/abcde.1
+++ b/abcde.1
@@ -392,5 +392,5 @@ An HTTP retrieval program: wget, fetch (FreeBSD) or curl (Mac OS X, among others
 .BR distmp3host (1),
 .BR curl(1)
 .SH AUTHORS
-Robert Woodcock <rcw@debian.org>
-Jesus Climent <jesus.climent@hispalinux.es>
+Robert Woodcock <rcw@debian.org>,
+Jesus Climent <jesus.climent@hispalinux.es> and contributions from many others.
index d79de88..02a02d4 100644 (file)
 # on the local machine (requires distmp3 to be installed on local machine and
 # distmp3host to be installed and running on all remote machines - see README)
 #REMOTEHOSTS=foo,bar,baz,quux,qiix
+
+# Set to obtain some information about actions happening in the background
+# Usefull if you have a slow network or CDDB servers seem irresponsive.
+#EXTRAVERBOSE=n
index 1215ccc..4be44c0 100644 (file)
@@ -12,8 +12,6 @@ abcde (2.1pre2.2.0-1) experimental; urgency=low
     - On the MacOS X, I still do not know if abcde works correctly. If does
       not, please, drop a note. Or else.
   * DOSPLAYLIST also changes "/" with "\".
-  * Option "-s <number>" added to modify the numbering from a starting point
-    (Closes: #95828). Geez! That is low bug number...
   * DATA tracks are now excluded from the ripping process using internally
     the cdparanoia "-Q" query option. If using another ripper, it does not
     work (at least there is no support for them in abcde)
@@ -21,25 +19,27 @@ abcde (2.1pre2.2.0-1) experimental; urgency=low
   * New "0" choice for "None of the above" has been introduced. If selected, a
     template is created and the user encouraged to edit it (Closes: #147683).
   * New options for when the PLAYLIST already exists: erase, append or keep.
-  * Small bug fixes along the code:
+  * Bug fixes along the code:
     - abcde.1 corrections and additions
-    - abcde corrections
+    - abcde corrections and code reorganization. abcde now exits earlier if
+      some of the options are incompatible. Also the actions are set as
+      variables earlier, so we use less calls to external tools.
     - abcde.conf additions
   * The GENRE is munged now in its own mungegenre function, so that no more
     upper-to-lowercase is done (forced) except if the default is used.
   * Examples added to the tarball and /usr/share/doc/abcde/examples with two
     scripts to make abcde kind-of-a ripper daemon.
-  * Changed to experimental to have an stable 2.1.20 version in Sarge.
+  * Changed to experimental to have an stable 2.1.x version in Sarge.
   * Add CDDB information to Ogg/Vorbis and FLAC files (Closes: #265358).
   * Added INTERACTIVE option. Set it to "n" and there you go, without user
     interaction.
   * Changes normalize to normalize-audio (Closes: #267053)
   * Copes with wav files being erased by the ripping tool.
-  * New -f to force local CDDB or fallback to template (no network).
   * Small patch to support ()'s in the path under MacOSX. Thanks to Evan Jones
     for noticing and sending the patch.
   * Added -w for COMMENT seed. Used to give a comment to a given CD.
-  * Added -t as an alias for -s (deprecated in favor of -t)
+  * Option "-t <number>" added to modify the numbering from a starting point
+    (Closes: #95828). Geez! That is low bug number...
   * Added -T to modify also the tag entries on the songs. Currently available
     for FLAC and Ogg/Vorbis.
 
index 73d465d..f3ee503 100644 (file)
@@ -1,10 +1,10 @@
-This package was debianized by Robert Woodcock <rcw@debian.org> on
-Sun, 21 Feb 1999 18:50:34 -0800.
+The software was originally developed by Robert Woodcock <rcw@debian.org>.
+It was also debianized by Robert Woodcock on Sun, 21 Feb 1999 18:50:34 -0800.
 
 It is available at: http://www.hispalinux.es/~data/abcde.php
 
-Upstream Authors: Robert Wookcock
-                 Jesus Climent <jesus.climent@hispalinux.es>
+Upstream Author: Jesus Climent <jesus.climent@hispalinux.es>
+Original Author: Robert Woodcook
 
 Copyright: