Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
diff --git a/lib/portability.h b/lib/portability.h
index feaf789..745f8cd 100644
--- a/lib/portability.h
+++ b/lib/portability.h
@@ -145,3 +145,5 @@
 ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
 ssize_t getline(char **lineptr, size_t *n, FILE *stream);
 #endif
+
+#include "generated/portability.h"
diff --git a/scripts/genconfig.sh b/scripts/genconfig.sh
index dedfde4..b1eb2a8 100755
--- a/scripts/genconfig.sh
+++ b/scripts/genconfig.sh
@@ -49,5 +49,33 @@
   done
 }
 
+headerprobes()
+{
+  ${CROSS_COMPILE}${CC} -xc -o /dev/null - 2>/dev/null << EOF
+    #include <fcntl.h>
+    #ifndef O_NOFOLLOW
+    #error posix 2008 was a while ago now
+    #endif
+EOF
+  if [ $? -ne 0 ]
+  then
+    rm -f a.out
+    ${CROSS_COMPILE}${CC} -xc - 2>/dev/null << EOF
+      #include <stdio.h>
+      #include <sys/types.h>
+      #include <asm/fcntl.h>
+
+      int main(int argc, char *argv[])
+      {
+        printf("0x%x\n", O_NOFOLLOW);
+      }
+EOF
+    X=$(./a.out) 2>/dev/null
+    rm -f a.out
+    echo "#define O_NOFOLLOW ${X:-0}"
+  fi
+}
+
 probeconfig > generated/Config.probed || rm generated/Config.probed
 genconfig > generated/Config.in || rm generated/Config.in
+headerprobes > generated/portability.h || rm generated/portability.h