INT64_T chirp_multi_md5(const char *volume, const char *path, unsigned char digest[16], time_t stoptime) { struct file_info info; if(chirp_multi_lookup(volume, path, &info, stoptime)) { return chirp_reli_md5(info.rhost, info.rpath, digest, stoptime); } else { return -1; } }
static INT64_T do_md5(int argc, char **argv) { unsigned char digest[16]; char full_path[CHIRP_LINE_MAX]; int result; complete_remote_path(argv[1], full_path); result = chirp_reli_md5(current_host, full_path, digest, stoptime); if(result > 0) printf("%s %s\n", md5_string(digest), full_path); return result; }
INT64_T chirp_global_md5(const char *host, const char *path, unsigned char *digest, 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_md5(mhost, mpath, digest, stoptime); } else if(not_empty(host)) { return chirp_reli_md5(host, path, digest, stoptime); } else { errno = EACCES; return -1; } }