diff options
author | Sergei Golubchik <serg@mariadb.org> | 2017-06-14 13:44:31 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2017-06-19 16:34:50 +0200 |
commit | ded614d7dbc930e373d1a69a0d2a7e4bf0a2c6d3 (patch) | |
tree | d40f031f6faf4c5784626529604a1d9ea14d50fd | |
parent | 48429359d6bb6382245f1949c458f8219996aa4a (diff) | |
download | mariadb-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.c | 2 | ||||
-rw-r--r-- | mysys/mysys_priv.h | 11 |
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; |