fcntl
authorMichael Wallner <mike@php.net>
Tue, 26 Jan 2016 09:52:46 +0000 (10:52 +0100)
committerMichael Wallner <mike@php.net>
Tue, 26 Jan 2016 09:52:46 +0000 (10:52 +0100)
config.m4
m4/fcntl.m4 [new file with mode: 0644]
m4/psi.m4

index 9666b1b38f39dbd1c500a209ff44f078d13b1f0a..e2a28dda547a414f0bd58eb6b23f1a4fb6fd2329 100644 (file)
--- a/config.m4
+++ b/config.m4
@@ -19,6 +19,7 @@ m4_foreach(incfile, [
        [psi_macro.m4],
        [psi_struct.m4],
        [errno.m4],
+       [fcntl.m4],
        [glob.m4],
        [locale.m4],
        [stddef.m4],
@@ -64,6 +65,7 @@ if test "$PHP_PSI" != no; then
        PSI_CHECK_STDDEF
        PSI_CHECK_SYS_TYPES
        PSI_CHECK_ERRNO
+       PSI_CHECK_FCNTL
        PSI_CHECK_GLOB
        PSI_CHECK_LOCALE
        PSI_CHECK_STDIO
diff --git a/m4/fcntl.m4 b/m4/fcntl.m4
new file mode 100644 (file)
index 0000000..a9b59d4
--- /dev/null
@@ -0,0 +1,73 @@
+PSI_CHECK_FCNTL() {
+       AC_CHECK_HEADERS(fcntl.h)
+
+       PSI_CONST(F_DUPFD, int)
+       PSI_CONST(F_DUPFD_CLOEXEC, int)
+       PSI_CONST(F_GETFD, int)
+       PSI_CONST(F_SETFD, int)
+       PSI_CONST(F_GETFL, int)
+       PSI_CONST(F_SETFL, int)
+       PSI_CONST(F_GETLK, int)
+       PSI_CONST(F_SETLK, int)
+       PSI_CONST(F_SETLKW, int)
+       PSI_CONST(F_GETOWN, int)
+       PSI_CONST(F_SETOWN, int)
+
+       PSI_CONST(FD_CLOEXEC, int)
+
+       PSI_CONST(F_RDLCK, int)
+       PSI_CONST(F_UNLCK, int)
+       PSI_CONST(F_WRLCK, int)
+
+       PSI_CONST(O_CLOEXEC, int)
+       PSI_CONST(O_CREAT, int)
+       PSI_CONST(O_DIRECTORY, int)
+       PSI_CONST(O_EXCL, int)
+       PSI_CONST(O_NOCTTY, int)
+       PSI_CONST(O_NOFOLLOW, int)
+       PSI_CONST(O_TRUNC, int)
+       PSI_CONST(O_TTY_INIT, int)
+
+       PSI_CONST(O_APPEND, int)
+       PSI_CONST(O_DSYNC, int)
+       PSI_CONST(O_NONBLOCK, int)
+       PSI_CONST(O_RSYNC, int)
+       PSI_CONST(O_SYNC, int)
+
+       PSI_CONST(O_ACCMODE, int)
+
+       PSI_CONST(O_EXEC, int)
+       PSI_CONST(O_RDONLY, int)
+       PSI_CONST(O_RDWR, int)
+       PSI_CONST(O_SEARCH, int)
+       PSI_CONST(O_WRONLY, int)
+
+       PSI_CONST(AT_FDCWD, int)
+       PSI_CONST(AT_EACCESS, int)
+       PSI_CONST(AT_SYMLINK_NOFOLLOW, int)
+       PSI_CONST(AT_SYMLINK_FOLLOW, int)
+       PSI_CONST(AT_REMOVEDIR, int)
+
+       PSI_CONST(POSIX_FADV_DONTNEED, int)
+       PSI_CONST(POSIX_FADV_NOREUSE, int)
+       PSI_CONST(POSIX_FADV_NORMAL, int)
+       PSI_CONST(POSIX_FADV_RANDOM, int)
+       PSI_CONST(POSIX_FADV_SEQUENTUAL, int)
+       PSI_CONST(POSIX_FADV_WILLNEED, int)
+
+       PSI_STRUCT(struct flock, [
+               short l_type,
+               short l_whence,
+               off_t l_start,
+               off_t l_len,
+               pid_t l_pid]
+       )
+
+       PSI_DECL(int creat, [(const char *path, mode_t mode)])
+       PSI_DECL(int fcntl, [(int fd, int cmd, mode_t mode)])
+       PSI_DECL(int open, [(const char *path, int flags, mode_t mode)])
+       PSI_DECL(int openat, [(int dirfd, const char *path, int flags, mode_t mode)])
+
+       PSI_DECL(int posix_fadvise, [(int fd, off_t offset, off_t len, int advice)])
+       PSI_DECL(int posix_fallocate, [(int fd, off_t offset, off_t len)])
+}
index 37864d0db6075fec164956fcaf47e02b9746dcb4..1f6af02f1930e960ba3661730d29d5a6023a3ebe 100644 (file)
--- a/m4/psi.m4
+++ b/m4/psi.m4
@@ -14,6 +14,7 @@ dnl These headers are included by src/context.c.
 dnl This macro must be called prior any checks for a type, struct, decl etc.
 AC_DEFUN(PSI_CONFIG_INIT, [
        cat >$PSI_TYPES <<EOF
+/* generated by configure */
 static struct psi_predef_type {
        token_t type_tag;
        const char *type_name;
@@ -21,6 +22,7 @@ static struct psi_predef_type {
 } psi_predef_types@<:@@:>@ = {
 EOF
        cat >$PSI_STRUCTS <<EOF
+/* generated by configure */
 static struct psi_predef_struct {
        token_t type_tag;
        const char *type_name;
@@ -32,6 +34,7 @@ static struct psi_predef_struct {
 } psi_predef_structs@<:@@:>@ = {
 EOF
        cat >$PSI_CONSTS <<EOF
+/* generated by configure */
 static struct psi_predef_const {
        token_t type_tag;
        const char *type_name;
@@ -41,6 +44,7 @@ static struct psi_predef_const {
 } psi_predef_consts@<:@@:>@ = {
 EOF
        cat >$PSI_REDIRS <<EOF
+/* generated by configure */
 static struct psi_func_redir {
        const char *name;
        void (*func)(void);
@@ -48,6 +52,7 @@ static struct psi_func_redir {
 EOF
        cat >$PSI_MACROS </dev/null
        cat >$PSI_DECLS <<EOF
+/* generated by configure */
 static struct psi_predef_decl {
        token_t type_tag;
        const char *type_name;
@@ -57,6 +62,7 @@ static struct psi_predef_decl {
 } psi_predef_decls@<:@@:>@ = {
 EOF
        cat >$PSI_VA_DECLS <<EOF
+/* generated by configure */
 static struct psi_predef_decl psi_predef_vararg_decls@<:@@:>@ = {
 EOF
 ])
@@ -65,6 +71,7 @@ dnl PSI_CONFIG_DONE()
 dnl Finish the headers with the pre-defined types etc.
 AC_DEFUN(PSI_CONFIG_DONE, [
        cat >$PSI_STDINC <<EOF
+/* generated by configure */
 PSI_INCLUDES
 EOF
        for i in $PSI_TYPES $PSI_STRUCTS $PSI_CONSTS $PSI_REDIRS $PSI_DECLS $PSI_VA_DECLS; do
@@ -100,6 +107,9 @@ AC_DEFUN(PSI_INCLUDES, [AC_INCLUDES_DEFAULT()
 #ifdef HAVE_ARPA_NAMESER_H
 # include <arpa/nameser.h>
 #endif
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
 #ifdef HAVE_NDBM_H
 # include <ndbm.h>
 #endif
@@ -154,7 +164,7 @@ AC_DEFUN(PSI_LEMON, [
 
 dnl PSI_PKG_CONFIG()
 dnl Check for `pkg-config` and add possible libjit and libffi directories to
-dnl $PKG_CONFIG_PATH, because those libs often ship with headers etc. in 
+dnl $PKG_CONFIG_PATH, because those libs often ship with headers etc. in
 dnl arch-dependent locations.
 AC_DEFUN([PSI_PKG_CONFIG], [
        if test -z "$PKG_CONFIG"
@@ -247,11 +257,11 @@ AC_DEFUN(PSI_CHECK_LIBJIT, [
 dnl PSI_CHECK_LIBFFI()
 dnl Check for libffi with `pkg-config`. If that fails, `configure` looks into
 dnl $PHP_PSI_LIBFFI or standard locations to find libjit deps.
-dnl Checks for availability of recent closure API: 
+dnl Checks for availability of recent closure API:
 dnl \ffi_closure_alloc and \ffi_prep_closure.
 dnl Checks for availability of recent vararg API:
 dnl \ffi_prep_cif_var.
-dnl AC_DEFINEs HAVE_LIBFFI, PSI_HAVE_FFI_CLOSURE_ALLOC, 
+dnl AC_DEFINEs HAVE_LIBFFI, PSI_HAVE_FFI_CLOSURE_ALLOC,
 dnl PSI_HAVE_FFI_PREP_CLOSURE and PSI_HAVE_FFO_PREP_VIF_VAR.
 AC_DEFUN(PSI_CHECK_LIBFFI, [
        AC_REQUIRE([PSI_PKG_CONFIG])dnl
@@ -263,7 +273,7 @@ AC_DEFUN(PSI_CHECK_LIBFFI, [
        else
                psi_cv_libffi=false
        fi])
-       
+
        if $psi_cv_libffi
        then
                AC_MSG_CHECKING(for libffi)