next | next | up | down | Inhalt | Uebungen | Complete | Kommentar

all, section 8.1.

8.1.  Archivierung mit sccs

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      }


back | next | up | down | Inhalt | Uebungen | Complete | Kommentar


Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).

Last modified 03/July/97