File: bootcdflopcp

package info (click to toggle)
bootcd 6.9.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 520 kB
  • sloc: sh: 1,940; makefile: 49
file content (112 lines) | stat: -rwxr-xr-x 2,376 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/sh
#        file: /usr/bin/bootcdflopcp
#   copyright: Bernd Schumacher <bernd.schumacher@hpe.com> (2001-2020)
#     license: GNU General Public License, version 3
# description: bootcdflopcp - copy changes made after booting from bootcd to floppy

# do not use "set -e", because even a grep will fail, if all output is filtered
LANG=C

VERBOSE=""
FLOPPY=/dev/fd0

err()
{
  echo "ERROR: $1" >&2
  exit 1
}

while [ "$*" ]; do

  if [ "$1" = "-v" ]; then
    VERBOSE="-v"
    shift
  elif [ "$1" = "-d" ]; then
    FLOPPY=$2
    shift 2
  elif [ "$*" ]; then
    echo "Usage: bootcdflopcp [-v] [-d <device>]"
    echo "  use man bootcdflopcp to get help" >&2
    echo "  device can be another device instead of /dev/floppy" >&2
    exit 1
  fi

done

TMP=/tmp/flopcp$$
MNTP=/mnt/floppy

mkdir -p $MNTP || exit 1
mount $FLOPPY $MNTP || exit 1
trap "umount $MNTP; rmdir $MNTP; rm -f $TMP" 0

touch $MNTP/remove $MNTP/change $MNTP/ignore $MNTP/execute
chmod 755 $MNTP/execute

IGNORE=""
CHANGE=""
REMOVE=""

# Search all Files that differ
find /mnt/bootcd.upper/upper -type f| sed "s|/mnt/bootcd.upper/upper||" >$TMP

for f in `cat $TMP`; do
  if [ "`grep ^$f$ $MNTP/ignore`" ]; then
    IGNORE="$f $IGNORE"
    continue
  fi

  if [ -e "$f" ]; then
    if [ "`grep ^$f$ $MNTP/change`" ]; then
      CHANGE="$f $CHANGE"
      continue
    fi

    while :
    do
      echo -n "change $f (y/n) "
      read a
      # Next line handles EOF from a pipe as "n"
      [ $? -ne 0 ] && a="n"
      if [ "$a" = "y" ]; then
        echo $f >> $MNTP/change
        CHANGE="$f $CHANGE"
        break
      elif [ "$a" = "n" ]; then
        echo $f >> $MNTP/ignore
        IGNORE="$f $IGNORE"
        break
      fi
    done
  else
    if [ "`grep ^$f$ $MNTP/remove`" ]; then
      REMOVE="$f $REMOVE"
      continue
    fi
    while :
    do
      echo -n "remove $f (y/n) "
      read a
      # Next line handles EOF from a pipe as "n"
      [ $? -ne 0 ] && a="n"
      if [ "$a" = "y" ]; then
        echo $f >> $MNTP/remove
        REMOVE="$f $REMOVE"
        break
      elif [ "$a" = "n" ]; then
        echo $f >> $MNTP/ignore
        IGNORE="$f $IGNORE"
        break
      fi
    done
  fi
done

if [ "$VERBOSE" ]; then
  echo "Changing $CHANGE." >&2
  echo "Removing $REMOVE." >&2
  echo "Ignoring $IGNORE." >&2
fi

(cd /; tar cz -T $MNTP/change -f $MNTP/change.tgz)
exit 0