#!/bin/sh # # dream49correction.sh # # Script de correction du CD-ROM DREAM #49 (mai 98) # pour la suite bureautique AXENE OFFICE. # # (c)mai 1998. Axene France. # # Started on Thu Mar 5 17:05:37 1998 Xibios 2 # Last update Fri Mar 6 14:40:10 1998 DeweY # src="" dst="" tmpfile="./__tmp" dst_default="$HOME/CDAxeneOffice" keygen="no" cddev="cdrom hdb hdc hdd scd0 scd1 sonycd cdu535 mcd sbpcd aztcd cm206cd \ gscd0 mcdx0 mcdx1 optcd0 sjcd lmscd hda hde hdf hdg hdh sr1 sr8" ECHONL1="echo " ECHONL2= test_echo=`echo -n test` if [ $test_echo = "-n test" ]; then test_echo=`echo "test\c"` if [ $test_echo = "test\c" ]; then test_echo=`echo -e "test\c"` if [ $test_echo = "test" ]; then ECHONL1="echo -e " ECHONL2="\c" fi else ECHONL1="echo " ECHONL2="\c" fi else ECHONL1="echo -n " fi SkipLine() { echo " "; } FFatal() { echo "${progname}: error: ${1}" 1>&2 ; exit 1; } # ---------------------------------------------------------------------- # # AskOneFromList - Let the user choose an item among a list # # ... # # ---------------------------------------------------------------------- # AskOneFromList() { _ask_text=$1 _ask_default=`expr $2 - 1` _ask_var=$3 shift 3 _arg_all=$@ _arg_num=$# if [ "$force_flag" = "yes" ]; then return $_ask_default else echo $_ask_text _ask_count=0 while [ $_ask_count -lt $_arg_num ]; do if [ $_ask_count -eq $_ask_default ]; then _ask_reply="[Défaut]" else _ask_reply= fi _ask_count=`expr $_ask_count + 1` eval "echo \" \$_ask_count. \$1 $_ask_reply\"" shift 1 done fi while :; do $ECHONL1"Votre choix: "$ECHONL2 read _ask_reply if [ -z "$_ask_reply" ]; then _ask_default=`expr $_ask_default + 1` eval "$_ask_var=\"\$_ask_default\"" return fi if [ ! `expr "$_ask_reply" : "^[0-9][0-9]*$"` = "0" ]; then if [ $_ask_reply -gt 0 -a $_ask_reply -le $_arg_num ]; then SkipLine eval "$_ask_var=\"\$_ask_reply\"" return fi fi echo "ERREUR: Vous devez entrer un nombre entre 1 et $_arg_num" done } # ------------------------------------------------------------------ # # AskYesNo - Let the user choose for y or n # # # # ------------------------------------------------------------------ # AskYesNo() { _message=$1 _answer=$2 while :; do $ECHONL1$_message" "$ECHONL2 read _ask_proceed if [ "$_ask_proceed" = "n" -o "$_ask_proceed" = "non" ]; then eval "$_answer=\"0\"" break; fi if [ "$_ask_proceed" = "o" -o "$_ask_proceed" = "oui" ]; then eval "$_answer=\"1\"" break; fi echo "Vous devez répondre par \`oui' ou \`non'." done } # ----------------------------------------------------------------- # # GetArg - get then n'th argument of a list # # ... # # ----------------------------------------------------------------- # GetArg() { _var=$1 _n=`expr $2 + 1` shift $_n eval "$_var=\"\$1\"" } # ----------------------------------------------------------------- # # MAIN # # ----------------------------------------------------------------- # cat << EOF ============================================================================== Script de correction du Cdrom DREAM #49. ---------------------------------------- Ce script ne permet de corriger que la partie concernant AXENE (répertoire "axeneoffice/" ). Pour corriger les autres parties du Cdrom, contactez Dream. ============================================================================== EOF if [ "v$1" = "v-keygen" ]; then keygen="yes" echo "Génération de clef locale" SkipLine fi AskOneFromList "Montage du CD-ROM Dream #49" 0 choice \ "Laisser le script monter le CD-ROM." "Le CD-ROM est déjà monté." if [ "$choice" = "1" ]; then echo "Veuillez insérer le CD-ROM Dream #49 dans votre lecteur." echo "Puis appuyer sur \`Entrée' lorsque c'est fait." read dum if [ `whoami` != "root" ]; then echo "Normalement, vous devez etre root pour monter le CD." AskYesNo "Voulez-vous essayer quand même ? [o/n]:" yesno if [ "$yesno" = "0" ]; then echo "abort" exit 1 fi fi guess_mount_point="" if [ -f /etc/fstab ]; then fstab_line=`cat /etc/fstab | grep cdrom` if [ "v$fstab_line" != "v" ]; then GetArg guess_mount_point 2 $fstab_line fi fi while :; do if [ "v$guess_mount_point" != "v" ]; then $ECHONL1"Entrez le point de montage du CD-ROM: \ [Défaut: $guess_mount_point] "$ECHONL2 else $ECHONL1"Entrez le point de montage du CD-ROM: "$ECHONL2 fi read mount_point if [ "v$guess_mount_point" != "v" -a "v$mount_point" = "v" ]; then mount_point=$guess_mount_point break; fi if [ -d "$mount_point" ]; then break else echo "Ce point de montage n'existe pas." fi done $ECHONL1"Recherche du device: "$ECHONL2 for cd_device in $cddev; do $ECHONL1"$cd_device "$ECHONL2 if mount -t iso9660 -o ro -o mode=0555 /dev/$cd_device $mount_point \ 1> /dev/null 2> /dev/null ; then if [ -d "$mount_point/axeneoffice" ]; then echo "trouvé !" break else umount /dev/$cd_device fi else cd_device="" fi done if [ "v$cd_device" = "v" ]; then echo "non trouvé." while :; do $ECHONL1"Entrer le device du lecteur de CD-ROM: \ (par exemple /dev/hdb): "$ECHONL2 read cd_device if [ "v$cd_device" != "v" ]; then if [ -b $cd_device ]; then break else echo "Le device $cd_device n'existe pas." fi fi done if mount -t iso9660 -o ro -o mode=0555 $cd_device $mount_point \ 1> /dev/null 2> /dev/null ; then if [ ! -d "$mount_point/axeneoffice" ]; then echo "Ce n'est pas le bon CD-ROM." exit 1 fi else echo "Impossible de monter ce device ($cd_device). Vous n'avez peut être pas les droits." exit 1 fi else cd_device="/dev/$cd_device" fi echo "mount -t iso9660 -o ro -o mode=0555 $cd_device $mount_point" echo "Le CD-ROM est monté correctement." else while :; do $ECHONL1"Indiquez à quel endroit le CD-ROM est monté: "$ECHONL2 read mount_point if [ -d "$mount_point/axeneoffice" ]; then break else echo "Ce n'est pas le bon point de montage ou ce n'est pas le bon CD-ROM." fi done if [ ! -x "$mount_point/axeneoffice/linux-2.0/axeneinstall" ]; then cat << EOF Vous n'avez pas monté le CD-ROM avec les bonnes options. Il faut utiliser l'option \`-o mode=0555' lors du mount. Vous pouvez démonter le CD, puis re-lancer ce script en choisissant l'option "Laisser le script monter le CD-ROM." EOF exit 1 else echo "Le CD-ROM est monté correctement." fi fi SkipLine src="$mount_point/axeneoffice" AskOneFromList "Quel système voulez-vous utiliser ? " 4 os \ "NetBSD 1.0" "FreeBSD 2.2" "Linux 1.2 (a.out)" "Linux 2.0 (elf)" \ "Linux 2.0+ (elf, optimisé Pentium et motif 2.0 dynamique)" if [ "$keygen" = "yes" ]; then case $os in 1) osdir="netbsd-1.0";; 2) osdir="freebsd-2.2";; 3) osdir="linux-1.2";; 4) osdir="linux-2.0";; 5) osdir="linux-2.0+";; esac cd $src/$osdir/packages echo "Lancement du programme d'installation." xinstall* -l French -k exit 1 fi while :; do echo "Pour corriger l'erreur, une image (faite de liens) doit être créée." echo "Où voulez-vous installer l'image corrigée du CD-ROM ?" $ECHONL1"[Défaut: $dst_default] "$ECHONL2 read dst if [ "v$dst" = "v" ]; then dst="$dst_default" fi if [ -d "$dst" ]; then if [ ! -w "$dst" ]; then echo "Le répertoire $dst existe déjà mais n'est pas accessible en écriture". else break fi else echo "Création du répertoire $dst." if ! mkdir -p $dst ; then echo "Impossible de créer le répertoire $dst." else break; fi fi done echo "Création de l'arborescence." mkdir -p $dst/Info-sheet cat << EOF > $tmpfile /commande /COMMANDE /evaluation /EVALUATION /info-sheet/infosheet.000 /Info-sheet/infosheet.french.xquad.ps /info-sheet/infosheet.001 /Info-sheet/infosheet.french.xmayday.ps /info-sheet/infosheet.002 /Info-sheet/infosheet.french.xclamation.ps /info-sheet/infosheet.french /Info-sheet/infosheet.french.xallwrite.ps /licence /LICENCE /lisezmoi /LISEZMOI EOF case $os in 1) mkdir -p $dst/NetBSD-1.0/Packages cat << EOF >> $tmpfile /netbsd-1.0/axeneinstall /NetBSD-1.0/AxeneInstall /netbsd-1.0/license /NetBSD-1.0/LICENSE /netbsd-1.0/packages/axeneoffice-v120.i386-netbsd-1 /NetBSD-1.0/Packages/AxeneOffice-v120.i386-netbsd-1.0.tar.gz /netbsd-1.0/packages/common.tar /NetBSD-1.0/Packages/common.tar.gz /netbsd-1.0/packages/doc.xallwrite-v10x /NetBSD-1.0/Packages/Doc.XAllWrite-v10x.french.tar.gz /netbsd-1.0/packages/doc.xclamation-v14x /NetBSD-1.0/Packages/Doc.Xclamation-v14x.french.tar.gz /netbsd-1.0/packages/doc.xmayday-v12x /NetBSD-1.0/Packages/Doc.XMayday-v12x.french.tar.gz /netbsd-1.0/packages/doc.xquad-v14x /NetBSD-1.0/Packages/Doc.XQuad-v14x.french.tar.gz /netbsd-1.0/packages/install.sh /NetBSD-1.0/Packages/install.sh /netbsd-1.0/packages/xallwrite-v103beta.i386-netbsd /NetBSD-1.0/Packages/XAllWrite-v103beta.i386-netbsd-1.0.tar.gz /netbsd-1.0/packages/xclamation-v143.i386-netbsd-1 /NetBSD-1.0/Packages/Xclamation-v143.i386-netbsd-1.0.tar.gz /netbsd-1.0/packages/xinstall-v112.i386-netbsd-1 /NetBSD-1.0/Packages/XInstall-v112.i386-netbsd-1.0 /netbsd-1.0/packages/xmayday-v123.i386-netbsd-1 /NetBSD-1.0/Packages/XMayday-v123.i386-netbsd-1.0.tar.gz /netbsd-1.0/packages/xquad-v143.i386-netbsd-1 /NetBSD-1.0/Packages/XQuad-v143.i386-netbsd-1.0.tar.gz EOF ;; 2) mkdir -p $dst/FreeBSD-2.2/Packages osdir="FreeBSD-2.2" cat << EOF >> $tmpfile /freebsd-2.2/axeneinstall /FreeBSD-2.2/AxeneInstall /freebsd-2.2/license /FreeBSD-2.2/LICENSE /freebsd-2.2/packages/axeneoffice-v120.i386-freebsd- /FreeBSD-2.2/Packages/AxeneOffice-v120.i386-freebsd-2.2.tar.gz /freebsd-2.2/packages/common.tar /FreeBSD-2.2/Packages/common.tar.gz /freebsd-2.2/packages/doc.xallwrite-v10x /FreeBSD-2.2/Packages/Doc.XAllWrite-v10x.french.tar.gz /freebsd-2.2/packages/doc.xclamation-v14x /FreeBSD-2.2/Packages/Doc.Xclamation-v14x.french.tar.gz /freebsd-2.2/packages/doc.xmayday-v12x /FreeBSD-2.2/Packages/Doc.XMayday-v12x.french.tar.gz /freebsd-2.2/packages/doc.xquad-v14x /FreeBSD-2.2/Packages/Doc.XQuad-v14x.french.tar.gz /freebsd-2.2/packages/install.sh /FreeBSD-2.2/Packages/install.sh /freebsd-2.2/packages/xallwrite-v103beta.i386-freebs /FreeBSD-2.2/Packages/XAllWrite-v103beta.i386-freebsd-2.2.tar.gz /freebsd-2.2/packages/xclamation-v143.i386-freebsd-2 /FreeBSD-2.2/Packages/Xclamation-v143.i386-freebsd-2.2.tar.gz /freebsd-2.2/packages/xinstall-v112.i386-freebsd-2 /FreeBSD-2.2/Packages/XInstall-v112.i386-freebsd-2.2 /freebsd-2.2/packages/xmayday-v123.i386-freebsd-2 /FreeBSD-2.2/Packages/XMayday-v123.i386-freebsd-2.2.tar.gz /freebsd-2.2/packages/xquad-v143.i386-freebsd-2 /FreeBSD-2.2/Packages/XQuad-v143.i386-freebsd-2.2.tar.gz EOF ;; 3) mkdir -p $dst/Linux-1.2/Packages osdir="Linux-1.2" cat << EOF >> $tmpfile /linux-1.2/axeneinstall /Linux-1.2/AxeneInstall /linux-1.2/license /Linux-1.2/LICENSE /linux-1.2/packages/axeneoffice-v120.i486-linux-1 /Linux-1.2/Packages/AxeneOffice-v120.i486-linux-1.2.tar.gz /linux-1.2/packages/common.tar /Linux-1.2/Packages/common.tar.gz /linux-1.2/packages/doc.xallwrite-v10x /Linux-1.2/Packages/Doc.XAllWrite-v10x.french.tar.gz /linux-1.2/packages/doc.xclamation-v14x /Linux-1.2/Packages/Doc.Xclamation-v14x.french.tar.gz /linux-1.2/packages/doc.xmayday-v12x /Linux-1.2/Packages/Doc.XMayday-v12x.french.tar.gz /linux-1.2/packages/doc.xquad-v14x /Linux-1.2/Packages/Doc.XQuad-v14x.french.tar.gz /linux-1.2/packages/install.sh /Linux-1.2/Packages/install.sh /linux-1.2/packages/xallwrite-v103beta.i486-linux- /Linux-1.2/Packages/XAllWrite-v103beta.i486-linux-1.2.tar.gz /linux-1.2/packages/xclamation-v143.i486-linux-1 /Linux-1.2/Packages/Xclamation-v143.i486-linux-1.2.tar.gz /linux-1.2/packages/xinstall-v112.i486-linux-1 /Linux-1.2/Packages/XInstall-v112.i486-linux-1.2 /linux-1.2/packages/xmayday-v123.i486-linux-1 /Linux-1.2/Packages/XMayday-v123.i486-linux-1.2.tar.gz /linux-1.2/packages/xquad-v143.i486-linux-1 /Linux-1.2/Packages/XQuad-v143.i486-linux-1.2.tar.gz EOF ;; 4) mkdir -p $dst/Linux-2.0/Packages osdir="Linux-2.0" cat << EOF >> $tmpfile /linux-2.0/axeneinstall /Linux-2.0/AxeneInstall /linux-2.0/license /Linux-2.0/LICENSE /linux-2.0/packages/axeneoffice-v120.i486-linux-2 /Linux-2.0/Packages/AxeneOffice-v120.i486-linux-2.0-elf.tar.gz /linux-2.0/packages/common.tar /Linux-2.0/Packages/common.tar.gz /linux-2.0/packages/doc.xallwrite-v10x /Linux-2.0/Packages/Doc.XAllWrite-v10x.french.tar.gz /linux-2.0/packages/doc.xclamation-v14x /Linux-2.0/Packages/Doc.Xclamation-v14x.french.tar.gz /linux-2.0/packages/doc.xmayday-v12x /Linux-2.0/Packages/Doc.XMayday-v12x.french.tar.gz /linux-2.0/packages/doc.xquad-v14x /Linux-2.0/Packages/Doc.XQuad-v14x.french.tar.gz /linux-2.0/packages/install.sh /Linux-2.0/Packages/install.sh /linux-2.0/packages/xallwrite-v103beta.i486-linux- /Linux-2.0/Packages/XAllWrite-v103beta.i486-linux-2.0-elf.tar.gz /linux-2.0/packages/xclamation-v143.i486-linux-2 /Linux-2.0/Packages/Xclamation-v143.i486-linux-2.0-elf.tar.gz /linux-2.0/packages/xinstall-v112.i486-linux-2 /Linux-2.0/Packages/XInstall-v112.i486-linux-2.0-elf /linux-2.0/packages/xmayday-v123.i486-linux-2 /Linux-2.0/Packages/XMayday-v123.i486-linux-2.0-elf.tar.gz /linux-2.0/packages/xquad-v143.i486-linux-2 /Linux-2.0/Packages/XQuad-v143.i486-linux-2.0-elf.tar.gz EOF ;; 5) mkdir -p $dst/Linux-2.0+/Packages osdir="Linux-2.0+" cat << EOF >> $tmpfile /linux-2.0+/axeneinstall /Linux-2.0+/AxeneInstall /linux-2.0+/license /Linux-2.0+/LICENSE /linux-2.0+/packages/axeneoffice-v120.i586-linux-2 /Linux-2.0+/Packages/AxeneOffice-v120.i586-linux-2.0-elf.tar.gz /linux-2.0+/packages/common.tar /Linux-2.0+/Packages/common.tar.gz /linux-2.0+/packages/doc.xallwrite-v10x /Linux-2.0+/Packages/Doc.XAllWrite-v10x.french.tar.gz /linux-2.0+/packages/doc.xclamation-v14x /Linux-2.0+/Packages/Doc.Xclamation-v14x.french.tar.gz /linux-2.0+/packages/doc.xmayday-v12x /Linux-2.0+/Packages/Doc.XMayday-v12x.french.tar.gz /linux-2.0+/packages/doc.xquad-v14x /Linux-2.0+/Packages/Doc.XQuad-v14x.french.tar.gz /linux-2.0+/packages/install.sh /Linux-2.0+/Packages/install.sh /linux-2.0+/packages/xallwrite-v103beta.i586-linux- /Linux-2.0+/Packages/XAllWrite-v103beta.i586-linux-2.0-elf.tar.gz /linux-2.0+/packages/xclamation-v143.i586-linux-2 /Linux-2.0+/Packages/Xclamation-v143.i586-linux-2.0-elf.tar.gz /linux-2.0+/packages/xinstall-v112.i586-linux-2 /Linux-2.0+/Packages/XInstall-v112.i586-linux-2.0-elf /linux-2.0+/packages/xmayday-v123.i586-linux-2 /Linux-2.0+/Packages/XMayday-v123.i586-linux-2.0-elf.tar.gz /linux-2.0+/packages/xquad-v143.i586-linux-2 /Linux-2.0+/Packages/XQuad-v143.i586-linux-2.0-elf.tar.gz EOF ;; esac echo "Création de l'image corrigée du CD." exec 5<$tmpfile while read linkfile <&5 ; do $ECHONL1"."$ECHONL2 GetArg link_src 1 $linkfile GetArg link_dst 2 $linkfile ln -sf $src$link_src $dst$link_dst done echo " terminé". exec 5<&- rm -f $tmpfile SkipLine AskYesNo "Voulez-vous lancer l'installation des logiciels Axene ? [o/n]" yesno if [ "$yesno" = "1" ]; then if [ "v$DISPLAY" != "v" ]; then $dst/$osdir/AxeneInstall else $dst/$osdir/AxeneInstall -i fi fi