summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/canonicalize.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/canonicalize.c b/lib/canonicalize.c
index cfd3be60e..fd6de0559 100644
--- a/lib/canonicalize.c
+++ b/lib/canonicalize.c
@@ -38,9 +38,7 @@ void free ();
#include <sys/stat.h>
-#if HAVE_ERRNO_H
-# include <errno.h>
-#endif
+#include <errno.h>
#include "xalloc.h"
#include "xgetcwd.h"
@@ -55,11 +53,21 @@ extern int errno;
#if !HAVE_RESOLVEPATH
-# if HAVE_STDDEF_H
-# include <stddef.h>
-# define PTR_INT_TYPE ptrdiff_t
+/* If __PTRDIFF_TYPE__ is
+ defined, as with GNU C, use that; that way we don't pollute the
+ namespace with <stddef.h>'s symbols. Otherwise, if <stddef.h> is
+ available, include it and use ptrdiff_t. In traditional C, long is
+ the best that we can do. */
+
+# ifdef __PTRDIFF_TYPE__
+# define PTR_INT_TYPE __PTRDIFF_TYPE__
# else
-# define PTR_INT_TYPE long
+# ifdef HAVE_STDDEF_H
+# include <stddef.h>
+# define PTR_INT_TYPE ptrdiff_t
+# else
+# define PTR_INT_TYPE long
+# endif
# endif
# include "pathmax.h"