summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2017-06-14 13:44:31 +0200
committerSergei Golubchik <serg@mariadb.org>2017-06-19 16:34:50 +0200
commitded614d7dbc930e373d1a69a0d2a7e4bf0a2c6d3 (patch)
treed40f031f6faf4c5784626529604a1d9ea14d50fd
parent48429359d6bb6382245f1949c458f8219996aa4a (diff)
downloadmariadb-git-ded614d7dbc930e373d1a69a0d2a7e4bf0a2c6d3.tar.gz
MDEV-12778 mariadb-10.1 FTBFS on GNU/Hurd due to use of PATH_MAX
-rw-r--r--mysys/my_symlink.c2
-rw-r--r--mysys/mysys_priv.h11
2 files changed, 11 insertions, 2 deletions
diff --git a/mysys/my_symlink.c b/mysys/my_symlink.c
index ed35fff41e9..12959f1f24a 100644
--- a/mysys/my_symlink.c
+++ b/mysys/my_symlink.c
@@ -197,7 +197,7 @@ int my_realpath(char *to, const char *filename, myf MyFlags)
const char *my_open_parent_dir_nosymlinks(const char *pathname, int *pdfd)
{
- char buf[PATH_MAX+1];
+ char buf[FN_REFLEN + 1];
char *s= buf, *e= buf+1, *end= strnmov(buf, pathname, sizeof(buf));
int fd, dfd= -1;
diff --git a/mysys/mysys_priv.h b/mysys/mysys_priv.h
index 661c4c184f1..1004bf8889f 100644
--- a/mysys/mysys_priv.h
+++ b/mysys/mysys_priv.h
@@ -107,12 +107,21 @@ const char *my_open_parent_dir_nosymlinks(const char *pathname, int *pdfd);
res= AT; \
if (dfd >= 0) close(dfd); \
return res;
-#elif defined(HAVE_REALPATH)
+#elif defined(HAVE_REALPATH) && defined(PATH_MAX)
#define NOSYMLINK_FUNCTION_BODY(AT,NOAT) \
char buf[PATH_MAX+1]; \
if (realpath(pathname, buf) == NULL) return -1; \
if (strcmp(pathname, buf)) { errno= ENOTDIR; return -1; } \
return NOAT;
+#elif defined(HAVE_REALPATH)
+#define NOSYMLINK_FUNCTION_BODY(AT,NOAT) \
+ char *buf= realpath(pathname, NULL); \
+ int res; \
+ if (buf == NULL) return -1; \
+ if (strcmp(pathname, buf)) { errno= ENOTDIR; res= -1; } \
+ else res= NOAT; \
+ free(buf); \
+ return res;
#else
#define NOSYMLINK_FUNCTION_BODY(AT,NOAT) \
return NOAT;