version 1.27, 2004/08/12 21:05:32 |
version 1.28, 2004/08/13 12:44:25 |
|
|
cfp->cf_type = type; |
cfp->cf_type = type; |
cfp->cf_mode = mode; |
cfp->cf_mode = mode; |
cfp->cf_ddat->cd_root = cvsroot_get(path); |
cfp->cf_ddat->cd_root = cvsroot_get(path); |
|
cfp->cf_ddat->cd_repo = strdup(cfp->cf_path); |
|
|
if (type == DT_DIR) { |
if (type == DT_DIR) { |
if ((mkdir(path, mode) == -1) || (cvs_mkadmin(cfp, mode) < 0)) { |
if ((mkdir(path, mode) == -1) || (cvs_mkadmin(cfp, mode) < 0)) { |
|
|
sizeof(pbuf)) == 0) { |
sizeof(pbuf)) == 0) { |
cdp->cd_repo = strdup(pbuf); |
cdp->cd_repo = strdup(pbuf); |
if (cdp->cd_repo == NULL) { |
if (cdp->cd_repo == NULL) { |
|
cvs_log(LP_ERRNO, |
|
"failed to dup repository string"); |
free(cdp); |
free(cdp); |
return (-1); |
return (-1); |
} |
} |
|
|
|
|
cdp->cd_ent = cvs_ent_open(cf->cf_path, O_RDWR); |
cdp->cd_ent = cvs_ent_open(cf->cf_path, O_RDWR); |
} |
} |
|
|
} |
} |
|
|
if (!(flags & CF_RECURSE) || (cf->cf_cvstat == CVS_FST_UNKNOWN)) |
if (!(flags & CF_RECURSE) || (cf->cf_cvstat == CVS_FST_UNKNOWN)) |
|
|
cfp->cf_cvstat = CVS_FST_ADDED; |
cfp->cf_cvstat = CVS_FST_ADDED; |
else { |
else { |
/* check last modified time */ |
/* check last modified time */ |
if ((gmtime_r((time_t *)&(st.st_mtime), |
if (ent->ce_mtime == st.st_mtime) |
&lmtm) == NULL) || |
|
(asctime_r(&lmtm, buf) == NULL)) { |
|
cvs_log(LP_ERR, |
|
"failed to generate file timestamp"); |
|
/* fake an up to date file */ |
|
strlcpy(buf, ent->ce_timestamp, sizeof(buf)); |
|
} |
|
len = strlen(buf); |
|
if ((len > 0) && (buf[len - 1] == '\n')) |
|
buf[--len] = '\0'; |
|
|
|
if (strcmp(buf, ent->ce_timestamp) == 0) |
|
cfp->cf_cvstat = CVS_FST_UPTODATE; |
cfp->cf_cvstat = CVS_FST_UPTODATE; |
else |
else |
cfp->cf_cvstat = CVS_FST_MODIFIED; |
cfp->cf_cvstat = CVS_FST_MODIFIED; |