|
|
Archivierung von Daten und Schutz vor gleichzeitig schreibendem Zugriff.
1 #!/bin/sh
2 #
3 # Eine Datei wird unter der Kontrolle von sccs verwaltet.
4 # Die Dateien finden sich unter
5 # ~umail/SCCS/`cat ~umail/SCCS/sub_dir`.
6 # ~umail/SCCS/sub_dir hat die als Inhalt eine Zeile
7 # der Form: 3.93.
8 #
9 # Kommandos:
10 # u_in: Bringt eine Datei unter Kontrolle von u_* (sccs)
11 # u_edit Man erhaelt eine Datei zum edieren
12 # u_get Man erhaelt eine Datei zum angucken
13 # u_info Man erhaelt Information ueber eine edierte Datei
14 # u_ls ls ueber alle mit u_* verwalteten Dateien
15 #
16 # Mon May 3 15:55:01 MET DST 1993, hp
17
18 . /home/umail/bin/shell_lib.a
19 USAGE="`basename $0`: `basename $0` file"
20
21 FILE= # einzupackende Datei
22 TARGET_DIR=$SCCS/`cat $SCCS_SUBDIR`
23 SAVE_DIR=$SCCS/`cat $SCCS_SUBDIR`/Save
24
25 case "`arch`"
26 in sun4)
27 ;; * ) fatal "rlogin to a sun4-architecture. Thanks"
28 esac
29
30 case "`basename $0`"
31 in "u_info")
32 ;; "u_ls")
33
34 ;; *) case $#
35 in 1) FILE="$1"
36 ;; *) fatal "$USAGE"
37 esac
38 esac
39
40
41 sccs_test_dir "$SCCS" # exist SCCS dir
42 sccs_test_file "$SCCS_SUBDIR" # current number
43 sccs_test_dir "$TARGET_DIR" # exist SCCS dir
44 #sccs_test_dir "$SAVE_DIR" # exist SAVE_DIR
45
46 case "`basename $0`"
47 in "u_in")
48 if [ ! -f $FILE ] # back with delta
49 then
50 fatal "$FILE didn't exist."
51 fi
52 if [ ! -r $FILE ] # back with delta
53 then
54 fatal "$FILE is read protected"
55 fi
56
57 if [ -f $TARGET_DIR/s.$FILE ] # back with delta
58 then
59 WORK=delta
60 else
61 WORK=create
62 echo "$FILE is new."
63 fi
64 cp $FILE $SAVE_DIR/$FILE.`date '+%y.%m.%d.%H.%M.%S'`
65 ;; "u_get")
66 WORK="get -k"
67 ;; "u_edit")
68 WORK=edit
69 ;; "u_info")
70 WORK=info
71 FILE=""
72 ;; "u_ls")
73 ( cd "$TARGET_DIR" && ls |
74 sed 's/^[sp]\.//' | sort -u )
75 exit 0
76 esac
77
78 {
79 sccs -p "$TARGET_DIR" $WORK $FILE << EOF
80 EOF
81 case "$WORK" # clean up
82 in "create"|"delta") if [ $? -eq 0 ]
83 then
84 rm -f ,$FILE $FILE
85 else
86 echo "Something failed."
87 fi
88 esac
89 } 2>&1 | fgrep -v "No id keywords"
90
shell_lib.a:
1 #!/bin/sh
2 #
3 # Shell_lib.a
4 #
5 # Variable:
6 #
7 PATH=:/usr/etc:/usr/local/bin:/etc:$PATH
8 PATH=/usr/bin:/home/umail/bin:$PATH
9 HOME=/home/umail
10 export HOME
11 SCCS=$HOME/SCCS
12 SCCS_SUBDIR=$HOME/SCCS/sub_dir
13
14 #
15 # Functions:
16 #
17 fatal() # message
18 { echo >&2 `basename $0`: "$@"
19 exit 1
20 }
21
22 test_and_create_dir() # dir
23 { if /usr/bin/test ! -d $1
24 then
25 echo "Warning: $1 not exists."
26 mkdir $1
27 chmod 770 $1
28 chmod g+s $1
29 fi
30 }
31
32 sccs_test_dir() # dir
33 { if /usr/bin/test ! -d $1
34 then
35 echo "Warning: $1 not exists."
36 mkdir $1
37 chmod 770 $1
38 chmod g+s $1
39 fi
40 if /usr/bin/test ! -w $1 # write protected?
41 then
42 fatal "$1 is write protexted. Call for help"
43 fi
44
45 }
46
47 sccs_test_file() # dir
48 { if /usr/bin/test ! -f $1 # current version
49 then
50 fatal "$1 didn't exist. Call for help"
51 fi
52 if /usr/bin/test ! -r $1 # read protected
53 then
54 fatal "$1 is read protected. Call for help"
55 fi
56 }
|
|
Last modified 03/July/97