Restore white spaces to original cvs-1.4Alpha2 state so that we can
deal with the cvs-1.6 (and beyond) imports more cleanly and safely.
This commit is contained in:
parent
1630f073cf
commit
3ffece8c26
@ -1,4 +1,4 @@
|
||||
# @(#) Id: dist-makefile,v 1.19 1993/05/31 22:43:45 ceder Exp
|
||||
# @(#) Id: dist-makefile,v 1.19 1993/05/31 22:43:45 ceder Exp
|
||||
# Makefile for pcl-cvs release 1.05.
|
||||
# Copyright (C) 1992, 1993 Per Cederqvist
|
||||
#
|
||||
@ -53,7 +53,7 @@ elcfiles:
|
||||
|
||||
all: elcfiles info
|
||||
|
||||
# Don't install the info file yet, since it requires makeinfo
|
||||
# Don't install the info file yet, since it requires makeinfo
|
||||
# version 2.something (and version 1.something is distributed with emacs).
|
||||
#
|
||||
# install: install_elc install_info
|
||||
|
@ -1,25 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Add
|
||||
*
|
||||
*
|
||||
* Adds a file or directory to the RCS source repository. For a file,
|
||||
* the entry is marked as "needing to be added" in the user's own CVS
|
||||
* directory, and really added to the repository when it is committed.
|
||||
* For a directory, it is added at the appropriate place in the source
|
||||
* repository and a CVS directory is generated within the directory.
|
||||
*
|
||||
*
|
||||
* The -m option is currently the only supported option. Some may wish to
|
||||
* supply standard "rcs" options here, but I've found that this causes more
|
||||
* trouble than anything else.
|
||||
*
|
||||
*
|
||||
* The user files or directories must already exist. For a directory, it must
|
||||
* not already have a CVS file in it.
|
||||
*
|
||||
*
|
||||
* An "add" on a file that has been "remove"d but not committed will cause the
|
||||
* file to be resurrected.
|
||||
*/
|
||||
@ -144,7 +144,7 @@ add (argc, argv)
|
||||
if (build_entry (repository, user, vers->options,
|
||||
message, entries, vers->tag) != 0)
|
||||
err++;
|
||||
else
|
||||
else
|
||||
{
|
||||
added_files++;
|
||||
if (!quiet)
|
||||
@ -256,7 +256,7 @@ add (argc, argv)
|
||||
* The specified user file is really a directory. So, let's make sure that
|
||||
* it is created in the RCS source repository, and that the user's directory
|
||||
* is updated to include a CVS directory.
|
||||
*
|
||||
*
|
||||
* Returns 1 on failure, 0 on success.
|
||||
*/
|
||||
static int
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Administration
|
||||
*
|
||||
*
|
||||
* For now, this is basically a front end for rcs. All options are passed
|
||||
* directly on.
|
||||
*/
|
||||
|
@ -1,17 +1,17 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Check In
|
||||
*
|
||||
*
|
||||
* Does a very careful checkin of the file "user", and tries not to spoil its
|
||||
* modification time (to avoid needless recompilations). When RCS ID keywords
|
||||
* get expanded on checkout, however, the modification time is updated and
|
||||
* there is no good way to get around this.
|
||||
*
|
||||
*
|
||||
* Returns non-zero on error.
|
||||
*/
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Create Version
|
||||
*
|
||||
*
|
||||
* "checkout" creates a "version" of an RCS repository. This version is owned
|
||||
* totally by the user and is actually an independent copy, to be dealt with
|
||||
* as seen fit. Once "checkout" has been called in a given directory, it
|
||||
@ -14,17 +14,17 @@
|
||||
* "update" when he feels like it; this will supply him with a merge of his
|
||||
* own modifications and the changes made in the RCS original. See "update"
|
||||
* for details.
|
||||
*
|
||||
*
|
||||
* "checkout" can be given a list of directories or files to be updated and in
|
||||
* the case of a directory, will recursivley create any sub-directories that
|
||||
* exist in the repository.
|
||||
*
|
||||
*
|
||||
* When the user is satisfied with his own modifications, the present version
|
||||
* can be committed by "commit"; this keeps the present version in tact,
|
||||
* usually.
|
||||
*
|
||||
*
|
||||
* The call is cvs checkout [options] <module-name>...
|
||||
*
|
||||
*
|
||||
* "checkout" creates a directory ./CVS, in which it keeps its administration,
|
||||
* in two files, Repository and Entries. The first contains the name of the
|
||||
* repository. The second contains one line for each registered file,
|
||||
@ -337,12 +337,12 @@ checkout_proc (pargc, argv, where, mwhere, mfile, shorten,
|
||||
char *realdirs;
|
||||
|
||||
/*
|
||||
* OK, so we're doing the checkout! Our args are as follows:
|
||||
* argc,argv contain either dir or dir followed by a list of files
|
||||
* where contains where to put it (if supplied by checkout)
|
||||
* mwhere contains the module name or -d from module file
|
||||
* OK, so we're doing the checkout! Our args are as follows:
|
||||
* argc,argv contain either dir or dir followed by a list of files
|
||||
* where contains where to put it (if supplied by checkout)
|
||||
* mwhere contains the module name or -d from module file
|
||||
* mfile says do only that part of the module
|
||||
* shorten = TRUE says shorten as much as possible
|
||||
* shorten = TRUE says shorten as much as possible
|
||||
* omodule is the original arg to do_module()
|
||||
*/
|
||||
|
||||
@ -370,8 +370,8 @@ checkout_proc (pargc, argv, where, mwhere, mfile, shorten,
|
||||
* the rest of the path onto where if where is filled in
|
||||
* otherwise tack the rest of the path onto mwhere and make that
|
||||
* the where
|
||||
*
|
||||
* If shorten is enabled, we might use mwhere to set where if
|
||||
*
|
||||
* If shorten is enabled, we might use mwhere to set where if
|
||||
* nobody set it yet, so we'll need to setup mwhere as the last
|
||||
* component of the path we are tacking onto repository
|
||||
*/
|
||||
@ -409,7 +409,7 @@ checkout_proc (pargc, argv, where, mwhere, mfile, shorten,
|
||||
* At this point, if shorten is not enabled, we make where either
|
||||
* where with mfile concatenated, or if where hadn't been set we
|
||||
* set it to mwhere with mfile concatenated.
|
||||
*
|
||||
*
|
||||
* If shorten is enabled and where hasn't been set yet, then where
|
||||
* becomes mfile
|
||||
*/
|
||||
|
@ -1,10 +1,10 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include "cvs.h"
|
||||
|
@ -1,17 +1,17 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Commit Files
|
||||
*
|
||||
*
|
||||
* "commit" commits the present version to the RCS repository, AFTER
|
||||
* having done a test on conflicts.
|
||||
*
|
||||
* The call is: cvs commit [options] files...
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include "cvs.h"
|
||||
@ -26,7 +26,7 @@ static int check_fileproc PROTO((char *file, char *update_dir, char *repository,
|
||||
List * entries, List * srcfiles));
|
||||
static int check_filesdoneproc PROTO((int err, char *repos, char *update_dir));
|
||||
static int checkaddfile PROTO((char *file, char *repository, char *tag,
|
||||
List *srcfiles));
|
||||
List *srcfiles));
|
||||
static Dtype commit_direntproc PROTO((char *dir, char *repos, char *update_dir));
|
||||
static int commit_dirleaveproc PROTO((char *dir, int err, char *update_dir));
|
||||
static int commit_fileproc PROTO((char *file, char *update_dir, char *repository,
|
||||
@ -488,7 +488,7 @@ check_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
run_arg (RCS_MERGE_PAT);
|
||||
run_arg (file);
|
||||
retcode = run_exec (RUN_TTY, RUN_TTY, RUN_TTY, RUN_NORMAL);
|
||||
|
||||
|
||||
if (retcode == -1)
|
||||
{
|
||||
if (update_dir[0] == '\0')
|
||||
@ -679,7 +679,7 @@ precommit_proc (repository, filter)
|
||||
if (filter[0] == '/')
|
||||
{
|
||||
char *s, *cp;
|
||||
|
||||
|
||||
s = xstrdup (filter);
|
||||
for (cp = s; *cp; cp++)
|
||||
if (isspace (*cp))
|
||||
@ -1039,7 +1039,7 @@ remove_file (file, repository, tag, message, entries, srcfiles)
|
||||
else
|
||||
{
|
||||
/* this was the head; really move it into the Attic */
|
||||
tmp = xmalloc(strlen(repository) +
|
||||
tmp = xmalloc(strlen(repository) +
|
||||
sizeof('/') +
|
||||
sizeof(CVSATTIC) +
|
||||
sizeof('/') +
|
||||
@ -1050,7 +1050,7 @@ remove_file (file, repository, tag, message, entries, srcfiles)
|
||||
(void) mkdir (tmp, 0777);
|
||||
(void) umask (omask);
|
||||
(void) sprintf (tmp, "%s/%s/%s%s", repository, CVSATTIC, file, RCSEXT);
|
||||
|
||||
|
||||
|
||||
if ((strcmp (rcs, tmp) == 0 || rename (rcs, tmp) != -1) ||
|
||||
(!isreadable (rcs) && isreadable (tmp)))
|
||||
@ -1253,7 +1253,7 @@ lock_RCS (user, rcs, rev, repository)
|
||||
* For a specified, numeric revision of the form "1" or "1.1", (or when
|
||||
* no revision is specified ""), definitely move the branch to the trunk
|
||||
* before locking the RCS file.
|
||||
*
|
||||
*
|
||||
* The assumption is that if there is more than one revision on the trunk,
|
||||
* the head points to the trunk, not a branch... and as such, it's not
|
||||
* necessary to move the head in this case.
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Create Administration.
|
||||
*
|
||||
*
|
||||
* Creates a CVS administration directory based on the argument repository; the
|
||||
* "Entries" file is prefilled from the "initrecord" argument.
|
||||
*/
|
||||
|
@ -46,7 +46,7 @@ char *alloca ();
|
||||
#if __GNUC__ == 2
|
||||
#define USE(var) static char sizeof##var = sizeof(sizeof##var) + sizeof(var);
|
||||
#else
|
||||
#define USE(var)
|
||||
#define USE(var)
|
||||
#endif
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ char *alloca ();
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
@ -111,10 +111,10 @@ extern int errno;
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Definitions for the CVS Administrative directory and the files it contains.
|
||||
* Here as #define's to make changing the names a simple task.
|
||||
*/
|
||||
@ -213,7 +213,7 @@ extern int errno;
|
||||
/*
|
||||
* If the beginning of the Repository matches the following string, strip it
|
||||
* so that the output to the logfile does not contain a full pathname.
|
||||
*
|
||||
*
|
||||
* If the CVSROOT environment variable is set, it overrides this define.
|
||||
*/
|
||||
#define REPOS_STRIP "/master/"
|
||||
@ -258,7 +258,7 @@ typedef enum classify_type Ctype;
|
||||
/*
|
||||
* a struct vers_ts contains all the information about a file including the
|
||||
* user and rcs file names, and the version checked out and the head.
|
||||
*
|
||||
*
|
||||
* this is usually obtained from a call to Version_TS which takes a tag argument
|
||||
* for the RCS file if desired
|
||||
*/
|
||||
@ -266,15 +266,15 @@ struct vers_ts
|
||||
{
|
||||
char *vn_user; /* rcs version user file derives from
|
||||
* it can have the following special
|
||||
* values:
|
||||
* empty = no user file
|
||||
* values:
|
||||
* empty = no user file
|
||||
* 0 = user file is new
|
||||
* -vers = user file to be removed */
|
||||
char *vn_rcs; /* the version for the rcs file
|
||||
* (tag version?) */
|
||||
char *ts_user; /* the timestamp for the user file */
|
||||
char *ts_rcs; /* the user timestamp from entries */
|
||||
char *options; /* opts from Entries file
|
||||
char *options; /* opts from Entries file
|
||||
* (keyword expansion) */
|
||||
char *ts_conflict; /* Holds time_stamp of conflict */
|
||||
char *tag; /* tag stored in the Entries file */
|
||||
|
@ -38,7 +38,7 @@ read_cvsrc (argc, argv)
|
||||
FILE *cvsrcfile;
|
||||
|
||||
char linebuf [MAXLINELEN];
|
||||
|
||||
|
||||
char *optstart;
|
||||
|
||||
int found = 0;
|
||||
@ -102,13 +102,13 @@ read_cvsrc (argc, argv)
|
||||
{
|
||||
/* skip over command in the options line */
|
||||
optstart = strtok(linebuf+strlen((*argv)[0]), "\t \n");
|
||||
|
||||
|
||||
do
|
||||
{
|
||||
new_argv [new_argc] = xstrdup (optstart);
|
||||
new_argv [new_argc+1] = NULL;
|
||||
new_argc += 1;
|
||||
|
||||
|
||||
if (new_argc >= max_new_argv)
|
||||
{
|
||||
char **tmp_argv;
|
||||
@ -119,13 +119,13 @@ read_cvsrc (argc, argv)
|
||||
free(new_argv);
|
||||
new_argv = tmp_argv;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
while (optstart = strtok (NULL, "\t \n"));
|
||||
}
|
||||
|
||||
/* now copy the remaining arguments */
|
||||
|
||||
|
||||
for (i=1; i < *argc; i++)
|
||||
{
|
||||
new_argv [new_argc] = (*argv)[i];
|
||||
|
@ -1,15 +1,15 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Difference
|
||||
*
|
||||
*
|
||||
* Run diff against versions in the repository. Options that are specified are
|
||||
* passed on directly to "rcsdiff".
|
||||
*
|
||||
*
|
||||
* Without any file arguments, runs diff against all the currently modified
|
||||
* files.
|
||||
*/
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Entries file to Files file
|
||||
*
|
||||
*
|
||||
* Creates the file Files containing the names that comprise the project, from
|
||||
* the Entries file.
|
||||
*/
|
||||
|
@ -1,17 +1,17 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Find Names
|
||||
*
|
||||
*
|
||||
* Finds all the pertinent file names, both from the administration and from the
|
||||
* repository
|
||||
*
|
||||
*
|
||||
* Find Dirs
|
||||
*
|
||||
*
|
||||
* Finds all pertinent sub-directories of the checked out instantiation and the
|
||||
* repository (and optionally the attic)
|
||||
*/
|
||||
@ -174,7 +174,7 @@ find_rcs (dir, list)
|
||||
/* read the dir, grabbing the ,v files */
|
||||
while ((dp = readdir (dirp)) != NULL)
|
||||
{
|
||||
if (fnmatch (RCSPAT, dp->d_name, 0) == 0)
|
||||
if (fnmatch (RCSPAT, dp->d_name, 0) == 0)
|
||||
{
|
||||
char *comma;
|
||||
|
||||
@ -221,7 +221,7 @@ find_dirs (dir, list, checkadm)
|
||||
continue;
|
||||
|
||||
#ifdef DT_DIR
|
||||
if (dp->d_type != DT_DIR)
|
||||
if (dp->d_type != DT_DIR)
|
||||
{
|
||||
if (dp->d_type != DT_UNKNOWN && dp->d_type != DT_LNK)
|
||||
continue;
|
||||
|
@ -485,7 +485,7 @@ history (argc, argv)
|
||||
#ifndef HAVE_RCS5
|
||||
error (0, 0, "-z not supported with RCS 4");
|
||||
#else
|
||||
tz_local =
|
||||
tz_local =
|
||||
(optarg[0] == 'l' || optarg[0] == 'L')
|
||||
&& (optarg[1] == 't' || optarg[1] == 'T')
|
||||
&& !optarg[2];
|
||||
|
@ -11,7 +11,7 @@ USE(rcsid)
|
||||
|
||||
/*
|
||||
* Ignore file section.
|
||||
*
|
||||
*
|
||||
* "!" may be included any time to reset the list (i.e. ignore nothing);
|
||||
* "*" may be specified to ignore everything. It stays as the first
|
||||
* element forever, unless a "!" clears it out.
|
||||
|
@ -1,13 +1,13 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* "import" checks in the vendor release located in the current directory into
|
||||
* the CVS source repository. The CVS vendor branch support is utilized.
|
||||
*
|
||||
*
|
||||
* At least three arguments are expected to follow the options:
|
||||
* repository Where the source belongs relative to the CVSROOT
|
||||
* VendorTag Vendor's major tag
|
||||
@ -180,7 +180,7 @@ import (argc, argv)
|
||||
if (use_editor)
|
||||
{
|
||||
do_editor ((char *) NULL, &message, repository,
|
||||
(List *) NULL);
|
||||
(List *) NULL);
|
||||
}
|
||||
|
||||
msglen = message == NULL ? 0 : strlen (message);
|
||||
@ -402,7 +402,7 @@ update_rcs_file (message, vfile, vtag, targc, targv, inattic)
|
||||
int retcode = 0;
|
||||
|
||||
tmpdir = getenv ("TMPDIR");
|
||||
if (tmpdir == NULL || tmpdir[0] == '\0')
|
||||
if (tmpdir == NULL || tmpdir[0] == '\0')
|
||||
tmpdir = "/tmp";
|
||||
|
||||
(void) sprintf (xtmpfile, "%s/cvs-imp%d", tmpdir, getpid());
|
||||
@ -412,7 +412,7 @@ update_rcs_file (message, vfile, vtag, targc, targv, inattic)
|
||||
* this revision with the import file; if they match exactly, there
|
||||
* is no need to install the new import file as a new revision to the
|
||||
* branch. Just tag the revision with the new import tags.
|
||||
*
|
||||
*
|
||||
* This is to try to cut down the number of "C" conflict messages for
|
||||
* locally modified import source files.
|
||||
*/
|
||||
@ -573,7 +573,7 @@ add_tags (rcs, vfile, vtag, targc, targv)
|
||||
if ((retcode = run_exec (RUN_TTY, RUN_TTY, RUN_TTY, RUN_NORMAL)) != 0)
|
||||
{
|
||||
ierrno = errno;
|
||||
fperror (logfp, 0, retcode == -1 ? ierrno : 0,
|
||||
fperror (logfp, 0, retcode == -1 ? ierrno : 0,
|
||||
"ERROR: Failed to set tag %s in %s", vtag, rcs);
|
||||
error (0, retcode == -1 ? ierrno : 0,
|
||||
"ERROR: Failed to set tag %s in %s", vtag, rcs);
|
||||
@ -588,7 +588,7 @@ add_tags (rcs, vfile, vtag, targc, targv)
|
||||
if ((retcode = run_exec (RUN_TTY, RUN_TTY, RUN_TTY, RUN_NORMAL)) != 0)
|
||||
{
|
||||
ierrno = errno;
|
||||
fperror (logfp, 0, retcode == -1 ? ierrno : 0,
|
||||
fperror (logfp, 0, retcode == -1 ? ierrno : 0,
|
||||
"WARNING: Couldn't add tag %s to %s", targv[i], rcs);
|
||||
error (0, retcode == -1 ? ierrno : 0,
|
||||
"WARNING: Couldn't add tag %s to %s", targv[i], rcs);
|
||||
@ -975,7 +975,7 @@ add_log (ch, fname)
|
||||
* This is the recursive function that walks the argument directory looking
|
||||
* for sub-directories that have CVS administration files in them and updates
|
||||
* them recursively.
|
||||
*
|
||||
*
|
||||
* Note that we do not follow symbolic links here, which is a feature!
|
||||
*/
|
||||
static int
|
||||
@ -1073,7 +1073,7 @@ strn2expmode(s, n)
|
||||
size_t n;
|
||||
{
|
||||
char const *const *p;
|
||||
|
||||
|
||||
for (p = expand_names; *p; ++p)
|
||||
if (memcmp(*p,s,n) == 0 && !(*p)[n])
|
||||
return p - expand_names;
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Set Lock
|
||||
*
|
||||
*
|
||||
* Lock file support for CVS.
|
||||
*/
|
||||
|
||||
@ -147,7 +147,7 @@ Reader_Lock (xrepository)
|
||||
}
|
||||
|
||||
if (readlock[0] == '\0')
|
||||
(void) sprintf (readlock,
|
||||
(void) sprintf (readlock,
|
||||
#ifdef HAVE_LONG_FILE_NAMES
|
||||
"%s.%s.%d", CVSRFL, hostname,
|
||||
#else
|
||||
@ -422,7 +422,7 @@ readers_exist (repository)
|
||||
{
|
||||
#ifdef CVS_FUDGELOCKS
|
||||
/*
|
||||
* If the create time of the file is more than CVSLCKAGE
|
||||
* If the create time of the file is more than CVSLCKAGE
|
||||
* seconds ago, try to clean-up the lock file, and if
|
||||
* successful, re-open the directory and try again.
|
||||
*/
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Print Log Information
|
||||
*
|
||||
*
|
||||
* Prints the RCS "log" (rlog) information for the specified files. With no
|
||||
* argument, prints the log information for all the files in the directory
|
||||
* (recursive by default).
|
||||
@ -100,7 +100,7 @@ log_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
if (p != NULL)
|
||||
{
|
||||
Entnode *e;
|
||||
|
||||
|
||||
e = (Entnode *) p->data;
|
||||
if (e->version[0] == '0' || e->version[1] == '\0')
|
||||
{
|
||||
@ -110,10 +110,10 @@ log_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!really_quiet)
|
||||
error (0, 0, "nothing known about %s", file);
|
||||
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*/
|
||||
@ -14,7 +14,7 @@ USE(rcsid)
|
||||
#endif
|
||||
|
||||
/* this is slightly dangerous, since it could conflict with other systems'
|
||||
* own prototype.
|
||||
* own prototype.
|
||||
*/
|
||||
#if 0
|
||||
/* Which is why I'll nuke this */
|
||||
@ -123,11 +123,11 @@ fmt_proc (p, closure)
|
||||
* Builds a temporary file using setup_tmpfile() and invokes the user's
|
||||
* editor on the file. The header garbage in the resultant file is then
|
||||
* stripped and the log message is stored in the "message" argument.
|
||||
*
|
||||
*
|
||||
* rcsinfo - is the name of a file containing lines tacked onto the end of the
|
||||
* RCS info offered to the user for editing. If specified, the '-m' flag to
|
||||
* "commit" is disabled -- users are forced to run the editor.
|
||||
*
|
||||
*
|
||||
*/
|
||||
void
|
||||
do_editor (dir, messagep, repository, changes)
|
||||
|
@ -51,7 +51,7 @@ open_module ()
|
||||
|
||||
if (CVSroot == NULL)
|
||||
{
|
||||
(void) fprintf (stderr,
|
||||
(void) fprintf (stderr,
|
||||
"%s: must set the CVSROOT environment variable\n",
|
||||
program_name);
|
||||
error (1, 0, "or specify the '-d' option to %s", program_name);
|
||||
|
@ -1,16 +1,16 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* No Difference
|
||||
*
|
||||
*
|
||||
* The user file looks modified judging from its time stamp; however it needn't
|
||||
* be. No_difference() finds out whether it is or not. If it is not, it
|
||||
* updates the administration.
|
||||
*
|
||||
*
|
||||
* returns 0 if no differences are found and non-zero otherwise
|
||||
*/
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* This file holds (most of) the configuration tweaks that can be made to
|
||||
* customize CVS for your site. CVS comes configured for a typical SunOS 4.x
|
||||
* environment. The comments for each configurable item are intended to be
|
||||
* self-explanatory. All #defines are tested first to see if an over-riding
|
||||
* option was specified on the "make" command line.
|
||||
*
|
||||
*
|
||||
* If special libraries are needed, you will have to edit the Makefile.in file
|
||||
* or the configure script directly. Sorry.
|
||||
*/
|
||||
@ -33,7 +33,7 @@
|
||||
* you should turn on the following define. It only exists to try to do
|
||||
* reasonable things with your existing checked out files when you upgrade to
|
||||
* RCS V5, since the keyword expansion formats have changed with RCS V5.
|
||||
*
|
||||
*
|
||||
* If you already have been running with RCS5, or haven't been running with CVS
|
||||
* yet at all, or are sticking with RCS V4 for now, leave the commented out.
|
||||
*/
|
||||
@ -56,7 +56,7 @@
|
||||
* must support the "-c" option for context diffing. Specify a full pathname
|
||||
* if your site wants to use a particular diff. If you are using the GNU
|
||||
* version of diff (version 1.15 or later), this should be "diff -a".
|
||||
*
|
||||
*
|
||||
* NOTE: this program is only used for the ``patch'' sub-command. The other
|
||||
* commands use rcsdiff which will use whatever version of diff was specified
|
||||
* when rcsdiff was built on your system.
|
||||
@ -100,7 +100,7 @@
|
||||
* this here will cause all RCS programs to be executed from this directory,
|
||||
* unless the user overrides the default with the RCSBIN environment variable
|
||||
* or the "-b" option to CVS.
|
||||
*
|
||||
*
|
||||
* This define should be either the empty string ("") or a full pathname to the
|
||||
* directory containing all the installed programs from the RCS distribution.
|
||||
*/
|
||||
@ -123,7 +123,7 @@
|
||||
* The Repository file holds the path to the directory within the source
|
||||
* repository that contains the RCS ,v files for each CVS working directory.
|
||||
* This path is either a full-path or a path relative to CVSROOT.
|
||||
*
|
||||
*
|
||||
* The only advantage that I can see to having a relative path is that One can
|
||||
* change the physical location of the master source repository, change one's
|
||||
* CVSROOT environment variable, and CVS will work without problems. I
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*/
|
||||
@ -15,7 +15,7 @@ USE(rcsid)
|
||||
|
||||
/*
|
||||
* Parse the INFOFILE file for the specified REPOSITORY. Invoke CALLPROC for
|
||||
* each line in the file that matches the REPOSITORY.
|
||||
* each line in the file that matches the REPOSITORY.
|
||||
* Return 0 for success, -1 if there was not an INFOFILE, and >0 for failure.
|
||||
*/
|
||||
int
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Patch
|
||||
*
|
||||
*
|
||||
* Create a Larry Wall format "patch" file between a previous release and the
|
||||
* current head of a module, or between two releases. Can specify the
|
||||
* release as either a date or a revision number.
|
||||
|
@ -1,9 +1,9 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* The routines contained in this file do all the rcs file parsing and
|
||||
* manipulation
|
||||
*/
|
||||
@ -113,7 +113,7 @@ RCS_addnode (file, rcs, list)
|
||||
List *list;
|
||||
{
|
||||
Node *p;
|
||||
|
||||
|
||||
p = getnode ();
|
||||
p->key = xstrdup (file);
|
||||
p->delproc = rcsnode_delproc;
|
||||
@ -136,10 +136,10 @@ RCS_parse (file, repos)
|
||||
char rcsfile[PATH_MAX];
|
||||
|
||||
(void) sprintf (rcsfile, "%s/%s%s", repos, file, RCSEXT);
|
||||
if ((fp = fopen (rcsfile, "r")) != NULL)
|
||||
if ((fp = fopen (rcsfile, "r")) != NULL)
|
||||
{
|
||||
rcs = RCS_parsercsfile_i(fp, rcsfile);
|
||||
if (rcs != NULL)
|
||||
if (rcs != NULL)
|
||||
rcs->flags |= VALID;
|
||||
|
||||
fclose (fp);
|
||||
@ -147,7 +147,7 @@ RCS_parse (file, repos)
|
||||
}
|
||||
|
||||
(void) sprintf (rcsfile, "%s/%s/%s%s", repos, CVSATTIC, file, RCSEXT);
|
||||
if ((fp = fopen (rcsfile, "r")) != NULL)
|
||||
if ((fp = fopen (rcsfile, "r")) != NULL)
|
||||
{
|
||||
rcs = RCS_parsercsfile_i(fp, rcsfile);
|
||||
if (rcs != NULL)
|
||||
@ -429,16 +429,16 @@ null_delproc (p)
|
||||
|
||||
/*
|
||||
* getrcskey - fill in the key and value from the rcs file the algorithm is
|
||||
* as follows
|
||||
* as follows
|
||||
*
|
||||
* o skip whitespace o fill in key with everything up to next white
|
||||
* space or semicolon
|
||||
* o if key == "desc" then key and data are NULL and return -1
|
||||
* o if key wasn't terminated by a semicolon, skip white space and fill
|
||||
* o skip whitespace o fill in key with everything up to next white
|
||||
* space or semicolon
|
||||
* o if key == "desc" then key and data are NULL and return -1
|
||||
* o if key wasn't terminated by a semicolon, skip white space and fill
|
||||
* in value with everything up to a semicolon o compress all whitespace
|
||||
* down to a single space
|
||||
* down to a single space
|
||||
* o if a word starts with @, do funky rcs processing
|
||||
* o strip whitespace off end of value or set value to NULL if it empty
|
||||
* o strip whitespace off end of value or set value to NULL if it empty
|
||||
* o return 0 since we found something besides "desc"
|
||||
*/
|
||||
|
||||
@ -739,10 +739,10 @@ do_branches (list, val)
|
||||
|
||||
/*
|
||||
* Version Number
|
||||
*
|
||||
*
|
||||
* Returns the requested version number of the RCS file, satisfying tags and/or
|
||||
* dates, and walking branches, if necessary.
|
||||
*
|
||||
*
|
||||
* The result is returned; null-string if error.
|
||||
*/
|
||||
char *
|
||||
@ -788,7 +788,7 @@ RCS_getversion (rcs, tag, date, force_tag_match)
|
||||
* If force_tag_match is set, return NULL if an exact match is not
|
||||
* possible otherwise return RCS_head (). We are careful to look for
|
||||
* and handle "magic" revisions specially.
|
||||
*
|
||||
*
|
||||
* If the matched tag is a branch tag, find the head of the branch.
|
||||
*/
|
||||
char *
|
||||
@ -1410,7 +1410,7 @@ RCS_datecmp (date1, date2)
|
||||
* Lookup the specified revision in the ,v file and return, in the date
|
||||
* argument, the date specified for the revision *minus one second*, so that
|
||||
* the logically previous revision will be found later.
|
||||
*
|
||||
*
|
||||
* Returns zero on failure, RCS revision time as a Unix "time_t" on success.
|
||||
*/
|
||||
time_t
|
||||
|
@ -3,10 +3,10 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* RCS source control definitions needed by rcs.c and friends
|
||||
*/
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* General recursion handler
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include "cvs.h"
|
||||
@ -145,7 +145,7 @@ start_recursion (fileproc, filesdoneproc, direntproc, dirleaveproc,
|
||||
* other possibility is named entities whicha are not currently in
|
||||
* the working directory.
|
||||
*/
|
||||
|
||||
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
/* if this argument is a directory, then add it to the list of
|
||||
@ -197,7 +197,7 @@ start_recursion (fileproc, filesdoneproc, direntproc, dirleaveproc,
|
||||
/* otherwise, look for it in the repository. */
|
||||
char *save_update_dir;
|
||||
char *repos;
|
||||
|
||||
|
||||
/* save & set (aka push) update_dir */
|
||||
save_update_dir = xstrdup (update_dir);
|
||||
|
||||
@ -205,11 +205,11 @@ start_recursion (fileproc, filesdoneproc, direntproc, dirleaveproc,
|
||||
(void) strcat (update_dir, "/");
|
||||
|
||||
(void) strcat (update_dir, dir);
|
||||
|
||||
|
||||
/* look for it in the repository. */
|
||||
repos = Name_Repository (dir, update_dir);
|
||||
(void) sprintf (tmp, "%s/%s", repos, comp);
|
||||
|
||||
|
||||
if (isdir(tmp))
|
||||
addlist (&dirlist, argv[i]);
|
||||
else
|
||||
|
@ -1,10 +1,10 @@
|
||||
/*
|
||||
* Release: "cancel" a checkout in the history log.
|
||||
*
|
||||
*
|
||||
* - Don't allow release if anything is active - Don't allow release if not
|
||||
* above or inside repository. - Don't allow release if ./CVS/Repository is
|
||||
* not the same as the directory specified in the module database.
|
||||
*
|
||||
*
|
||||
* - Enter a line in the history log indicating the "release". - If asked to,
|
||||
* delete the local working directory.
|
||||
*/
|
||||
@ -215,6 +215,6 @@ release_delete (dir)
|
||||
run_setup ("%s -fr", RM);
|
||||
run_arg (dir);
|
||||
if ((retcode = run_exec (RUN_TTY, RUN_TTY, RUN_TTY, RUN_NORMAL)) != 0)
|
||||
error (0, retcode == -1 ? errno : 0,
|
||||
error (0, retcode == -1 ? errno : 0,
|
||||
"deletion of module %s failed.", dir);
|
||||
}
|
||||
|
@ -1,15 +1,15 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Remove a File
|
||||
*
|
||||
*
|
||||
* Removes entries from the present version. The entries will be removed from
|
||||
* the RCS repository upon the next "commit".
|
||||
*
|
||||
*
|
||||
* "remove" accepts no options, only file names that are to be removed. The
|
||||
* file must not exist in the current directory for "remove" to work
|
||||
* correctly.
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Name of Repository
|
||||
*
|
||||
*
|
||||
* Determine the name of the RCS repository and sets "Repository" accordingly.
|
||||
*/
|
||||
|
||||
|
@ -3,12 +3,12 @@
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Name of Root
|
||||
*
|
||||
*
|
||||
* Determine the path to the CVSROOT and set "Root" accordingly.
|
||||
* If this looks like of modified clone of Name_Repository() in
|
||||
* repos.c, it is...
|
||||
* repos.c, it is...
|
||||
*/
|
||||
|
||||
#include "cvs.h"
|
||||
@ -131,7 +131,7 @@ same_directories (dir1, dir2)
|
||||
return (0);
|
||||
if (stat (dir2, &sb2) < 0)
|
||||
return (0);
|
||||
|
||||
|
||||
ret = 0;
|
||||
if ( (memcmp( &sb1.st_dev, &sb2.st_dev, sizeof(dev_t) ) == 0) &&
|
||||
(memcmp( &sb1.st_ino, &sb2.st_ino, sizeof(ino_t) ) == 0))
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Rtag
|
||||
*
|
||||
*
|
||||
* Add or delete a symbolic name to an RCS file, or a collection of RCS files.
|
||||
* Uses the modules database, if necessary.
|
||||
*/
|
||||
@ -50,7 +50,7 @@ static char *rtag_usage[] =
|
||||
"\t-d\tDelete the given Tag.\n",
|
||||
"\t-b\tMake the tag a \"branch\" tag, allowing concurrent development.\n",
|
||||
"\t-[rD]\tExisting tag or Date.\n",
|
||||
"\t-F\tMove tag if it already exists\n",
|
||||
"\t-F\tMove tag if it already exists\n",
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -135,7 +135,7 @@ rtag (argc, argv)
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
/* XXX last arg should be repository, but doesn't make sense here */
|
||||
history_write ('T', (delete ? "D" : (numtag ? numtag :
|
||||
history_write ('T', (delete ? "D" : (numtag ? numtag :
|
||||
(date ? date : "A"))), symtag, argv[i], "");
|
||||
err += do_module (db, argv[i], TAG, delete ? "Untagging" : "Tagging",
|
||||
rtag_proc, (char *) NULL, 0, 0, run_module_prog,
|
||||
@ -304,7 +304,7 @@ rtag_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
else
|
||||
{
|
||||
char *oversion;
|
||||
|
||||
|
||||
/*
|
||||
* As an enhancement for the case where a tag is being re-applied to
|
||||
* a large body of a module, make one extra call to Version_Number to
|
||||
@ -330,16 +330,16 @@ rtag_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
free (version);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
if (!force_tag_move) { /* we're NOT going to move the tag */
|
||||
if (update_dir[0])
|
||||
(void) printf ("W %s/%s", update_dir, file);
|
||||
else
|
||||
(void) printf ("W %s", file);
|
||||
|
||||
(void) printf (" : %s already exists on %s %s",
|
||||
|
||||
(void) printf (" : %s already exists on %s %s",
|
||||
symtag, isbranch ? "branch" : "version", oversion);
|
||||
(void) printf (" : NOT MOVING tag to %s %s\n",
|
||||
(void) printf (" : NOT MOVING tag to %s %s\n",
|
||||
branch_mode ? "branch" : "version", rev);
|
||||
free (oversion);
|
||||
free (version);
|
||||
@ -366,10 +366,10 @@ rtag_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
* If -d is specified, "force_tag_match" is set, so that this call to
|
||||
* Version_Number() will return a NULL version string if the symbolic
|
||||
* tag does not exist in the RCS file.
|
||||
*
|
||||
*
|
||||
* If the -r flag was used, numtag is set, and we only delete the
|
||||
* symtag from files that have numtag.
|
||||
*
|
||||
*
|
||||
* This is done here because it's MUCH faster than just blindly calling
|
||||
* "rcs" to remove the tag... trust me.
|
||||
*/
|
||||
|
@ -1,10 +1,10 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Status Information
|
||||
*/
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Tag
|
||||
*
|
||||
*
|
||||
* Add or delete a symbolic name to an RCS file, or a collection of RCS files.
|
||||
* Uses the checked out revision in the current directory.
|
||||
*/
|
||||
@ -133,7 +133,7 @@ tag_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
* If -d is specified, "force_tag_match" is set, so that this call to
|
||||
* Version_Number() will return a NULL version string if the symbolic
|
||||
* tag does not exist in the RCS file.
|
||||
*
|
||||
*
|
||||
* This is done here because it's MUCH faster than just blindly calling
|
||||
* "rcs" to remove the tag... trust me.
|
||||
*/
|
||||
@ -218,7 +218,7 @@ tag_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
int isbranch = RCS_isbranch (file, symtag, srcfiles);
|
||||
|
||||
/*
|
||||
* if versions the same and neither old or new are branches don't have
|
||||
* if versions the same and neither old or new are branches don't have
|
||||
* to do anything
|
||||
*/
|
||||
if (strcmp (version, oversion) == 0 && !branch_mode && !isbranch)
|
||||
@ -227,16 +227,16 @@ tag_fileproc (file, update_dir, repository, entries, srcfiles)
|
||||
freevers_ts (&vers);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
if (!force_tag_move) { /* we're NOT going to move the tag */
|
||||
if (update_dir[0])
|
||||
(void) printf ("W %s/%s", update_dir, file);
|
||||
else
|
||||
(void) printf ("W %s", file);
|
||||
|
||||
(void) printf (" : %s already exists on %s %s",
|
||||
(void) printf (" : %s already exists on %s %s",
|
||||
symtag, isbranch ? "branch" : "version", oversion);
|
||||
(void) printf (" : NOT MOVING tag to %s %s\n",
|
||||
(void) printf (" : NOT MOVING tag to %s %s\n",
|
||||
branch_mode ? "branch" : "version", rev);
|
||||
free (oversion);
|
||||
freevers_ts (&vers);
|
||||
|
@ -1,32 +1,32 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* "update" updates the version in the present directory with respect to the RCS
|
||||
* repository. The present version must have been created by "checkout". The
|
||||
* user can keep up-to-date by calling "update" whenever he feels like it.
|
||||
*
|
||||
*
|
||||
* The present version can be committed by "commit", but this keeps the version
|
||||
* in tact.
|
||||
*
|
||||
*
|
||||
* Arguments following the options are taken to be file names to be updated,
|
||||
* rather than updating the entire directory.
|
||||
*
|
||||
*
|
||||
* Modified or non-existent RCS files are checked out and reported as U
|
||||
* <user_file>
|
||||
*
|
||||
*
|
||||
* Modified user files are reported as M <user_file>. If both the RCS file and
|
||||
* the user file have been modified, the user file is replaced by the result
|
||||
* of rcsmerge, and a backup file is written for the user in .#file.version.
|
||||
* If this throws up irreconcilable differences, the file is reported as C
|
||||
* <user_file>, and as M <user_file> otherwise.
|
||||
*
|
||||
*
|
||||
* Files added but not yet committed are reported as A <user_file>. Files
|
||||
* removed but not yet committed are reported as R <user_file>.
|
||||
*
|
||||
*
|
||||
* If the current directory contains subdirectories that hold concurrent
|
||||
* versions, these are updated too. If the -d option was specified, new
|
||||
* directories added to the repository are automatically created and updated
|
||||
@ -287,7 +287,7 @@ do_update (argc, argv, xoptions, xtag, xdate, xforce, local, xbuild, xaflag,
|
||||
* set to the path relative to where we started (for pretty printing).
|
||||
* repository is the repository. entries and srcfiles are the pre-parsed
|
||||
* entries and source control files.
|
||||
*
|
||||
*
|
||||
* This routine decides what needs to be done for each file and does the
|
||||
* appropriate magic for checkout
|
||||
*/
|
||||
@ -311,7 +311,7 @@ update_file_proc (file, update_dir, repository, entries, srcfiles)
|
||||
/*
|
||||
* We just return success without doing anything if any of the really
|
||||
* funky cases occur
|
||||
*
|
||||
*
|
||||
* If there is still a valid RCS file, do a regular checkout type
|
||||
* operation
|
||||
*/
|
||||
@ -1021,7 +1021,7 @@ join_file (file, srcfiles, vers, update_dir, entries)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* skip joining identical revs or if the file is not present */
|
||||
if (vers->vn_user == NULL ||
|
||||
strcmp (rev2, vers->vn_user) == 0) /* no merge necessary */
|
||||
@ -1036,7 +1036,7 @@ join_file (file, srcfiles, vers, update_dir, entries)
|
||||
/* if the first rev is missing, then it is implied to be the
|
||||
greatest common ancestor of both the join rev, and the
|
||||
checked out rev. */
|
||||
|
||||
|
||||
tst = vers->vn_user;
|
||||
if (*tst == '!')
|
||||
{
|
||||
@ -1108,7 +1108,7 @@ join_file (file, srcfiles, vers, update_dir, entries)
|
||||
"cannot find revision %s in file %s", join_rev2, file);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
baserev = RCS_getversion (vers->srcfile, join_rev1, date_rev1, 1);
|
||||
if (baserev == NULL)
|
||||
{
|
||||
@ -1118,7 +1118,7 @@ join_file (file, srcfiles, vers, update_dir, entries)
|
||||
free (rev);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nothing to do if:
|
||||
* second revision matches our BASE revision (vn_user) &&
|
||||
@ -1130,7 +1130,7 @@ join_file (file, srcfiles, vers, update_dir, entries)
|
||||
/* might be the same branch. take a real look */
|
||||
char *dot = strrchr (baserev, '.');
|
||||
int len = (dot - baserev) + 1;
|
||||
|
||||
|
||||
if (strncmp (baserev, rev, len) == 0)
|
||||
return;
|
||||
}
|
||||
@ -1145,12 +1145,12 @@ join_file (file, srcfiles, vers, update_dir, entries)
|
||||
free (rev);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
baserev = RCS_whatbranch (file, join_rev1, srcfiles);
|
||||
if (baserev)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
|
||||
/* we get a branch -- turn it into a revision, or NULL if trunk */
|
||||
if ((cp = strrchr (baserev, '.')) == NULL)
|
||||
{
|
||||
@ -1172,7 +1172,7 @@ join_file (file, srcfiles, vers, update_dir, entries)
|
||||
#endif
|
||||
|
||||
/* OK, so we have two revisions; continue on */
|
||||
|
||||
|
||||
/*
|
||||
* The users currently modified file is moved to a backup file name
|
||||
* ".#filename.version", so that it will stay around for a few days
|
||||
@ -1273,7 +1273,7 @@ ignore_files (ilist, update_dir)
|
||||
#ifdef DT_DIR
|
||||
dp->d_type != DT_UNKNOWN ||
|
||||
#endif
|
||||
lstat(file, &sb) != -1)
|
||||
lstat(file, &sb) != -1)
|
||||
{
|
||||
|
||||
if (
|
||||
@ -1291,7 +1291,7 @@ ignore_files (ilist, update_dir)
|
||||
#ifdef S_ISLNK
|
||||
else if (
|
||||
#ifdef DT_DIR
|
||||
dp->d_type == DT_LNK || dp->d_type == DT_UNKNOWN &&
|
||||
dp->d_type == DT_LNK || dp->d_type == DT_UNKNOWN &&
|
||||
#endif
|
||||
S_ISLNK(sb.st_mode))
|
||||
{
|
||||
@ -1299,7 +1299,7 @@ ignore_files (ilist, update_dir)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
if (ign_name (file))
|
||||
continue;
|
||||
(void) write_letter (file, '?', xdir);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*/
|
||||
@ -145,7 +145,7 @@ Version_TS (repository, options, tag, date, user, force_tag_match,
|
||||
else
|
||||
vers_ts->vn_rcs = RCS_getversion (rcsdata, vers_ts->tag,
|
||||
vers_ts->date, force_tag_match);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If the source control file exists and has the requested revision,
|
||||
|
@ -1,4 +1,4 @@
|
||||
#! /bin/sh -x
|
||||
#! /bin/sh
|
||||
:
|
||||
#
|
||||
# Copyright (c) 1992, Brian Berliner
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
This implementation of the PWB library alloca() function,
|
||||
which is used to allocate space off the run-time stack so
|
||||
that it is automatically reclaimed upon procedure exit,
|
||||
that it is automatically reclaimed upon procedure exit,
|
||||
was inspired by discussions with J. Q. Johnson of Cornell.
|
||||
|
||||
It should work under any C implementation that uses an
|
||||
|
@ -42,9 +42,9 @@ argmatch (arg, optlist)
|
||||
int arglen; /* Length of ARG. */
|
||||
int matchind = -1; /* Index of first nonexact match. */
|
||||
int ambiguous = 0; /* If nonzero, multiple nonexact match(es). */
|
||||
|
||||
|
||||
arglen = strlen (arg);
|
||||
|
||||
|
||||
/* Test all elements for either exact match or abbreviated matches. */
|
||||
for (i = 0; optlist[i]; i++)
|
||||
{
|
||||
|
@ -66,27 +66,27 @@ fnmatch (pattern, string, flags)
|
||||
(n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
|
||||
return FNM_NOMATCH;
|
||||
break;
|
||||
|
||||
|
||||
case '\\':
|
||||
if (!(flags & FNM_NOESCAPE))
|
||||
c = *p++;
|
||||
if (*n != c)
|
||||
return FNM_NOMATCH;
|
||||
break;
|
||||
|
||||
|
||||
case '*':
|
||||
if ((flags & FNM_PERIOD) && *n == '.' &&
|
||||
(n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
|
||||
return FNM_NOMATCH;
|
||||
|
||||
|
||||
for (c = *p++; c == '?' || c == '*'; c = *p++, ++n)
|
||||
if (((flags & FNM_PATHNAME) && *n == '/') ||
|
||||
(c == '?' && *n == '\0'))
|
||||
return FNM_NOMATCH;
|
||||
|
||||
|
||||
if (c == '\0')
|
||||
return 0;
|
||||
|
||||
|
||||
{
|
||||
char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c;
|
||||
for (--p; *n != '\0'; ++n)
|
||||
@ -95,41 +95,41 @@ fnmatch (pattern, string, flags)
|
||||
return 0;
|
||||
return FNM_NOMATCH;
|
||||
}
|
||||
|
||||
|
||||
case '[':
|
||||
{
|
||||
/* Nonzero if the sense of the character class is inverted. */
|
||||
register int not;
|
||||
|
||||
|
||||
if (*n == '\0')
|
||||
return FNM_NOMATCH;
|
||||
|
||||
|
||||
if ((flags & FNM_PERIOD) && *n == '.' &&
|
||||
(n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
|
||||
return FNM_NOMATCH;
|
||||
|
||||
|
||||
not = (*p == '!' || *p == '^');
|
||||
if (not)
|
||||
++p;
|
||||
|
||||
|
||||
c = *p++;
|
||||
for (;;)
|
||||
{
|
||||
register char cstart = c, cend = c;
|
||||
|
||||
|
||||
if (!(flags & FNM_NOESCAPE) && c == '\\')
|
||||
cstart = cend = *p++;
|
||||
|
||||
|
||||
if (c == '\0')
|
||||
/* [ (unterminated) loses. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
|
||||
c = *p++;
|
||||
|
||||
|
||||
if ((flags & FNM_PATHNAME) && c == '/')
|
||||
/* [/] can never match. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
|
||||
if (c == '-' && *p != ']')
|
||||
{
|
||||
cend = *p++;
|
||||
@ -139,17 +139,17 @@ fnmatch (pattern, string, flags)
|
||||
return FNM_NOMATCH;
|
||||
c = *p++;
|
||||
}
|
||||
|
||||
|
||||
if (*n >= cstart && *n <= cend)
|
||||
goto matched;
|
||||
|
||||
|
||||
if (c == ']')
|
||||
break;
|
||||
}
|
||||
if (!not)
|
||||
return FNM_NOMATCH;
|
||||
break;
|
||||
|
||||
|
||||
matched:;
|
||||
/* Skip the rest of the [...] that already matched. */
|
||||
while (c != ']')
|
||||
@ -157,7 +157,7 @@ fnmatch (pattern, string, flags)
|
||||
if (c == '\0')
|
||||
/* [... (unterminated) loses. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
|
||||
c = *p++;
|
||||
if (!(flags & FNM_NOESCAPE) && c == '\\')
|
||||
/* 1003.2d11 is unclear if this is right. %%% */
|
||||
@ -167,12 +167,12 @@ fnmatch (pattern, string, flags)
|
||||
return FNM_NOMATCH;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
if (c != *n)
|
||||
return FNM_NOMATCH;
|
||||
}
|
||||
|
||||
|
||||
++n;
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Polk's hash list manager. So cool.
|
||||
*/
|
||||
|
||||
@ -203,7 +203,7 @@ freenode (p)
|
||||
/*
|
||||
* insert item p at end of list "list" (maybe hash it too) if hashing and it
|
||||
* already exists, return -1 and don't actually put it in the list
|
||||
*
|
||||
*
|
||||
* return 0 on success
|
||||
*/
|
||||
int
|
||||
@ -392,7 +392,7 @@ printlist (list)
|
||||
|
||||
(void) printf("List at 0x%p: list = 0x%p, HASHSIZE = %d, next = 0x%p\n",
|
||||
list, list->list, HASHSIZE, list->next);
|
||||
|
||||
|
||||
(void) walklist(list, printnode, NULL);
|
||||
|
||||
return;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*/
|
||||
|
@ -1,13 +1,13 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* A simple ndbm-emulator for CVS. It parses a text file of the format:
|
||||
*
|
||||
*
|
||||
* key value
|
||||
*
|
||||
*
|
||||
* at dbm_open time, and loads the entire file into memory. As such, it is
|
||||
* probably only good for fairly small modules files. Ours is about 30K in
|
||||
* size, and this code works fine.
|
||||
|
@ -661,7 +661,7 @@ strerror (errnoval)
|
||||
/* In range, and a valid message. Just return the message. */
|
||||
msg = sys_errlist[errnoval];
|
||||
}
|
||||
|
||||
|
||||
return (msg);
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* Various useful functions for the CVS support code.
|
||||
*/
|
||||
|
||||
@ -394,7 +394,7 @@ unlink_file (f)
|
||||
|
||||
/*
|
||||
* Compare "file1" to "file2". Return non-zero if they don't compare exactly.
|
||||
*
|
||||
*
|
||||
* mallocs a buffer large enough to hold the entire file and does two reads to
|
||||
* load the buffer and calls memcmp to do the cmp. This is reasonable, since
|
||||
* source files are typically not too large.
|
||||
@ -535,10 +535,10 @@ getcaller ()
|
||||
* arguments. The options to run_setup are essentially like printf(). The
|
||||
* arguments will be parsed into whitespace separated words and added to the
|
||||
* global run_argv list.
|
||||
*
|
||||
*
|
||||
* Then, optionally call run_arg() for each additional argument that you'd like
|
||||
* to pass to the executed program.
|
||||
*
|
||||
*
|
||||
* Finally, call run_exec() to execute the program with the specified arguments.
|
||||
* The execvp() syscall will be used, so that the PATH is searched correctly.
|
||||
* File redirections can be performed in the call to run_exec().
|
||||
@ -550,10 +550,10 @@ static int run_argc_allocated;
|
||||
|
||||
/* VARARGS */
|
||||
#if defined (HAVE_VPRINTF) && (defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__))
|
||||
void
|
||||
void
|
||||
run_setup (char *fmt,...)
|
||||
#else
|
||||
void
|
||||
void
|
||||
run_setup (fmt, va_alist)
|
||||
char *fmt;
|
||||
va_dcl
|
||||
@ -603,10 +603,10 @@ run_arg (s)
|
||||
|
||||
/* VARARGS */
|
||||
#if defined (HAVE_VPRINTF) && (defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__))
|
||||
void
|
||||
void
|
||||
run_args (char *fmt,...)
|
||||
#else
|
||||
void
|
||||
void
|
||||
run_args (fmt, va_alist)
|
||||
char *fmt;
|
||||
va_dcl
|
||||
@ -950,7 +950,7 @@ gca (rev1, rev2)
|
||||
int i;
|
||||
char c[2];
|
||||
char *s[2];
|
||||
|
||||
|
||||
for (i = 0; i < 2; ++i)
|
||||
{
|
||||
/* swap out the dot */
|
||||
@ -958,10 +958,10 @@ gca (rev1, rev2)
|
||||
if (s[i] != NULL) {
|
||||
c[i] = *s[i];
|
||||
}
|
||||
|
||||
|
||||
/* read an int */
|
||||
j[i] = atoi (p[i]);
|
||||
|
||||
|
||||
/* swap back the dot... */
|
||||
if (s[i] != NULL) {
|
||||
*s[i] = c[i];
|
||||
@ -972,9 +972,9 @@ gca (rev1, rev2)
|
||||
/* or mark us at the end */
|
||||
p[i] = NULL;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* use the lowest. */
|
||||
(void) sprintf (gca + strlen (gca), "%d.",
|
||||
j[0] < j[1] ? j[0] : j[1]);
|
||||
@ -1009,11 +1009,11 @@ gca (rev1, rev2)
|
||||
{
|
||||
/* we have a minor number. use it. */
|
||||
q = gca + strlen (gca);
|
||||
|
||||
|
||||
*q++ = '.';
|
||||
for ( ; *s != '.' && *s != '\0'; )
|
||||
*q++ = *s++;
|
||||
|
||||
|
||||
*q = '\0';
|
||||
}
|
||||
}
|
||||
@ -1021,7 +1021,7 @@ gca (rev1, rev2)
|
||||
{
|
||||
/* if we have an even number of dots, then we have a branch.
|
||||
remove the last number in order to make it a revision. */
|
||||
|
||||
|
||||
char *s;
|
||||
|
||||
s = strrchr(gca, '.');
|
||||
|
@ -97,7 +97,7 @@ extern long timezone;
|
||||
** On most systems MAXPATHLEN is defined in sys/param.h to be 1024. Of
|
||||
** those that this is not true, again most define PATH_MAX in limits.h
|
||||
** or sys/limits.h which usually gets included by limits.h. On the few
|
||||
** remaining systems that neither statement is true, _POSIX_PATH_MAX
|
||||
** remaining systems that neither statement is true, _POSIX_PATH_MAX
|
||||
** is defined.
|
||||
**
|
||||
** So:
|
||||
@ -125,7 +125,7 @@ extern long timezone;
|
||||
/* On MOST systems this will get you MAXPATHLEN */
|
||||
#include <sys/param.h>
|
||||
|
||||
#ifndef PATH_MAX
|
||||
#ifndef PATH_MAX
|
||||
# ifdef MAXPATHLEN
|
||||
# define PATH_MAX MAXPATHLEN
|
||||
# else
|
||||
@ -232,10 +232,10 @@ char *getwd ();
|
||||
#endif
|
||||
#ifdef HAVE_SYS_DIR_H
|
||||
#include <sys/dir.h>
|
||||
#endif
|
||||
#endif
|
||||
#ifdef HAVE_NDIR_H
|
||||
#include <ndir.h>
|
||||
#endif
|
||||
#endif
|
||||
#endif /* not (DIRENT or _POSIX_VERSION) */
|
||||
|
||||
/* Convert B 512-byte blocks to kilobytes if K is nonzero,
|
||||
|
@ -3,10 +3,10 @@
|
||||
* Copyright (c) 1994 Free Software Foundation, Inc.
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with this CVS source distribution.
|
||||
*
|
||||
*
|
||||
* version.c - the CVS version number
|
||||
*/
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 1992, Brian Berliner and Jeff Polk
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS 1.4 kit.
|
||||
*
|
||||
*
|
||||
* mkmodules
|
||||
*
|
||||
*
|
||||
* Re-build the modules database for the CVS system. Accepts one argument,
|
||||
* which is the directory that the modules,v file lives in.
|
||||
*/
|
||||
@ -56,7 +56,7 @@ main (argc, argv)
|
||||
char *filename;
|
||||
char *errormsg;
|
||||
} *fileptr, filelist[] = {
|
||||
{CVSROOTADM_LOGINFO,
|
||||
{CVSROOTADM_LOGINFO,
|
||||
"no logging of 'cvs commit' messages is done without a %s file"},
|
||||
{CVSROOTADM_RCSINFO,
|
||||
"a %s file can be used to configure 'cvs commit' templates"},
|
||||
@ -381,7 +381,7 @@ rename_rcsfile (temp, real)
|
||||
char bak[50];
|
||||
struct stat statbuf;
|
||||
char rcs[PATH_MAX];
|
||||
|
||||
|
||||
/* Set "x" bits if set in original. */
|
||||
(void) sprintf (rcs, "%s%s", real, RCSEXT);
|
||||
statbuf.st_mode = 0; /* in case rcs file doesn't exist, but it should... */
|
||||
|
Loading…
Reference in New Issue
Block a user