From de7b6730bcebf08368e7531b68c6a2598166eb86 Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Wed, 2 Aug 2000 14:20:41 +0000 Subject: 12489: pathconf for unlimited fs --- ChangeLog | 3 +++ Src/Modules/files.c | 5 +++-- Src/Modules/parameter.c | 11 +++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 95d20e28b..d4901814f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2000-08-02 Clint Adams + * 12489: Src/Modules/files.c, Src/Modules/parameter.c: check + errno change from pathconf() in case of unlimited path length. + * 12472: configure.in, Src/Modules/files.c, Src/Modules/parameter.c: use pathconf() instead of PATH_MAX if possible. diff --git a/Src/Modules/files.c b/Src/Modules/files.c index 388e35a55..b5e0b5f62 100644 --- a/Src/Modules/files.c +++ b/Src/Modules/files.c @@ -95,12 +95,13 @@ bin_mkdir(char *nam, char **args, char *ops, int func) while(ptr > *args + (**args == '/') && *--ptr == '/') *ptr = 0; #ifdef HAVE_PATHCONF - if((pathmax = pathconf(*args,_PC_PATH_MAX)) == -1) { + errno = 0; + if(((pathmax = pathconf(*args,_PC_PATH_MAX)) == -1) && errno) { zwarnnam(nam, "%s: %e", *args, errno); err = 1; continue; } - else if(ztrlen(*args) > pathmax - 1) { + else if((ztrlen(*args) > pathmax - 1) && errno != -1) { #else if(ztrlen(*args) > PATH_MAX - 1) { #endif diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c index b19202625..7267025a9 100644 --- a/Src/Modules/parameter.c +++ b/Src/Modules/parameter.c @@ -1400,11 +1400,13 @@ setpmnameddir(Param pm, char *value) #ifdef HAVE_PATHCONF int pathmax = 0; + errno = 0; pathmax = pathconf(value, _PC_PATH_MAX); - if (pathmax == -1) { + if ((pathmax == -1) && errno) { zwarn("%s: %e", value, errno); } - else if (!value || *value != '/' || strlen(value) >= pathmax) + else if (!value || *value != '/' || ((strlen(value) >= pathmax) && + pathmax != -1)) #else if (!value || *value != '/' || strlen(value) >= PATH_MAX) #endif @@ -1456,7 +1458,8 @@ setpmnameddirs(Param pm, HashTable ht) v.pm = (Param) hn; #ifdef HAVE_PATHCONF - if((pathmax = pathconf(val, _PC_PATH_MAX)) == -1) + errno = 0; + if((((pathmax = pathconf(val, _PC_PATH_MAX)) == -1)) && errno) zwarn("%s: %e", val, errno); else #endif @@ -1464,7 +1467,7 @@ setpmnameddirs(Param pm, HashTable ht) #ifdef HAVE_PATHCONF strlen(val) >= PATH_MAX) #else - strlen(val) >= pathmax) + ((strlen(val) >= pathmax)) && pathmax != -1) #endif zwarn("invalid value: %s", val, 0); else -- cgit 1.4.1