#!/bin/sh
#
# Programme pour graver un CD sans créer d'image iso9660, à la volée...
# (c) Thomas Nemeth 1999
# email : tnemeth@free.fr
#
# Paramètres :
#    -h Aide sur l'usage.
#    -version version.
#    -debug debuggage.
#    -eject Éjection du cd après gravage
#    -V Nom de volume.
#       - Type    : Chaine quotée.
#       - Valeurs : Toute chaine entre guillemets.
#       - Ex.     : -V "Archives #n"
#    -p Chemin vers les sources.
#       - Type    : Chemin de répertoires.
#       - Valeurs : Tout chemin accessible, sur un support monté et dont le
#                   taux de transfert est suffisament élevé pour permettre le
#                   gravage.
#       - Ex.     : -p /archives/données/
#    -m Type de session (pour le multi-session).
#       - Type    : Chaîne spécifique.
#       - Valeurs : 0 (pas de multi-session),
#                   1 (créé une 1ère piste multi)
#                   2 (créé une n-ième piste multi)
#                   3 (créé une dernière piste multi)
#       - Ex.     : -m 0
#    -d Device-Num pour le multi-session
#       - Type    : Fichier device /dev/srX
#       - Valeurs : X avec X dépend du système
#       - Ex.     : -d 1
#    -i Numéro de l'ID SCSI du graveur.
#       - Type    : Valeur numérique.
#       - Valeurs : 0..15
#       - Ex.     : -i 6
#    -b Numéro du bus SCSI à utiliser
#       - Type    : Valeur numérique.
#       - Valeurs : 0..oo
#       - Ex.     : -b 1
#    -A APPLICATION ID
#       - Type    : Chaine de caractère
#       - Valeurs : Toute chaine entre guillemets.
#       - Ex.     : -A "DirectBurn v1.1"
#    -P PUBLISHER ID
#       - Type    : Chaine de caractère
#       - Valeurs : Toute chaine entre guillemets.
#       - Ex.     : -P "Thomas Nemeth's Scripting Head ;-)"
#    -R PREPARER ID
#       - Type    : Chaine de caractère
#       - Valeurs : Toute chaine entre guillemets.
#       - Ex.     : -R "Thomas Nemeth"
#    -J faire un CD au format Joliet.
#    -x Chemin à exclure du gravage.
#       - Type    : Chemin de répertoires.
#       - Valeurs : Tout chemin accessible, sur un support monté.
#       - Ex.     : -x /archives/données/dontburn/
#    -g Types de fichiers à exclure du gravage.
#       - Type    : Expression de fichiers à exclure.
#       - Valeurs : Toutes expression de type "wildcard" pour fichier.
#       - Ex.     : -m *.o
#    -B Chemin vers une image de boot pour CD bootable.
#       - Type    : Chemin de répertoires avec fichier.
#       - Valeurs : Tout fichier accessible, sur un support monté.
#       - Ex.     : -B /archives/bootimage.raw
#    -c Boot catalog.
#       - Type    : Fichier (qui sera créé par mkisofs).
#       - Valeurs : Chaine de caractère.
#       - Ex.     : -c boot.catalog
#    -t Fichier image
#       - Type    : Fichier image (qui sera créé par mkisofs).
#       - Valeurs : Chaine de caractère.
#       - Ex.     : -t /archives/image.iso
#    -s Vitesse de gravage
#       - Type    : Valeur numérique
#       - Valeurs : 0..4
#       - Ex.     : -s 4
#    test  : Test du gravage.
#  ou
#    write : Gravage effectif du CD.
#
# TODO :
#    - Faire un scan automatique des bus SCSI pour trouver l'ID du graveur
#    - Faire des tests plus poussés sur les paramètres
#    - Faire quelque chose pour le fichier temporaire
#    - Ajouter le support d'autres options de cdrecord / mkisofs
#


# <---     CONSTANTES     --->

# Générales
TRUE=true
FALSE=false
MAXCOUNT=21
VERSION="1.1.2"
QUOTE="'"

# Erreurs
NOERR=0
USAGE=1
SHOWVERSION=2
BADARGVOL=3
BADARGREP=4
BADARGDEV=5
BADARGMS=6
BADARGTW=7
BADARGID=8
BADARGBUS=9
BADARGNB=10
BADARGAPPID=11
BADARGPREID=12
BADARGPUBID=13
BADARGEXCPATH=14
BADARGEREGEXP=15
BADARGBOOTIMG=16
BADARGBOOTCAT=17
BADARGIMGFILE=18
BADARGSPEED=19
BADSUPPORT=20


# <--- VARIABLES  LOCALES --->

# Pour le débuggage
#SAVEERRFILE=$HOME/.erreur_gravage
SAVEERRFILE=$HOME/tmp/erreur_gravage
DEBUG=$FALSE

# Générales
#TMPFILE=$HOME/.BurnTmpInfos
TMPFILE=/tmp/$USER/BurnTmpInfos
ENDSOUNDFILE=/usr/local/share/sounds/WarSounds/Owrkdone.wav
PLAYSOUND=$TRUE

# Pour les tests d'erreur
ERROR=$NOERR
TESTWRITE=$FALSE
ARGCOUNT=0

# Logiciels
MKFS=mkisofs
WRITER=cdrecord
WAVPLAYER=play

# Options de gravage
WRITEPOS=""
SCANOPT="-scanbus"
MSOPT="-msinfo"

# Valeurs par défaut
IMGFILE=/archives/image.iso
JOLIET=$FALSE
MKFSOPTS="-l -L -r"
WRITEOPTS="-v"
VOLNAME=""
SPEED=4
REP=/archives/données/
MSTYPE=0
PREPARERID=""
PUBLISHERID=""
APPLICATIONID=""
EXCLUDEPATH=""
EXCLUDEREGEXP=""
BOOTIMGPATH=""
BOOTCATALOG="boot.catalog"

# + Matériel
SCSIBUS=0
SCSI_ID=6
DEVICE=1
DONTDETECT=$FALSE


# <---        CODE        --->

# Vérification des entrées... Elle n'est pas exhaustive :-/
ARGSHIFT=0
while [ "$1" != "" -a $ARGCOUNT != $MAXCOUNT ]; do
    ARGCOUNT=`expr $ARGCOUNT + 1`
    case "$1" in
        # Nom de volume
        "-V")    if [ "$2" != "" ]; then
                     VOLNAME="$2"
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGVOL
                 fi;;
        # Chemin
        "-p")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité du chemin
                     REP=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGREP
                 fi;;
        # Multi-session
        "-m")    if [ "$2" = "0" -o "$2" = "1" -o "$2" = "2" -o "$2" = "3" ]; then
                     MSTYPE=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGMS
                 fi;;
         # Device
        "-d")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité du device
                     DEVICE=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGDEV
                 fi;;
        # Test/Write
        "test")  TESTWRITE=$TRUE
                 WRITEOPTS="$WRITEOPTS -dummy"
                 ARGSHIFT=1;;
        "write") TESTWRITE=$TRUE
                 ARGSHIFT=1;;
        # Éjecter le CD
        "-eject")
                 WRITEOPTS="$WRITEOPTS -eject"
                 ARGSHIFT=1;;
        # Aide
        "-h"|"--help")
                 ERROR=$USAGE
                 ARGSHIFT=1;;
        # Version
        "-version")
                 ERROR=$SHOWVERSION
                 ARGSHIFT=1;;
        # Joliet
        "-J")    JOLIET=$TRUE
                 ARGSHIFT=1;;
        # Débuggage
        "-debug")
                 DEBUG=$TRUE
                 ARGSHIFT=1;;
        # ID SCSI
        "-i")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité de l'ID
                     SCSI_ID=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGID
                 fi;;
        # BUS SCSI
        "-b")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité du bus
                     SCSIBUS=$2
                     DONTDETECT=$TRUE
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGBUS
                 fi;;
        # APPLICATION ID
        "-A")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité de l'ID
                     APPLICATIONID=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGAPPID
                 fi;;
        # PUBLISHER ID
        "-P")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité de l'ID
                     PUBLISHERID=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGPUBID
                 fi;;
        # PREPARER ID
        "-R")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité de l'ID
                     PREPARERID=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGPREID
                 fi;;
        # Chemin à exclure du gravage
        "-x")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité du chemin
                     EXCLUDEPATH=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGEXCPATH
                 fi;;
        # Chemin à exclure du gravage
        "-g")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité du chemin
                     EXCLUDEREGEXP=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGEREGEXP
                 fi;;
        # Image de boot pour CD bootable El Torito
        "-B")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité du chemin
                     BOOTIMGPATH=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGBOOTIMG
                 fi;;
        # Catalogue de boot
        "-c")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité du chemin
                     BOOTCATALOG=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGBOOTCAT
                 fi;;
        # Fichier image
        "-t")    if [ "$2" != "" ]; then
                     ### Inclure le test de la validité du chemin
                     IMGFILE=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGIMGFILE
                 fi;;
        # Vitesse de gravage
        "-s")    if [ "$2" = "0" -o "$2" = "1" -o "$2" = "2" -o "$2" = "3" -o "$2" = "4" ]; then
                     SPEED=$2
                     ARGSHIFT=2
                 else
                     ERROR=$BADARGSPEED
                 fi;;
    esac
    if [ $DEBUG = $TRUE -a $ARGSHIFT = 2 ]; then
        echo -n "$ARGCOUNT : $1 $2"
    elif [ $DEBUG = $TRUE -a $ARGSHIFT = 1 ]; then
        echo -n "$ARGCOUNT : $1"
    fi
    if [ $DEBUG = $TRUE ]; then
       echo ", Args shifted : $ARGSHIFT."
    fi
    shift $ARGSHIFT
done

if [ $TESTWRITE = $FALSE -a $ERROR = $NOERR ]; then
    ERROR=$BADARGTW
fi

if [ $ARGCOUNT = $MAXCOUNT -a $ERROR = $NOERR ]; then
    ERROR=$BADARGNB
fi

# Création de la ligne de commande
if [ $ERROR = $NOERR ]; then
    # Configuration du BUS SCSI
    if [ $DONTDETECT = $FALSE ]; then
        # S'il n'y a pas de bus SCSI #1 c'est que le scanner sur la 1ère
        # carte est éteind, sinon, comme le graveur est sur la 2nde carte
        # SCSI, mise à jour de la variable correspondante.
        $WRITER $SCANOPT > $TMPFILE
        lSCSIBUS=`grep -w scsibus1: $TMPFILE`
        if [ $DEBUG = $TRUE ]; then
            cp $TMPFILE $SAVEERRFILE
            echo "Pré-débuggage : "
            echo "\$lSCSIBUS = $lSCSIBUS"
        fi
        if [ "$lSCSIBUS" != "" ]; then
            SCSIBUS=1
        fi
        rm $TMPFILE
    fi

    # Détermination des options pour $MKFS et $WRITER
    if [ "$APPLICATIONID" != "" ]; then
    	MKFSOPTS="-p \"$APPLICATIONID\" $MKFSOPTS"
    fi
    if [ "$PUBLISHERID" != "" ]; then
    	MKFSOPTS="-p \"$PUBLISHERID\" $MKFSOPTS"
    fi
    if [ "$PREPARERID" != "" ]; then
    	MKFSOPTS="-p \"$PREPARERID\" $MKFSOPTS"
    fi
    if [ "$EXCLUDEPATH" != "" ]; then
    	MKFSOPTS="-x $EXCLUDEPATH $MKFSOPTS"
    fi
    if [ "$EXCLUDEREGEXP" != "" ]; then
    	MKFSOPTS="-m $EXCLUDEREGEXP $MKFSOPTS"
    fi
    if [ "$BOOTIMGPATH" != "" ]; then
        if [ "$BOOTCATALOG" != "" ]; then
    	    MKFSOPTS="-c $BOOTCATALOG $MKFSOPTS"
	else
	    MKFSOPTS="-c boot.catalog $MKFSOPTS"
        fi
    	MKFSOPTS="-b $BOOTIMGPATH $MKFSOPTS"
    fi
    if [ "$VOLNAME" != "" ]; then
    	MKFSOPTS="-V \"$QUOTE$VOLNAME$QUOTE\" $MKFSOPTS"
    fi
    WRITEOPTS="$WRITEOPTS -speed=$SPEED"
    # Multi-session diffs
    if [ $MSTYPE = 0 ]; then
        MKFSOPTS="$MKFSOPTS $REP"
        WRITEOPTS="$WRITEOPTS -dev=$SCSIBUS,$SCSI_ID,0"
    elif [ $MSTYPE = 1 ]; then
        MKFSOPTS="$MKFSOPTS $REP"
        WRITEOPTS="-multi $WRITEOPTS -dev=$SCSIBUS,$SCSI_ID,0"
    elif [ $MSTYPE = 2 ]; then
        $WRITER $MSOPT -dev=$SCSIBUS,$SCSI_ID,0 > $TMPFILE 2>&1
	echo "$WRITER $MSOPT -dev=$SCSIBUS,$SCSI_ID,0"
        lERROR=`grep error $TMPFILE`
	if [ $DEBUG = $TRUE ]; then
            cat $TMPFILE >> $SAVEERRFILE
            echo "\$lERROR = « $lERROR »"
        fi
        if [ "$lERROR" != "" ]; then
            ERROR=$BADSUPPORT
        else
            WRITEPOS=`$WRITER $MSOPT -dev=$SCSIBUS,$SCSI_ID,0`
            MKFSOPTS="$MKFSOPTS -C $WRITEPOS -M /dev/sr$DEVICE -o $IMGFILE $REP"
            WRITEOPTS="-waiti -multi $WRITEOPTS -dev=$SCSIBUS,$SCSI_ID,0"
        fi
	rm $TMPFILE
    elif [ $MSTYPE = 3 ]; then
        $WRITER $MSOPT -dev=$SCSIBUS,$SCSI_ID,0 > $TMPFILE 2>&1
	echo "$WRITER $MSOPT -dev=$SCSIBUS,$SCSI_ID,0"
        lERROR=`grep error $TMPFILE`
	if [ $DEBUG = $TRUE ]; then
            cat $TMPFILE >> $SAVEERRFILE
            echo "\$lERROR = « $lERROR »"
        fi
        if [ "$lERROR" != "" ]; then
            ERROR=$BADSUPPORT
        else
            WRITEPOS=`$WRITER $MSOPT -dev=$SCSIBUS,$SCSI_ID,0`
            MKFSOPTS="$MKFSOPTS -C $WRITEPOS -M /dev/sr$DEVICE -o $IMGFILE $REP"
            WRITEOPTS="-waiti $WRITEOPTS -dev=$SCSIBUS,$SCSI_ID,0"
        fi
	rm $TMPFILE
    fi
fi

if [ $DEBUG = $TRUE ]; then
    echo "Débuggage... ------>"
    echo
#    if [ $ERROR != $USAGE ]; then
#        echo "ATTENTION ! Le fichier $SAVEERRFILE a été créé."
#        echo "C'est à vous de penser à l'effacer !"
#        echo
#    fi
    echo "AFFICHAGE DU CONTENU DES VARIABLES :"
    echo

    # Générales
    echo "GÉNÉRALES :"
    echo "   \$USER          = $USER"
    echo "   \$TMPFILE       = $TMPFILE"
    echo "   \$SAVEERRFILE   = $SAVEERRFILE"
    echo "   \$ENDSOUNDFILE  = $ENDSOUNDFILE"
    echo

    # Pour les tests d'erreur
    echo "POUR LES TESTS D'ERREUR :"
    echo "   \$ERROR         = $ERROR"
    echo "   \$TESTWRITE     = $TESTWRITE"
    echo "   \$ARGCOUNT      = $ARGCOUNT"
    echo

    # Logiciels
    echo "LOGICIELS :"
    echo "   \$MKFS          = $MKFS"
    echo "   \$WRITER        = $WRITER"
    echo "   \$WAVPLAYER     = $WAVPLAYER"
    echo

    # Options de gravage
    echo "OPTIONS DE GRAVAGE :"
    echo "   \$WRITEPOS      = $WRITEPOS"
    echo "   \$SCANOPT       = $SCANOPT"
    echo "   \$MSOPT         = $MSOPT"
    echo

    # Valeurs par défaut
    echo "VALEURS PAR DÉFAUT OU MODIFIÉES :"
    echo "   \$IMGFILE       = $IMGFILE"
    echo "   \$JOLIET        = $JOLIET"
    echo "   \$MKFSOPTS      = $MKFSOPTS"
    echo "   \$WRITEOPTS     = $WRITEOPTS"
    echo "   \$VOLNAME       = \"$VOLNAME\""
    echo "   \$REP           = $REP"
    echo "   \$MSTYPE        = $MSTYPE"
    echo "   \$PREPARERID    = \"$PREPARERID\""
    echo "   \$PUBLISHERID   = \"$PUBLISHERID\""
    echo "   \$APPLICATIONID = \"$APPLICATIONID\""
    echo "   \$EXCLUDEPATH   = $EXCLUDEPATH"
    echo "   \$EXCLUDEREGEXP = $EXCLUDEREGEXP"
    echo "   \$BOOTIMGPATH   = $BOOTIMGPATH"
    echo "   \$BOOTCATALOG   = $BOOTCATALOG"
    echo

    # Matériel
    echo "MATÉRIEL :"
    echo "   \$SCSIBUS       = $SCSIBUS"
    echo "   \$SCSI_ID       = $SCSI_ID"
    echo "   \$DEVICE        = $DEVICE"
    echo "   \$DONTDETECT    = $DONTDETECT"
    echo

    #Fichiers temporaires
    echo "FICHIER DE DÉTECTION TEMPORAIRE :"
    echo "$SAVEERRFILE ="
    cat $SAVEERRFILE
    rm $SAVEERRFILE
fi

# Traitement des erreurs
echo
if [ $ERROR = $BADARGVOL ]; then
    echo "Mauvais nom de volume, ou nom de volume absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGREP ]; then
    echo "Mauvais nom de répertoire, ou nom de répertoire absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGDEV ]; then
    echo "Mauvais nom de device, ou nom de device absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGMS ]; then
    echo "Mauvais argument de multi-session, ou argument de multi-session\
 absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGTW ]; then
    echo "Paramètre \"test\" ou \"write\" absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGID ]; then
    echo "Mauvais ID SCSI, ou ID SCSI absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGBUS ]; then
    echo "Mauvais bus SCSI, ou bus SCSI absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGNB ]; then
    echo "Mauvais nombre d'arguments (paramètres) !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGAPPID ]; then
    echo "Mauvais nom d'application, ou nom d'application absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGPREID ]; then
    echo "Mauvais nom de préparateur, ou nom de préparateur absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGPUBID ]; then
    echo "Mauvais nom de publicateur, ou nom de publicateur absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGEXCPATH ]; then
    echo "Mauvais répertoire à exclure, ou répertoire à exclure absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGEREGEXP ]; then
    echo "Mauvaise expression, ou expression absente !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGBOOTIMG ]; then
    echo "Mauvaise image de boot, ou image de boot absente !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGBOOTCAT ]; then
    echo "Mauvais catalogue de boot, ou catalogue de boot absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGIMGFILE ]; then
    echo "Mauvais fichier image, ou fichier image absent !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADARGSPEED ]; then
    echo "Mauvaise vitesse de gravage, ou vitesse de gravage absente !"
    echo
    ERROR=$USAGE
elif [ $ERROR = $BADSUPPORT ]; then
    echo "Mauvais type de support pour ajouter des pistes en multi-session !"
    echo "Soit il n'y a pas de 1ère piste multi-session déjà faite, soit le"
    echo "disque est finalisé."
    echo
fi

# Gravage ? Ou USAGE ? ou VERSION ?
if [ $ERROR = $NOERR ]; then
    echo "Nom de volume : \"$VOLNAME\""
    if [ $DEBUG = $FALSE ]; then
        #if [ $MSTYPE = 2 -o $MSTYPE = 3 ]; then
	#        $MKFS $MKFSOPTS |
	#        $WRITER $WRITEOPTS $IMGFILE
        #        rm $IMGFILE
        #else
        $MKFS $MKFSOPTS | $WRITER $WRITEOPTS -
        #fi
    else
        #if [ $MSTYPE = 2 -o $MSTYPE = 3 ]; then
	#        echo "$MKFS $MKFSOPTS"
	#        echo "$WRITER $WRITEOPTS $IMGFILE"
        #        echo "rm $IMGFILE"
        #else
        echo "$MKFS $MKFSOPTS | $WRITER $WRITEOPTS -"
        #fi
    fi
    if [ $PLAYSOUND = $TRUE ]; then
        $WAVPLAYER $ENDSOUNDFILE
    fi
elif [ $ERROR = $USAGE ]; then
    echo "directburn v$VERSION, (c) Thomas Nemeth 1999"
    echo "email : tnemeth@free.fr"
    echo
    echo "Usage : directburn [-debug] [-h|--help] [-version] [-eject]\
 [-V volname] [-p source-tree] [-m 0|1|2|3] [-s device-num] [-i #] [-b #]\
 [-A aplpication_id] [-P publisher_id] [-R preparer_id] [-J] [-x directory]\
 [-g expression] [-B boot_image] [-c filename] [-t filename] [-s #] test|write"
    echo
    echo "Gravage de CDs de données à la volée (sauf pour l'ajout de piste multi\
-session)."
    echo
    echo "   -debug            : Afficher les infos de débuggage."
    echo "                       Doit être le premier argument pour une\
 meilleure efficacité."
    echo "   -h|--help         : Aide sur l'usage (cet écran)."
    echo "   -version          : Version."
    echo "   -eject            : Éjecter le CD après gravage."
    echo "   -V volname        : Nom de volume pour le futur CD gravé."
    echo "                       Mettre des \" \" s'il y a des espaces."
    echo "   -p source-tree    : Chemin des fichiers sources du master."
    echo "                       Par défaut = /archives/données/."
    echo "   -m 0|1|2|3        : Type de multi-session."
    echo "                       - 0 : Pas de multi-session."
    echo "                       - 1 : Commencer un disque multi-session."
    echo "                       - 2 : Ajouter une piste à un CD multi-session."
    echo "                       - 3 : Ajouter une dernière piste à un CD multi\
-session."
    echo "                       Par défaut = 0."
    echo "   -d device-num     : Fichier device du graveur pour le multi-session\
 2/3."
    echo "                       Par défaut vaut 1 (/dev/sr1)"
    echo "   -i #              : Numéro de l'ID SCSI du graveur."
    echo "                       Par défaut = 6."
    echo "   -b #              : Numéro du bus SCSI sur lequel est branché\
 graveur."
    echo "                       Par défaut = 0."
    echo "   -A application_id : Titre de l'application."
    echo "   -P publisher_id   : Nom du publicateur."
    echo "   -R preparer_id    : Nom du préparateur."
    echo "   -J                : Faire un CD au format Joliet."
    echo "   -x directory      : Chemin à exclure du gravage."
    echo "   -g expression     : Expression des fichiers à exclure du gravage."
    echo "   -B boot_image     : Fichier image de boot."
    echo "   -c filename       : Nom du fichier catalogue de boot qui sera créé."
    echo "                       Par défaut = boot.catalog"
    echo "   -t filename       : Nom du fichier image qui sera créé si le\
 gravage ne se fait pas à la volée."
    echo "                       Par défaut = /archives/image.iso"
    echo "   -s #              : Vitesse de gravage comprise entre 0 et 4."
    echo "                       Par défaut = 4"
    echo "   test              : Effectue un test de gravage."
    echo "   write             : Grave le CD."
    echo
elif [ $ERROR = $SHOWVERSION ]; then
    echo "directburn v$VERSION, (c) Thomas Nemeth 1999"
    echo "email : tnemeth@free.fr"
    echo
fi
