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)); CATCHUNIXIGNORE(chirp_reli_mkdir(host->hostport, template, S_IRWXU, stoptime), EEXIST); CATCHUNIX(chirp_reli_setacl(host->hostport, template, whoami, "rwldpa", stoptime)); debug(D_DEBUG, "setting `%s' to initialized", host->hostport); CATCH(confugaR_register(C, empty, 0, host)); sqlcatch(sqlite3_prepare_v2(db, current, -1, &stmt, ¤t)); sqlcatch(sqlite3_bind_text(stmt, 1, host->hostport, -1, SQLITE_STATIC)); sqlcatchcode(sqlite3_step(stmt), SQLITE_DONE); sqlcatch(sqlite3_finalize(stmt); stmt = NULL); debug(D_CONFUGA, "%s/%s initialized", host->hostport, host->root); rc = 0; goto out; out: sqlite3_finalize(stmt); return rc; } CONFUGA_IAPI int confugaS_node_insert (confuga *C, const char *hostport, const char *root) {
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); CATCH(confugaR_register(C, empty, 0, sid)); 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)); CATCHUNIXIGNORE(chirp_reli_mkdir(host->hostport, template, S_IRWXU, stoptime), EEXIST); CATCHUNIX(chirp_reli_setacl(host->hostport, template, whoami, "rwldpa", stoptime)); debug(D_DEBUG, "setting `%s' to initialized", host->hostport); sqlcatch(sqlite3_prepare_v2(db, current, -1, &stmt, ¤t)); sqlcatch(sqlite3_bind_text(stmt, 1, host->hostport, -1, SQLITE_STATIC)); sqlcatchcode(sqlite3_step(stmt), SQLITE_DONE); sqlcatch(sqlite3_finalize(stmt); stmt = NULL); debug(D_CONFUGA, "%s/%s initialized", host->hostport, host->root);