summaryrefslogtreecommitdiffstats
path: root/src/vfs/extfs/helpers/audio.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/vfs/extfs/helpers/audio.in')
-rwxr-xr-xsrc/vfs/extfs/helpers/audio.in53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/vfs/extfs/helpers/audio.in b/src/vfs/extfs/helpers/audio.in
new file mode 100755
index 0000000..05c8c65
--- /dev/null
+++ b/src/vfs/extfs/helpers/audio.in
@@ -0,0 +1,53 @@
+#! /bin/sh
+#
+# Written by Pavel Machek
+# CDDB support by Adam Byrtek
+#
+# (C) 2000 The Free Software Foundation.
+#
+
+set -e
+
+CDDB_SERVER="http://freedb.freedb.org"
+CDDB_HANDSHAKE="hello=user+localhost+mc+1.0&proto=1"
+CDDB_TIMEOUT=20 # in seconds
+
+audiofs_list()
+{
+ DATE=`date +"%b %d %H:%M"`
+ echo "-r--r--r-- 1 0 0 0 $DATE CDDB"
+ cdparanoia -Q -d "$1" 2>&1 | grep '^[ 0-9][ 0-9][ 0-9]\.' | while read A B C
+ do
+ A=`echo "$A" | sed -e 's/\.//' -e 's/^\(.\)$/0\1/'`
+ SIZE=`expr 44 + $B \* 2352`
+ echo "-r--r--r-- 1 0 0 $SIZE $DATE track-${A}.wav"
+ done
+}
+
+audiofs_copyout()
+{
+ if [ x"$2" = x"CDDB" ]; then
+ DISCID=`cd-discid "$1" | tr " " "+"`
+ if [ -z "$DISCID" ]; then
+ exit 1
+ fi
+ RESPONSE=`wget -q -T $CDDB_TIMEOUT -O - "$CDDB_SERVER/~cddb/cddb.cgi?cmd=cddb+query+$DISCID&$CDDB_HANDSHAKE" | tee "$3" | @AWK@ '/^200/ { print $2,$3; }'`
+ wget -q -T $CDDB_TIMEOUT -O - "$CDDB_SERVER/~cddb/cddb.cgi?cmd=cddb+read+$RESPONSE&$CDDB_HANDSHAKE" | grep -v "^#" >> "$3"
+ else
+ TRACK=`echo "$2" | sed 's/track-0*//' | sed 's/\.wav//'`
+ cdparanoia -q -d "$1" "$TRACK" "$3" >/dev/null
+ fi
+}
+
+if [ ! -b "$2" ]
+then
+ BASE="/dev/cdrom"
+else
+ BASE="$2"
+fi
+
+case "$1" in
+ list) audiofs_list "$BASE"; exit 0;;
+ copyout) audiofs_copyout "$BASE" "$3" "$4"; exit 0;;
+esac
+exit 1