INT64_T chirp_thirdput(const char *subject, const char *lpath, const char *hostname, const char *rpath, time_t stoptime) { INT64_T result; time_t start, stop; char hostsubject[CHIRP_PATH_MAX]; result = chirp_reli_whoami(hostname, hostsubject, sizeof(hostsubject), stoptime); if(result < 0) return result; debug(D_DEBUG, "thirdput: sending %s to /chirp/%s/%s", lpath, hostname, rpath); start = time(0); result = chirp_thirdput_recursive(subject, lpath, hostname, rpath, hostsubject, stoptime); stop = time(0); if(stop == start) stop++; if(result >= 0) { debug(D_DEBUG, "thirdput: sent %"PRId64" bytes in %d seconds (%.1lfMB/s)", result, (int) (stop - start), result / (double) (stop - start)); } else { debug(D_DEBUG, "thirdput: error: %s\n", strerror(errno)); } return result; }
INT64_T chirp_multi_whoami(const char *volume, char *buf, INT64_T length, time_t stoptime) { char lpath[CHIRP_PATH_MAX]; if(!chirp_multi_lpath(volume, "/", lpath, stoptime)) return -1; return chirp_reli_whoami(current_volume->host, buf, length, stoptime); }
static INT64_T do_whoami(int argc, char **argv) { char name[CHIRP_LINE_MAX]; int result; result = chirp_reli_whoami(current_host, name, sizeof(name), stoptime); if(result >= 0) { name[result] = 0; printf("%s\n", name); } return result; }
static INT64_T do_open(int argc, char **argv) { do_close(0, 0); if(chirp_reli_whoami(argv[1], current_subject, sizeof(current_subject), stoptime) >= 0) { strcpy(current_host, argv[1]); strcpy(current_remote_dir, "/"); if(interactive_mode) fprintf(stderr, "connected to %s as %s\n", current_host, current_subject); return 0; } else { return -1; } }
INT64_T chirp_global_whoami(const char *host, const char *path, char *buf, INT64_T length, 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_whoami(mhost, buf, length, stoptime); } else if(not_empty(host)) { return chirp_reli_whoami(host, buf, length, stoptime); } else { errno = EINVAL; return -1; } }
"UPDATE Confuga.StorageNode" " SET initialized = 1" " WHERE hostport = ?1;"; int rc; sqlite3 *db = C->db; sqlite3_stmt *stmt = NULL; const char *current = SQL; char template[CHIRP_PATH_MAX]; time_t stoptime = STOPTIME_SHORT; char whoami[128]; debug(D_CONFUGA, "initializing %s/%s", host->hostport, host->root); CATCHUNIX(chirp_reli_whoami(host->hostport, whoami, sizeof(whoami), stoptime)); CATCHUNIXIGNORE(chirp_reli_mkdir_recursive(host->hostport, host->root, S_IRWXU, stoptime), EEXIST); CATCHUNIX(snprintf(template, sizeof(template), "%s/file", host->root)); CATCHUNIXIGNORE(chirp_reli_mkdir(host->hostport, template, S_IRWXU, stoptime), EEXIST); CATCHUNIX(chirp_reli_setacl(host->hostport, template, whoami, "rwldpa", stoptime)); CATCHUNIX(snprintf(template, sizeof(template), "%s/file/" CONFUGA_FID_PRIFMT, host->root, CONFUGA_FID_PRIARGS(empty))); CATCHUNIXIGNORE(chirp_reli_putfile_buffer(host->hostport, template, "", S_IRUSR, 0, stoptime), EEXIST); CATCHUNIX(snprintf(template, sizeof(template), "%s/open", host->root)); CATCHUNIXIGNORE(chirp_reli_mkdir(host->hostport, template, S_IRWXU, stoptime), EEXIST); CATCHUNIX(chirp_reli_setacl(host->hostport, template, whoami, "rwldpa", stoptime)); CATCHUNIX(snprintf(template, sizeof(template), "%s/tickets", host->root));