From af5c3afa91cc29268c6754ea70f15cae30f22403 Mon Sep 17 00:00:00 2001 From: David Bremner Date: Mon, 27 Jan 2014 10:12:12 -0400 Subject: compat: add canonicalize_file_name the POSIX 2008 behaviour of realpath is not available everywhere so we provide a simple wrapper function. We use (and provide) the gnu extension canonicalize_file_name to make it cleaner to test for the feature we need; otherwise we have to rely on realpath segfaulting if the second argument is null. --- compat/canonicalize_file_name.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 compat/canonicalize_file_name.c (limited to 'compat/canonicalize_file_name.c') diff --git a/compat/canonicalize_file_name.c b/compat/canonicalize_file_name.c new file mode 100644 index 00000000..e92c0f62 --- /dev/null +++ b/compat/canonicalize_file_name.c @@ -0,0 +1,18 @@ +#include "compat.h" +#include +#undef _GNU_SOURCE +#include + +char * +canonicalize_file_name (const char * path) +{ +#ifdef PATH_MAX + char *resolved_path = malloc (PATH_MAX+1); + if (resolved_path == NULL) + return NULL; + + return realpath (path, resolved_path); +#else +#error undefined PATH_MAX _and_ missing canonicalize_file_name not supported +#endif +} -- cgit v1.2.3