summaryrefslogtreecommitdiff
path: root/src/lib/evil/evil_fcntl.h
diff options
context:
space:
mode:
authorVincent Torri <vincent.torri@gmail.com>2012-09-11 16:13:11 +0000
committerVincent Torri <vincent.torri@gmail.com>2012-09-11 16:13:11 +0000
commitcd69ef4c8a66e7155967a8b661a014856979cf31 (patch)
tree4a351ae4a4ca91abf29c85254b85ea8da71f74b0 /src/lib/evil/evil_fcntl.h
parent59a9dfd11860888a35e96dfe51af63cea5cecfe1 (diff)
downloadefl-cd69ef4c8a66e7155967a8b661a014856979cf31.tar.gz
merge: add evil files
SVN revision: 76464
Diffstat (limited to 'src/lib/evil/evil_fcntl.h')
-rw-r--r--src/lib/evil/evil_fcntl.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/lib/evil/evil_fcntl.h b/src/lib/evil/evil_fcntl.h
new file mode 100644
index 0000000000..194341b369
--- /dev/null
+++ b/src/lib/evil/evil_fcntl.h
@@ -0,0 +1,110 @@
+#ifndef __EVIL_FCNTL_H__
+#define __EVIL_FCNTL_H__
+
+
+# include <sys/types.h>
+
+
+/**
+ * @def FD_CLOEXEC
+ * Specifies that the file descriptor should be closed when an exec()
+ * function is invoked.
+ */
+# define FD_CLOEXEC 1
+
+/**
+ * @def O_NONBLOCK
+ * Specifies that the socket is in non-blocking mode.
+ */
+# define O_NONBLOCK 04000
+
+/**
+ * @def F_SETFD
+ * Specifies that fcntl() should set the file descriptor flags
+ * associated with the filedes argument.
+ */
+
+/**
+ * @def F_SETLK
+ * Specifies that fcntl() should set or clear a file segment lock
+ * according to the lock description pointed to by the third argument.
+ */
+
+/**
+ * @def F_SETLKW
+ * Equivalent to F_SETLK except that if a shared or exclusive lock
+ * is blocked by other locks, the thread shall wait until the request
+ * can be satisfied.
+ */
+
+# define F_GETFD 1
+# define F_SETFD 2
+# define F_SETFL 4
+# define F_SETLK 6
+# define F_SETLKW 7
+
+/**
+ * @def F_RDLCK
+ * Read (or shared) lock
+ */
+
+/**
+ * @def F_WRLCK
+ * Write (or exclusive) lock
+ */
+
+/**
+ * @def F_UNLCK
+ * Remove lock
+ */
+
+# ifndef F_RDLCK
+# define F_RDLCK 0
+# define F_WRLCK 1
+# define F_UNLCK 2
+# endif /* ! F_RDLCK */
+
+/**
+ * @struct flock
+ * @brief A structure that controls the lock of a file descriptor.
+ */
+struct flock
+{
+ short int l_type; /**< lock type: read, write, ... */
+ short int l_whence; /**< type of l_start */
+ off_t l_start; /**< starting offset */
+ off_t l_len; /**< 0 means end of the file */
+ pid_t l_pid; /**< lock owner */
+};
+
+
+/**
+ * @brief Provide control over file descriptors.
+ *
+ * @param fd The file descriptor.
+ * @param cmd The type of control.
+ * @return 0 on success, -1 otherwise.
+ *
+ * Performs one of various miscellaneous operations on @p fd.
+ * The operation in question is determined by @p cmd:
+ *
+ * - F_SETFD: Set the close-on-exec flag to the value specified
+ * by the argument after command (only the least significant
+ * bit is used).
+ * - F_SETLK and F_SETLKW: used to manage discretionary file locks.
+ * The third argument must be a pointer to a struct flock (that
+ * may be overwritten by this call).
+ *
+ * This function returns 0 on success, -1 otherwise.
+ *
+ * Conformity: None.
+ *
+ * Supported OS: Windows Vista, Windows XP or Windows 2000
+ * Professional.
+ *
+ * @ingroup Evil
+ */
+EAPI int fcntl(int fd, int cmd, ...);
+
+
+#endif /* __EVIL_FCNTL_H__ */