summaryrefslogtreecommitdiff
path: root/devel/cvs-devel/files/patch-parseopts
diff options
context:
space:
mode:
Diffstat (limited to 'devel/cvs-devel/files/patch-parseopts')
-rw-r--r--devel/cvs-devel/files/patch-parseopts108
1 files changed, 108 insertions, 0 deletions
diff --git a/devel/cvs-devel/files/patch-parseopts b/devel/cvs-devel/files/patch-parseopts
new file mode 100644
index 000000000000..7d1432950ff1
--- /dev/null
+++ b/devel/cvs-devel/files/patch-parseopts
@@ -0,0 +1,108 @@
+diff -Nur src/cvs.h src/cvs.h
+--- src/cvs.h 2006-08-19 00:05:38.000000000 +0100
++++ src/cvs.h 2006-08-19 00:05:41.000000000 +0100
+@@ -177,6 +177,7 @@
+ #define CVSROOTADM_LOGINFO "loginfo"
+ #define CVSROOTADM_MODULES "modules"
+ #define CVSROOTADM_NOTIFY "notify"
++#define CVSROOTADM_OPTIONS "options"
+ #define CVSROOTADM_PASSWD "passwd"
+ #define CVSROOTADM_POSTADMIN "postadmin"
+ #define CVSROOTADM_POSTPROXY "postproxy"
+@@ -506,6 +507,7 @@
+ char *strcat_filename_onto_homedir (const char *, const char *);
+ char *cvs_temp_name (void);
+ FILE *cvs_temp_file (char **filename);
++void parseopts (const char *root);
+
+ int ls (int argc, char *argv[]);
+ int unlink_file (const char *f);
+diff -Nur src/main.c src/main.c
+--- src/main.c 2006-08-19 00:05:38.000000000 +0100
++++ src/main.c 2006-08-19 00:08:14.000000000 +0100
+@@ -1108,6 +1108,8 @@
+ CVSROOT/config file to fix the broken one! */
+ if (config) free_config (config);
+ config = parse_config (current_parsed_root->directory, NULL);
++ /* Now is a convenient time to read CVSROOT/options */
++ parseopts(current_parsed_root->directory);
+
+ /* Can set TMPDIR in the environment if necessary now, since
+ * if it was set in config, we now know it.
+@@ -1482,5 +1484,63 @@
+ exit (EXIT_FAILURE);
+ }
+
++void
++parseopts(root)
++ const char *root;
++{
++ char path[PATH_MAX];
++ int save_errno;
++ char buf[1024];
++ const char *p;
++ char *q;
++ FILE *fp;
++
++ if (root == NULL) {
++ printf("no CVSROOT in parseopts\n");
++ return;
++ }
++ p = strchr (root, ':');
++ if (p)
++ p++;
++ else
++ p = root;
++ if (p == NULL) {
++ printf("mangled CVSROOT in parseopts\n");
++ return;
++ }
++ (void) sprintf (path, "%s/%s/%s", p, CVSROOTADM, CVSROOTADM_OPTIONS);
++ if ((fp = fopen(path, "r")) != NULL) {
++ while (fgets(buf, sizeof buf, fp) != NULL) {
++ if (buf[0] == '#')
++ continue;
++ q = strrchr(buf, '\n');
++ if (q)
++ *q = '\0';
++
++ if (!strncmp(buf, "tag=", 4)) {
++ char *what;
++ char *rcs_localid;
++
++ rcs_localid = buf + 4;
++ RCS_setlocalid(path, 0, &config->keywords, rcs_localid);
++ }
++ if (!strncmp(buf, "tagexpand=", 10)) {
++ char *what;
++ char *rcs_incexc;
++
++ rcs_incexc = buf + 10;
++ RCS_setincexc(&config->keywords, rcs_incexc);
++ }
++ /*
++ * OpenBSD has a "umask=" and "dlimit=" command, we silently
++ * ignore them here since they are not much use to us. cvsumask
++ * defaults to 002 already, and the dlimit (data size limit)
++ * should really be handled elsewhere (eg: login.conf).
++ */
++ }
++ fclose(fp);
++ }
++}
++
+ /* vim:tabstop=8:shiftwidth=4
+ */
+diff -Nur src/server.c src/server.c
+--- src/server.c 2006-08-19 00:05:38.000000000 +0100
++++ src/server.c 2006-08-19 00:05:41.000000000 +0100
+@@ -985,6 +985,9 @@
+ config->MaxCompressionLevel);
+ }
+
++ /* Now is a good time to read CVSROOT/options too. */
++ parseopts(current_parsed_root->directory);
++
+ path = xmalloc (strlen (current_parsed_root->directory)
+ + sizeof (CVSROOTADM)
+ + 2);