Index: main.cpp =================================================================== RCS file: /cvs/cvsnt/src/main.c,v retrieving revision 1.71.2.151.6.102 diff -c -r1.71.2.151.6.102 main.cpp *** main.cpp 2 Feb 2018 11:53:38 -0000 1.71.2.151.6.102 --- main.cpp 10 Nov 2020 09:06:30 -0000 *************** *** 294,299 **** --- 294,300 ---- { "checkout", "co", "get", checkout, 0 }, { "chown", "setowner", NULL, chowner, CVS_CMD_USES_WORK_DIR | CVS_CMD_MODIFIES_REPOSITORY }, { "commit", "ci", "com", commit, CVS_CMD_MODIFIES_REPOSITORY | CVS_CMD_USES_WORK_DIR }, + { "create", "make", "touch", mkdirfile, 0 }, { "diff", "di", "dif", diff, CVS_CMD_USES_WORK_DIR }, { "edit", NULL, NULL, edit, CVS_CMD_MODIFIES_REPOSITORY | CVS_CMD_USES_WORK_DIR }, { "editors", NULL, NULL, editors, CVS_CMD_USES_WORK_DIR }, Index: version.cpp =================================================================== RCS file: /cvs/cvsnt/src/version.c,v retrieving revision 1.18.2.11.6.16 diff -c -r1.18.2.11.6.16 version.cpp *** version.cpp 8 May 2015 08:17:51 -0000 1.18.2.11.6.16 --- version.cpp 10 Nov 2020 09:00:49 -0000 *************** *** 25,30 **** --- 25,40 ---- const char *trial_string = " (expires in %d days)\n"; char licmsg3[255]; + static const char *const mkdirfile_usage[] = + { + "Usage: %s %s\n", + "\t-d\tCreate a directory.\n", + "\t-b\tCreate a file.\n", + "(Specify the --help global option for a list of other help options)\n", + NULL + }; + + static const char *const version_usage[] = *************** *** 234,239 **** --- 244,331 ---- */ err = get_responses_and_close ((noclientresp)?0:1); } + } + return err; + } + + int mkdirfile (int argc, char **argv) + { + int c; + int err = 0; + char onelineout[1024] = "\0"; + bool domkdir=false; + bool domkfile=false; + int quick = 0; + FILE *f; + + if (argc == -1) + usage (mkdirfile_usage); + + optind = 0; + while (argv && (c = getopt (argc, argv, "+fd")) != -1) + { + switch (c) + { + case 'f': + quick = 1; + break; + case 'd': + quick = 2; + break; + case '?': + default: + usage (mkdirfile_usage); + break; + } + } + argc -= optind; + if(argv) + argv += optind; + + if (argc < 0) + usage (mkdirfile_usage); + + for (int i = 0; i < argc; i++) + { + switch(quick) + { + case 1: + f = CVS_FOPEN (argv[i], "a"); + if (f == NULL) + { + error(1,errno,"cannot open %s", argv[i]); + } + if (f != NULL && fclose (f) == EOF) + { + error(1,errno,"cannot close %s", argv[i]); + } + break; + case 2: + default: + CVS_MKDIR (argv[i], 0777); + } + + if(!proxy_active) + { + if (current_parsed_root && current_parsed_root->isremote) + { + sprintf(onelineout,"Client: created: ",argv[i]); + + cvs_output(onelineout, strlen(onelineout)); + #ifndef _WIN32 + fflush(stdout); + #endif + } + else + { + // is local - ie: probably is the server + sprintf(onelineout,"created: ",argv[i]); + + cvs_output(onelineout, strlen(onelineout)); + } + + + } // !proxy_active } return err; } Index: cvs.h =================================================================== RCS file: /cvs/cvsnt/src/cvs.h,v retrieving revision 1.93.2.208.6.47 diff -c -r1.93.2.208.6.47 cvs.h *** cvs.h 2 Feb 2018 11:53:38 -0000 1.93.2.208.6.47 --- cvs.h 10 Nov 2020 09:06:31 -0000 *************** *** 1015,1020 **** --- 1015,1021 ---- int cvstag(int argc, char **argv); int version(int argc, char **argv); int hversion(int argc, char **argv); + int mkdirfile(int argc, char **argv); int rcsusername(int argc, char **argv); int ls(int argc, char **argv); int info(int argc, char **argv);