version 1.196, 2007/03/03 21:07:23 |
version 1.197, 2007/03/15 13:05:23 |
|
|
{ |
{ |
int fd; |
int fd; |
int i, ch, status; |
int i, ch, status; |
|
int base_flags, base_openflags; |
char *rev_str; |
char *rev_str; |
struct checkin_params pb; |
struct checkin_params pb; |
|
|
|
|
pb.description = pb.symbol = NULL; |
pb.description = pb.symbol = NULL; |
pb.deltatext = NULL; |
pb.deltatext = NULL; |
pb.newrev = NULL; |
pb.newrev = NULL; |
pb.flags = status = 0; |
|
pb.fmode = S_IRUSR|S_IRGRP|S_IROTH; |
pb.fmode = S_IRUSR|S_IRGRP|S_IROTH; |
pb.flags = INTERACTIVE; |
status = 0; |
pb.openflags = RCS_RDWR|RCS_CREATE|RCS_PARSE_FULLY; |
base_flags = INTERACTIVE; |
|
base_openflags = RCS_RDWR|RCS_CREATE|RCS_PARSE_FULLY; |
rev_str = NULL; |
rev_str = NULL; |
|
|
while ((ch = rcs_getopt(argc, argv, CI_OPTSTRING)) != -1) { |
while ((ch = rcs_getopt(argc, argv, CI_OPTSTRING)) != -1) { |
|
|
break; |
break; |
case 'f': |
case 'f': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.flags |= FORCE; |
base_flags |= FORCE; |
break; |
break; |
case 'I': |
case 'I': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.flags |= INTERACTIVE; |
base_flags |= INTERACTIVE; |
break; |
break; |
case 'i': |
case 'i': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.openflags |= RCS_CREATE; |
base_openflags |= RCS_CREATE; |
pb.flags |= CI_INIT; |
base_flags |= CI_INIT; |
break; |
break; |
case 'j': |
case 'j': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.openflags &= ~RCS_CREATE; |
base_openflags &= ~RCS_CREATE; |
pb.flags &= ~CI_INIT; |
base_flags &= ~CI_INIT; |
break; |
break; |
case 'k': |
case 'k': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.flags |= CI_KEYWORDSCAN; |
base_flags |= CI_KEYWORDSCAN; |
break; |
break; |
case 'l': |
case 'l': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.flags |= CO_LOCK; |
base_flags |= CO_LOCK; |
break; |
break; |
case 'M': |
case 'M': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.flags |= CO_REVDATE; |
base_flags |= CO_REVDATE; |
break; |
break; |
case 'm': |
case 'm': |
pb.rcs_msg = rcs_optarg; |
pb.rcs_msg = rcs_optarg; |
if (pb.rcs_msg == NULL) |
if (pb.rcs_msg == NULL) |
errx(1, "missing message for -m option"); |
errx(1, "missing message for -m option"); |
pb.flags &= ~INTERACTIVE; |
base_flags &= ~INTERACTIVE; |
break; |
break; |
case 'N': |
case 'N': |
pb.flags |= CI_SYMFORCE; |
base_flags |= CI_SYMFORCE; |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case 'n': |
case 'n': |
pb.symbol = rcs_optarg; |
pb.symbol = rcs_optarg; |
|
|
errx(1, "invalid symbol `%s'", pb.symbol); |
errx(1, "invalid symbol `%s'", pb.symbol); |
break; |
break; |
case 'q': |
case 'q': |
pb.flags |= QUIET; |
base_flags |= QUIET; |
break; |
break; |
case 'r': |
case 'r': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.flags |= CI_DEFAULT; |
base_flags |= CI_DEFAULT; |
break; |
break; |
case 's': |
case 's': |
pb.state = rcs_optarg; |
pb.state = rcs_optarg; |
|
|
errx(1, "invalid state `%s'", pb.state); |
errx(1, "invalid state `%s'", pb.state); |
break; |
break; |
case 'T': |
case 'T': |
pb.flags |= PRESERVETIME; |
base_flags |= PRESERVETIME; |
break; |
break; |
case 't': |
case 't': |
/* Ignore bare -t; kept for backwards compatibility. */ |
/* Ignore bare -t; kept for backwards compatibility. */ |
if (rcs_optarg == NULL) |
if (rcs_optarg == NULL) |
break; |
break; |
pb.description = rcs_optarg; |
pb.description = rcs_optarg; |
pb.flags |= DESCRIPTION; |
base_flags |= DESCRIPTION; |
break; |
break; |
case 'u': |
case 'u': |
rcs_setrevstr(&rev_str, rcs_optarg); |
rcs_setrevstr(&rev_str, rcs_optarg); |
pb.flags |= CO_UNLOCK; |
base_flags |= CO_UNLOCK; |
break; |
break; |
case 'V': |
case 'V': |
printf("%s\n", rcs_version); |
printf("%s\n", rcs_version); |
|
|
rcs_suffixes = RCS_DEFAULT_SUFFIX; |
rcs_suffixes = RCS_DEFAULT_SUFFIX; |
|
|
for (i = 0; i < argc; i++) { |
for (i = 0; i < argc; i++) { |
|
/* |
|
* The pb.flags and pb.openflags may change during |
|
* loop iteration so restore them for each file. |
|
*/ |
|
pb.flags = base_flags; |
|
pb.openflags = base_openflags; |
|
|
pb.filename = argv[i]; |
pb.filename = argv[i]; |
rcs_strip_suffix(pb.filename); |
rcs_strip_suffix(pb.filename); |
|
|
|
|
status = 1; |
status = 1; |
} |
} |
|
|
/* reset NEWFILE flag */ |
|
pb.flags &= ~NEWFILE; |
|
|
|
rcs_close(pb.file); |
rcs_close(pb.file); |
pb.newrev = NULL; |
pb.newrev = NULL; |
} |
} |
|
|
if (!(pb.flags & QUIET) && status == 0) |
if (!(base_flags & QUIET) && status == 0) |
(void)fprintf(stderr, "done\n"); |
(void)fprintf(stderr, "done\n"); |
|
|
return (status); |
return (status); |