summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/Modules/files.c5
-rw-r--r--Src/Modules/parameter.c11
2 files changed, 10 insertions, 6 deletions
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