NAME
vc — substitutes assigned values in place of identification keywords.
SYNOPSIS
vc
[-a]
[-t]
[-c
char]
[-s]
[keyword=value ... keyword=value]
DESCRIPTION
The
vc,
or
version control
command
copies lines from the standard input to the standard output
under control of command line
arguments
and
control statements
encountered in the standard input.
In the process of performing the copy operation, user declared
keywords
can be replaced by their string
value
when they appear in plain text and/or control statements.
The copying of lines from the standard input to the standard output
is conditional, based on tests
of keyword values specified in control statements or on
vc
command arguments.
Replacement of keywords by values is done whenever a keyword
surrounded by control characters is encountered
on a version control statement.
The
-a
option forces replacement of keywords in
all
lines of text.
An uninterpreted control character can be included in a value
by preceding it with
\.
If a literal
\
is desired, it too must be preceded by
\.
The
vc
command is part of the SCCS (Source Code Control System) command suite.
Options
vc
recognizes the following options and arguments:
- -a
Replace keywords surrounded by control characters
with their assigned value in
all
text lines and not just in
vc
statements.
- -t
Ignore all characters from the beginning of a line
up to and including the first
tab
character for the purpose of detecting a control statement.
If one is found, all characters up to and including the
tab
are discarded.
- -cchar
Specify a control character to be used in place of
:.
- -s
Silence warning messages (not errors) that are normally printed
on the diagnostic output.
Control Statements
A control statement is a single line
beginning with a control character, and
the default control character is colon
(:)
(Unless the
-t
and
-c
options are used [See above]).
Input lines beginning with a backslash
(\)
followed by the control character are not control lines,
and are copied to the standard output with the backslash removed.
Lines beginning with a backslash
followed by a non-control character are copied in their entirety.
A keyword is composed of 9 or fewer alphanumeric characters of which
the first character is alphabetic.
A value is any
ASCII
string that can be created using
ed
(see
ed(1));
a numeric value is an unsigned string of digits.
Keyword values must not contain spaces or tabs.
Version control statements occur in the following forms:
- :dcl keyword[, ..., keyword]
Used to declare keywords.
All keywords must be declared.
- :asg keyword=value
Used to assign values to keywords.
An
asg
statement overrides the assignment for the corresponding keyword on the
vc
command line and all previous
asgs
for that keyword.
Keywords declared, but not assigned values have
null values.
- :if condition
- ...
- :end
Used to skip lines of the standard input.
If the condition is true, all lines between the
if
statement and the matching
end
statement are copied to the standard output.
If the condition is false, all intervening lines are discarded,
including control statements.
Note that intervening
if
statements and matching
end
statements are recognized solely for the purpose of maintaining the proper
if-end
matching.
The syntax of a condition may include the following:
- <cond>
::= [ "not" ] <or>
- <or>
::= <and> | <and> "|" <or>
- <and>
::= <exp> | <exp> "&" <and>
- <exp>
::= "(" <or> ")" | <value> <op> <value>
- <op>
::= "=" | "!=" | "<" | ">"
- <value>
::= <arbitrary ASCII string> | <numeric string>
The following are available operators and their meanings:
- =
equal
- !=
not equal
- &
and
- |
or
- >
greater than
- <
less than
- ( )
used for logical groupings
- not
allowed only immediately after the
if,
and when present, inverts the value of the entire condition
The
>
and
<
operate only on unsigned integer values (such as
: 012 > 12
is false).
All other operators take strings as arguments
(for example,
: 012 != 12
is true).
The precedence of the operators (from highest to lowest) is as
follows:
- = != > <
all of equal precedence
- &
- |
Parentheses can be used to alter the order of precedence.
Values must be separated from operators or parentheses
by at least one space or tab.
- ::text
Used for keyword replacement on lines
that are copied to the standard output.
The two leading control characters are removed,
and keywords surrounded by control characters in text
are replaced by their value before the line is copied to the output file.
This action is independent of the
-a
option.
- :on
- :off
Turn on or off keyword replacement on all lines.
- :ctlchar
Change the control character to char.
- :msgmessage
Prints the given message on the diagnostic output.
- :errmessage
Prints the given message followed by:
ERROR: err statement on line ... (915)
on the diagnostic output.
vc
halts execution and returns an exit code of 1.
EXTERNAL INFLUENCES
Environment Variables
LC_CTYPE
determines the interpretation of keywords, values, the
control character assigned through
ctl
and within text as single- and/or multi-byte characters.
LANG
determines the language in which messages are displayed.
If
LC_CTYPE
is not specified in the environment or is set to
the empty string, the value of
LANG
is used as a default for each
unspecified or empty variable. If
LANG
is not specified or is
set to the empty string, a default of "C" (see
lang(5))
is used instead of
LANG.
If any internationalization variable
contains an invalid setting,
vc
behaves as if all internationalization variables are set to "C".
See
environ(5).
RETURN VALUE
vc
returns 0 on normal completion; 1 if an error occurs.