Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

admin(1)

delta(1)

help(1)

prs(1)

sccs(1)

what(1)

sccsfile(4)

GET(1)                               BSD                                GET(1)



NAME
     get - get a version of an SCCS file

SYNOPSIS
     get [ options ] file

DESCRIPTION
     The get command generates an ASCII text file from each named SCCS file
     according to the options that you specify in the command line.  These
     options may appear in any order, but they apply to all named SCCS files.
     If you supply a directory name, get behaves as though each file in the
     directory is specified as a named file, except that it silently ignores
     non-SCCS and unreadable files.  If you specify a dash (-) for the name of
     file, get reads the standard input, taking each line to be the name of an
     SCCS file to be processed.

     The generated text is normally written into a file called the g-file,
     whose name is derived from the SCCS filename by removing the "s." prefix.

     For each file processed, get responds (on the standard output) with the
     SID being accessed and with the number of lines retrieved from the SCCS
     file.

OPTIONS
     Each of the options is explained as though only one SCCS file is to be
     processed, but the effects of any option apply independently to each
     named file.

     -rSID     Specify the SCCS IDentification string (SID) of the version
               (delta) of an SCCS file to be retrieved.  See Table 1 to
               determine what version of an SCCS file is retrieved as a
               function of the SID specified.

     -ccutoff  Indicate cutoff date-time in this format:

                    YY[MM[DD[HH[MM[SS]]]]]

               Include in the ASCII text file only deltas to the SCCS that
               were produced up to the specified cutoff date-time.  Units
               omitted from the date-time value default to their maximum
               possible values; that is, -c7502 is equivalent to
               -c750228235959.  Any number of non-numeric characters may
               separate the various two-digit pieces of the cutoff date-time.
               Thus, you can specify a cutoff date in the following format:

               -c77/2/2 9:22:25.

               You can use the %E% and %U% identification keywords for nested
               executions of get within the command line input, as in this
               example:

                    ~!get -c%E%  %U% s.file

     -e        Edit or make a change (delta) to the SCCS file via a subsequent
               use of delta(1).  The SID of the delta to be made appears after
               the SID accessed, and before the number of lines generated.  If
               you have more than one named file, or if you specify a
               directory or standard input, get prints each filename (preceded
               by a newline) before processing it.  For a particular version
               SID of the SCCS file, using this option prevents further
               executions of get for editing on the same SID until delta(1) is
               executed or the j (joint edit) flag is set in the SCCS file.
               Concurrent use of this option for different SIDs is always
               allowed.

               If the g-file generated by get with an -e option is
               accidentally ruined in the process of editing it, you can
               generate it by re-executing the get command with the -k option
               in place of the -e option.

               SCCS file protection specified via the ceiling, floor, and
               authorized user list stored in the SCCS file is enforced when
               the -e option is used.  See admin(1) for more information.

     -b        Provide the new delta with an SID in a new branch as shown in
               Table 1.  This option only works when it is used with the -e
               option, the b flag is present in the named file, and the
               retrieved delta is a leaf delta (one that has no successors on
               the SCCS file tree).  A branch delta may always be created from
               a non-leaf delta.  Refer to admin(1) for further details.

     -ilist    Specify a list of deltas to be included (forced to be applied)
               in the creation of the generated file.  The list has the
               following syntax:

                    <list> ::= <range> | <list> , <range>
                    <range> ::= SID | SID - SID

               SID, the SCCS IDentification of a delta, may be in any form
               shown in the "SID Specified" column of Table 1.  Partial SIDs
               are interpreted as shown in the "SID Retrieved" column of Table
               1.  Included deltas are identified on the list by the the
               notation "Included".

     -xlist    Specify a list of deltas to be excluded (forced not to be
               applied) in the creation of the generated file.  Excluded
               deltas are listed following the notation "Excluded".  See the
               -i option for the list format.

     -k        Suppress replacement of identification keywords (see below) in
               the retrieved text by their value.  The -k option is implied by
               the -e option.

     -l[p]     Write a delta summary into an l-file.  If -lp is used, do not
               create an l-file.  Instead, write the delta summary on the
               standard output.  See the FILES section for the format of the
               l-file.

     -p        Write the text retrieved from the SCCS file on the standard
               output.  Do not create a g-file.  Send all output that normally
               goes to the standard output to file descriptor 2 instead,
               unless the -s option is used, in which case remove the output.

     -s        Suppress all output normally written on the standard output.
               However, do not alter fatal error messages, which always go to
               file descriptor 2.

     -m        Precede each text line retrieved from the SCCS file by the SID
               of the delta that inserted the text line in the SCCS file.  The
               format is as follows:  SID, followed by a horizontal tab,
               followed by the text line.

     -n        Precede each generated text line with the %M% identification
               keyword value (see below).  The format is as follows:  %M%
               value, followed by a horizontal tab, followed by the text line.
               When both the -m and -n options are used, the format is:  %M%
               value, followed by a horizontal tab, followed by the -m option
               generated format.

     -g        Suppress the actual retrieval of text from the SCCS file.  Used
               primarily to generate an l-file or to verify the existence of a
               particular SID.

     -t        Access the most recently created ("top") delta in a given
               release (e.g., -r1), or release and level (e.g., -r1.2).

     -wstring  Substitute string for all occurrences of "%W% of %G%" when
               executing a get on the named file.

     -aseq-no  Specify the delta sequence number of the SCCS file delta
               (version) to be retrieved.  See sccsfile(4) for further
               details.  This option is used by the comb(1) command; it is not
               a particularly useful option.  If both the -r and -a options
               are specified, the -a option is used.  Be careful when using
               the -a option in conjunction with the -e option, as the SID of
               the delta to be created may not be the one that you had
               expected.  The -r option can be used with the -a and -e options
               to control the naming of the SID of the delta to be created.

                   Determination of SCCS Identification String
         ________________________________________________________________
           SID*    -b Keyletter      Other          SID     SID of Delta
         _________________-______________________________________________
         none‡          no      R defaults to mR mR.mL     mR.(mL+1)
         ________________________________________________________________
         ____=___________________________________________________________
         R              no      R > mR           mR.mL     R.1***
         ________________________________________________________________
         R______________no______R_=_mR___________mR.mL_____mR.(mL+1)_____
         R             yes      R > mR           mR.mL     mR.mL.(mB+1).1
         ________________________________________________________________
         R_____________yes______R_=_mR___________mR.mL_____mR.mL.(mB+1).1
                                R < mR and
         R              -       R does not exist hR.mL**   hR.mL.(mB+1).1
         ________________________________________________________________
                                Trunk succ.#
         R              -       in release > R   R.mL      R.mL.(mB+1).1
         ________________________________________________________________
         R.L            no      No trunk succ.   R.L       R.(L+1)
         ________________________________________________________________
         R.L___________yes______No_trunk_succ.___R.L_______R.L.(mB+1).1__
                                Trunk succ.
         R.L            -       in release > R   R.L       R.L.(mB+1).1
         ________________________________________________________________
         R.L.B__________no______No_branch_succ.__R.L.B.mS__R.L.B.(mS+1)__
         R.L.B         yes      No branch succ.  R.L.B.mS  R.L.(mB+1).1
         ________________________________________________________________
         R.L.B.S________no______No_branch_succ.__R.L.B.S___R.L.B.(S+1)___
         R.L.B.S       yes      No branch succ.  R.L.B.S   R.L.(mB+1).1
         ________________________________________________________________
         ________________________________________________________________

     *         R, L, B, and S are the release, level, branch, and sequence
               components of the SID, respectively; m means maximum.  For
               example, "R.mL" means the maximum level number within release
               R; "R.L.(mB+1).1" means the first sequence number on the new
               branch (i.e., maximum branch number plus one) of level L within
               release R.  If the SID specified is of the form "R.L", "R.L.B",
               or "R.L.B.S", each of the specified components must exist.

     **        An hR is the highest existing release that is lower than the
               specified, nonexistent, release R.

     ***       This is used to force creation of the first delta in a new
               release.

     #         Successor.

     †         The -b option is effective only if the b flag is present in the
               file.  See admin(1) for further information.  A dash by itself
               (-) means irrelevant.

     ‡         This case applies if the d (default SID) flag is not present in
               the file.  If the d flag is present in the file, then the SID
               obtained from the d flag is interpreted as if it had been
               specified on the command line.  Thus, one of the other cases in
               this table applies.

IDENTIFICATION KEYWORDS
     Identifying information is inserted into the text retrieved from the SCCS
     file by replacing identification keywords with their value wherever they
     occur.  The following keywords may be used in the text stored in an SCCS
     file:

     Keyword   Value
     %M%       Module name:  either the value of the m flag in the file, or if
               absent, the name of the SCCS file with the leading s. removed.
     %I%       SCCS Identification (SID) (%R%.%L%.%B%.%S%) of the retrieved
               text.
     %R%       Release.
     %L%       Level.
     %B%       Branch.
     %S%       Sequence.
     %D%       Current date (YY/MM/DD).
     %H%       Current date (MM/DD/YY).
     %T%       Current time (HH:MM:SS).
     %E%       Date newest applied delta was created (YY/MM/DD).
     %G%       Date newest applied delta was created (MM/DD/YY).
     %U%       Time newest applied delta was created (HH:MM:SS).
     %Y%       Module type:  value of the t flag in the SCCS file.  See
               admin(1).
     %F%       SCCS filename.
     %P%       Fully-qualified SCCS filename.
     %Q%       The value of the q flag in the file.  See admin(1).
     %C%       Current line number.  This keyword is meant to identify program
               output messages such as "this should not have happened" when an
               error occurs.  It should not be used on every line to provide
               sequence numbers.
     %Z%       The four-character string @(#) recognizable by what(1).
     %W%       A shorthand notation for constructing what(1) strings for UNIX
               system program files.  The format is:
               %W%~=~%Z%%M%<horizontal-tab>%I%

     %A%       Another shorthand notation for constructing what(1) strings for
               non-UNIX system program files.  The format is:
               %A%~=~%Z%%Y%~%M%~%I%%Z%

FILES
     get may create several auxiliary files.  These files are known
     generically as the g-file, l-file, p-file, and z-file.  The letter before
     the hyphen is called the tag.  An auxiliary filename is formed from the
     SCCS filename.  The last component of all SCCS filenames must have the
     form s.module-name.  The auxiliary files are named by replacing the
     leading s with the tag.  The g-file is an exception to this scheme:  the
     g-file is named by removing the s. prefix.  For example, the auxiliary
     file names of s.xyz.c are xyz.c, l.xyz.c, p.xyz.c, and z.xyz.c,
     respectively.

     The g-file, which contains the generated text, is created in the current
     directory (unless the -p option is used).  A g-file is created in all
     cases, whether or not any lines of text were generated by the get.  It is
     owned by the real user.  If the -k option is used or implied its mode is
     644; otherwise, its mode is 444.  Only the real user needs write
     permission in the current directory.

     The l-file contains a table showing which deltas were applied in
     generating the retrieved text.  The l-file is created in the current
     directory if the -l option is used; its mode is 444 and it is owned by
     the real user.  Only the real user needs write permission in the current
     directory.

     Lines in the l-file have the following format:

          a.   A blank character if the delta was applied; * otherwise.
          b.   A blank character if the delta was applied or was not applied
               and ignored; * if the delta was not applied and was not
               ignored.
          c.   A code indicating a special reason why the delta was or was not
               applied.  The codes are:
                    I: Included.
                    X: Excluded.
                    C: Cut off (by a -c option).
          d.   Blank.
          e.   SCCS identification (SID).
          f.   Tab character.
          g.   Date and time (in the form YY/MM/DD~HH:MM:SS) of creation.
          h.   Blank.
          i.   Log-in name of the person who created the delta.

          The comments and MR data follow on subsequent lines, indented one
          horizontal tab character.  A blank line terminates each entry.

     The p-file passes information resulting from a get with an -e option
     along to delta.  Its contents are also used to prevent a subsequent
     execution of get with an -e option for the same SID until delta is
     executed or the joint edit flag, j, is set in the SCCS file.  The p-file
     is created in the directory containing the SCCS file.  The effective user
     must have write permission in that directory.  Its mode is 644 and it is
     owned by the effective user.  The format of the p-file is:  the gotten
     SID, followed by a blank, followed by the SID that the new delta will
     have when it is made, followed by a blank, followed by the log-in name of
     the real user, followed by a blank, followed by the date-time the get was
     executed, followed by a blank and the -i option if it was present,
     followed by a blank and the -x option if it was present, followed by a
     new-line.  There can be an arbitrary number of lines in the p-file at any
     time; no two lines can have the same new delta SID.

     The z-file serves as a lock-out mechanism against simultaneous updates.
     Its contents are the binary (two bytes) process ID of the command (i.e.,
     get) that created it.  The z-file is created in the directory containing
     the SCCS file for the duration of get.  The same protection restrictions
     as those for the p-file apply for the z-file.  The z-file is created with
     mode 444.

BUGS
     If the effective user has write permission (either explicitly or
     implicitly) in the directory containing the SCCS files, but the real user
     does not, then only one file may be named when the -e option is used.

DIAGNOSTICS
     Use help(1) for explanations.

SEE ALSO
     admin(1), delta(1), help(1), prs(1), sccs(1), what(1), sccsfile(4)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026