Clarification for USEPIPES in the FAQ
[abcde.git] / cddb-tool
index 1833986..efd28ed 100755 (executable)
--- a/cddb-tool
+++ b/cddb-tool
@@ -86,7 +86,7 @@ Commands:
   query server proto user host disc-id tracks
        Looks up disc on server (should be of form "http://host/~cddb/cddb.cgi")
        remainder of command line is in the same form as that returned
-       by the cd-discid program.  
+       by the cd-discid program.
   read server proto user host disc-id genre
        CDDB file is dumped to stdout. File will contain an extra
        #CATEGORY= line, which leaves it a valid CDDB file but which will
@@ -98,7 +98,7 @@ Commands:
        if the server supports given protocol. Most common values for proto
        should be 5 and 3. With 3 you will not get DYEAR and DGENRE fields
        in response.
-  help  
+  help
        Display this.
 EOF
 }
@@ -113,12 +113,26 @@ f_seq ()
        done
 }
 
+new_checkexec ()
+{
+       if [ ! "$@" = "" ]; then
+               # Cut off any command-line option we added in
+               X=$(echo $@ | cut -d' ' -f2)
+               if [ "$(which $X)" = "" ]; then
+                       return 1
+               elif [ ! -x $(which $X) ]; then
+                       return 2
+               fi
+       fi
+       return 0
+}
+
 COMMAND=$1
 shift
 case $COMMAND in
 parse) # takes 1 argument, a filename, and dumps out a sh parseable version
        CDDBFILE="$1"
-       
+
        set -e
        # names chosen to match usage in abcde code
        DISCID=$(grep ^DISCID= "$CDDBFILE" | cut -f2 -d= | tr -d \[:cntrl:\])
@@ -196,7 +210,18 @@ send) # cddb-tool send filename email@address
        ADDRESS="$2"
        DISCID=$(grep ^DISCID= "$FILE" | cut -f2 -d= | tr -d \[:cntrl:\])
        CDDBGENRE=$(grep '^#CATEGORY=' "$FILE" | cut -f2- -d= | tr -d \[:cntrl:\])
-       grep -v "^#CATEGORY=" "$FILE" | iconv -t utf-8 | mail -a "Content-Type: text/plain; charset=utf-8" -s "cddb $CDDBGENRE $DISCID" "$ADDRESS"
+       # Use bsd-mailx by preference if we can, as it allows addition
+       # of extra headers. Otherwise, try to force UTF-8 via environment
+       if new_checkexec bsd-mailx; then
+               grep -v "^#CATEGORY=" "$FILE" | iconv -t utf-8 | bsd-mailx -a "Content-Type: text/plain; charset=utf-8" -s "cddb $CDDBGENRE $DISCID" "$ADDRESS"
+       else
+               # Find the first UTF-8 locale on the system, if any
+               UTF_LOCALE=$(locale -a | awk '/UTF-8/ { print $1; exit}')
+               if [ "$UTF_LOCALE"x != ""x ] ; then
+                       export LC_ALL=$UTF_LOCALE
+               fi
+               grep -v "^#CATEGORY=" "$FILE" | iconv -t utf-8 | mail -s "cddb $CDDBGENRE $DISCID" "$ADDRESS"
+       fi
        ;;
 
 query) # cddb-tool query serverurl proto user host discid...