Applied to CVS.
authorWayne Davison <wayned@samba.org>
Wed, 9 Jun 2004 21:51:35 +0000 (21:51 +0000)
committerWayne Davison <wayned@samba.org>
Wed, 9 Jun 2004 21:51:35 +0000 (21:51 +0000)
daemon-glob.patch [deleted file]

diff --git a/daemon-glob.patch b/daemon-glob.patch
deleted file mode 100644 (file)
index 172a28c..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-After applying this patch and running configure, you MUST run this
-command before "make":
-
-    make proto
-
---- clientserver.c     5 Jun 2004 19:59:03 -0000       1.123
-+++ clientserver.c     5 Jun 2004 20:38:15 -0000
-@@ -207,7 +207,8 @@ int start_inband_exchange(char *user, ch
- static int rsync_module(int f_in, int f_out, int i)
- {
-       int argc = 0;
--      char *argv[MAX_ARGS];
-+      int maxargs;
-+      char **argv;
-       char **argp;
-       char line[MAXPATHLEN];
-       uid_t uid = (uid_t)-2;  /* canonically "nobody" */
-@@ -385,6 +386,9 @@ static int rsync_module(int f_in, int f_
-       io_printf(f_out, "@RSYNCD: OK\n");
-+      maxargs = MAX_ARGS;
-+      if (!(argv = new_array(char *, maxargs)))
-+              out_of_memory("rsync_module");
-       argv[argc++] = "rsyncd";
-       while (1) {
-@@ -396,23 +400,25 @@ static int rsync_module(int f_in, int f_
-               p = line;
-+              if (argc == maxargs) {
-+                      maxargs += MAX_ARGS;
-+                      if (!(argv = realloc_array(argv, char *, maxargs)))
-+                              out_of_memory("rsync_module");
-+              }
-               if (!(argv[argc] = strdup(p)))
--                      return -1;
-+                      out_of_memory("rsync_module");
-               if (start_glob) {
-                       if (start_glob == 1) {
-                               request = strdup(p);
-                               start_glob++;
-                       }
--                      glob_expand(name, argv, &argc, MAX_ARGS);
-+                      glob_expand(name, &argv, &argc, &maxargs);
-               } else
-                       argc++;
-               if (strcmp(line, ".") == 0)
-                       start_glob = 1;
--
--              if (argc == MAX_ARGS)
--                      return -1;
-       }
-       argp = argv;
---- util.c     5 Jun 2004 20:26:56 -0000       1.148
-+++ util.c     5 Jun 2004 20:38:16 -0000
-@@ -495,12 +495,20 @@ static int exclude_server_path(char *arg
-       return 0;
- }
--static void glob_expand_one(char *s, char **argv, int *argc_ptr, int maxargs)
-+static void glob_expand_one(char *s, char ***argv_ptr, int *argc_ptr,
-+                          int *maxargs_ptr)
- {
-+      char **argv = *argv_ptr;
-       int argc = *argc_ptr;
-+      int maxargs = *maxargs_ptr;
- #if !(defined(HAVE_GLOB) && defined(HAVE_GLOB_H))
--      if (maxargs <= argc)
--              return;
-+      if (argc == maxargs) {
-+              maxargs += MAX_ARGS;
-+              if (!(argv = realloc_array(argv, char *, maxargs)))
-+                      out_of_memory("glob_expand_one");
-+              *argv_ptr = argv;
-+              *maxargs_ptr = maxargs;
-+      }
-       if (!*s)
-               s = ".";
-       s = argv[argc++] = strdup(s);
-@@ -521,12 +529,17 @@ static void glob_expand_one(char *s, cha
-       memset(&globbuf, 0, sizeof globbuf);
-       if (!exclude_server_path(s))
-               glob(s, 0, NULL, &globbuf);
-+      if (MAX((int)globbuf.gl_pathc, 1) > maxargs - argc) {
-+              maxargs += globbuf.gl_pathc + MAX_ARGS;
-+              if (!(argv = realloc_array(argv, char *, maxargs)))
-+                      out_of_memory("glob_expand_one");
-+              *argv_ptr = argv;
-+              *maxargs_ptr = maxargs;
-+      }
-       if (globbuf.gl_pathc == 0)
-               argv[argc++] = s;
-       else {
-               int j = globbuf.gl_pathc;
--              if (j > maxargs - argc)
--                      j = maxargs - argc;
-               free(s);
-               for (i = 0; i < j; i++) {
-                       if (!(argv[argc++] = strdup(globbuf.gl_pathv[i])))
-@@ -539,9 +552,9 @@ static void glob_expand_one(char *s, cha
- }
- /* This routine is only used in daemon mode. */
--void glob_expand(char *base1, char **argv, int *argc_ptr, int maxargs)
-+void glob_expand(char *base1, char ***argv_ptr, int *argc_ptr, int *maxargs_ptr)
- {
--      char *s = argv[*argc_ptr];
-+      char *s = (*argv_ptr)[*argc_ptr];
-       char *p, *q;
-       char *base = base1;
-       int base_len = strlen(base);
-@@ -562,7 +575,7 @@ void glob_expand(char *base1, char **arg
-       for (q = s; *q; q = p + base_len) {
-               if ((p = strstr(q, base)) != NULL)
-                       *p = '\0'; /* split it at this point */
--              glob_expand_one(q, argv, argc_ptr, maxargs);
-+              glob_expand_one(q, argv_ptr, argc_ptr, maxargs_ptr);
-               if (!p)
-                       break;
-       }