SOURCES: netkit-ftp-arg_max.patch (NEW) - Use sysconf to get ARG_MAX instea...

areq areq at pld-linux.org
Sun Mar 1 20:58:50 CET 2009


Author: areq                         Date: Sun Mar  1 19:58:50 2009 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- Use sysconf to get ARG_MAX instead of a macro 

---- Files affected:
SOURCES:
   netkit-ftp-arg_max.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/netkit-ftp-arg_max.patch
diff -u /dev/null SOURCES/netkit-ftp-arg_max.patch:1.1
--- /dev/null	Sun Mar  1 20:58:50 2009
+++ SOURCES/netkit-ftp-arg_max.patch	Sun Mar  1 20:58:44 2009
@@ -0,0 +1,55 @@
+diff -up netkit-ftp-0.17/ftp/glob.c.arg_max netkit-ftp-0.17/ftp/glob.c
+--- netkit-ftp-0.17/ftp/glob.c.arg_max	2008-04-07 11:41:14.000000000 +0200
++++ netkit-ftp-0.17/ftp/glob.c	2008-04-07 12:01:53.000000000 +0200
+@@ -50,6 +50,7 @@ char glob_rcsid[] = 
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <unistd.h>
+ 
+ #include "ftp_var.h"  /* for protos only */
+ #include "glob.h"
+@@ -57,7 +58,7 @@ char glob_rcsid[] = 
+ #define	QUOTE 0200
+ #define	TRIM 0177
+ #define	eq(a,b)		(strcmp(a, b)==0)
+-#define	GAVSIZ		(ARG_MAX/6)
++#define	GAVSIZ		(sysconf(_SC_ARG_MAX)/6)
+ #define	isdir(d)	((d.st_mode & S_IFMT) == S_IFDIR)
+ 
+ const char *globerr;
+@@ -115,7 +116,7 @@ char **
+ ftpglob(const char *v)
+ {
+ 	char agpath[BUFSIZ];
+-	entry agargv[GAVSIZ];
++	entry *agargv;
+ 	centry vv[2];
+ 	vv[0].text = v;
+ 	vv[1].text = NULL;
+@@ -133,6 +134,8 @@ ftpglob(const char *v)
+ 	/* added ()'s to sizeof, (ambigious math for the compiler) */
+ 	lastgpathp = agpath + (sizeof(agpath)- 2);
+ 
++	agargv = (entry *)malloc(sizeof (entry) * GAVSIZ);
++	if (agargv == NULL) fatal("Out of memory");
+ 	ginit(agargv); 
+ 	globcnt = 0;
+ 	collect(v);
+@@ -156,7 +159,7 @@ ginit(entry *agargv)
+ 	gargv = agargv; 
+ 	sortbas = agargv; 
+ 	gargc = 0;
+-	gnleft = ARG_MAX - 4;
++	gnleft = sysconf(_SC_ARG_MAX) - 4;
+ }
+ 
+ static 
+@@ -674,6 +677,7 @@ efree(entry *av) 
+ {
+     int i;
+     for (i=0; av[i].text; i++) free(av[i].text);
++    free((void *)av);
+ }
+ 
+ static
================================================================


More information about the pld-cvs-commit mailing list