summaryrefslogtreecommitdiff
path: root/mcon/U/d_access.U
diff options
context:
space:
mode:
authorManoj Srivastava <srivasta@debian.org>2008-05-30 12:42:47 -0700
committerManoj Srivastava <srivasta@debian.org>2008-05-30 12:42:47 -0700
commitceb3507a8fca872770b3dcd7e5c5b36179ab95b0 (patch)
treeb46b4e25cfff5f4c13a330b8428ceed343e3796c /mcon/U/d_access.U
Import dist_3.5-236.orig.tar.gz
[dgit import orig dist_3.5-236.orig.tar.gz]
Diffstat (limited to 'mcon/U/d_access.U')
-rw-r--r--mcon/U/d_access.U93
1 files changed, 93 insertions, 0 deletions
diff --git a/mcon/U/d_access.U b/mcon/U/d_access.U
new file mode 100644
index 0000000..fff13db
--- /dev/null
+++ b/mcon/U/d_access.U
@@ -0,0 +1,93 @@
+?RCS: $Id$
+?RCS:
+?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic License,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS: You may reuse parts of this distribution only within the terms of
+?RCS: that same Artistic License; a copy of which may be found at the root
+?RCS: of the source tree for dist 4.0.
+?RCS:
+?RCS: $Log: d_access.U,v $
+?RCS: Revision 3.0 1993/08/18 12:05:42 ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?MAKE:d_access: test +cc cat +cppflags h_fcntl h_sysfile rm Trylink Findhdr \
+ i_unistd
+?MAKE: -pick add $@ %<
+?S:d_access:
+?S: This variable conditionally defines HAS_ACCESS if the access() system
+?S: call is available to check for access permissions using real IDs.
+?S:.
+?C:HAS_ACCESS:
+?C: This manifest constant lets the C program know that the access()
+?C: system call is available to check for accessibility using real UID/GID.
+?C: (always present on UNIX.)
+?C:.
+?H:#$d_access HAS_ACCESS /**/
+?H:.
+?W:%<:R_OK W_OK X_OK F_OK
+?LINT:set d_access
+?LINT:change h_fcntl h_sysfile
+: access call always available on UNIX
+$cat >try.c <<EOC
+#$i_unistd I_UNISTD
+#ifdef I_UNISTD
+#include <unistd.h>
+#endif
+int main(void)
+{
+ static int ret;
+ ret |= access("path", 1);
+ return ret ? 0 : 1;
+}
+EOC
+cyn=access
+set d_access
+eval $trylink
+
+: locate the flags for 'access()'
+case "$d_access" in
+"$define")
+ echo " "
+ $cat >access.c <<'EOCP'
+#include <sys/types.h>
+#ifdef I_FCNTL
+#include <fcntl.h>
+#endif
+#ifdef I_SYS_FILE
+#include <sys/file.h>
+#endif
+#ifdef I_UNISTD
+#include <unistd.h>
+#endif
+int main(void) {
+ static int mode;
+ mode |= R_OK;
+ mode |= W_OK;
+ mode |= X_OK;
+ mode |= F_OK;
+ return mode ? 0 : 1;
+}
+EOCP
+ : check sys/file.h first, no particular reason here
+ if $test `./findhdr sys/file.h` && \
+ $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
+ h_sysfile=true;
+ echo "<sys/file.h> defines the *_OK access constants." >&4
+ elif $test `./findhdr fcntl.h` && \
+ $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
+ h_fcntl=true;
+ echo "<fcntl.h> defines the *_OK access constants." >&4
+@if I_UNISTD
+ elif $test `./findhdr unistd.h` && \
+ $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
+ echo "<unistd.h> defines the *_OK access constants." >&4
+@end
+ else
+ echo "I can't find the four *_OK access constants--I'll use mine." >&4
+ fi
+ ;;
+esac
+$rm -f access*
+