version 1.53, 2005/10/30 09:46:07 |
version 1.54, 2005/11/02 20:32:45 |
|
|
int |
int |
checkin_main(int argc, char **argv) |
checkin_main(int argc, char **argv) |
{ |
{ |
int found, notlocked, ret; |
int found, notlocked, ret, status; |
int i, ch, force, lkmode, interactive, rflag, status, symforce; |
int i, ch, flags; |
mode_t fmode; |
mode_t fmode; |
time_t date; |
time_t date; |
RCSFILE *file; |
RCSFILE *file; |
|
|
rcs_msg = username = NULL; |
rcs_msg = username = NULL; |
state = symbol = NULL; |
state = symbol = NULL; |
newrev = NULL; |
newrev = NULL; |
fmode = force = lkmode = rflag = status = symforce = 0; |
fmode = flags = status = 0; |
interactive = 1; |
|
|
|
|
flags |= INTERACTIVE; |
|
|
while ((ch = rcs_getopt(argc, argv, "d::f::j:k:l::m:M:N:n:qr::s:u::Vw:")) != -1) { |
while ((ch = rcs_getopt(argc, argv, "d::f::j:k:l::m:M::N:n:qr::s:u::Vw:")) != -1) { |
switch (ch) { |
switch (ch) { |
case 'd': |
case 'd': |
if (rcs_optarg == NULL) |
if (rcs_optarg == NULL) |
|
|
break; |
break; |
case 'f': |
case 'f': |
rcs_set_rev(rcs_optarg, &newrev); |
rcs_set_rev(rcs_optarg, &newrev); |
force = 1; |
flags |= FORCE; |
break; |
break; |
case 'h': |
case 'h': |
(usage)(); |
(usage)(); |
exit(0); |
exit(0); |
case 'l': |
case 'l': |
rcs_set_rev(rcs_optarg, &newrev); |
rcs_set_rev(rcs_optarg, &newrev); |
lkmode = LOCK_LOCK; |
flags |= CO_LOCK; |
break; |
break; |
|
case 'M': |
|
rcs_set_rev(rcs_optarg, &newrev); |
|
flags |= CO_REVDATE; |
|
break; |
case 'm': |
case 'm': |
rcs_msg = rcs_optarg; |
rcs_msg = rcs_optarg; |
interactive = 0; |
flags &= ~INTERACTIVE; |
break; |
break; |
case 'N': |
case 'N': |
if ((symbol = strdup(rcs_optarg)) == NULL) { |
if ((symbol = strdup(rcs_optarg)) == NULL) { |
|
|
cvs_log(LP_ERR, "invalid symbol `%s'", symbol); |
cvs_log(LP_ERR, "invalid symbol `%s'", symbol); |
exit(1); |
exit(1); |
} |
} |
symforce = 1; |
flags |= CI_SYMFORCE; |
break; |
break; |
case 'n': |
case 'n': |
if ((symbol = strdup(rcs_optarg)) == NULL) { |
if ((symbol = strdup(rcs_optarg)) == NULL) { |
|
|
break; |
break; |
case 'r': |
case 'r': |
rcs_set_rev(rcs_optarg, &newrev); |
rcs_set_rev(rcs_optarg, &newrev); |
rflag = 1; |
flags |= CI_DEFAULT; |
break; |
break; |
case 's': |
case 's': |
state = rcs_optarg; |
state = rcs_optarg; |
|
|
break; |
break; |
case 'u': |
case 'u': |
rcs_set_rev(rcs_optarg, &newrev); |
rcs_set_rev(rcs_optarg, &newrev); |
lkmode = LOCK_UNLOCK; |
flags |= CO_UNLOCK; |
break; |
break; |
case 'V': |
case 'V': |
printf("%s\n", rcs_version); |
printf("%s\n", rcs_version); |
|
|
* If -f is not specified and there are no differences, tell the |
* If -f is not specified and there are no differences, tell the |
* user and revert to latest version. |
* user and revert to latest version. |
*/ |
*/ |
if ((force == 0) && (strlen(deltatext) < 1)) { |
if ((flags & FORCE) && (strlen(deltatext) < 1)) { |
rcsnum_tostr(frev, rbuf, sizeof(rbuf)); |
rcsnum_tostr(frev, rbuf, sizeof(rbuf)); |
cvs_log(LP_WARN, |
cvs_log(LP_WARN, |
"file is unchanged; reverting to previous revision %s", |
"file is unchanged; reverting to previous revision %s", |
rbuf); |
rbuf); |
(void)unlink(argv[i]); |
(void)unlink(argv[i]); |
if (lkmode != 0) |
if ((flags & CO_LOCK) || (flags & CO_UNLOCK)) |
checkout_rev(file, frev, argv[i], lkmode, |
checkout_rev(file, frev, argv[i], flags, |
username, 0); |
username); |
rcs_lock_remove(file, frev); |
rcs_lock_remove(file, frev); |
rcs_close(file); |
rcs_close(file); |
if (verbose == 1) |
if (verbose == 1) |
|
|
if (symbol != NULL) { |
if (symbol != NULL) { |
if (verbose == 1) |
if (verbose == 1) |
printf("symbol: %s\n", symbol); |
printf("symbol: %s\n", symbol); |
if (symforce == 1) |
if (flags & CI_SYMFORCE) |
rcs_sym_remove(file, symbol); |
rcs_sym_remove(file, symbol); |
if ((ret = rcs_sym_add(file, symbol, newrev) == -1) |
if ((ret = rcs_sym_add(file, symbol, newrev) == -1) |
&& (rcs_errno == RCS_ERR_DUPENT)) { |
&& (rcs_errno == RCS_ERR_DUPENT)) { |
|
|
/* |
/* |
* Do checkout if -u or -l are specified. |
* Do checkout if -u or -l are specified. |
*/ |
*/ |
if ((lkmode != 0) && (rflag == 0)) |
if (((flags & CO_LOCK) || (flags & CO_UNLOCK)) |
checkout_rev(file, newrev, argv[i], lkmode, username, 0); |
&& !(flags & CI_DEFAULT)) |
|
checkout_rev(file, newrev, argv[i], flags, username); |
|
|
/* File will NOW be synced */ |
/* File will NOW be synced */ |
rcs_close(file); |
rcs_close(file); |
|
|
if (interactive == 1) { |
if (flags & INTERACTIVE) { |
free(rcs_msg); |
free(rcs_msg); |
rcs_msg = NULL; |
rcs_msg = NULL; |
} |
} |