Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ get(CP) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

admin(CP)

delta(CP)

prs(CP)

what(CP)


 get(CP)                        6 January 1993                        get(CP)


 Name

    get - get a version of an SCCS file

 Syntax

    get [-rSID] [-ccutoff] [-ilist] [-xlist] [-wstring] [-aseq-no.] [-k] [-e]
    [-l[p]] [-p] [-m] [-n] [-s] [-b] [-g] [-t] file...

 Description

    The get command generates an ASCII text file from each named SCCS file
    according to the specifications given by its arguments.  The arguments
    may be specified in any order, but all arguments apply to all named SCCS
    files.  If a directory is named, get behaves as though each file in the
    directory were specified as a named file, except that non-SCCS files and
    unreadable files are silently ignored.  If a name of - is given, the
    standard input is read; each line of the standard input is taken to be
    the name of an SCCS file to be processed.  Again, non-SCCS files and
    unreadable files are silently ignored.

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

    Each of the arguments is explained below as though only one SCCS file is
    to be processed, but the effects of any argument applies independently to
    each named file.

    -rSID      The SCCS identification string (SID) of the version (delta) of
               an SCCS file to be retrieved.  Table 1 shows what version of
               an SCCS file is retrieved as a function of the SID specified.
               Also the PID of the version to be eventually created by
               delta(CP) if the -e option is used.

    -ccutoff   The cutoff date and time, in the form:

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

               No changes (deltas) to the SCCS file which were created after
               the specified cutoff date-time are included in the generated
               ASCII text file.  Units omitted from the date-time default to
               their maximum possible values; that is, -c7502 is equivalent
               to -c750228235959.  Any number of non-numeric characters may
               separate the various 2-digit pieces of the cutoff date-time.
               This feature allows you to specify a cutoff date in the form:
               "-c77/2/2 9:22:25".  Note that this implies that you may use
               the %E% and %U% identification keywords (see below) for nested
               gets.

                       get  "-c%E%  %U%"  s.file

    -ilist     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.

    -xlist     A list of deltas to be excluded in the creation of the gen-
               erated file.  See the -i option for the list format.

    -e         Indicates that the get is for the purpose of editing or making
               a change (delta) to the SCCS file via a subsequent use of
               delta(CP).  The -e option used in a get for a particular ver-
               sion (SID) of the SCCS file prevents further gets for editing
               on the same SID until delta is executed or the j (joint edit)
               flag is set in the SCCS file (see admin(CP)).  Concurrent use
               of get -e for different SIDs is always allowed.

               If the g-file generated by get with an -e option is acciden-
               tally ruined in the process of editing it, it may be regen-
               erated 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 (see admin(CP))
               is enforced when the -e option is used.

    -b         Used with the -e option to indicate that the new delta should
               have an SID in a new branch as shown in Table 1.  This option
               is ignored if the b flag is not present in the file (see
               admin(CP)) or if the retrieved delta is not a leaf delta.  (A
               leaf delta is one that has no successors on the SCCS file
               tree.)

               Note: A branch delta may always be created from a non-leaf
               delta.  Partial SIDs are interpreted as shown in the ``SID
               Retrieved'' column of Table 1.

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

    -l[p]      Causes a delta summary to be written into an l-file.  If -lp
               is used, then an l-file is not created; the delta summary is
               written on standard output instead.

    -p         Causes the text retrieved from the SCCS file to be written on
               standard output.  No g-file is created.  All output which nor-
               mally goes to the standard output goes to file descriptor 2
               instead, unless the -s option is used, in which case it disap-
               pears.

    -s         Suppresses all output normally written on the standard output.
               However, fatal error messages (which always go to file
               descriptor 2) remain unaffected.

    -m         Causes each text line retrieved from the SCCS file to be pre-
               ceded by the SID of the delta that inserted the text line in
               the SCCS file.  The format is: SID, followed by a horizontal
               tab, followed by the text line.

    -n         Causes each generated text line to be preceded with the %M%
               identification keyword value (see below).  The format is: %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         Suppresses the actual retrieval of text from the SCCS file.
               It is primarily used to generate an l-file, or to verify the
               existence of a particular SID.

    -t         Used to access the most recently created delta in a given
               release (for example, -r1), or release and level (for example,
               -r1.2).

    -w string  Substitute string for all occurrences of %W% when getting the
               file.

    -aseq-no.  The delta sequence number of the SCCS file delta (version) to
               be retrieved (see sccsfile(FP)).  This option is used by the
               comb(CP) command; it is not a generally useful option.  If
               both the -r and -a options are specified, only the -a option
               is used.  Care should be taken when using the -a option in
               conjunction with the -e option, as the SID of the delta to be
               created may not be what you expect.  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.

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

    If the -e option is used, the SID of the delta to be made appears after
    the SID accessed and before the number of lines generated.  If there is
    more than one named file or if a directory or standard input is named,
    each file name is printed (preceded by a new-line) before it is pro-
    cessed.  If the -i option is used, included deltas are listed following
    the notation ``Included''; if the -x option is used, excluded deltas are
    listed following the notation ``Excluded''.

              TABLE 1. Determination of SCCS Identification String

      SID*       -b Option         Other             SID        SID of Delta
    Specified     Used[+]        Conditions       Retrieved    to be Created
    _________________________________________________________________________
    none[++]        no        R defaults to mR    mR.mL        mR.(mL+1)
    none[++]        yes       R defaults to mR    mR.mL        mR.mL.(mB+1).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                -        R < mR and          hR.mL**      hR.mL.(mB+1).1
                              R does not exist
    R                -        Trunk succ.#        R.mL         R.mL.(mB+1).1
                              in release > R


                              and R exists
    _________________________________________________________________________
    R.L             no        No trunk succ.      R.L          R.(L+1)
    R.L             yes       No trunk succ.      R.L          R.L.(mB+1).1
    R.L              -        Trunk succ.         R.L          R.L.(mB+1).1
                              in release >= R
    _________________________________________________________________________
    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.S          -        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''.  Thus, 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 (for example, maximum
          branch number plus one) of level L within release R''.  Note that
          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.

    **    ``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 (see admin(CP)) is
          present in the file.  An entry of - 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 (see
              admin(CP)), 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(CP)).

    %F%       SCCS file name.

    %P%       Fully qualified SCCS file name.

    %Q%       The value of the q flag in the file (see admin(CP)).

    %C%       Current line number.  This keyword is intended for identifying
              messages output by the program such as ``this should not have
              happened'' type errors.  It is not intended to be used on every
              line to provide sequence numbers.

    %Z%       The 4-character string @(#) recognizable by what(CP).

    %W%       A shorthand notation for constructing what(CP) strings for sys-
              tem program files.  %W% = %Z%%M%<horizontal-tab>%I%

    %A%       Another shorthand notation for constructing what(CP) strings
              for non-UNIX-type system program files.
              %A% = %Z%%Y% %M% %I%%Z%

    Several auxiliary files may be created by get.  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 file name is formed from the
    SCCS file name: the last component of all SCCS file names must be of the
    form s.module-name; the auxiliary files are named by replacing the lead-
    ing 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, s.xyz.c, the
    auxiliary file names would be 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 permis-
    sion in the current directory.

    The l-file contains a table showing which deltas were applied in generat-
    ing 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 direc-
    tory.

    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:
          ``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. Login name of person who created delta.

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

    The p-file is used to pass information resulting from a get with a -e
    option along to delta.  Its contents are also used to prevent a subse-
    quent execution of get with a -e option for the same SID until delta is
    executed or the joint edit flag, j, (see admin(CP)) is set in the SCCS
    file.  The p-file is created in the directory containing the SCCS file
    and 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 login 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
    argument if it was present, followed by a blank and the -x option argu-
    ment if it was present, followed by a new-line.  There can be an arbi-
    trary 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 (2 bytes) process ID of the command (for
    example, 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.

 Files


    g-file           Existed before the execution of delta; removed after
                     completion of delta.

    p-file           Existed before the execution of delta; may exist after
                     completion of delta.
    q-file           Created during the execution of delta; removed after
                     completion of delta.

    x-file           Created during the execution of delta; renamed to SCCS
                     file after completion of delta.

    z-file           Created during the execution of delta; removed during
                     the execution of delta.

    d-file           Created during the execution of delta; removed after
                     completion of delta.

    /usr/bin/bdiff   Program to compute differences between the ``gotten''
                     file and the g-file.

 Notes

    If the effective user has write permission (either explicitly or impli-
    citly) 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.

 See also

    admin(CP), delta(CP), prs(CP), what(CP)

 Standards conformance

    get is conformant with:
    AT&T SVID Issue 2;
    and X/Open Portability Guide, Issue 3, 1989.


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