void cvs_server_validreq(char *data) { BUF *bp; char *d; int i, first; first = 0; bp = cvs_buf_alloc(512); for (i = 0; cvs_requests[i].supported != -1; i++) { if (cvs_requests[i].hdlr == NULL) continue; if (first != 0) cvs_buf_putc(bp, ' '); else first++; cvs_buf_puts(bp, cvs_requests[i].name); } cvs_buf_putc(bp, '\0'); d = cvs_buf_release(bp); cvs_server_send_response("Valid-requests %s", d); cvs_server_send_response("ok"); xfree(d); }
void cvs_server_version(char *data) { cvs_cmdop = CVS_OP_VERSION; cmdp->cmd_flags = cvs_cmd_version.cmd_flags; cvs_version(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_update(char *data) { if (chdir(server_currentdir) == -1) fatal("cvs_server_update: %s", strerror(errno)); cvs_cmdop = CVS_OP_UPDATE; cmdp->cmd_flags = cvs_cmd_update.cmd_flags; cvs_update(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_rtag(char *data) { if (chdir(current_cvsroot->cr_dir) == -1) fatal("cvs_server_rtag: %s", strerror(errno)); cvs_cmdop = CVS_OP_RTAG; cmdp->cmd_flags = cvs_cmd_rtag.cmd_flags; cvs_tag(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_log(char *data) { if (chdir(server_currentdir) == -1) fatal("cvs_server_log: %s", strerror(errno)); cvs_cmdop = CVS_OP_LOG; cmdp->cmd_flags = cvs_cmd_log.cmd_flags; cvs_getlog(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_status(char *data) { if (chdir(server_currentdir) == -1) fatal("cvs_server_status: %s", strerror(errno)); cvs_cmdop = CVS_OP_STATUS; cmdp->cmd_flags = cvs_cmd_status.cmd_flags; cvs_status(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_export(char *data) { if (chdir(server_currentdir) == -1) fatal("cvs_server_export: %s", strerror(errno)); cvs_cmdop = CVS_OP_EXPORT; cmdp->cmd_flags = cvs_cmd_export.cmd_flags; cvs_export(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_rdiff(char *data) { if (chdir(server_currentdir) == -1) fatal("cvs_server_rdiff: %s", strerror(errno)); cvs_cmdop = CVS_OP_RDIFF; cmdp->cmd_flags = cvs_cmd_rdiff.cmd_flags; cvs_diff(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_checkout(char *data) { if (chdir(server_currentdir) == -1) fatal("cvs_server_checkout: %s", strerror(errno)); cvs_cmdop = CVS_OP_CHECKOUT; cmdp->cmd_flags = cvs_cmd_checkout.cmd_flags; cvs_checkout(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_admin(char *data) { if (chdir(server_currentdir) == -1) fatal("cvs_server_admin: %s", strerror(errno)); cvs_cmdop = CVS_OP_ADMIN; cmdp->cmd_flags = cvs_cmd_admin.cmd_flags; cvs_admin(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_clear_sticky(char *dir) { char fpath[MAXPATHLEN]; if (module_repo_root != NULL) { (void)xsnprintf(fpath, MAXPATHLEN, "%s/%s/%s", current_cvsroot->cr_dir, module_repo_root, dir); } else { (void)xsnprintf(fpath, MAXPATHLEN, "%s/%s", current_cvsroot->cr_dir, dir); } cvs_server_send_response("Clear-sticky %s", dir); cvs_remote_output(fpath); }
void cvs_server_init(char *data) { if (data == NULL) fatal("Missing argument for init"); if (current_cvsroot != NULL) fatal("Root in combination with init is not supported"); if ((current_cvsroot = cvsroot_get(data)) == NULL) fatal("Invalid argument for init"); cvs_cmdop = CVS_OP_INIT; cmdp->cmd_flags = cvs_cmd_init.cmd_flags; cvs_init(server_argc, server_argv); cvs_server_send_response("ok"); }
void cvs_server_update_entry(const char *resp, struct cvs_file *cf) { char *p; char repo[MAXPATHLEN], fpath[MAXPATHLEN]; if ((p = strrchr(cf->file_rpath, ',')) != NULL) *p = '\0'; cvs_get_repository_path(cf->file_wd, repo, MAXPATHLEN); (void)xsnprintf(fpath, MAXPATHLEN, "%s/%s", repo, cf->file_name); cvs_server_send_response("%s %s/", resp, cf->file_wd); cvs_remote_output(fpath); if (p != NULL) *p = ','; }
static void add_entry(struct cvs_file *cf) { FILE *fp; char *entry, path[MAXPATHLEN]; char revbuf[CVS_REV_BUFSZ], tbuf[CVS_TIME_BUFSZ]; char sticky[CVS_ENT_MAXLINELEN]; CVSENTRIES *entlist; if (cvs_noexec == 1) return; sticky[0] = '\0'; entry = xmalloc(CVS_ENT_MAXLINELEN); if (cf->file_status == FILE_REMOVED) { rcsnum_tostr(cf->file_ent->ce_rev, revbuf, sizeof(revbuf)); ctime_r(&cf->file_ent->ce_mtime, tbuf); tbuf[strcspn(tbuf, "\n")] = '\0'; if (cf->file_ent->ce_tag != NULL) (void)xsnprintf(sticky, sizeof(sticky), "T%s", cf->file_ent->ce_tag); /* Remove the '-' prefixing the version number. */ cvs_ent_line_str(cf->file_name, revbuf, tbuf, cf->file_ent->ce_opts ? cf->file_ent->ce_opts : "", sticky, 0, 0, entry, CVS_ENT_MAXLINELEN); } else { if (logmsg != NULL) { (void)xsnprintf(path, MAXPATHLEN, "%s/%s/%s%s", cf->file_wd, CVS_PATH_CVSDIR, cf->file_name, CVS_DESCR_FILE_EXT); if ((fp = fopen(path, "w+")) == NULL) fatal("add_entry: fopen `%s': %s", path, strerror(errno)); if (fputs(logmsg, fp) == EOF) { (void)unlink(path); fatal("add_entry: fputs `%s': %s", path, strerror(errno)); } (void)fclose(fp); } if (cvs_directory_tag != NULL) (void)xsnprintf(sticky, sizeof(sticky), "T%s", cvs_directory_tag); tbuf[0] = '\0'; if (!cvs_server_active) (void)xsnprintf(tbuf, sizeof(tbuf), "Initial %s", cf->file_name); cvs_ent_line_str(cf->file_name, "0", tbuf, kflag ? kbuf : "", sticky, 0, 0, entry, CVS_ENT_MAXLINELEN); } if (cvs_server_active) { cvs_server_send_response("Checked-in %s/", cf->file_wd); cvs_server_send_response("%s", cf->file_path); cvs_server_send_response("%s", entry); } else { entlist = cvs_ent_open(cf->file_wd); cvs_ent_add(entlist, entry); } xfree(entry); }