#!/bin/sh
#
# Written by Pavel Machek
# CDDB support by Adam Byrtek
#
# (C) 2000 The Free Software Foundation.
#

# use: cd /dev/cdrom#audio, for ex.

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 ()
{
    echo "-r--r--r-- 1 0 0 0 Jan 1 0:00 CDDB"
    cdparanoia -Q -d $1 2>&1 | grep '^[ 0-9][ 0-9][ 0-9]\.' | while read A B C
    do
	A=`echo $A | sed 's/\.//'`
	SIZE=`expr 44 + $B \* 2352`
	if test $A -lt 10 ; then A="0$A"; fi
	echo "-r--r--r-- 1 0 0 $SIZE Jan 1 0:00 track-${A}.wav"
    done
}

audiofs_copyout ()
{
    if [ "$2" == "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 | gawk '/^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