- merge local changes

- provide reach-over infrastructure
This commit is contained in:
christos 2016-01-14 04:22:38 +00:00
parent 04c6fc8e93
commit fa28c6faa1
58 changed files with 915 additions and 231 deletions

3
external/gpl2/rcs/Makefile vendored Normal file
View File

@ -0,0 +1,3 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
SUBDIR = lib .WAIT bin
.include <bsd.subdir.mk>

12
external/gpl2/rcs/Makefile.inc vendored Normal file
View File

@ -0,0 +1,12 @@
# $NetBSD: Makefile.inc,v 1.1 2016/01/14 04:22:38 christos Exp $
.include <bsd.own.mk>
BINDIR=/usr/bin
DIST=${NETBSDSRCDIR}/external/gpl2/rcs
IDIST=${DIST}/dist
PROGDPLIBS+= rcs ${DIST}/lib
CPPFLAGS+= -I${DIST}/include
.PATH: ${IDIST}/src ${IDIST}/man

3
external/gpl2/rcs/bin/Makefile vendored Normal file
View File

@ -0,0 +1,3 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
SUBDIR = ci co ident merge rcs rcsclean rcsdiff rcsfreeze rcsmerge rlog
.include <bsd.subdir.mk>

2
external/gpl2/rcs/bin/Makefile.inc vendored Normal file
View File

@ -0,0 +1,2 @@
# $NetBSD: Makefile.inc,v 1.1 2016/01/14 04:22:38 christos Exp $
.include "${.PARSEDIR}/../Makefile.inc"

5
external/gpl2/rcs/bin/ci/Makefile vendored Normal file
View File

@ -0,0 +1,5 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
PROG= ci
.include <bsd.prog.mk>

7
external/gpl2/rcs/bin/co/Makefile vendored Normal file
View File

@ -0,0 +1,7 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
PROG= co
CWARNFLAGS.clang+= -Wno-format-extra-args
.include <bsd.prog.mk>

5
external/gpl2/rcs/bin/ident/Makefile vendored Normal file
View File

@ -0,0 +1,5 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
PROG= ident
.include <bsd.prog.mk>

5
external/gpl2/rcs/bin/merge/Makefile vendored Normal file
View File

@ -0,0 +1,5 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
PROG= merge
.include <bsd.prog.mk>

6
external/gpl2/rcs/bin/rcs/Makefile vendored Normal file
View File

@ -0,0 +1,6 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
PROG= rcs
MAN= rcs.1 rcsfile.5 rcsintro.1
.include <bsd.prog.mk>

View File

@ -0,0 +1,5 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
PROG= rcsclean
.include <bsd.prog.mk>

View File

@ -0,0 +1,5 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
PROG= rcsdiff
.include <bsd.prog.mk>

View File

@ -0,0 +1,6 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
MAN= rcsfreeze.1
SCRIPTS=rcsfreeze.sh
.include <bsd.prog.mk>

View File

@ -0,0 +1,5 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
PROG= rcsmerge
.include <bsd.prog.mk>

9
external/gpl2/rcs/bin/rlog/Makefile vendored Normal file
View File

@ -0,0 +1,9 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:39 christos Exp $
PROG= rlog
LINKS= ${BINDIR}/rlog ${BINDIR}/rcslog
MLINKS= rlog.1 rcslog.1
CWARNFLAGS.clang+= -Wno-string-plus-int
.include <bsd.prog.mk>

View File

@ -1,4 +1,4 @@
.\" $NetBSD: ci.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: ci.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
@ -483,7 +483,7 @@ The default for
.IR suffixes
is installation-dependent; normally it is
.B ,v/
for hosts like Unix that permit commas in filenames,
for hosts like UNIX that permit commas in filenames,
and is empty (i.e. just the empty suffix) for other hosts.
.TP
.BI \-z zone
@ -708,14 +708,14 @@ Check that the host supports \*r setuid use.
Consult a trustworthy expert if there are any doubts.
It is best if the
.B seteuid
system call works as described in Posix 1003.1a Draft 5,
system call works as described in POSIX 1003.1a Draft 5,
because \*r can switch back and forth easily
between real and effective users, even if the real user is
.BR root .
If not, the second best is if the
.B setuid
system call supports saved setuid
(the {\s-1_POSIX_SAVED_IDS\s0} behavior of Posix 1003.1-1990);
(the {\s-1_POSIX_SAVED_IDS\s0} behavior of POSIX 1003.1-1990);
this fails only if the real or effective user is
.BR root .
If \*r detects any failure in setuid, it quits immediately.
@ -895,7 +895,7 @@ rcsintro(1), rcsmerge(1), rlog(1), setuid(2), rcsfile(5)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
.I "Software\*-Practice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.
.br

View File

@ -1,4 +1,4 @@
.\" $NetBSD: co.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: co.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
@ -36,7 +36,7 @@ fails if the revision to be checked out is currently locked by another user.
Checkout with locking also requires the caller to be on the access list of
the \*r file, unless he is the owner of the
file or the superuser, or the access list is empty.
Checkout without locking is not subject to accesslist restrictions, and is
Checkout without locking is not subject to access list restrictions, and is
not affected by the presence of locks.
.PP
A revision is selected by options for revision or branch number,
@ -217,7 +217,7 @@ Generate a binary image of the old keyword string.
This acts like
.BR \-ko ,
except it performs all working file input and output in binary mode.
This makes little difference on Posix and Unix hosts,
This makes little difference on POSIX and UNIX hosts,
but on DOS-like hosts one should use
.B "rcs\ \-i\ \-kb"
to initialize an \*r file intended to be used for binary files.
@ -397,7 +397,7 @@ and
are the ends of two branches that have
.I rev2
as a common ancestor. If
.IR rev1 < rev2 < rev3
.IR rev1 \*[Lt] rev2 \*[Lt] rev3
on the same branch,
joining generates a new revision which is like
.I rev3,
@ -724,7 +724,7 @@ rcsfile(5)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
.I "Software\*-Practice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.
.SH LIMITS
@ -733,6 +733,6 @@ Links to the \*r and working files are not preserved.
There is no way to selectively suppress the expansion of keywords, except
by writing them differently. In nroff and troff, this is done by embedding the
null-character
.B \e&
.B \e\*[Am]
into the keyword.
.br

View File

@ -1,4 +1,4 @@
.\" $NetBSD: ident.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: ident.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
@ -48,7 +48,7 @@ For example, if the C program in
contains
.IP
.ft 3
#include <stdio.h>
#include \*[Lt]stdio.h\*[Gt]
.br
static char const rcsid[] =
.br
@ -179,6 +179,6 @@ rcsfile(5)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
.I "Software\*-Practice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.

View File

@ -1,4 +1,4 @@
.\" $NetBSD: merge.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: merge.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
@ -45,19 +45,19 @@ have changes in a common segment of lines.
If a conflict is found,
.B merge
normally outputs a warning and brackets the conflict with
.B <<<<<<<
.B \*[Lt]\*[Lt]\*[Lt]\*[Lt]\*[Lt]\*[Lt]\*[Lt]
and
.B >>>>>>>
.B \*[Gt]\*[Gt]\*[Gt]\*[Gt]\*[Gt]\*[Gt]\*[Gt]
lines.
A typical conflict will look like this:
.LP
.RS
.nf
.BI <<<<<<< " file A"
.BI \*[Lt]\*[Lt]\*[Lt]\*[Lt]\*[Lt]\*[Lt]\*[Lt] " file A"
.I "lines in file A"
.B "======="
.I "lines in file B"
.BI >>>>>>> " file B"
.BI \*[Gt]\*[Gt]\*[Gt]\*[Gt]\*[Gt]\*[Gt]\*[Gt] " file B"
.RE
.fi
.LP
@ -116,8 +116,9 @@ Send results to standard output instead of overwriting
.TP
.BI \-q
Quiet; do not warn about conflicts.
.TP
.BI \-V
Print \*r's version number.
Print version number.
.SH DIAGNOSTICS
Exit status is 0 for no conflicts, 1 for some conflicts, 2 for trouble.
.SH IDENTIFICATION

View File

@ -1,24 +1,6 @@
.\" $NetBSD: rcs.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: rcs.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
.ds Dt \\$4
..
.Id Id: rcs.1,v 5.13 1995/06/05 08:28:35 eggert Exp
.ds r \&\s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
.if !\n(.g \{\
. if !\w|\*(lq| \{\
. ds lq ``
. if \w'\(lq' .ds lq "\(lq
. \}
. if !\w|\*(rq| \{\
. ds rq ''
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
.TH RCS 1 \*(Dt GNU
.TH RCS 1 "" GNU
.SH NAME
rcs \- change RCS file attributes
.SH SYNOPSIS
@ -26,8 +8,8 @@ rcs \- change RCS file attributes
.IR "options file " .\|.\|.
.SH DESCRIPTION
.B rcs
creates new \*r files or changes attributes of existing ones.
An \*r file contains multiple revisions of text,
creates new RCS files or changes attributes of existing ones.
An RCS file contains multiple revisions of text,
an access list, a change log,
descriptive text,
and some control attributes.
@ -40,7 +22,7 @@ the
.B \-i
option is present.
.PP
Pathnames matching an \*r suffix denote \*r files;
Pathnames matching an RCS suffix denote RCS files;
all others denote working files.
Names are paired as explained in
.BR ci (1).
@ -49,28 +31,28 @@ Revision numbers use the syntax described in
.SH OPTIONS
.TP
.B \-i
Create and initialize a new \*r file, but do not deposit any revision.
If the \*r file has no path prefix, try to place it
Create and initialize a new RCS file, but do not deposit any revision.
If the RCS file has no path prefix, try to place it
first into the subdirectory
.BR ./RCS ,
and then into the current directory.
If the \*r file
If the RCS file
already exists, print an error message.
.TP
.BI \-a "logins"
Append the login names appearing in the comma-separated list
.I logins
to the access list of the \*r file.
to the access list of the RCS file.
.TP
.BI \-A "oldfile"
Append the access list of
.I oldfile
to the access list of the \*r file.
to the access list of the RCS file.
.TP
.BR \-e [\f2logins\fP]
Erase the login names appearing in the comma-separated list
.I logins
from the access list of the \*r file.
from the access list of the RCS file.
If
.I logins
is omitted, erase the entire access list.
@ -95,14 +77,14 @@ without
guesses the comment leader from the suffix of the working filename.
.RS
.PP
This option is obsolescent, since \*r normally uses the preceding
This option is obsolescent, since RCS normally uses the preceding
.B $\&Log$
line's prefix when inserting log lines during checkout (see
.BR co (1)).
However, older versions of \*r use the comment leader instead of the
However, older versions of RCS use the comment leader instead of the
.B $\&Log$
line's prefix, so
if you plan to access a file with both old and new versions of \*r,
if you plan to access a file with both old and new versions of RCS,
make sure its comment leader matches its
.B $\&Log$
line prefix.
@ -162,7 +144,7 @@ itself.
Set locking to
.IR strict .
Strict locking means that the owner
of an \*r file is not exempt from locking for checkin.
of an RCS file is not exempt from locking for checkin.
This option should be used for files that are shared.
.TP
.B \-U
@ -219,7 +201,7 @@ For example,
.BI "rcs\ \-n" name ":\ RCS/*"
associates
.I name
with the current latest revision of all the named \*r files;
with the current latest revision of all the named RCS files;
this contrasts with
.BI "rcs\ \-n" name ":$\ RCS/*"
which associates
@ -297,7 +279,7 @@ sets the state of a revision to
.BR \-t [\f2file\fP]
Write descriptive text from the contents of the named
.I file
into the \*r file, deleting the existing text.
into the RCS file, deleting the existing text.
The
.IR file
pathname cannot begin with
@ -320,23 +302,23 @@ is not given.
.BI \-t\- string
Write descriptive text from the
.I string
into the \*r file, deleting the existing text.
into the RCS file, deleting the existing text.
.TP
.B \-T
Preserve the modification time on the \*r file
Preserve the modification time on the RCS file
unless a revision is removed.
This option can suppress extensive recompilation caused by a
.BR make (1)
dependency of some copy of the working file on the \*r file.
dependency of some copy of the working file on the RCS file.
Use this option with care; it can suppress recompilation even when it is needed,
i.e. when a change to the \*r file
i.e. when a change to the RCS file
would mean a change to keyword strings in the working file.
.TP
.BI \-V
Print \*r's version number.
Print RCS's version number.
.TP
.BI \-V n
Emulate \*r version
Emulate RCS version
.IR n .
See
.BR co (1)
@ -345,7 +327,7 @@ for details.
.BI \-x "suffixes"
Use
.I suffixes
to characterize \*r files.
to characterize RCS files.
See
.BR ci (1)
for details.
@ -355,7 +337,7 @@ Use
.I zone
as the default time zone.
This option has no effect;
it is present for compatibility with other \*r commands.
it is present for compatibility with other RCS commands.
.PP
At least one explicit option must be given,
to ensure compatibility with future planned extensions
@ -365,26 +347,26 @@ command.
.SH COMPATIBILITY
The
.BI \-b rev
option generates an \*r file that cannot be parsed by \*r version 3 or earlier.
option generates an RCS file that cannot be parsed by RCS version 3 or earlier.
.PP
The
.BI \-k subst
options (except
.BR \-kkv )
generate an \*r file that cannot be parsed by \*r version 4 or earlier.
generate an RCS file that cannot be parsed by RCS version 4 or earlier.
.PP
Use
.BI "rcs \-V" n
to make an \*r file acceptable to \*r version
to make an RCS file acceptable to RCS version
.I n
by discarding information that would confuse version
.IR n .
.PP
\*r version 5.5 and earlier does not support the
RCS version 5.5 and earlier does not support the
.B \-x
option, and requires a
.B ,v
suffix on an \*r pathname.
suffix on an RCS pathname.
.SH FILES
.B rcs
accesses files much as
@ -403,7 +385,7 @@ See
.BR ci (1)
for details.
.SH DIAGNOSTICS
The \*r pathname and the revisions outdated are written to
The RCS pathname and the revisions outdated are written to
the diagnostic output.
The exit status is zero if and only if all operations were successful.
.SH IDENTIFICATION
@ -419,14 +401,14 @@ rcsintro(1), co(1), ci(1), ident(1), rcsclean(1), rcsdiff(1),
rcsmerge(1), rlog(1), rcsfile(5)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
RCS\(emA System for Version Control,
.I "Software\(emPractice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.
.SH BUGS
A catastrophe (e.g. a system crash) can cause \*r to leave behind
a semaphore file that causes later invocations of \*r to claim
that the \*r file is in use.
A catastrophe (e.g. a system crash) can cause RCS to leave behind
a semaphore file that causes later invocations of RCS to claim
that the RCS file is in use.
To fix this, remove the semaphore file.
A semaphore file's name typically begins with
.B ,

View File

@ -1,4 +1,4 @@
.\" $NetBSD: rcsclean.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: rcsclean.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
@ -194,7 +194,7 @@ rcsfile(5)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
.I "Software\*-Practice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.
.SH BUGS

View File

@ -1,4 +1,4 @@
.\" $NetBSD: rcsdiff.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: rcsdiff.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
@ -154,7 +154,7 @@ ci(1), co(1), diff(1), ident(1), rcs(1), rcsintro(1), rcsmerge(1), rlog(1)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
.I "Software\*-Practice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.
.br

View File

@ -1,4 +1,4 @@
.\" $NetBSD: rcsfile.5,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: rcsfile.5,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.lf 1 ./rcsfile.5in
.\" Set p to 1 if your formatter can handle pic output.
@ -163,7 +163,7 @@ All
nodes whose numbers consist of
.RI 2 n
fields
.RI ( n \(>=2)
.RI ( n \*[Ge]2)
(e.g., 3.1.1.1, 2.1.2.2, etc.)
are linked as follows.
All nodes whose first
@ -423,6 +423,6 @@ rcsmerge(1), rlog(1)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
.I "Software\*-Practice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.

View File

@ -1,4 +1,4 @@
.\" $NetBSD: rcsfreeze.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: rcsfreeze.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3

View File

@ -1,34 +1,13 @@
.\" $NetBSD: rcsintro.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: rcsintro.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
.ds Dt \\$4
..
.Id Id: rcsintro.1,v 5.3 1993/11/03 17:42:27 eggert Exp
.ds r \&\s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
.if !\n(.g \{\
. if !\w|\*(lq| \{\
. ds lq ``
. if \w'\(lq' .ds lq "\(lq
. \}
. if !\w|\*(rq| \{\
. ds rq ''
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
.am SS
.LP
..
.TH RCSINTRO 1 \*(Dt GNU
.TH RCSINTRO 1 "" GNU
.SH NAME
rcsintro \- introduction to RCS commands
.SH DESCRIPTION
The Revision Control System (\*r) manages multiple revisions of files.
\*r automates the storing, retrieval, logging, identification, and merging
of revisions. \*r is useful for text that is revised frequently, for example
programs, documentation, graphics, papers, and form letters.
The Revision Control System (RCS) manages multiple revisions of files.
RCS automates the storing, retrieval, logging, identification, and merging
of revisions. RCS is useful for text that is revised frequently, for example
.PP
The basic user interface is extremely simple. The novice only needs
to learn two commands:
@ -37,13 +16,13 @@ and
.BR co (1).
.BR ci ,
short for \*(lqcheck in\*(rq, deposits the contents of a
file into an archival file called an \*r file. An \*r file
file into an archival file called an RCS file. An RCS file
contains all revisions of a particular file.
.BR co ,
short for \*(lqcheck out\*(rq, retrieves revisions from an \*r file.
.SS "Functions of \*r"
short for \*(lqcheck out\*(rq, retrieves revisions from an RCS file.
.SS "Functions of RCS"
.IP \(bu
Store and retrieve multiple revisions of text. \*r saves all old
Store and retrieve multiple revisions of text. RCS saves all old
revisions in a space efficient way.
Changes no longer destroy the original, because the
previous revisions remain accessible. Revisions can be retrieved according to
@ -51,24 +30,24 @@ ranges of revision numbers, symbolic names, dates, authors, and
states.
.IP \(bu
Maintain a complete history of changes.
\*r logs all changes automatically.
Besides the text of each revision, \*r stores the author, the date and time of
RCS logs all changes automatically.
Besides the text of each revision, RCS stores the author, the date and time of
check-in, and a log message summarizing the change.
The logging makes it easy to find out
what happened to a module, without having to compare
source listings or having to track down colleagues.
.IP \(bu
Resolve access conflicts. When two or more programmers wish to
modify the same revision, \*r alerts the programmers and prevents one
modify the same revision, RCS alerts the programmers and prevents one
modification from corrupting the other.
.IP \(bu
Maintain a tree of revisions. \*r can maintain separate lines of development
Maintain a tree of revisions. RCS can maintain separate lines of development
for each module. It stores a tree structure that represents the
ancestral relationships among revisions.
.IP \(bu
Merge revisions and resolve conflicts.
Two separate lines of development of a module can be coalesced by merging.
If the revisions to be merged affect the same sections of code, \*r alerts the
If the revisions to be merged affect the same sections of code, RCS alerts the
user about the overlapping changes.
.IP \(bu
Control releases and configurations.
@ -84,14 +63,14 @@ in the text of a revision.
The identification makes it simple to determine which
revisions of which modules make up a given configuration.
.IP \(bu
Minimize secondary storage. \*r needs little extra space for
Minimize secondary storage. RCS needs little extra space for
the revisions (only the differences). If intermediate revisions are
deleted, the corresponding deltas are compressed accordingly.
.SS "Getting Started with \*r"
.SS "Getting Started with RCS"
Suppose you have a file
.B f.c
that you wish to put under control of \*r.
If you have not already done so, make an \*r directory with the command
that you wish to put under control of RCS.
If you have not already done so, make an RCS directory with the command
.IP
.B "mkdir RCS"
.LP
@ -99,7 +78,7 @@ Then invoke the check-in command
.IP
.B "ci f.c"
.LP
This command creates an \*r file in the
This command creates an RCS file in the
.B RCS
directory,
stores
@ -112,7 +91,7 @@ should be a synopsis of the contents of the file. All later check-in
commands will ask you for a log entry, which should summarize the
changes that you made.
.PP
Files in the \*r directory are called \*r files;
Files in the RCS directory are called RCS files;
the others are called working files.
To get back the working file
.B f.c
@ -121,7 +100,7 @@ command
.IP
.B "co f.c"
.LP
This command extracts the latest revision from the \*r file
This command extracts the latest revision from the RCS file
and writes
it into
.BR f.c .
@ -173,26 +152,26 @@ prevents is a
.I "check-in"
by anybody but the locker.
.PP
If your \*r file is private, i.e., if you are the only person who is going
If your RCS file is private, i.e., if you are the only person who is going
to deposit revisions into it, strict locking is not needed and you
can turn it off.
If strict locking is turned off,
the owner of the \*r file need not have a lock for check-in; all others
the owner of the RCS file need not have a lock for check-in; all others
still do. Turning strict locking off and on is done with the commands
.IP
.BR "rcs \-U f.c" " and " "rcs \-L f.c"
.LP
If you don't want to clutter your working directory with \*r files, create
If you don't want to clutter your working directory with RCS files, create
a subdirectory called
.B RCS
in your working directory, and move all your \*r
files there. \*r commands will look first into that directory to find
in your working directory, and move all your RCS
files there. RCS commands will look first into that directory to find
needed files. All the commands discussed above will still work, without any
modification.
(Actually, pairs of \*r and working files can be specified in three ways:
(Actually, pairs of RCS and working files can be specified in three ways:
(a) both are given, (b) only the working file is given, (c) only the
\*r file is given. Both \*r and working files may have arbitrary path prefixes;
\*r commands pair them up intelligently.)
RCS file is given. Both RCS and working files may have arbitrary path prefixes;
RCS commands pair them up intelligently.)
.PP
To avoid the deletion of the working file during check-in (in case you want to
continue editing or compiling), invoke
@ -247,19 +226,19 @@ the number 1.3.1.1 to the new revision. For more information about
branches, see
.BR rcsfile (5).
.SS "Automatic Identification"
\*r can put special strings for identification into your source and object
RCS can put special strings for identification into your source and object
code. To obtain such identification, place the marker
.IP
.B "$\&Id$"
.LP
into your text, for instance inside a comment.
\*r will replace this marker with a string of the form
RCS will replace this marker with a string of the form
.IP
.BI $\&Id: " filename revision date time author state " $
.LP
With such a marker on the first page of each module, you can
always see with which revision you are working.
\*r keeps the markers up to date automatically.
RCS keeps the markers up to date automatically.
To propagate the markers into your object code, simply put
them into literal character strings. In C, this is done as follows:
.IP
@ -297,8 +276,8 @@ Copyright \(co 1990, 1991, 1992, 1993 Paul Eggert.
ci(1), co(1), ident(1), rcs(1), rcsdiff(1), rcsintro(1), rcsmerge(1), rlog(1)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
RCS\(emA System for Version Control,
.I "Software\(emPractice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.
.br

View File

@ -1,4 +1,4 @@
.\" $NetBSD: rcsmerge.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: rcsmerge.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
@ -139,7 +139,7 @@ updates to release 2.8 from someone else.
To combine the updates to 2.8 and your changes between 2.8 and 3.4,
put the updates to 2.8 into file f.c and execute
.LP
.B " rcsmerge \-p \-r2.8 \-r3.4 f.c >f.merged.c"
.B " rcsmerge \-p \-r2.8 \-r3.4 f.c \*[Gt]f.merged.c"
.PP
Then examine
.BR f.merged.c .
@ -185,7 +185,7 @@ rcsfile(5)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
.I "Software\*-Practice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.
.br

View File

@ -1,4 +1,4 @@
.\" $NetBSD: rlog.1,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $
.\" $NetBSD: rlog.1,v 1.2 2016/01/14 04:22:39 christos Exp $
.\"
.de Id
.ds Rv \\$3
@ -48,6 +48,8 @@ The options below restrict this output.
.ds n \nn
.if \n(.g .if r an-tag-sep .ds n \w'\f3\-V\fP\f2n\fP'u+\n[an-tag-sep]u
.TP \*n
.B \-c
Print the commitid if available.
.B \-L
Ignore \*r files that have no locks set.
This is convenient in combination with
@ -83,32 +85,32 @@ Print information about revisions with a checkin date/time in the ranges given b
the semicolon-separated list of
.IR dates .
A range of the form
.IB d1 < d2
.IB d1 \*[Lt] d2
or
.IB d2 > d1
.IB d2 \*[Gt] d1
selects the revisions that were deposited between
.I d1
and
.I d2
exclusive.
A range of the form
.BI < d
.BI \*[Lt] d
or
.IB d >
.IB d \*[Gt]
selects
all revisions earlier than
.IR d .
A range of the form
.IB d <
.IB d \*[Lt]
or
.BI > d
.BI \*[Gt] d
selects
all revisions dated later than
.IR d .
If
.B <
.B \*[Lt]
or
.B >
.B \*[Gt]
is followed by
.B =
then the ranges are inclusive, not exclusive.
@ -125,9 +127,9 @@ and
are in the free format explained in
.BR co (1).
Quoting is normally necessary, especially for
.B <
.B \*[Lt]
and
.BR > .
.BR \*[Gt] .
Note that the separator is
a semicolon.
.TP
@ -296,7 +298,7 @@ rcsfile(5)
.br
Walter F. Tichy,
\*r\*-A System for Version Control,
.I "Software\*-Practice & Experience"
.I "Software\*-Practice \*[Am] Experience"
.BR 15 ,
7 (July 1985), 637-654.
.SH BUGS

View File

@ -1,4 +1,4 @@
.\" Format this file with:
.\" $NetBSD: rcs.ms,v 1.2 2016/01/14 04:22:39 christos Exp $
.\" pic file | tbl | troff -ms
.\"
.\" \*s stands for $, and avoids problems when this file is checked in.

View File

@ -1,4 +1,4 @@
/* $NetBSD: ci.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: ci.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Check in revisions of RCS files from working files. */
@ -1138,7 +1138,7 @@ struct hshentry * delta;
num=delta->num;
for (trail = &Locks; (next = *trail); trail = &next->nextlock)
if (next->delta == delta)
if (next->delta == delta) {
if (strcmp(getcaller(), next->login) == 0) {
/* We found a lock on delta by caller; delete it. */
*trail = next->nextlock;
@ -1148,6 +1148,7 @@ struct hshentry * delta;
rcserror("revision %s locked by %s", num, next->login);
return -1;
}
}
if (!StrictLocks && myself(RCSstat.st_uid))
return 0;
rcserror("no lock set by %s for revision %s", getcaller(), num);

View File

@ -1,4 +1,4 @@
/* $NetBSD: co.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: co.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Check out working files from revisions of RCS files. */

View File

@ -1,5 +1,5 @@
/* $NetBSD: ident.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: ident.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* $NetBSD: ident.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Identify RCS keyword strings in files. */
/* Copyright 1982, 1988, 1989 Walter Tichy
@ -136,7 +136,7 @@ mainProg(identId, "ident", "Id: ident.c,v 5.9 1995/06/16 06:19:24 eggert Exp ")
break;
}
if (0 <= quiet)
if (0 <= quiet) {
if (!a)
VOID scanfile(stdin, (char*)0, quiet);
else
@ -150,7 +150,7 @@ mainProg(identId, "ident", "Id: ident.c,v 5.9 1995/06/16 06:19:24 eggert Exp ")
)
break;
} while ((a = *++argv));
}
if (ferror(stdout) || fclose(stdout)!=0) {
reportError("standard output");
status = EXIT_FAILURE;
@ -252,8 +252,8 @@ match(fp) /* group substring between two KDELIM's; then do pattern match */
return c ? c : '\n';
*tp++ = c;
while( (c = getc(fp)) != KDELIM ) {
if (c == EOF && feof(fp) | ferror(fp))
return c;
if (c == EOF)
return c;
switch (ctab[c]) {
default:
*tp++ = c;

View File

@ -1,4 +1,4 @@
/* $NetBSD: maketime.h,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: maketime.h,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Yield time_t from struct partime yielded by partime. */

View File

@ -1,4 +1,4 @@
/* $NetBSD: merge.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: merge.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* merge - three-way file merge */

View File

@ -1,4 +1,4 @@
/* $NetBSD: merger.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: merger.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* three-way file merge internals */

View File

@ -1,4 +1,4 @@
/* $NetBSD: partime.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: partime.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Parse a string, yielding a struct partime that describes it. */

View File

@ -1,4 +1,4 @@
/* $NetBSD: partime.h,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: partime.h,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Parse a string, yielding a struct partime that describes it. */

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcs.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcs.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Change RCS file attributes. */
@ -730,8 +730,8 @@ getaccessor(opt, command)
{
register c;
register char *sp;
int c;
char *sp;
sp = opt;
while ((c = *++sp) == ' ' || c == '\n' || c == '\t' || c == ',')
@ -790,7 +790,7 @@ char *sp;
{
char const *temp;
struct Status *pt;
register c;
int c;
while ((c = *++sp) ==' ' || c == '\t' || c == '\n')
continue;
@ -1394,7 +1394,7 @@ dolocks()
for (lockpt = rmvlocklst; lockpt; lockpt = lockpt->nextrev)
if (expandsym(lockpt->revno, &numrev)) {
target = genrevs(numrev.string, (char *)0, (char *)0, (char *)0, &gendeltas);
if ( target )
if ( target ) {
if (!(countnumflds(numrev.string)&1) && cmpnum(target->num,numrev.string))
rcserror("can't unlock nonexisting revision %s",
lockpt->revno
@ -1402,19 +1402,21 @@ dolocks()
else
changed |= breaklock(target);
/* breaklock does its own diagnose */
}
}
/* add new locks which stored in newlocklst */
for (lockpt = newlocklst; lockpt; lockpt = lockpt->nextrev)
changed |= setlock(lockpt->revno);
if (lockhead) /* lock default branch or head */
if (lockhead) { /* lock default branch or head */
if (Dbranch)
changed |= setlock(Dbranch);
else if (Head)
changed |= setlock(Head->num);
else
rcswarn("can't lock an empty tree");
}
return changed;
}
@ -1433,7 +1435,7 @@ setlock(rev)
if (expandsym(rev, &numrev)) {
target = genrevs(numrev.string, (char*)0, (char*)0,
(char*)0, &gendeltas);
if ( target )
if ( target ) {
if (!(countnumflds(numrev.string)&1) && cmpnum(target->num,numrev.string))
rcserror("can't lock nonexisting revision %s",
numrev.string
@ -1447,6 +1449,7 @@ setlock(rev)
return r;
}
}
}
}
return 0;
}
@ -1489,7 +1492,7 @@ rcs_setstate(rev,status)
if (expandsym(rev, &numrev)) {
target = genrevs(numrev.string, (char*)0, (char*)0,
(char*)0, &gendeltas);
if ( target )
if ( target ) {
if (!(countnumflds(numrev.string)&1) && cmpnum(target->num,numrev.string))
rcserror("can't set state of nonexisting revision %s",
numrev.string
@ -1498,6 +1501,7 @@ rcs_setstate(rev,status)
target->state = status;
return true;
}
}
}
return false;
}
@ -1582,7 +1586,7 @@ buildtree()
pre = pt;
pt = pt->nextbranch;
}
if ( cuttail )
if ( cuttail && pt )
pt->hsh = cuttail;
else if ( pt == pre )
cuthead->branches = pt->nextbranch;

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsbase.h,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsbase.h,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* RCS common definitions and data structures */
@ -272,14 +272,14 @@ Report problems and direct all questions to:
# if maps_memory
# define declarecache register Iptr_type ptr, lim
# define setupcache(f) (lim = (f)->lim)
# define Igeteof_(f,c,s) if ((f)->ptr==(f)->lim) s else (c)= *(f)->ptr++;
# define cachegeteof_(c,s) if (ptr==lim) s else (c)= *ptr++;
# define Igeteof_(f,c,s) { if ((f)->ptr==(f)->lim) s else (c)= *(f)->ptr++; }
# define cachegeteof_(c,s) { if (ptr==lim) s else (c)= *ptr++; }
# else
int Igetmore P((RILE*));
# define declarecache register Iptr_type ptr; register RILE *rRILE
# define setupcache(f) (rRILE = (f))
# define Igeteof_(f,c,s) if ((f)->ptr==(f)->readlim && !Igetmore(f)) s else (c)= *(f)->ptr++;
# define cachegeteof_(c,s) if (ptr==rRILE->readlim && !Igetmore(rRILE)) s else (c)= *ptr++;
# define Igeteof_(f,c,s) { if ((f)->ptr==(f)->readlim && !Igetmore(f)) s else (c)= *(f)->ptr++; }
# define cachegeteof_(c,s) { if (ptr==rRILE->readlim && !Igetmore(rRILE)) s else (c)= *ptr++; }
# endif
# define uncache(f) ((f)->ptr = ptr)
# define cache(f) (ptr = (f)->ptr)
@ -360,6 +360,7 @@ struct hshentry {
char const * lockedby; /* who locks the revision */
char const * state; /* state of revision (Exp by default) */
char const * name; /* name (if any) by which retrieved */
char const * commitid; /* unique commit identifier */
struct cbuf log; /* log message requested at checkin */
struct branchhead * branches; /* list of first revisions on branches*/
struct cbuf ig; /* ignored phrases in admin part */
@ -429,9 +430,12 @@ struct assoc {
#define REVISION "Revision"
#define SOURCE "Source"
#define STATE "State"
#define keylength 8 /* max length of any of the above keywords */
#define keylength 32 /* max length of any of the above keywords */
enum markers { Nomatch, Author, Date, Header, Id,
#ifdef LOCALID
LocalId,
#endif
Locker, Log, Name, RCSfile, Revision, Source, State };
/* This must be in the same order as rcskeys.c's Keyword[] array. */

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsclean.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsclean.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Clean up working files. */
@ -323,11 +323,14 @@ get_directory(dirname, aargv)
efaterror(dirname);
if (chars)
a = trealloc(char, a, chars);
else
else {
tfree(a);
a = NULL;
}
*aargv = p = tnalloc(char*, entries+1);
for (i=0; i<entries; i++)
*p++ = a + offset[i];
if (a)
for (i=0; i<entries; i++)
*p++ = a + offset[i];
*p = 0;
tfree(offset);
return entries;

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsdiff.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsdiff.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Compare RCS revisions. */
@ -178,7 +178,7 @@ mainProg(rcsdiffId, "rcsdiff", "Id: rcsdiff.c,v 5.19 1995/06/16 06:19:24 eggert
struct hshentry * target;
char *a, *dcp, **newargv;
int no_diff_means_no_output;
register c;
int c;
exitstatus = DIFF_SUCCESS;
@ -216,9 +216,9 @@ mainProg(rcsdiffId, "rcsdiff", "Id: rcsdiff.c,v 5.19 1995/06/16 06:19:24 eggert
case '-': case 'D':
no_diff_means_no_output = false;
/* fall into */
case 'C': case 'F': case 'I': case 'L': case 'W':
case 'C': case 'F': case 'I': case 'L': case 'W': case 'U':
#if DIFF_L
if (c == 'L' && ++file_labels == 2)
if (c == 'L' && file_labels++ == 2)
faterror("too many -L options");
#endif
*dcp++ = c;
@ -366,13 +366,14 @@ mainProg(rcsdiffId, "rcsdiff", "Id: rcsdiff.c,v 5.19 1995/06/16 06:19:24 eggert
lexpandarg = "-kkvl";
Izclose(&workptr);
#if DIFF_L
if (diff_label2)
if (diff_label2) {
if (revnums == 2)
*diff_label2 = setup_label(&labelbuf[1], target->num, target->date);
else {
time2date(workstat.st_mtime, date2);
*diff_label2 = setup_label(&labelbuf[1], (char*)0, date2);
}
}
#endif
diagnose("retrieving revision %s\n", xrev1);

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsedit.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsedit.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* RCS stream editor */
@ -619,7 +619,7 @@ copystring()
* editline is incremented by the number of lines copied.
* Assumption: next character read is first string character.
*/
{ register c;
{ int c;
declarecache;
register FILE *frew, *fcop;
register int amidline;
@ -864,7 +864,7 @@ expandline(infile, outfile, delta, delimstuffed, frewfile, dolog)
* 2 if a complete line is copied; adds 1 to yield if expansion occurred.
*/
{
register c;
int c;
declarecache;
register FILE *out, *frew;
register char * tp;
@ -1053,8 +1053,11 @@ keyreplace(marker, delta, delimstuffed, infile, out, dolog)
break;
case Id:
case Header:
#ifdef LOCALID
case LocalId:
#endif
escape_string(out,
marker==Id || RCSv<VERSION(4)
marker!=Header || RCSv<VERSION(4)
? basefilename(RCSname)
: getfullRCSname()
);
@ -1065,12 +1068,13 @@ keyreplace(marker, delta, delimstuffed, infile, out, dolog)
RCSv==VERSION(3) && delta->lockedby ? "Locked"
: delta->state
);
if (delta->lockedby)
if (delta->lockedby) {
if (VERSION(5) <= RCSv) {
if (locker_expansion || exp==KEYVALLOCK_EXPAND)
aprintf(out, " %s", delta->lockedby);
} else if (RCSv == VERSION(4))
aprintf(out, " Locker: %s", delta->lockedby);
}
break;
case Locker:
if (delta->lockedby)
@ -1505,6 +1509,9 @@ makedirtemp(isworkfile)
register size_t dl;
register struct buf *bn;
register char const *name = isworkfile ? workname : RCSname;
# if has_mkstemp
int fd;
# endif
dl = basefilename(name) - name;
bn = &dirtpname[newRCSdirtp_index + isworkfile];
@ -1523,10 +1530,17 @@ makedirtemp(isworkfile)
catchints();
# if has_mktemp
VOID strcpy(tp, "XXXXXX");
# if has_mkstemp
if ((fd = mkstemp(np)) == -1)
# else
if (!mktemp(np) || !*np)
# endif
faterror("can't make temporary pathname `%.*s_%cXXXXXX'",
(int)dl, name, '0'+isworkfile
);
# if has_mkstemp
close(fd);
# endif
# else
/*
* Posix 1003.1-1990 has no reliable way
@ -1723,7 +1737,7 @@ addlock(delta, verbose)
register struct rcslock *next;
for (next = Locks; next; next = next->nextlock)
if (cmpnum(delta->num, next->delta->num) == 0)
if (cmpnum(delta->num, next->delta->num) == 0) {
if (strcmp(getcaller(), next->login) == 0)
return 0;
else {
@ -1733,6 +1747,7 @@ addlock(delta, verbose)
);
return -1;
}
}
next = ftalloc(struct rcslock);
delta->lockedby = next->login = getcaller();
next->delta = delta;
@ -1756,7 +1771,7 @@ addsymbol(num, name, rebind)
register struct assoc *next;
for (next = Symbols; next; next = next->nextassoc)
if (strcmp(name, next->symbol) == 0)
if (strcmp(name, next->symbol) == 0) {
if (strcmp(next->num,num) == 0)
return 0;
else if (rebind) {
@ -1768,6 +1783,7 @@ addsymbol(num, name, rebind)
);
return -1;
}
}
next = ftalloc(struct assoc);
next->symbol = name;
next->num = num;
@ -1827,7 +1843,7 @@ dorewrite(lockflag, changed)
{
int r = 0, e;
if (lockflag)
if (lockflag) {
if (changed) {
if (changed < 0)
return -1;
@ -1863,6 +1879,7 @@ dorewrite(lockflag, changed)
}
# endif
}
}
return r;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsfcmp.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsfcmp.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Compare working files, ignoring RCS keyword strings. */

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsfnms.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsfnms.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* RCS filename and pathname handling */
@ -294,14 +294,24 @@ maketemp(n)
catchints();
{
# if has_mktemp
# if has_mkstemp
int fd;
# endif
char const *tp = tmp();
size_t tplen = dir_useful_len(tp);
p = testalloc(tplen + 10);
VOID sprintf(p, "%.*s%cT%cXXXXXX", (int)tplen, tp, SLASH, '0'+n);
# if has_mkstemp
if ((fd = mkstemp(p)) == -1)
# else
if (!mktemp(p) || !*p)
# endif
faterror("can't make temporary pathname `%.*s%cT%cXXXXXX'",
(int)tplen, tp, SLASH, '0'+n
);
# if has_mkstemp
close(fd);
# endif
# else
static char tpnamebuf[TEMPNAMES][L_tmpnam];
p = tpnamebuf[n];

View File

@ -25,7 +25,7 @@
# {RCS/}.rcsfreeze.ver version number
# {RCS/}.rscfreeze.log log messages, most recent first
PATH=/usr/local/bin:/bin:/usr/bin:/usr/ucb:$PATH
PATH=/bin:/usr/bin:$PATH
export PATH
DATE=`date` || exit

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsgen.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsgen.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Generate RCS revisions. */
@ -446,7 +446,7 @@ getsstdin(option, name, note, buf)
c = getcstdin(), !feof(stdin);
bufrealloc(buf, i+1), p = buf->string, p[i++] = c
)
if (c == '\n')
if (c == '\n') {
if (i && p[i-1]=='.' && (i==1 || p[i-2]=='\n')) {
/* Remove trailing '.'. */
--i;
@ -455,6 +455,7 @@ getsstdin(option, name, note, buf)
aputs(">> ", stderr);
eflush();
}
}
return cleanlogmsg(p, i);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcskeep.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcskeep.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Extract RCS keyword string values from working files. */
@ -194,6 +194,9 @@ getoldkeys(fp)
break;
case Header:
case Id:
#ifdef LOCALID
case LocalId:
#endif
if (!(
getval(fp, (struct buf*)0, false) &&
keeprev(fp) &&

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcskeys.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcskeys.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* RCS keyword table and match operation */
@ -73,6 +73,9 @@ char const *const Keyword[] = {
/* This must be in the same order as rcsbase.h's enum markers type. */
0,
AUTHOR, DATE, HEADER, IDH,
#ifdef LOCALID
LOCALID,
#endif
LOCKER, LOG, NAME, RCSFILE, REVISION, SOURCE, STATE
};

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcslex.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcslex.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* lexical analysis of RCS files */
@ -308,7 +308,7 @@ nextlex()
* For ID's and NUM's, NextString is set to the character string.
* Assumption: nextc contains the next character.
*/
{ register c;
{ int c;
declarecache;
register FILE *frew;
register char * sp;
@ -673,7 +673,7 @@ readstring()
/* skip over characters until terminating single SDELIM */
/* If foutptr is set, copy every character read to foutptr. */
/* Does not advance nextlex at the end. */
{ register c;
{ int c;
declarecache;
register FILE *frew;
register RILE *fin;
@ -706,7 +706,7 @@ printstring()
* Does not advance nextlex at the end.
*/
{
register c;
int c;
declarecache;
register FILE *fout;
register RILE *fin;
@ -744,7 +744,7 @@ savestring(target)
* Yield a copy of *TARGET, except with exact length.
*/
{
register c;
int c;
declarecache;
register FILE *frew;
register char *tp;
@ -999,7 +999,7 @@ fd2RILE(fd, name, type, status)
if (!f->base) {
catchmmapints();
f->base = (unsigned char *) mmap(
(char *)0, s, PROT_READ, MAP_SHARED,
(char *)0, s, PROT_READ, MAP_FILE|MAP_SHARED,
fd, (off_t)0
);
# ifndef MAP_FAILED

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsmap.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsmap.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* RCS map of character types */

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsmerge.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsmerge.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Merge RCS revisions. */

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsrev.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsrev.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Handle RCS revision numbers. */
@ -632,11 +632,19 @@ genbranch(bpoint, revno, length, date, author, state, store)
);
return 0;
}
if (state && strcmp(state,trail->state)!=0) {
rcserror("Revision %s has state %s.",
trail->num,
trail->state ? trail->state : "<empty>"
);
if (state) {
const char *st;
if (trail->state == NULL)
st = "<empty>";
else if (strcmp(trail->state, state) != 0)
st = trail->state;
else
st = NULL;
if (st)
rcserror("Revision %s has state %s.",
trail->num, st);
return 0;
}
}
@ -747,7 +755,7 @@ fexpandsym(source, target, fp)
for (bp = tp; *bp=='0' && isdigit(bp[1]); bp++)
continue;
if (!*bp)
if (!*bp) {
if (s || *sp!='.')
break;
else {
@ -763,6 +771,7 @@ fexpandsym(source, target, fp)
bp = tp = target->string;
tlim = tp + target->size;
}
}
}
while ((*tp++ = *bp++))

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcssyn.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcssyn.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* RCS file syntactic analysis */
@ -173,6 +173,7 @@ char const
Kauthor[] = "author",
Kbranch[] = "branch",
Kcomment[] = "comment",
Kcommitid[] = "commitid",
Kdate[] = "date",
Kdesc[] = "desc",
Kexpand[] = "expand",
@ -432,6 +433,17 @@ getdelta()
getkey(Knext);
Delta->next = num = getdnum();
getsemi(Knext);
if (getkeyopt(Kcommitid)) {
if (nexttok == ID) {
Delta->commitid = NextString;
nextlex();
} else {
fatserror("missing %s", Kcommitid);
Delta->commitid = NULL;
}
getsemi(Kcommitid);
} else
Delta->commitid = NULL;
Delta->lockedby = 0;
Delta->log.string = 0;
Delta->selector = true;

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcstime.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcstime.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Convert between RCS time format and Posix and/or C formats. */

View File

@ -1,4 +1,4 @@
/* $NetBSD: rcsutil.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rcsutil.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* RCS utility functions */
@ -371,7 +371,7 @@ getusername(suspicious)
faterror("no password entry for userid %lu",
(unsigned long)ruid()
);
name = pw->pw_name;
name = strdup(pw->pw_name);
#else
#if has_setuid
faterror("setuid not supported");
@ -812,6 +812,9 @@ awrite(buf, chars, f)
size_t chars;
FILE *f;
{
if (buf == NULL)
return;
/* Posix 1003.1-1990 ssize_t hack */
while (SSIZE_MAX < chars) {
if (Fwrite(buf, sizeof(*buf), SSIZE_MAX, f) != SSIZE_MAX)

View File

@ -1,4 +1,4 @@
/* $NetBSD: rlog.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: rlog.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
/* Print log messages and other information about RCS files. */
@ -214,6 +214,7 @@ static char const *insDelFormat;
static int branchflag; /*set on -b */
static int exitstatus;
static int lockflag;
static int commitid;
static struct Datepairs *datelist, *duelst;
static struct Revpairs *revlist, *Revlst;
static struct authors *authorlist;
@ -224,7 +225,7 @@ static struct stateattri *statelist;
mainProg(rlogId, "rlog", "Id: rlog.c,v 5.18 1995/06/16 06:19:24 eggert Exp ")
{
static char const cmdusage[] =
"\nrlog usage: rlog -{bhLNRt} -ddates -l[lockers] -r[revs] -sstates -Vn -w[logins] -xsuff -zzone file ...";
"\nrlog usage: rlog -{cbhLNRt} -ddates -l[lockers] -r[revs] -sstates -Vn -w[logins] -xsuff -zzone file ...";
register FILE *out;
char *a, **newargv;
@ -251,6 +252,9 @@ mainProg(rlogId, "rlog", "Id: rlog.c,v 5.18 1995/06/16 06:19:24 eggert Exp ")
argv = newargv;
while (a = *++argv, 0<--argc && *a++=='-') {
switch (*a++) {
case 'c':
commitid = true;
break;
case 'L':
onlylockflag = true;
@ -584,14 +588,17 @@ putadelta(node,editscript,trunk)
date2str(node->date, datebuf),
node->author, node->state
);
if (commitid && node->commitid)
aprintf(out, " commitid: %s;", node->commitid);
if ( editscript )
if ( editscript ) {
if(trunk)
aprintf(out, insDelFormat,
editscript->deletelns, editscript->insertlns);
else
aprintf(out, insDelFormat,
editscript->insertlns, editscript->deletelns);
}
newbranch = node->branches;
if ( newbranch ) {
@ -773,7 +780,7 @@ char *argv;
/* and store in authorlist */
{
register c;
int c;
struct authors * newauthor;
argv--;
@ -967,12 +974,13 @@ extractdelta(pdelta)
while (strcmp(pstate->status, pdelta->state) != 0)
if (!(pstate = pstate->nextstate))
return false;
if (lockflag) /* only locked revisions wanted */
if (lockflag) { /* only locked revisions wanted */
for (plock = Locks; ; plock = plock->nextlock)
if (!plock)
return false;
else if (plock->delta == pdelta)
break;
}
if ((prevision = Revlst)) /* only certain revs or branches wanted */
for (;;) {
length = prevision->numfld;

View File

@ -1,4 +1,4 @@
/* $NetBSD: version.c,v 1.1.1.1 2016/01/14 03:05:06 christos Exp $ */
/* $NetBSD: version.c,v 1.2 2016/01/14 04:22:39 christos Exp $ */
#include "rcsbase.h"
char const RCS_version_string[] = "5.7";

406
external/gpl2/rcs/include/conf.h vendored Normal file
View File

@ -0,0 +1,406 @@
/* RCS compile-time configuration */
/* $Id: conf.h,v 1.1 2016/01/14 04:22:39 christos Exp $ */
/*
* This file is generated automatically.
* If you edit it by hand your changes may be lost.
* Instead, please try to fix conf.sh,
* and send your fixes to rcs-bugs@cs.purdue.edu.
*/
#define exitmain(n) return n /* how to exit from main() */
/* #define _POSIX_C_SOURCE 2147483647L */ /* if strict C + Posix 1003.1b-1993 or later */
/* #define _POSIX_SOURCE */ /* if strict C + Posix 1003.1-1990 */
#include <errno.h>
#include <stdio.h>
#include <time.h>
/* Comment out #include lines below that do not work. */
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <fcntl.h>
#include <limits.h>
/* #include <mach/mach.h> */
/* #include <net/errno.h> */
#include <pwd.h>
/* #include <siginfo.h> */
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/wait.h>
#include <ucontext.h>
#include <unistd.h>
#include <utime.h>
/* #include <vfork.h> */
/* Define boolean symbols to be 0 (false, the default), or 1 (true). */
#define has_sys_param_h 1 /* Does #include <sys/param.h> work? */
/* extern int errno; */ /* Uncomment if <errno.h> doesn't declare errno. */
#define has_readlink 1 /* Does readlink() work? */
#define readlink_isreg_errno EINVAL /* errno after readlink on regular file */
#if has_readlink && !defined(MAXSYMLINKS)
# if has_sys_param_h
# include <sys/param.h>
# endif
# ifndef MAXSYMLINKS
# define MAXSYMLINKS 20 /* BSD; not standard yet */
# endif
#endif
/* Comment out the typedefs below if the types are already declared. */
/* Fix any uncommented typedefs that are wrong. */
/* typedef int mode_t; */
/* typedef long off_t; */
/* typedef int pid_t; */
/* typedef int sig_atomic_t; */
/* typedef unsigned size_t; */
/* typedef int ssize_t; */
/* typedef long time_t; */
/* typedef int uid_t; */
/* Comment out the keyword definitions below if the keywords work. */
/* #define const */
/* #define volatile */
/* Define boolean symbols to be 0 (false, the default), or 1 (true). */
#define has_prototypes 1 /* Do function prototypes work? */
#define has_stdarg 1 /* Does <stdarg.h> work? */
/* #define has_varargs ? */ /* Does <varargs.h> work? */
#define va_start_args 2 /* How many args does va_start() take? */
#if O_BINARY
/* Text and binary i/o behave differently. */
/* This is incompatible with Posix and Unix. */
# define FOPEN_RB "rb"
# define FOPEN_R_WORK (Expand==BINARY_EXPAND ? "r" : "rb")
# define FOPEN_WB "wb"
# define FOPEN_W_WORK (Expand==BINARY_EXPAND ? "w" : "wb")
# define FOPEN_WPLUS_WORK (Expand==BINARY_EXPAND ? "w+" : "w+b")
# define OPEN_O_BINARY O_BINARY
#else
/*
* Text and binary i/o behave the same.
* Omit "b", since some nonstandard hosts reject it.
*/
# define FOPEN_RB "r"
# define FOPEN_R_WORK "r"
# define FOPEN_WB "w"
# define FOPEN_W_WORK "w"
# define FOPEN_WPLUS_WORK "w+"
# define OPEN_O_BINARY 0
#endif
/* This may need changing on non-Unix systems (notably DOS). */
#define OPEN_CREAT_READONLY (S_IRUSR|S_IRGRP|S_IROTH) /* lock file mode */
#define OPEN_O_LOCK 0 /* extra open flags for creating lock file */
#define OPEN_O_WRONLY O_WRONLY /* main open flag for creating a lock file */
/* Define or comment out the following symbols as needed. */
#if has_prototypes
# define P(params) params
#else
# define P(params) ()
#endif
#if has_stdarg
# include <stdarg.h>
#else
# if has_varargs
# include <varargs.h>
# else
typedef char *va_list;
# define va_dcl int va_alist;
# define va_start(ap) ((ap) = (va_list)&va_alist)
# define va_arg(ap,t) (((t*) ((ap)+=sizeof(t))) [-1])
# define va_end(ap)
# endif
#endif
#if va_start_args == 2
# define vararg_start va_start
#else
# define vararg_start(ap,p) va_start(ap)
#endif
#define bad_chmod_close 0 /* Can chmod() close file descriptors? */
#define bad_creat0 0 /* Do writes fail after creat(f,0)? */
#define bad_fopen_wplus 0 /* Does fopen(f,"w+") fail to truncate f? */
#define getlogin_is_secure 0 /* Is getlogin() secure? Usually it's not. */
#define has_attribute_noreturn 1 /* Does __attribute__((noreturn)) work? */
#if has_attribute_noreturn
# define exiting __attribute__((noreturn))
#else
# define exiting
#endif
#define has_dirent 1 /* Do opendir(), readdir(), closedir() work? */
#define void_closedir 0 /* Does closedir() yield void? */
#define has_fchmod 1 /* Does fchmod() work? */
#define has_fflush_input 0 /* Does fflush() work on input files? */
#define has_fputs 1 /* Does fputs() work? */
#define has_ftruncate 1 /* Does ftruncate() work? */
#define has_getuid 1 /* Does getuid() work? */
#define has_getpwuid 1 /* Does getpwuid() work? */
#define has_memcmp 1 /* Does memcmp() work? */
#define has_memcpy 1 /* Does memcpy() work? */
#define has_memmove 1 /* Does memmove() work? */
#define has_map_fd 0 /* Does map_fd() work? */
#define has_mmap 1 /* Does mmap() work on regular files? */
#define has_madvise 1 /* Does madvise() work? */
#define mmap_signal SIGBUS /* signal received if you reference nonexistent part of mmapped file */
#define has_rename 1 /* Does rename() work? */
#define bad_a_rename 0 /* Does rename(A,B) fail if A is unwritable? */
#define bad_b_rename 0 /* Does rename(A,B) fail if B is unwritable? */
#define bad_NFS_rename 0 /* Can rename(A,B) falsely report success? */
/* typedef int void; */ /* Some ancient compilers need this. */
#define VOID (void) /* 'VOID e;' discards the value of an expression 'e'. */
#define has_seteuid 1 /* Does seteuid() work? See ../INSTALL.RCS. */
#define has_setreuid 0 /* Does setreuid() work? See ../INSTALL.RCS. */
#define has_setuid 1 /* Does setuid() exist? */
#define has_sigaction 1 /* Does struct sigaction work? */
#define has_sa_sigaction 1 /* Does struct sigaction have sa_sigaction? */
#define has_signal 1 /* Does signal() work? */
#define signal_type void /* type returned by signal handlers */
#define sig_zaps_handler 0 /* Must a signal handler reinvoke signal()? */
/* #define has_sigblock ? */ /* Does sigblock() work? */
/* #define sigmask(s) (1 << ((s)-1)) */ /* Yield mask for signal number. */
typedef size_t fread_type; /* type returned by fread() and fwrite() */
typedef size_t freadarg_type; /* type of their size arguments */
typedef void *malloc_type; /* type returned by malloc() */
#define has_getcwd 1 /* Does getcwd() work? */
/* #define has_getwd ? */ /* Does getwd() work? */
#define needs_getabsname 0 /* Must we define getabsname? */
#define has_mktemp 1 /* Does mktemp() work? */
#define has_mkstemp 1 /* Does mkstemp() work? */
#define has_NFS 1 /* Might NFS be used? */
#define has_psiginfo 1 /* Does psiginfo() work? */
#define has_psignal 1 /* Does psignal() work? */
#define has_si_errno 1 /* Does siginfo_t have si_errno? */
/* #define has_sys_siglist ? */ /* Does sys_siglist[] work? */
/* #define strchr index */ /* Use old-fashioned name for strchr()? */
/* #define strrchr rindex */ /* Use old-fashioned name for strrchr()? */
#define bad_unlink 0 /* Does unlink() fail on unwritable files? */
#define has_vfork 1 /* Does vfork() work? */
#define has_fork 1 /* Does fork() work? */
#define has_spawn 0 /* Does spawn*() work? */
#define has_waitpid 1 /* Does waitpid() work? */
#define bad_wait_if_SIGCHLD_ignored 0 /* Does ignoring SIGCHLD break wait()? */
#define RCS_SHELL "/bin/sh" /* shell to run RCS subprograms */
#define has_printf_dot 1 /* Does "%.2d" print leading 0? */
#define has_vfprintf 1 /* Does vfprintf() work? */
#define has_attribute_format_printf 1 /* Does __attribute__((format(printf,N,N+1))) work? */
#if has_attribute_format_printf
# define printf_string(m, n) __attribute__((format(printf, m, n)))
#else
# define printf_string(m, n)
#endif
#if has_attribute_format_printf && has_attribute_noreturn
/* Work around a bug in GCC 2.5.x. */
# define printf_string_exiting(m, n) __attribute__((format(printf, m, n), noreturn))
#else
# define printf_string_exiting(m, n) printf_string(m, n) exiting
#endif
/* #define has__doprintf ? */ /* Does _doprintf() work? */
/* #define has__doprnt ? */ /* Does _doprnt() work? */
/* #undef EXIT_FAILURE */ /* Uncomment this if EXIT_FAILURE is broken. */
#define large_memory 1 /* Can main memory hold entire RCS files? */
#ifndef LONG_MAX
#ifdef _LP64
#define LONG_MAX 9223372036854775807L /* long maximum */
#else
#define LONG_MAX 2147483647L /* long maximum */
#endif
#endif
/* Do struct stat s and t describe the same file? Answer d if unknown. */
#define same_file(s,t,d) ((s).st_ino==(t).st_ino && (s).st_dev==(t).st_dev)
#define has_utimbuf 1 /* Does struct utimbuf work? */
#define CO "/usr/bin/co" /* name of 'co' program */
#define COMPAT2 0 /* Are version 2 files supported? */
#define DIFF "/usr/bin/diff" /* name of 'diff' program */
#define DIFF3 "/usr/bin/diff3" /* name of 'diff3' program */
#define DIFF3_BIN 1 /* Is diff3 user-visible (not the /usr/lib auxiliary)? */
#define DIFFFLAGS "-an" /* Make diff output suitable for RCS. */
#define DIFF_L 1 /* Does diff -L work? */
#define DIFF_SUCCESS 0 /* DIFF status if no differences are found */
#define DIFF_FAILURE 1 /* DIFF status if differences are found */
#define DIFF_TROUBLE 2 /* DIFF status if trouble */
#define ED "/bin/ed" /* name of 'ed' program (used only if !DIFF3_BIN) */
#define MERGE "/usr/bin/merge" /* name of 'merge' program */
#define TMPDIR "/tmp" /* default directory for temporary files */
#define SLASH '/' /* principal filename separator */
#define SLASHes '/' /* `case SLASHes:' labels all filename separators */
#define isSLASH(c) ((c) == SLASH) /* Is arg a filename separator? */
#define ROOTPATH(p) isSLASH((p)[0]) /* Is p an absolute pathname? */
#define X_DEFAULT ",v/" /* default value for -x option */
#define SLASHSLASH_is_SLASH 1 /* Are // and / the same directory? */
#define ALL_ABSOLUTE 1 /* Do all subprograms satisfy ROOTPATH? */
#define DIFF_ABSOLUTE 1 /* Is ROOTPATH(DIFF) true? */
#define SENDMAIL "/usr/sbin/sendmail" /* how to send mail */
#define TZ_must_be_set 0 /* Must TZ be set for gmtime() to work? */
/* Adjust the following declarations as needed. */
/* The rest is for the benefit of non-standard, traditional hosts. */
/* Don't bother to declare functions that in traditional hosts do not appear, */
/* or are declared in .h files, or return int or void. */
/* traditional BSD */
#if has_sys_siglist && !defined(sys_siglist)
extern char const * const sys_siglist[];
#endif
/* Posix (ISO/IEC 9945-1: 1990 / IEEE Std 1003.1-1990) */
/* <fcntl.h> */
#ifdef O_CREAT
# define open_can_creat 1
#else
# define open_can_creat 0
# define O_RDONLY 0
# define O_WRONLY 1
# define O_RDWR 2
# define O_CREAT 01000
# define O_TRUNC 02000
#endif
#ifndef O_EXCL
#define O_EXCL 0
#endif
/* <sys/stat.h> */
#ifndef S_IRUSR
# ifdef S_IREAD
# define S_IRUSR S_IREAD
# else
# define S_IRUSR 0400
# endif
# ifdef S_IWRITE
# define S_IWUSR S_IWRITE
# else
# define S_IWUSR (S_IRUSR/2)
# endif
#endif
#ifndef S_IRGRP
# if has_getuid
# define S_IRGRP (S_IRUSR / 0010)
# define S_IWGRP (S_IWUSR / 0010)
# define S_IROTH (S_IRUSR / 0100)
# define S_IWOTH (S_IWUSR / 0100)
# else
/* single user OS -- not Posix or Unix */
# define S_IRGRP 0
# define S_IWGRP 0
# define S_IROTH 0
# define S_IWOTH 0
# endif
#endif
#ifndef S_ISREG
#define S_ISREG(n) (((n) & S_IFMT) == S_IFREG)
#endif
/* <sys/wait.h> */
#ifndef WEXITSTATUS
#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
#undef WIFEXITED /* Avoid 4.3BSD incompatibility with Posix. */
#endif
#ifndef WIFEXITED
#define WIFEXITED(stat_val) (((stat_val) & 0377) == 0)
#endif
#ifndef WTERMSIG
#define WTERMSIG(stat_val) ((stat_val) & 0177)
#undef WIFSIGNALED /* Avoid 4.3BSD incompatibility with Posix. */
#endif
#ifndef WIFSIGNALED
#define WIFSIGNALED(stat_val) ((unsigned)(stat_val) - 1 < 0377)
#endif
/* <unistd.h> */
char *getlogin P((void));
#ifndef STDIN_FILENO
# define STDIN_FILENO 0
# define STDOUT_FILENO 1
# define STDERR_FILENO 2
#endif
#if has_fork && !has_vfork
# undef vfork
# define vfork fork
#endif
#if has_getcwd || !has_getwd
char *getcwd P((char*,size_t));
#else
char *getwd P((char*));
#endif
#if has_setuid && !has_seteuid
# undef seteuid
# define seteuid setuid
#endif
#if has_spawn
# if ALL_ABSOLUTE
# define spawn_RCS spawnv
# else
# define spawn_RCS spawnvp
# endif
#else
# if ALL_ABSOLUTE
# define exec_RCS execv
# else
# define exec_RCS execvp
# endif
#endif
/* utime.h */
#if !has_utimbuf
struct utimbuf { time_t actime, modtime; };
#endif
/* Standard C library */
/* <stdio.h> */
#ifndef L_tmpnam
#define L_tmpnam 32 /* power of 2 > sizeof("/usr/tmp/xxxxxxxxxxxxxxx") */
#endif
#ifndef SEEK_SET
#define SEEK_SET 0
#endif
#ifndef SEEK_CUR
#define SEEK_CUR 1
#endif
#if has_mktemp
char *mktemp P((char*)); /* traditional */
#else
char *tmpnam P((char*));
#endif
/* <stdlib.h> */
char *getenv P((char const*));
#ifndef __NetBSD__
void _exit P((int)) exiting;
void exit P((int)) exiting;
#endif
malloc_type malloc P((size_t));
malloc_type realloc P((malloc_type,size_t));
#ifndef EXIT_FAILURE
#define EXIT_FAILURE 1
#endif
#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 0
#endif
/* <string.h> */
char *strcpy P((char*,char const*));
char *strchr P((char const*,int));
char *strrchr P((char const*,int));
void *memcpy P((void*,void const*,size_t));
#if has_memmove
void *memmove P((void*,void const*,size_t));
#endif
/* <time.h> */
time_t time P((time_t*));

23
external/gpl2/rcs/lib/Makefile vendored Normal file
View File

@ -0,0 +1,23 @@
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:39 christos Exp $
LIBISPRIVATE= yes
.include <bsd.init.mk>
# Define FSYNC_ALL to get slower but safer writes in case of crashes in
# the middle of CVS/RCS changes
CPPFLAGS+=-DFSYNC_ALL
# If you wish to use a different Id token in addition to Id,
# set the variable RCS_LOCALID in mk.conf or environment.
.if defined(RCS_LOCALID)
CPPFLAGS+=-DLOCALID=\"${RCS_LOCALID}\"
.endif
LIB= rcs
SRCS= maketime.c merger.c partime.c rcsedit.c rcsfcmp.c rcsfnms.c rcsgen.c \
rcskeep.c rcskeys.c rcslex.c rcsmap.c rcsrev.c rcssyn.c rcstime.c \
rcsutil.c version.c
CWARNFLAGS.clang+= -Wno-format-security -Wno-string-plus-int
.include <bsd.lib.mk>

134
external/gpl2/rcs/rcs2netbsd vendored Executable file
View File

@ -0,0 +1,134 @@
#! /bin/sh
#
# $NetBSD: rcs2netbsd,v 1.1 2016/01/14 04:22:38 christos Exp $
#
# Copyright (c) 2016 The NetBSD Foundation, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# rcs2netbsd: convert an glibc source tree into a
# netbsd rcs source tree,
#
# Rough instructions for importing new rcs release:
#
# $ cd /some/where/temporary
# $ tar xpfz /malloc/release/tar/file
# $ sh /usr/src/external/gpl2/rcs/rcs2netbsd malloc `pwd`
# $ cd `pwd`/src/external/gpl2/rcs/dist
# $ cvs import -m "Import rcs rcs x.y" src/external/gpl2/rcs/dist FSF rcs-x-y
# merge sources according to instructions given
# e.g. cvs -d cvs.netbsd.org:/cvsroot checkout -jrcs-1-19 -jrcs-1-19-1 src/gnu/dist/rcs
if [ $# -ne 2 ]; then echo "rcs2netbsd src dest"; exit 1; fi
r=$1
d=$2/src/external/gpl2/rcs/dist
case "$d" in
/*)
;;
*)
d=`/bin/pwd`/$d
;;
esac
case "$r" in
/*)
;;
*)
r=`/bin/pwd`/$r
;;
esac
echo preparing directory $d
rm -rf $d
mkdir -p $d
### Copy the files and directories
echo copying $r to $d
cd $r
pax -rw * $d
chmod -x $d/*
# cd to import directory
cd $d
#
### Remove the $'s around RCS tags
cleantags $d
### Add our NetBSD RCS Id
find $d -type f -name '*.[chly]' -print | while read c; do
sed 1q < $c | grep -q '\$NetBSD' || (
echo "/* \$NetBSD\$ */" >/tmp/rcs3n$$
echo "" >>/tmp/rcs3n$$
cat $c >> /tmp/rcs3n$$
mv /tmp/rcs3n$$ $c && echo added NetBSD RCS tag to $c
)
done
find $d -type f -name '*.cpp' -print | while read c; do
sed 1q < $c | grep -q '\$NetBSD' || (
echo "/* \$NetBSD\$ */" >/tmp/rcs3n$$
echo "" >>/tmp/rcs3n$$
cat $c >> /tmp/rcs3n$$
mv /tmp/rcs3n$$ $c && echo added NetBSD RCS tag to $c
)
done
find $d -type f -name '*.[0-9]' -print | while read m; do
sed 1q < $m | grep -q '\$NetBSD' || (
echo ".\\\" \$NetBSD\$" >/tmp/rcs2m$$
echo ".\\\"" >>/tmp/rcs2m$$
cat $m >> /tmp/rcs2m$$
mv /tmp/rcs2m$$ $m && echo added NetBSD RCS tag to $m
)
done
find $d -type f -name '*.texi' -print | while read t; do
sed "2 s/^/@c \$NetBSD\$\\
/" < $t > /tmp/rcs4t$$
mv /tmp/rcs4t$$ $t && echo added NetBSD RCS tag to $t
done
echo done
### Clean up any CVS directories that might be around.
echo "cleaning up CVS residue."
(
cd $d
find . -type d -name "CVS" -print | xargs rm -r
)
echo done
### Fixing file and directory permissions.
echo "Fixing file/directory permissions."
(
cd $d
find . -type f -print | xargs chmod u+rw,go+r
find . -type d -print | xargs chmod u+rwx,go+rx
)
echo done
exit 0