INT64_T chirp_multi_utime(const char *volume, const char *path, time_t actime, time_t modtime, time_t stoptime) { struct file_info info; if(chirp_multi_lookup(volume, path, &info, stoptime)) { return chirp_reli_utime(info.rhost, info.rpath, actime, modtime, stoptime); } else if(errno == EISDIR) { return chirp_reli_utime(current_volume->host, info.lpath, actime, modtime, stoptime); } else { return -1; } }
INT64_T chirp_global_utime(const char *host, const char *path, time_t actime, time_t modtime, time_t stoptime) { if(is_multi_path(host)) { char mhost[CHIRP_PATH_MAX]; char mpath[CHIRP_PATH_MAX]; parse_multi_path(path, mhost, mpath); return chirp_multi_utime(mhost, mpath, actime, modtime, stoptime); } else if(not_empty(path)) { return chirp_reli_utime(host, path, actime, modtime, stoptime); } else if(not_empty(host)) { if(server_lookup(host, stoptime)) { errno = EISDIR; return -1; } else { errno = ENOENT; return -1; } } else { errno = EISDIR; return -1; } }