mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-02 19:22:47 +00:00
Support the environtmental var "CVS_OPTIONS". Which can hold a set of
default options for cvs. These options are interpreted first and can be overwritten by explicit command line parameters. Obtained from: GNU Grep 2.3
This commit is contained in:
parent
6af65c6902
commit
eaf4925a25
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=54107
@ -233,7 +233,10 @@ environment variable is set.
|
||||
.B \-R
|
||||
Turns on read-only repository mode. This allows one to check out from a
|
||||
read-only repository, such as within an anoncvs server, or from a CDROM
|
||||
repository. Using
|
||||
repository.
|
||||
Same effect as if the
|
||||
.SM CVSREADONLYFS
|
||||
environment variable is set. Using
|
||||
.B \-R
|
||||
can also considerably speed up checkout's over NFS.
|
||||
.TP
|
||||
@ -2047,6 +2050,13 @@ will try hard to make the files in your working directory read-only.
|
||||
When this is not set, the default behavior is to permit modification
|
||||
of your working files.
|
||||
.TP
|
||||
.SM CVSREADONLYFS
|
||||
If this is set, the
|
||||
.B \-R
|
||||
option is assumed, and
|
||||
.B cvs
|
||||
operates in read-only repository mode.
|
||||
.TP
|
||||
.SM RCSBIN
|
||||
Specifies the full pathname where to find
|
||||
.SM RCS
|
||||
@ -2072,6 +2082,12 @@ If this variable is set then
|
||||
.B cvs
|
||||
will ignore all references to remote repositories in the CVS/Root file.
|
||||
.TP
|
||||
.SM CVS_OPTIONS
|
||||
Specifies a set of default options for
|
||||
.B cvs.
|
||||
These options are interpreted before the startup file (\fI~/.cvsrc\fP) is read
|
||||
and can be overridden by explicit command line parameters.
|
||||
.TP
|
||||
.SM CVS_RSH
|
||||
.B cvs
|
||||
uses the contents of this variable to determine the name of the
|
||||
|
@ -12,7 +12,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* $FreeBSD$ */
|
||||
|
||||
#include "cvs.h"
|
||||
#include "prepend_args.h"
|
||||
|
||||
#ifdef HAVE_WINSOCK_H
|
||||
#include <winsock.h>
|
||||
@ -465,6 +468,8 @@ main (argc, argv)
|
||||
logoff = 1;
|
||||
}
|
||||
|
||||
prepend_default_options (getenv ("CVS_OPTIONS"), &argc, &argv);
|
||||
|
||||
/* Set this to 0 to force getopt initialization. getopt() sets
|
||||
this to 1 internally. */
|
||||
optind = 0;
|
||||
|
87
contrib/cvs/src/prepend_args.c
Normal file
87
contrib/cvs/src/prepend_args.c
Normal file
@ -0,0 +1,87 @@
|
||||
/* prepend_args.c - utilility programs for manpiulating argv[]
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
/* $FreeBSD$ */
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
#include "cvs.h"
|
||||
#include "../diff/system.h"
|
||||
#include "prepend_args.h"
|
||||
|
||||
|
||||
/* Find the white-space-separated options specified by OPTIONS, and
|
||||
using BUF to store copies of these options, set ARGV[0], ARGV[1],
|
||||
etc. to the option copies. Return the number N of options found.
|
||||
Do not set ARGV[N] to NULL. If ARGV is NULL, do not store ARGV[0]
|
||||
etc. Backslash can be used to escape whitespace (and backslashes). */
|
||||
static int
|
||||
prepend_args (options, buf, argv)
|
||||
char const *options;
|
||||
char *buf;
|
||||
char **argv;
|
||||
{
|
||||
char const *o = options;
|
||||
char *b = buf;
|
||||
int n = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
while (ISSPACE ((unsigned char) *o))
|
||||
o++;
|
||||
if (!*o)
|
||||
return n;
|
||||
if (argv)
|
||||
argv[n] = b;
|
||||
n++;
|
||||
|
||||
do
|
||||
if ((*b++ = *o++) == '\\' && *o)
|
||||
b[-1] = *o++;
|
||||
while (*o && ! ISSPACE ((unsigned char) *o));
|
||||
|
||||
*b++ = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* Prepend the whitespace-separated options in OPTIONS to the argument
|
||||
vector of a main program with argument count *PARGC and argument
|
||||
vector *PARGV. */
|
||||
void
|
||||
prepend_default_options (options, pargc, pargv)
|
||||
char const *options;
|
||||
int *pargc;
|
||||
char ***pargv;
|
||||
{
|
||||
if (options)
|
||||
{
|
||||
char *buf = xmalloc (strlen (options) + 1);
|
||||
int prepended = prepend_args (options, buf, (char **) NULL);
|
||||
int argc = *pargc;
|
||||
char * const *argv = *pargv;
|
||||
char **pp = (char **) xmalloc ((prepended + argc + 1) * sizeof *pp);
|
||||
*pargc = prepended + argc;
|
||||
*pargv = pp;
|
||||
*pp++ = *argv++;
|
||||
pp += prepend_args (options, buf, pp);
|
||||
while ((*pp++ = *argv++))
|
||||
continue;
|
||||
}
|
||||
}
|
26
contrib/cvs/src/prepend_args.h
Normal file
26
contrib/cvs/src/prepend_args.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* prepend_args.h - utilility programs for manpiulating argv[]
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/* This code, taken from GNU Grep, originally used the "PARAM" macro, as the
|
||||
current GNU coding standards requires. Older GNU code used the "PROTO"
|
||||
macro, before the GNU coding standards replaced it. We use the older
|
||||
form here to keep from having to include another file in cvs/src/main.c. */
|
||||
|
||||
void prepend_default_options PROTO ((char const *, int *, char ***));
|
@ -15,7 +15,8 @@ SRCS= add.c admin.c buffer.c checkin.c checkout.c classify.c client.c \
|
||||
expand_path.c fileattr.c filesubr.c find_names.c \
|
||||
hardlink.c hash.c history.c \
|
||||
ignore.c import.c lock.c log.c login.c logmsg.c main.c mkmodules.c \
|
||||
modules.c myndbm.c no_diff.c parseinfo.c patch.c rcs.c rcscmds.c \
|
||||
modules.c myndbm.c no_diff.c parseinfo.c patch.c prepend_args.c \
|
||||
rcs.c rcscmds.c \
|
||||
recurse.c release.c remove.c repos.c root.c rtag.c run.c scramble.c \
|
||||
server.c status.c subr.c tag.c update.c vers_ts.c version.c watch.c \
|
||||
wrapper.c zlib.c
|
||||
|
87
gnu/usr.bin/cvs/cvs/prepend_args.c
Normal file
87
gnu/usr.bin/cvs/cvs/prepend_args.c
Normal file
@ -0,0 +1,87 @@
|
||||
/* prepend_args.c - utilility programs for manpiulating argv[]
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
/* $FreeBSD$ */
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
#include "cvs.h"
|
||||
#include "../diff/system.h"
|
||||
#include "prepend_args.h"
|
||||
|
||||
|
||||
/* Find the white-space-separated options specified by OPTIONS, and
|
||||
using BUF to store copies of these options, set ARGV[0], ARGV[1],
|
||||
etc. to the option copies. Return the number N of options found.
|
||||
Do not set ARGV[N] to NULL. If ARGV is NULL, do not store ARGV[0]
|
||||
etc. Backslash can be used to escape whitespace (and backslashes). */
|
||||
static int
|
||||
prepend_args (options, buf, argv)
|
||||
char const *options;
|
||||
char *buf;
|
||||
char **argv;
|
||||
{
|
||||
char const *o = options;
|
||||
char *b = buf;
|
||||
int n = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
while (ISSPACE ((unsigned char) *o))
|
||||
o++;
|
||||
if (!*o)
|
||||
return n;
|
||||
if (argv)
|
||||
argv[n] = b;
|
||||
n++;
|
||||
|
||||
do
|
||||
if ((*b++ = *o++) == '\\' && *o)
|
||||
b[-1] = *o++;
|
||||
while (*o && ! ISSPACE ((unsigned char) *o));
|
||||
|
||||
*b++ = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* Prepend the whitespace-separated options in OPTIONS to the argument
|
||||
vector of a main program with argument count *PARGC and argument
|
||||
vector *PARGV. */
|
||||
void
|
||||
prepend_default_options (options, pargc, pargv)
|
||||
char const *options;
|
||||
int *pargc;
|
||||
char ***pargv;
|
||||
{
|
||||
if (options)
|
||||
{
|
||||
char *buf = xmalloc (strlen (options) + 1);
|
||||
int prepended = prepend_args (options, buf, (char **) NULL);
|
||||
int argc = *pargc;
|
||||
char * const *argv = *pargv;
|
||||
char **pp = (char **) xmalloc ((prepended + argc + 1) * sizeof *pp);
|
||||
*pargc = prepended + argc;
|
||||
*pargv = pp;
|
||||
*pp++ = *argv++;
|
||||
pp += prepend_args (options, buf, pp);
|
||||
while ((*pp++ = *argv++))
|
||||
continue;
|
||||
}
|
||||
}
|
26
gnu/usr.bin/cvs/cvs/prepend_args.h
Normal file
26
gnu/usr.bin/cvs/cvs/prepend_args.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* prepend_args.h - utilility programs for manpiulating argv[]
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/* This code, taken from GNU Grep, originally used the "PARAM" macro, as the
|
||||
current GNU coding standards requires. Older GNU code used the "PROTO"
|
||||
macro, before the GNU coding standards replaced it. We use the older
|
||||
form here to keep from having to include another file in cvs/src/main.c. */
|
||||
|
||||
void prepend_default_options PROTO ((char const *, int *, char ***));
|
Loading…
Reference in New Issue
Block a user