Provided by: manpages-posix_2017a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of
       this interface may differ (consult the corresponding Linux  manual  page  for  details  of
       Linux behavior), or the interface may not be implemented on Linux.

NAME

       get — get a version of an SCCS file (DEVELOPMENT)

SYNOPSIS

       get [-begkmnlLpst] [-c cutoff] [-i list] [-r SID] [-x list] file...

DESCRIPTION

       The  get  utility  shall  generate  a text file from each named SCCS file according to the
       specifications given by its options.

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

OPTIONS

       The  get  utility  shall  conform  to the Base Definitions volume of POSIX.1‐2017, Section
       12.2, Utility Syntax Guidelines.

       The following options shall be supported:

       -r SID    Indicate the SCCS Identification String (SID) of the version (delta) of an  SCCS
                 file  to  be retrieved. The table shows, for the most useful cases, what version
                 of an SCCS file is retrieved (as well as the SID of the version to be eventually
                 created  by  delta  if  the  -e  option  is also used), as a function of the SID
                 specified.

       -c cutoff Indicate the cutoff date-time, in the form:

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

                 For the YY component, values in the range [69,99] shall refer to years  1969  to
                 1999  inclusive,  and  values  in the range [00,68] shall refer to years 2000 to
                 2068 inclusive.

                 Note:     It is expected that in a future version of this standard  the  default
                           century inferred from a 2-digit year will change. (This would apply to
                           all commands accepting a 2-digit year as input.)

                 No changes (deltas) to the SCCS file  that  were  created  after  the  specified
                 cutoff  date-time  shall  be  included in the generated text file. Units omitted
                 from the date-time default to their maximum possible  values;  for  example,  -c
                 7502 is equivalent to -c 750228235959.

                 Any  number of non-numeric characters may separate the various 2-digit pieces of
                 the cutoff date-time. This feature allows the user to specify a cutoff  date  in
                 the form: -c "77/2/2 9:22:25".

       -e        Indicate  that  the get is for the purpose of editing or making a change (delta)
                 to the SCCS file via a subsequent use of delta.  The -e option used in a get for
                 a  particular  version (SID) of the SCCS file shall prevent further get commands
                 from editing on the same SID until delta is executed or the j (joint edit)  flag
                 is  set  in the SCCS file. Concurrent use of get -e for different SIDs is always
                 allowed.

                 If the g-file generated by get with a -e option is accidentally  ruined  in  the
                 process  of  editing, it may be regenerated 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 shall be enforced when the -e option is used.

       -b        Use  with  the  -e option to indicate that the new delta should have an SID in a
                 new branch as shown in the table below. This option shall be ignored  if  the  b
                 flag  is  not present in the file 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.

       -i list   Indicate 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 the table in the EXTENDED DESCRIPTION section, except that
                 the result of supplying a partial SID is unspecified. A diagnostic message shall
                 be written if the first SID in the range is not an ancestor of the second SID in
                 the range.

       -x list   Indicate  a  list  of  deltas  to  be excluded (forced not to be applied) in the
                 creation of the generated file. 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 shall be implied by the -e option.

       -l        Write a delta summary into an l-file.

       -L        Write  a  delta summary to standard output. All informative output that normally
                 is written to standard output shall be written to standard error instead, unless
                 the -s option is used, in which case it shall be suppressed.

       -p        Write  the  text  retrieved from the SCCS file to the standard output. No g-file
                 shall be created. All informative output that  normally  goes  to  the  standard
                 output  shall  go  to  standard  error instead, unless the -s option is used, in
                 which case it shall disappear.

       -s        Suppress all informative output normally written to standard  output.   However,
                 fatal error messages (which shall always be written to the standard error) shall
                 remain unaffected.

       -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 shall be:

                     "%s\t%s", <SID>, <text line>

       -n        Precede  each generated text line with the %M% identification keyword value (see
                 below). The format shall be:

                     "%s\t%s", <%M% value>, <text line>

                 When both the -m and -n options are used, the <text line> shall be  replaced  by
                 the -m option-generated format.

       -g        Suppress  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        Use to access the most recently created (top) delta  in  a  given  release  (for
                 example, -r 1), or release and level (for example, -r 1.2).

OPERANDS

       The following operands shall be supported:

       file      A  pathname of an existing SCCS file or a directory. If file is a directory, the
                 get utility shall behave as though each file in the directory were specified  as
                 a  named  file,  except that non-SCCS files (last component of the pathname does
                 not begin with s.)  and unreadable files shall be silently ignored.

                 If exactly one file operand appears, and it is '-', the standard input shall  be
                 read; each line of the standard input is taken to be the name of an SCCS file to
                 be processed. Non-SCCS files and unreadable files shall be silently ignored.

STDIN

       The standard input shall be a text file used only if the file operand is specified as '-'.
       Each line of the text file shall be interpreted as an SCCS pathname.

INPUT FILES

       The SCCS files shall be files of an unspecified format.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of get:

       LANG      Provide a default value for the internationalization variables that are unset or
                 null.  (See  the  Base  Definitions  volume  of   POSIX.1‐2017,   Section   8.2,
                 Internationalization   Variables  for  the  precedence  of  internationalization
                 variables used to determine the values of locale categories.)

       LC_ALL    If set to a non-empty string  value,  override  the  values  of  all  the  other
                 internationalization variables.

       LC_CTYPE  Determine  the  locale for the interpretation of sequences of bytes of text data
                 as characters (for example, single-byte as opposed to multi-byte  characters  in
                 arguments and input files).

       LC_MESSAGES
                 Determine  the  locale  that should be used to affect the format and contents of
                 diagnostic messages written to standard error, and informative messages  written
                 to standard output (or standard error, if the -p option is used).

       NLSPATH   Determine the location of message catalogs for the processing of LC_MESSAGES.

       TZ        Determine the timezone in which the times and dates written in the SCCS file are
                 evaluated. If the TZ variable is unset or NULL, an  unspecified  system  default
                 timezone is used.

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       For each file processed, get shall write to standard output the SID being accessed and the
       number of lines retrieved from the SCCS file, in the following format:

           "%s\n%d lines\n", <SID>, <number of lines>

       If the -e option is used, the SID of the delta to be  made  shall  appear  after  the  SID
       accessed and before the number of lines generated, in the POSIX locale:

           "%s\nnew delta %s\n%d lines\n", <SID accessed>,
               <SID to be made>, <number of lines>

       If  there  is  more than one named file or if a directory or standard input is named, each
       pathname shall be written before each of the lines shown in one of the preceding formats:

           "\n%s:\n", <pathname>

       If the -L option is used, a delta summary shall be written following the format  specified
       below for l-files.

       If  the  -i option is used, included deltas shall be listed following the notation, in the
       POSIX locale:

           "Included:\n"

       If the -x option is used, excluded deltas shall be listed following the notation,  in  the
       POSIX locale:

           "Excluded:\n"

       If  the  -p  or  -L  options  are specified, the standard output shall consist of the text
       retrieved from the SCCS file.

STDERR

       The standard error shall be used only for diagnostic messages, except  if  the  -p  or  -L
       options are specified, it shall include all informative messages normally sent to standard
       output.

OUTPUT FILES

       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-minus> is called the
       tag.  An auxiliary filename shall be formed from the SCCS filename: the application  shall
       ensure  that  the  last  component of all SCCS filenames is of the form s.module-name; the
       auxiliary files shall be named by replacing the leading s with the tag. The  g-file  shall
       be  an  exception  to  this  scheme:  the  g-file is named by removing the s.  prefix. For
       example, for s.xyz.c, the auxiliary  filenames  would  be  xyz.c,  l.xyz.c,  p.xyz.c,  and
       z.xyz.c, respectively.

       The  g-file,  which contains the generated text, shall be created in the current directory
       (unless the -p option is used). A g-file shall be created in all cases, whether or not any
       lines  of  text  were generated by the get.  It shall be owned by the real user. If the -k
       option is used or implied, the g-file shall be writable by the owner only  (read-only  for
       everyone  else);  otherwise,  it  shall  be  read-only. Only the real user need have write
       permission in the current directory.

       The l-file shall contain a table showing which  deltas  were  applied  in  generating  the
       retrieved  text.  The l-file shall be created in the current directory if the -l option is
       used; it shall be read-only and it is owned by the real user.  Only  the  real  user  need
       have write permission in the current directory.

       Lines in the l-file shall have the following format:

           "%c%c%c %s\t%s %s\n", <code1>, <code2>, <code3>,
               <SID>, <date-time>, <login>

       where the entries are:

       <code1>   A <space> if the delta was applied; '*' otherwise.

       <code2>   A  <space>  if  the delta was applied or was not applied and ignored; '*' if the
                 delta was not applied and was not ignored.

       <code3>   A character indicating a special reason why the delta was or was not applied:

                 I     Included.

                 X     Excluded.

                 C     Cut off (by a -c option).

       <date-time>
                 Date and time (using the format of the date  utility's  %y/%m/%d  %T  conversion
                 specification format) of creation.

       <login>   Login name of person who created delta.

       The  comments  and  MR data shall follow on subsequent lines, indented one <tab>.  A blank
       line shall terminate each entry.

       The p-file shall be used to pass information resulting from a get with a -e  option  along
       to delta.  Its contents shall also be used to prevent a subsequent execution of get with a
       -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 shall be created in the directory containing the SCCS file and
       the application shall ensure  that  the  effective  user  has  write  permission  in  that
       directory.  It shall be writable by owner only, and owned by the effective user. Each line
       in the p-file shall have the following format:

           "%s %s %s %s%s%s\n", <g-file SID>,
               <SID of new delta>, <login-name of real user>,
               <date-time>, <i-value>, <x-value>

       where <i‐value> uses the format "" if no -i  option  was  specified,  and  shall  use  the
       format:

           " -i%s", <-i option option-argument>

       if  a  -i  option  was  specified  and  <x‐value>  uses  the format "" if no -x option was
       specified, and shall use the format:

           " -x%s", <-x option option-argument>

       if a -x option was specified. There can be an arbitrary number of lines in the  p-file  at
       any time; no two lines shall have the same new delta SID.

       The  z-file shall serve as a lock-out mechanism against simultaneous updates. Its contents
       shall be the binary process ID of the command (that is, get) that created it.  The  z-file
       shall  be  created in the directory containing the SCCS file for the duration of get.  The
       same protection restrictions as those for the p-file shall apply for the z-file.   The  z-
       file shall be created read-only.

EXTENDED DESCRIPTION

             ┌────────────────────────────────────────────────────────────────────────────┐
             │                Determination of SCCS Identification String                 │
             ├────────────────────────────────────────────────────────────────────────────┤
             │  SID*      -b Keyletter          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 R does   hR.mL**     hR.mL.(mB+1).1 │
             │                           not exist                                        │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R                -         Trunk successor  in   R.mL        R.mL.(mB+1).1  │
             │                           release  >  R and R                              │
             │                           exists                                           │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R.L              no        No trunk successor    R.L         R.(L+1)        │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R.L             yes        No trunk successor    R.L         R.L.(mB+1).1   │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R.L              -         Trunk successor  in   R.L         R.L.(mB+1).1   │
             │                           release ≥ R                                      │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R.L.B            no        No branch successor   R.L.B.mS    R.L.B.(mS+1)   │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R.L.B           yes        No branch successor   R.L.B.mS    R.L.(mB+1).1   │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R.L.B.S          no        No branch successor   R.L.B.S     R.L.B.(S+1)    │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R.L.B.S         yes        No branch successor   R.L.B.S     R.L.(mB+1).1   │
             ├────────────────────────────────────────────────────────────────────────────┤
             │R.L.B.S          -         Branch successor      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 (that is, 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 shall 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.

       †       The  -b option is effective only if the b flag 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.

   System Date and Time
       When a g-file is generated, the creation time of deltas in the SCCS file may be taken into
       account. If any of these times are apparently in the future, the behavior is unspecified.

   Identification Keywords
       Identifying information shall be 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:

       %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% or %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.

       %F%       SCCS filename.

       %P%       SCCS absolute pathname.

       %Q%       The value of the q flag in the file.

       %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 four-character string "@(#)" recognizable by what.

       %W%       A shorthand notation for constructing what strings:

                     %W%=%Z%%M%<tab>%I%

       %A%       Another shorthand notation for constructing what strings:

                     %A%=%Z%%Y%%M%%I%%Z%

EXIT STATUS

       The following exit values shall be returned:

        0    Successful completion.

       >0    An error occurred.

CONSEQUENCES OF ERRORS

       Default.

       The following sections are informative.

APPLICATION USAGE

       Problems  can  arise  if  the  system  date  and time have been modified (for example, put
       forward and then back again, or unsynchronized clocks across a network) and can also arise
       when different values of the TZ environment variable are used.

       Problems  of a similar nature can also arise for the operation of the delta utility, which
       compares the previous file body against the working file as part of its normal operation.

EXAMPLES

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       admin, delta, prs, what

       The Base Definitions volume of POSIX.1‐2017, Chapter  8,  Environment  Variables,  Section
       12.2, Utility Syntax Guidelines

COPYRIGHT

       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1-2017, Standard for Information Technology -- Portable  Operating  System  Interface
       (POSIX),  The  Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by
       the Institute of Electrical and Electronics Engineers, Inc and The  Open  Group.   In  the
       event  of  any  discrepancy  between this version and the original IEEE and The Open Group
       Standard, the original IEEE and The Open Group  Standard  is  the  referee  document.  The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

       Any  typographical  or  formatting errors that appear in this page are most likely to have
       been introduced during the conversion of the source files to man page  format.  To  report
       such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .