version 1.86, 2006/03/27 06:13:51 |
version 1.87, 2006/03/27 07:38:24 |
|
|
int verbose = 1; |
int verbose = 1; |
int pipeout = 0; |
int pipeout = 0; |
|
|
#define RCS_EFLAG (1<<0) |
#define RCSPROG_EFLAG (1<<0) |
#define RCS_NFLAG (1<<1) |
#define RCSPROG_NFLAG (1<<1) |
#define RCS_TFLAG (1<<2) |
#define RCSPROG_TFLAG (1<<2) |
static int rcsflags = 0; |
static int rcsflags = 0; |
|
|
|
int flags; |
int rcs_optind; |
int rcs_optind; |
char *rcs_optarg; |
char *rcs_optarg; |
char *rcs_suffixes; |
char *rcs_suffixes; |
|
|
fatal("rcs_statfile: path truncation"); |
fatal("rcs_statfile: path truncation"); |
|
|
/* Error out if file not found and we are not creating one. */ |
/* Error out if file not found and we are not creating one. */ |
if (stat(rcspath, &st) == -1 && !(rcsflags & RCS_CREATE)) { |
if (stat(rcspath, &st) == -1 && !(flags & RCS_CREATE)) { |
if ((strcmp(__progname, "rcsclean") != 0) |
if ((strcmp(__progname, "rcsclean") != 0) |
&& (strcmp(__progname, "ci") != 0)) |
&& (strcmp(__progname, "ci") != 0)) |
cvs_log(LP_ERRNO, "%s", rcspath); |
cvs_log(LP_ERRNO, "%s", rcspath); |
|
|
int |
int |
rcs_main(int argc, char **argv) |
rcs_main(int argc, char **argv) |
{ |
{ |
int i, j, ch, flags, kflag, lkmode; |
int i, j, ch, kflag, lkmode; |
char fpath[MAXPATHLEN], ofpath[MAXPATHLEN]; |
char fpath[MAXPATHLEN], ofpath[MAXPATHLEN]; |
char *logstr, *logmsg, *nflag, *descfile; |
char *logstr, *logmsg, *nflag, *descfile; |
char *alist, *comment, *elist; |
char *alist, *comment, *elist; |
|
|
break; |
break; |
case 'e': |
case 'e': |
elist = rcs_optarg; |
elist = rcs_optarg; |
rcsflags |= RCS_EFLAG; |
rcsflags |= RCSPROG_EFLAG; |
break; |
break; |
case 'h': |
case 'h': |
(usage)(); |
(usage)(); |
|
|
/* NOTREACHED */ |
/* NOTREACHED */ |
case 'i': |
case 'i': |
flags |= RCS_CREATE; |
flags |= RCS_CREATE; |
rcsflags |= RCS_CREATE; |
|
break; |
break; |
case 'k': |
case 'k': |
kflag = rcs_kflag_get(rcs_optarg); |
kflag = rcs_kflag_get(rcs_optarg); |
|
|
break; |
break; |
case 'N': |
case 'N': |
nflag = xstrdup(rcs_optarg); |
nflag = xstrdup(rcs_optarg); |
rcsflags |= RCS_NFLAG; |
rcsflags |= RCSPROG_NFLAG; |
break; |
break; |
case 'q': |
case 'q': |
verbose = 0; |
verbose = 0; |
break; |
break; |
case 't': |
case 't': |
descfile = rcs_optarg; |
descfile = rcs_optarg; |
rcsflags |= RCS_TFLAG; |
rcsflags |= RCSPROG_TFLAG; |
break; |
break; |
case 'T': |
case 'T': |
rcsflags |= PRESERVETIME; |
rcsflags |= PRESERVETIME; |
|
|
if ((file = rcs_open(fpath, flags, fmode)) == NULL) |
if ((file = rcs_open(fpath, flags, fmode)) == NULL) |
continue; |
continue; |
|
|
if (rcsflags & RCS_CREATE) |
if (rcsflags & RCSPROG_TFLAG) |
|
rcs_set_description(file, descfile); |
|
else if (flags & RCS_CREATE) |
rcs_set_description(file, NULL); |
rcs_set_description(file, NULL); |
|
|
if (rcsflags & RCS_TFLAG) |
|
rcs_set_description(file, descfile); |
|
|
|
if (rcsflags & PRESERVETIME) |
if (rcsflags & PRESERVETIME) |
rcs_mtime = rcs_get_mtime(file->rf_path); |
rcs_mtime = rcs_get_mtime(file->rf_path); |
|
|
|
|
rcs_access_remove(file, eargv->argv[j]); |
rcs_access_remove(file, eargv->argv[j]); |
|
|
cvs_argv_destroy(eargv); |
cvs_argv_destroy(eargv); |
} else if (rcsflags & RCS_EFLAG) { |
} else if (rcsflags & RCSPROG_EFLAG) { |
struct rcs_access *rap; |
struct rcs_access *rap; |
|
|
/* XXX rcs_access_remove(file, NULL); ?? */ |
/* XXX rcs_access_remove(file, NULL); ?? */ |
|
|
fatal("bad revision %s", rnum); |
fatal("bad revision %s", rnum); |
} |
} |
|
|
if (rcsflags & RCS_NFLAG) |
if (rcsflags & RCSPROG_NFLAG) |
rm = 1; |
rm = 1; |
|
|
if (rm == 1) { |
if (rm == 1) { |
if (rcs_sym_remove(file, symname) < 0) { |
if (rcs_sym_remove(file, symname) < 0) { |
if ((rcs_errno == RCS_ERR_NOENT) && |
if ((rcs_errno == RCS_ERR_NOENT) && |
!(rcsflags & RCS_NFLAG)) |
!(rcsflags & RCSPROG_NFLAG)) |
cvs_log(LP_WARN, |
cvs_log(LP_WARN, |
"can't delete nonexisting symbol %s", symname); |
"can't delete nonexisting symbol %s", symname); |
} else { |
} else { |
if (rcsflags & RCS_NFLAG) |
if (rcsflags & RCSPROG_NFLAG) |
rm = 0; |
rm = 0; |
} |
} |
} |
} |