#!/bin/sh

DEVIN=/dev/scd0
DEVOUT=0,6,0
SPEED="speed=4"

BACKUPDIR=.backup
CDRECORD="cdrecord dev=$DEVOUT -v -eject -multi $SPEED"
MKISOFS="mkisofs -r -J -V backup"

while [ -n "$1" ]; do
	if [ "$1" = "-f" ]; then
	    echo "== 1st session =="
	    FIRST=yes
	elif [ "$1" = "-t" ]; then
	    if [ -n "$2" ]; then TMP=$2; shift;
	    else TMP=/tmp/backup-isofs.$$;
	    fi
	    echo "== temporary ISO file '$TMP' =="
	else echo "unknown option $1"
	fi
	shift
done

# not first session of multi sessiton CD
if [ -z "$FIRST" ]; then
    SECOND="-M $DEVIN -C `cdrecord dev=$DEVOUT -msinfo`"
fi

# get ISO size for "on the fly"
du $HOME/.backup/backup/
SIZE=`$MKISOFS $SECOND -print-size -q $HOME/$BACKUPDIR/backup/ 2>&1 | \
      sed -e "s/.* = //" `
echo "size = $SIZE sector  (1sector=2Kbyte)"
echo ""


if [ -n "$TMP" ]; then
    # NOT on the fly
    nice -+10 $MKISOFS $SECOND $HOME/.backup/backup/ > $TMP
    trap "rm -f $TMP" EXIT
    su -c "nice --20 $CDRECORD $TMP"
else
    # on the fly
    su -c "nice --20 $MKISOFS $SECOND $HOME/.backup/backup/ | \
	   nice --20 $CDRECORD -tsize=${SIZE}s -"
fi
