version 1.119, 2008/02/03 17:20:14 |
version 1.120, 2008/02/03 18:42:32 |
|
|
extern int build_dirs; |
extern int build_dirs; |
|
|
static int flags = CR_REPO | CR_RECURSE_DIRS; |
static int flags = CR_REPO | CR_RECURSE_DIRS; |
|
static char *dflag = NULL; |
|
|
struct cvs_cmd cvs_cmd_checkout = { |
struct cvs_cmd cvs_cmd_checkout = { |
CVS_OP_CHECKOUT, CVS_USE_WDIR, "checkout", |
CVS_OP_CHECKOUT, CVS_USE_WDIR, "checkout", |
|
|
case 'A': |
case 'A': |
reset_stickies = 1; |
reset_stickies = 1; |
break; |
break; |
|
case 'd': |
|
if (dflag != NULL) |
|
fatal("-d specified two or more times"); |
|
dflag = optarg; |
|
break; |
case 'l': |
case 'l': |
flags &= ~CR_RECURSE_DIRS; |
flags &= ~CR_RECURSE_DIRS; |
break; |
break; |
|
|
checkout_check_repository(int argc, char **argv) |
checkout_check_repository(int argc, char **argv) |
{ |
{ |
int i; |
int i; |
|
char *wdir; |
char repo[MAXPATHLEN]; |
char repo[MAXPATHLEN]; |
struct cvs_recursion cr; |
struct cvs_recursion cr; |
struct module_checkout *mc; |
struct module_checkout *mc; |
|
|
(void)xsnprintf(repo, sizeof(repo), "%s/%s", |
(void)xsnprintf(repo, sizeof(repo), "%s/%s", |
current_cvsroot->cr_dir, mc->mc_repo); |
current_cvsroot->cr_dir, mc->mc_repo); |
|
|
if (!(mc->mc_flags & MODULE_ALIAS)) |
if (!(mc->mc_flags & MODULE_ALIAS) || dflag != NULL) |
module_repo_root = mc->mc_repo; |
module_repo_root = mc->mc_repo; |
|
|
|
if (dflag != NULL) |
|
wdir = dflag; |
|
else |
|
wdir = mc->mc_wdir; |
|
|
switch (checkout_classify(repo, mc->mc_repo)) { |
switch (checkout_classify(repo, mc->mc_repo)) { |
case CVS_FILE: |
case CVS_FILE: |
cr.fileproc = cvs_update_local; |
cr.fileproc = cvs_update_local; |
cr.flags = flags; |
cr.flags = flags; |
|
|
if (build_dirs == 1) |
if (build_dirs == 1) |
cvs_mkpath(dirname(mc->mc_wdir), |
cvs_mkpath(dirname(wdir), |
cvs_specified_tag); |
cvs_specified_tag); |
cvs_file_run(1, &(mc->mc_repo), &cr); |
cvs_file_run(1, &(mc->mc_repo), &cr); |
break; |
break; |
case CVS_DIR: |
case CVS_DIR: |
if (build_dirs == 1) |
if (build_dirs == 1) |
cvs_mkpath(mc->mc_wdir, cvs_specified_tag); |
cvs_mkpath(wdir, cvs_specified_tag); |
checkout_repository(repo, mc->mc_wdir); |
checkout_repository(repo, wdir); |
break; |
break; |
default: |
default: |
break; |
break; |