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 .

IEEE/The Open Group                                   2017                                           GET(1POSIX)