- merge local changes
- provide reach-over infrastructure
This commit is contained in:
parent
04c6fc8e93
commit
fa28c6faa1
|
@ -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>
|
|
@ -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
|
|
@ -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>
|
|
@ -0,0 +1,2 @@
|
|||
# $NetBSD: Makefile.inc,v 1.1 2016/01/14 04:22:38 christos Exp $
|
||||
.include "${.PARSEDIR}/../Makefile.inc"
|
|
@ -0,0 +1,5 @@
|
|||
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
|
||||
|
||||
PROG= ci
|
||||
|
||||
.include <bsd.prog.mk>
|
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
|
||||
|
||||
PROG= ident
|
||||
|
||||
.include <bsd.prog.mk>
|
|
@ -0,0 +1,5 @@
|
|||
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
|
||||
|
||||
PROG= merge
|
||||
|
||||
.include <bsd.prog.mk>
|
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
|
||||
|
||||
PROG= rcsclean
|
||||
|
||||
.include <bsd.prog.mk>
|
|
@ -0,0 +1,5 @@
|
|||
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
|
||||
|
||||
PROG= rcsdiff
|
||||
|
||||
.include <bsd.prog.mk>
|
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
# $NetBSD: Makefile,v 1.1 2016/01/14 04:22:38 christos Exp $
|
||||
|
||||
PROG= rcsmerge
|
||||
|
||||
.include <bsd.prog.mk>
|
|
@ -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>
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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) &&
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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++))
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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*));
|
|
@ -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>
|
|
@ -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
|
Loading…
Reference in New Issue