-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Package: abcde Version: 2.3.99.5-1
I'm trying to use the abcde from testing to rip CDs to single flac files plus cue information (which seems to work fine). I have customized abcde to not map spaces to dashes or underscores, however, and when I re-run abcde on the ripped flac/cue file (to make individual ogg files), I get the following error: ERROR: you may only specify one FLAC file when using '--import-cuesheet-from' or '--export-cuesheet-to' (full output is attached as abcde-error.txt) This appears to be due to a number of 'naked' $CDROM expansions in the abcde script which would need to be double-quoted to support spaces in the CDROM environment variable. A patch that appears to fix the problem is attached (abcde.patch). I simply put double-quotes around all the un-quoted $CDROM variables I could find. :) Also attached is my /etc/abcde.conf file for reference. - -- Charles Steinkuehler [EMAIL PROTECTED] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (MingW32) iD8DBQFEoXHYenk4xp+mH40RAlV7AKD6XDSiv1ISIOjUtLkmSsndEgLqdwCfebPZ V1PkpDAB6hQtKJbhL8S3AmA= =WCNR -----END PGP SIGNATURE-----
abcde-error.txt
Description: plain/text
--- /usr/bin/abcde 2006-02-08 16:36:27.000000000 -0600 +++ /usr/bin/abcde.cs 2006-06-27 12:36:22.997572483 -0500 @@ -1435,17 +1435,17 @@ disktool -u ${CDROM#/dev/} fi if [ "$CDROMREADERSYNTAX" = "flac" ] ; then - if $METAFLAC $METAFLACOPTS --export-cuesheet-to=- $CDROM > /dev/null 2>&1 ; then - TRACKINFO=$($METAFLAC $METAFLACOPTS --export-cuesheet-to=- $CDROM | $CUE2DISCID) + if $METAFLAC $METAFLACOPTS --export-cuesheet-to=- "$CDROM" > /dev/null 2>&1 ; then + TRACKINFO=$($METAFLAC $METAFLACOPTS --export-cuesheet-to=- "$CDROM" | $CUE2DISCID) else log error "the input flac file does not contain a cuesheet." exit 1 fi else case "$CDDBMETHOD" in - cddb) TRACKINFO=$($CDDISCID $CDROM) ;; + cddb) TRACKINFO=$($CDDISCID "$CDROM") ;; # FIXME # musicbrainz needs a cleanup - musicbrainz) TRACKINFO=$($MUSICBRAINZ -c $CDROM ) ;; + musicbrainz) TRACKINFO=$($MUSICBRAINZ -c "$CDROM" ) ;; esac fi # Make sure there's a CD in there by checking cd-discid's return code @@ -1488,7 +1488,7 @@ cdparanoia|debug) if [ "$WEHAVEACD" = "y" ]; then vecho "Querying the CD for audio tracks..." - CDPARANOIAOUTPUT="$( $CDROMREADER -$CDPARANOIACDROMBUS $CDROM -Q --verbose 2>&1 )" + CDPARANOIAOUTPUT="$( $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -Q --verbose 2>&1 )" RET=$? if [ ! "$RET" = "0" ];then log warning "something went wrong while querying the CD... Maybe a DATA CD?" @@ -1625,7 +1625,7 @@ vecho "Creating cue file..." case $CDROMREADERSYNTAX in flac) - if $METAFLAC --export-cuesheet-to=- $CDROM > "$ABCDETEMPDIR/$CUEFILE"; then :; else + if $METAFLAC --export-cuesheet-to=- "$CDROM" > "$ABCDETEMPDIR/$CUEFILE"; then :; else log warning "the input flac file does not contain a cuesheet." fi ;; @@ -2420,7 +2420,7 @@ STRIPTRACKNUM=$(expr $UTRACKNUM + 0) nice $READNICE $FLAC -d -f --cue=${READTRACKNUMS:-$STRIPTRACKNUM.1-$(($STRIPTRACKNUM + 1)).0} "$FILEARG" "$CDROM" ;; cdparanoia) - nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;; + nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;; cdda2wav) if [ "$OSFLAVOUR" = "OSX" ] ; then # Hei, we have to unmount the device before running anything like cdda2wav in OSX @@ -2440,7 +2440,7 @@ ;; ## FIXME ## We have an exception for dagrab, since it uses -f ## FIXME ## Shall we just use -f $FILEARG ?? - dagrab) nice $READNICE $CDROMREADER -d $CDROM -v $UTRACKNUM "$FILEARG" $REDIR + dagrab) nice $READNICE $CDROMREADER -d "$CDROM" -v $UTRACKNUM "$FILEARG" $REDIR ;; cddafs) # Find the track's mounted path @@ -2453,7 +2453,7 @@ else false fi ;; - debug) nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM -w $UTRACKNUM-[:1] "$FILEARG" $REDIR + debug) nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -w $UTRACKNUM-[:1] "$FILEARG" $REDIR ;; esac RETURN=$? @@ -3402,7 +3402,7 @@ ## Now that we have metaflac, check if we need cue2discid #case $CDROMREADERSYNTAX in # flac) -# TRACKINFO=$($METAFLAC --show-tag=CDDB $CDROM | cut -d"=" -f2 | egrep "[a-f0-9]{8}") +# TRACKINFO=$($METAFLAC --show-tag=CDDB "$CDROM" | cut -d"=" -f2 | egrep "[a-f0-9]{8}") # if [ "$TRACKINFO" = "" ]; then # checkexec ${NEEDCUE2DISCID+$CUE2DISCID} # fi
# System defaults for abcde version 2.2.x # Nothing in this file is uncommented by default. # # If you wish to override these system-wide settings, create your own # .abcde.conf file in your home directory. # CDDB options # If you wish to use a different CDDB server, edit this line. # If you just wanted to use a proxy server, just set your http_proxy # environment variable - wget will use it correctly. #CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi" # The CDDB protocol requires hello information, including a valid username # and hostname. If you feel paranoid about giving away such info, edit this # line - the format is [EMAIL PROTECTED] #HELLOINFO="[EMAIL PROTECTED]" # This controls the email address CDDB changes are submitted to. [EMAIL PROTECTED] # The following options control whether or not fetched CDDB entries # are cached locally in $CDDBLOCALDIR #CDDBCOPYLOCAL="n" #CDDBLOCALDIR="$HOME/.cddb" #CDDBLOCALRECURSIVE="n" # If NOSUBMIT is set to y, then abcde will never prompt asking if you # wish to submit your edited cddb file. #NOSUBMIT=n # If NOCDDBQUERY is set to y, then abcde will never even try to access # the CDDB server; running abcde will automatically drop you into a # blank cddb file to edit at your leisure. This is the same as the # -n option. NOCDDBQUERY=y implies NOSUBMIT=y. #NOCDDBQUERY=n # Select here if you want to use the locally stored CDDB entries. # This is useful if you do a lot of editing to those CDDB entries. # Also, other tools like Grip store CDDB entries under $HOME/.cddb, # so they can be reused when ripping CDs. #CDDBUSELOCAL="n" # List, separated with a comma, the fields we want the parsing function to # output. Defaults to YEAR and GENRE, for a complete list of fields provided by # CDDB. # The fields are not case sensitive. Actually, "y,g" will work as fine as "Y,G" # or "YEAR, GENRE" #SHOWCDDBFIELDS=year,genre # Specify the style of encoder to use here - # oggenc, vorbize - for OGGENCODERSYNTAX # lame, gogo, bladeenc, l3enc, xingmp3enc, mp3enc - for MP3ENCODERSYNTAX # flac - the only supported for FLACENCODERSYNTAX at the moment # speexenc - the only encoder for SPEEXENCODERSYNTAX # mppenc - encoder for MPPENCODERSYNTAX # default is a valid option for oggenc, lame, flac, speexenc and mppenc. # Currently this affects the default location of the binary, the variable # to pick encoder command-line options from, and where the options are # given. #MP3ENCODERSYNTAX=default #OGGENCODERSYNTAX=default #FLACENCODERSYNTAX=default #SPEEXENCODERSYNTAX=default #MPPENCODERSYNTAX=default # Specify the syntax of the normalize binary here - so far only 'normalize' # is supported. #NORMALIZERSYNTAX=default # CD reader program to use - currently recognized options are 'cdparanoia', # 'cdda2wav', 'dagrab', 'cddafs' (Mac OS X only) and 'flac'. #CDROMREADERSYNTAX=cdparanoia # CUE reader program to use. # Right now we only support 'mkcue', but this might change in the future. #CUEREADERSYNTAX=default # Keep the wav files after encoding. Set it to "y" and remove "clean" from # the list of default actions, since we purge the temp directory as default. #KEEPWAVS=n # Track padding: force abcde to pad tracks using 0, so every song uses a two # digit entry. If set to "y", even a single song encoding outputs a file like # 01.my_song.ext PADTRACKS=y # Define if you want abcde to be non-interactive. # Keep in mind that there is no way to deactivate it right now in the command # line, so setting this option makes abcde to be always non-interactive. #INTERACTIVE=n # Specify 'nice'ness of the encoder, the CD reader and the distmp3 proc. # This is a relative 'nice'ness (that is, if the parent process is at a # nice level of 12, and the ENCNICE is set to 3, then the encoder will # run with an absolute nice value of 15. Note also, that setting these # to be empty will result in some default niceness increase (4 in tcsh # and 10 using the bsdutils' nice). #ENCNICE=10 #READNICE=10 #DISTMP3NICE=10 # Paths of programs to use #LAME=lame #TOOLAME=toolame #GOGO=gogo #BLADEENC=bladeenc #L3ENC=l3enc #XINGMP3ENC=xingmp3enc #MP3ENC=mp3enc #VORBIZE=vorbize #OGGENC=oggenc #FLAC=flac #SPEEXENC=speexenc #MPPENC=mppenc #ID3=id3 #ID3V2=id3v2 #CDPARANOIA=cdparanoia #CDDA2WAV=cdda2wav #CDDAFS=cp #CDDISCID=cd-discid #CDDBTOOL=cddb-tool #EJECT=eject #MD5SUM=md5sum #DISTMP3=distmp3 #VORBISCOMMENT=vorbiscomment #METAFLAC=metaflac #NORMALIZE=normalize-audio #CDSPEED=eject #VORBISGAIN=vorbisgain #MKCUE=mkcue #MKTOC=cdrdao #DIFF=diff # Options to call programs with: # If HTTPGET is modified, the HTTPGETOPTS options should also be defined # accordingly. If HTTPGET is changed, the default options will be set, # if HTTPGETOPTS is empty or not defined. #HTTPGET=wget # for fetch (FreeBSD): HTTPGETOPTS="-q -o -" # for wget: HTTPGETOPTS="-q -O -" # for curl (MacOSX): HTTPGETOPTS="-f -s" #HTTPGETOPTS="-q -O -" # MP3: #LAMEOPTS= #TOOLAMEOPTS= #GOGOOPTS= #BLADEENCOPTS= #L3ENCOPTS= #XINGMP3ENCOPTS= #MP3ENCOPTS= # Ogg: #VORBIZEOPTS= OGGENCOPTS="-q 5" # FLAC: FLACOPTS="--best" # Speex: #SPEEXENCOPTS= # MPP/MP+ (Musepack): # For the encoder options take a look at the manpage. Set them like this: # MPPENCOPTS='--xtreme' if you wish to set more options then: # MPPENCOPTS='--xtreme --skip 20 --fade 10' #MPPENCOPTS= #ID3OPTS= #ID3V2OPTS= #CDPARANOIAOPTS= #CDDA2WAVOPTS= #CDDAFSOPTS="-f" #CDDBTOOLOPTS= #EJECTOPTS= #DISTMP3OPTS= #NORMALIZEOPTS= #CDSPEEDOPTS="-x" #CDSPEEDVALUE="" #MKCUEOPTS="" #MKTOCOPTS="" #DIFFOPTS="" #VORBISCOMMENTOPTS="-R" #METAFLACOPTS="--no-utf8-convert" #DIFFOPTS="" # Actions to take # Comma-separated list of one or more of the following: # cddb,read,normalize,encode,tag,move,playlist,clean # encode implies read # normalize implies read # tag implies cddb,read,encode # move implies cddb,read,encode,tag # playlist implies cddb # The default action list is defined in the following comment. ACTIONS=cddb,read,encode,tag,move,playlist,clean # CD device you want to read from # It can be defined as a singletrack flac file, but since it might change from # file to file it makes little sense to define it here. CDROM=/dev/scd0 # If we are using the IDE bus, we need CDPARANOIACDROMBUS defined as "d" # If we are using the ide-scsi emulation layer, we need to define a "g" #CDPARANOIACDROMBUS="d" # If you'd like to make a default location that overrides the current # directory for putting mp3's, uncomment this. #OUTPUTDIR=`pwd` # Or if you'd just like to put the temporary .wav files somewhere else # you can specify that here #WAVOUTPUTDIR=`pwd` # OUTPUTTYPE can be either "ogg", "mp3", "flac" or "spx", or a combination # of them separated with ",": "ogg,mp3". OUTPUTTYPE="ogg" # Output filename format - change this to reflect your inner desire to # organize things differently than everyone else :) # You have the following variables at your disposal: # OUTPUT, GENRE, ALBUMFILE, ARTISTFILE, TRACKFILE, and TRACKNUM. # Make sure to single-quote this variable. abcde will automatically create # the directory portion of this filename. # NOTICE: OUTPUTTYPE has been deprecated in the OUTPUTFORMAT string. # Since multiple-output was integrated we always append the file type # to the files. Remove it from your user defined string if you are getting # files like ".ogg.ogg". OUTPUTFORMAT='${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}' # Like OUTPUTFORMAT but for Various Artists discs. VAOUTPUTFORMAT='$(CSvadir)/${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE} - ${TRACKFILE}' # Define how many encoders to run at once. This makes for huge speedups # on SMP systems. Defaults to 1. Equivalent to -j. #MAXPROCS=2 # Support for systems with low disk space: # n: Default parallelization (read entire CD in while encoding) # y: No parallelization (rip, encode, rip, encode...) #LOWDISK=n # If set to y, enables batch mode normalization, which preserves relative # volume differences between tracks of an album. #BATCHNORM=n # Enables nogap encoding when using the 'lame' encoder. #NOGAP # Set the playlist file location format. Uses the same variables and format # as OUTPUTFORMAT. If the playlist is specified to be in a subdirectory, it # will be created for you and the playlist will reference files from that # subdirectory. PLAYLISTFORMAT='${ARTISTFILE}/${ALBUMFILE}.${OUTPUT}.m3u' # If you want to prefix every filename in a playlist with an arbitrary # string (such as 'http://you/yourstuff/'), use this option #PLAYLISTDATAPREFIX='' #Like PLAYLIST{FORMAT,DATAPREFIX} but for Various Artists discs: VAPLAYLISTFORMAT='$(CSvadir)/${ALBUMFILE}.${OUTPUT}.m3u' #VAPLAYLISTDATAPREFIX='' #This will give the playlist CR-LF line-endings, if set to "y". #(some hardware players insist on CR-LF line-endings) #DOSPLAYLIST=n # Custom filename munging: # By default, abcde will do the following to CDDB data to get a useful # filename: # * Translate colons to a space and a dash for Windows compatibility # * Eat control characters, single quotes, and question marks # * Translate spaces and forward slashes to underscores # * Translate stars into pluses. # To change that, redefine the mungefilename function. # mungefilename receives the CDDB data (artist, track, title, whatever) # as $1 and outputs it on stdout. mungefilename () { echo "$@" | sed s,:,\ -,g | tr /\* _+ | tr -d \'\"\?\[:cntrl:\] } # Custom genre munging: # By default we just transform uppercase to lowercase. Not much of a fancy # function, with not much use, but one can disable it or just turn the first # Uppercase. #mungegenre () #{ # echo $CDGENRE | tr "[:upper:]" "[:lower:]" #} # CHARLES STEINKUEHLER # Custom function to put Soundtracks in their own directory CSvadir () { case ${GENRE} in soundtrack) echo Soundtracks ;; *) echo Various ;; esac } # Custom pre-read function # By default it does nothing. # You can set some things to get abcde function in better ways: # * Close the CD tray using eject -t (if available in eject and supported by # your CD device. # * Set the CD speed. You can also use the built-in options, but you can also # set it here. In Debian, eject -x and cdset -x do the job. # KEEP IN MIND that executables included in pre_read must be in your $PATH or # you have to define them with full /path/to/binary # Uncomment and substitute the ":" with your commands. #pre_read () #{ #: #} # Custom post-read function # By default it does nothing. # You can set some things to get abcde function in better ways: # * Store a copy of the CD TOC. # KEEP IN MIND that executables included in post_read must be in your $PATH or # you have to define them with full /path/to/binary # Uncomment and substitute the ":" with your commands. #post_read () #{ #: #} # If you'd like to have abcde eject the cdrom after all the tracks have been # read, uncomment the following line. EJECTCD=y # To encode on the remote machines foo, bar, baz, quux, and qiix, as well as # 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 # Useful if you have a slow network or CDDB servers seem unresponsive. #EXTRAVERBOSE=n