summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--daemon/configure.ac1
-rw-r--r--daemon/realpath.c15
-rwxr-xr-xsrc/generator.ml2
3 files changed, 17 insertions, 1 deletions
diff --git a/daemon/configure.ac b/daemon/configure.ac
index 1d335b11..65a14858 100644
--- a/daemon/configure.ac
+++ b/daemon/configure.ac
@@ -183,6 +183,7 @@ AC_CHECK_FUNCS([\
ntohl \
ntohs \
posix_fallocate \
+ realpath \
removexattr \
setxattr \
statvfs \
diff --git a/daemon/realpath.c b/daemon/realpath.c
index f9d08dac..e6c81efb 100644
--- a/daemon/realpath.c
+++ b/daemon/realpath.c
@@ -28,6 +28,7 @@
#include <dirent.h>
#include "daemon.h"
+#include "optgroups.h"
#include "actions.h"
/* On Windows, NAME_MAX is not defined. */
@@ -35,9 +36,20 @@
#define NAME_MAX FILENAME_MAX
#endif
+int
+optgroup_realpath_available (void)
+{
+#ifdef HAVE_REALPATH
+ return 1;
+#else
+ return 0;
+#endif
+}
+
char *
do_realpath (const char *path)
{
+#ifdef HAVE_REALPATH
char *ret;
CHROOT_IN;
@@ -49,6 +61,9 @@ do_realpath (const char *path)
}
return ret; /* caller frees */
+#else
+ NOT_AVAILABLE (NULL);
+#endif
}
char *
diff --git a/src/generator.ml b/src/generator.ml
index 74ff3a82..9e602acd 100755
--- a/src/generator.ml
+++ b/src/generator.ml
@@ -3266,7 +3266,7 @@ matching lines.");
This calls the external C<zfgrep -i> program and returns the
matching lines.");
- ("realpath", (RString "rpath", [Pathname "path"]), 163, [],
+ ("realpath", (RString "rpath", [Pathname "path"]), 163, [Optional "realpath"],
[InitISOFS, Always, TestOutput (
[["realpath"; "/../directory"]], "/directory")],
"canonicalized absolute pathname",