val - validate SCCS files (DEVELOPMENT)
val - val [-s][-m name][-r SID][-y type] file...
The val utility determines if the specified file is an SCCS file meeting the characteristics specified by the options.
The val utility supports the XBD specification, Utility Syntax Guidelines , except that the usage of the - operand is not strictly as intended by the guidelines (that is, reading options and operands from standard input). The following options are supported:
- -m name
- Specify a name, which is compared with the SCCS %M% keyword in file. (See get).
- -r SID
- Specify a SID (SCCS Identification String), an SCCS delta number. A check is made to determine if the SID is ambiguous (for example, -r1 is ambiguous because it physically does not exist but implies 1.1, 1.2, and so on, which may exist) or invalid (for example, -r1.0 or -r1.1.0 are invalid because neither case can exist as a valid delta number). If the SID is valid and not ambiguous, a check is made to determine if it actually exists.
- Silence the diagnostic message normally written to standard output for any error that is detected while processing each named file on a given command line.
- -y type
- Specify a type, which is compared with the SCCS %Y% keyword in file. (See get).
The following operands are supported:
- A pathname of an existing SCCS file. If a single instance file is specified as -, and if no options are specified, the standard input is read: each line is independently processed as if it were a command-line argument list. (However, the line is not subjected to any of the shell word expansions, such as parameter expansion or quote removal.)
The standard input is a text file used only when the file operand is specified as -.
Any SCCS files processed are files of an unspecified format.
The following environment variables affect the execution of val:
- Provide a default value for the internationalisation variables that are unset or null. If LANG is unset or null, the corresponding value from the implementation-dependent default locale will be used. If any of the internationalisation variables contains an invalid setting, the utility will behave as if none of the variables had been defined.
- If set to a non-empty string value, override the values of all the other internationalisation variables.
- Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single- as opposed to multi-byte characters in arguments and input files).
- 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.
- Determine the location of message catalogues for the processing of LC_MESSAGES .
The standard output consists of informative messages about either: (1) each file processed, or; (2) each command line read from standard input.
If the standard input is not used, for each file operand yielding a discrepancy, the output line has the following format:
" %s: %s\n", <pathname>, <unspecified string>
If standard input is used, a line of input is written before each of the preceding lines for files containing discrepancies:
"%s:\n", <input line>
The 8-bit code returned by val is a disjunction of the possible errors, that is, it can be interpreted as a bit string where set bits are interpreted as follows:
0x80 = Missing file argument. 0x40 = Unknown or duplicate option. 0x20 = Corrupted SCCS file. 0x10 = Cannot open file or file not SCCS. 0x08 = SID is invalid or ambiguous. 0x04 = SID does not exist. 0x02 = %Y%, -y mismatch. 0x01 = %M%, -m mismatch.
Note that val can process two or more files on a given command line and can process multiple command lines (when reading the standard input). In these cases an aggregate code is returned: a logical OR of the codes generated for each command line and file processed.
Since the val exit status sets the 0x80 bit, shell applications checking $? cannot tell if it terminated due to a missing file argument or receipt of a signal.
In a directory with three SCCS files, s.x (of t type "text"), s.y and s.z (a corrupted file), the following command could produce the output shown:
val - <<EOF -y source s.x -m y s.y s.z EOF -y source s.x s.x: %Y%, -y mismatch s.z s.z: corrupted SCCS file
admin, delta, get, prs.