added 3 changesets to branch 'refs/remotes/mmadia-github/separate-build-environment' old head: 982b8f0b5c85c3dfdd6931b2448b9e11373570dc new head: c71e5e77399bd6127a63434869907d61c198be12 ---------------------------------------------------------------------------- b1f6e2a: Added target_fcntl.h 9ba78db: Missed prefixing a size_t. TODO: add a _haiku_build_size_t and update all uses of _HAIKU_BUILD_FEATURE___SIZE_TYPE__ c71e5e7: Don't wrap function pointers. [ Matt Madia <mattmadia@xxxxxxxxx> ] ---------------------------------------------------------------------------- 3 files changed, 162 insertions(+), 12 deletions(-) headers/build/posix_target/target_fcntl.h | 156 ++++++++++++++++++++++++ headers/build/posix_target/target_stdlib.h | 16 +-- headers/build/posix_target/target_unistd.h | 2 +- ############################################################################ Commit: b1f6e2a98351fc791c6541d912ae6e38eb6acc43 Author: Matt Madia <mattmadia@xxxxxxxxx> Date: Wed Aug 8 23:24:04 2012 UTC Added target_fcntl.h ---------------------------------------------------------------------------- diff --git a/headers/build/posix_target/target_fcntl.h b/headers/build/posix_target/target_fcntl.h new file mode 100644 index 0000000..8b795f5 --- /dev/null +++ b/headers/build/posix_target/target_fcntl.h @@ -0,0 +1,156 @@ +/* + * Copyright 2002-2012 Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _FCNTL_H +#define _FCNTL_H + + +#include <sys/target_types.h> +#include <sys/target_stat.h> +#include <target_unistd.h> + + +/* commands that can be passed to fcntl() */ +#define _HAIKU_BUILD_F_DUPFD 0x0001 /* duplicate fd */ +#define _HAIKU_BUILD_F_GETFD 0x0002 /* get fd flags */ +#define _HAIKU_BUILD_F_SETFD 0x0004 /* set fd flags */ +#define _HAIKU_BUILD_F_GETFL 0x0008 /* get file status flags and access mode */ +#define _HAIKU_BUILD_F_SETFL 0x0010 /* set file status flags */ +#define _HAIKU_BUILD_F_GETLK 0x0020 /* get locking information */ +#define _HAIKU_BUILD_F_SETLK 0x0080 /* set locking information */ +#define _HAIKU_BUILD_F_SETLKW 0x0100 /* as above, but waits if blocked */ + +/* advisory locking types */ +#define _HAIKU_BUILD_F_RDLCK 0x0040 /* read or shared lock */ +#define _HAIKU_BUILD_F_UNLCK 0x0200 /* unlock */ +#define _HAIKU_BUILD_F_WRLCK 0x0400 /* write or exclusive lock */ + +/* file descriptor flags for fcntl() */ +#define _HAIKU_BUILD_FD_CLOEXEC 1 /* close on exec */ + +/* file access modes for open() */ +#define _HAIKU_BUILD_O_RDONLY 0x0000 /* read only */ +#define _HAIKU_BUILD_O_WRONLY 0x0001 /* write only */ +#define _HAIKU_BUILD_O_RDWR 0x0002 /* read and write */ +#define _HAIKU_BUILD_O_ACCMODE 0x0003 /* mask to get the access modes above */ +#define _HAIKU_BUILD_O_RWMASK O_ACCMODE + +/* flags for open() */ +#define _HAIKU_BUILD_O_EXCL 0x0100 /* exclusive creat */ +#define _HAIKU_BUILD_O_CREAT 0x0200 /* create and open file */ +#define _HAIKU_BUILD_O_TRUNC 0x0400 /* open with truncation */ +#define _HAIKU_BUILD_O_NOCTTY 0x1000 /* don't make tty the controlling tty */ +#define _HAIKU_BUILD_O_NOTRAVERSE 0x2000 /* do not traverse leaf link */ + +/* flags for open() and fcntl() */ +#define _HAIKU_BUILD_O_CLOEXEC 0x00000040 /* close on exec */ +#define _HAIKU_BUILD_O_NONBLOCK 0x00000080 /* non blocking io */ +#define _HAIKU_BUILD_O_NDELAY O_NONBLOCK +#define _HAIKU_BUILD_O_APPEND 0x00000800 /* to end of file */ +#define _HAIKU_BUILD_O_SYNC 0x00010000 /* write synchronized I/O file integrity */ +#define _HAIKU_BUILD_O_RSYNC 0x00020000 /* read synchronized I/O file integrity */ +#define _HAIKU_BUILD_O_DSYNC 0x00040000 /* write synchronized I/O data integrity */ +#define _HAIKU_BUILD_O_NOFOLLOW 0x00080000 /* fail on symlinks */ +#define _HAIKU_BUILD_O_NOCACHE 0x00100000 /* do not use the file system cache if */ + /* possible */ +#define _HAIKU_BUILD_O_DIRECT O_NOCACHE +#define _HAIKU_BUILD_O_DIRECTORY 0x00200000 /* fail if not a directory */ + +/* flags for the *at() functions */ +#define _HAIKU_BUILD_AT_FDCWD (-1) /* CWD FD for the *at() functions */ + +#define _HAIKU_BUILD_AT_SYMLINK_NOFOLLOW 0x01 /* fstatat(), fchmodat(), fchownat(), + utimensat() */ +#define _HAIKU_BUILD_AT_SYMLINK_FOLLOW 0x02 /* linkat() */ +#define _HAIKU_BUILD_AT_REMOVEDIR 0x04 /* unlinkat() */ +#define _HAIKU_BUILD_AT_EACCESS 0x08 /* faccessat() */ + +#ifndef _HAIKU_BUILD_LIBROOT_FUNCTION_WRAPPER +/* commands that can be passed to fcntl() */ +# define F_DUPFD _HAIKU_BUILD_F_DUPFD /* duplicate fd */ +# define F_GETFD _HAIKU_BUILD_F_GETFD /* get fd flags */ +# define F_SETFD _HAIKU_BUILD_F_SETFD /* set fd flags */ +# define F_GETFL _HAIKU_BUILD_F_GETFL /* get file status flags and access mode */ +# define F_SETFL _HAIKU_BUILD_F_SETFL /* set file status flags */ +# define F_GETLK _HAIKU_BUILD_F_GETLK /* get locking information */ +# define F_SETLK _HAIKU_BUILD_F_SETLK /* set locking information */ +# define F_SETLKW _HAIKU_BUILD_F_SETLKW /* as above, but waits if blocked */ + +/* advisory locking types */ +# define F_RDLCK _HAIKU_BUILD_F_RDLCK /* read or shared lock */ +# define F_UNLCK _HAIKU_BUILD_F_UNLCK /* unlock */ +# define F_WRLCK _HAIKU_BUILD_F_WRLCK /* write or exclusive lock */ + +/* file descriptor flags for fcntl() */ +# define FD_CLOEXEC _HAIKU_BUILD_FD_CLOEXEC /* close on exec */ + +/* file access modes for open() */ +# define O_RDONLY _HAIKU_BUILD_O_RDONLY /* read only */ +# define O_WRONLY _HAIKU_BUILD_O_WRONLY /* write only */ +# define O_RDWR _HAIKU_BUILD_O_RDWR /* read and write */ +# define O_ACCMODE _HAIKU_BUILD_O_ACCMODE /* mask to get the access modes above */ +# define O_RWMASK _HAIKU_BUILD_O_RWMASK + +/* flags for open() */ +# define O_EXCL _HAIKU_BUILD_O_EXCL /* exclusive creat */ +# define O_CREAT _HAIKU_BUILD_O_CREAT /* create and open file */ +# define O_TRUNC _HAIKU_BUILD_O_TRUNC /* open with truncation */ +# define O_NOCTTY _HAIKU_BUILD_O_NOCTTY /* don't make tty the controlling tty */ +# define O_NOTRAVERSE _HAIKU_BUILD_O_NOTRAVERSE /* do not traverse leaf link */ + +/* flags for open() and fcntl() */ +# define O_CLOEXEC _HAIKU_BUILD_O_CLOEXEC /* close on exec */ +# define O_NONBLOCK _HAIKU_BUILD_O_NONBLOCK /* non blocking io */ +# define O_NDELAY _HAIKU_BUILD_O_NDELAY +# define O_APPEND _HAIKU_BUILD_O_APPEND /* to end of file */ +# define O_SYNC _HAIKU_BUILD_O_SYNC /* write synchronized I/O file integrity */ +# define O_RSYNC _HAIKU_BUILD_O_RSYNC /* read synchronized I/O file integrity */ +# define O_DSYNC _HAIKU_BUILD_O_DSYNC /* write synchronized I/O data integrity */ +# define O_NOFOLLOW _HAIKU_BUILD_O_NOFOLLOW /* fail on symlinks */ +# define O_NOCACHE _HAIKU_BUILD_O_NOCACHE /* do not use the file system cache if */ + /* possible */ +# define O_DIRECT _HAIKU_BUILD_O_DIRECT +# define O_DIRECTORY _HAIKU_BUILD_O_DIRECTORY /* fail if not a directory */ + +/* flags for the *at() functions */ +# define AT_FDCWD _HAIKU_BUILD_AT_FDCWD /* CWD FD for the *at() functions */ + +# define AT_SYMLINK_NOFOLLOW _HAIKU_BUILD_AT_SYMLINK_NOFOLLOW /* fstatat(), fchmodat(), fchownat(), + utimensat() */ +# define AT_SYMLINK_FOLLOW _HAIKU_BUILD_AT_SYMLINK_FOLLOW /* linkat() */ +# define AT_REMOVEDIR _HAIKU_BUILD_AT_REMOVEDIR /* unlinkat() */ +# define AT_EACCESS _HAIKU_BUILD_AT_EACCESS /* faccessat() */ + +#endif /* _HAIKU_BUILD_LIBROOT_FUNCTION_WRAPPER */ + +/* advisory file locking */ + +struct _HAIKU_BUILD_IDENTIFIER(flock) { + short l_type; + short l_whence; + _HAIKU_BUILD_IDENTIFIER(off_t) l_start; + _HAIKU_BUILD_IDENTIFIER(off_t) l_len; + _HAIKU_BUILD_IDENTIFIER(pid_t) l_pid; +}; + + +#ifdef __cplusplus +extern "C" { +#endif + +_HAIKU_BUILD_DECLARE_FUNCTION(int, creat, (const char *path, + _haiku_build_mode_t mode)) +_HAIKU_BUILD_DECLARE_FUNCTION(int, open, (const char *path, int openMode, ...)) + /* the third argument is the permissions of the created file when O_CREAT + is passed in oflags */ +_HAIKU_BUILD_DECLARE_FUNCTION(int, openat, (int fd, const char *path, + int openMode, ...)) + +_HAIKU_BUILD_DECLARE_FUNCTION(int, fcntl, (int fd, int op, ...)) + +#ifdef __cplusplus +} +#endif + +#endif /* _FCNTL_H */ ############################################################################ Commit: 9ba78db2445a12d7ea8f2fbb1ac13ce9b01443cd Author: Matt Madia <mattmadia@xxxxxxxxx> Date: Wed Aug 8 23:27:08 2012 UTC Missed prefixing a size_t. TODO: add a _haiku_build_size_t and update all uses of _HAIKU_BUILD_FEATURE___SIZE_TYPE__ ---------------------------------------------------------------------------- diff --git a/headers/build/posix_target/target_unistd.h b/headers/build/posix_target/target_unistd.h index 778cb14..ce178c6 100644 --- a/headers/build/posix_target/target_unistd.h +++ b/headers/build/posix_target/target_unistd.h @@ -345,7 +345,7 @@ _HAIKU_BUILD_DECLARE_FUNCTION(_HAIKU_BUILD_IDENTIFIER(ssize_t), pread, _HAIKU_BUILD_DECLARE_FUNCTION(_HAIKU_BUILD_IDENTIFIER(ssize_t), write, (int fd, const void *buffer, _HAIKU_BUILD_FEATURE___SIZE_TYPE__ count)) _HAIKU_BUILD_DECLARE_FUNCTION(_HAIKU_BUILD_IDENTIFIER(ssize_t), write_pos, - (int fd, _haiku_build_off_t pos, const void *buffer,size_t count)) + (int fd, _haiku_build_off_t pos, const void *buffer, _HAIKU_BUILD_FEATURE___SIZE_TYPE__ count)) _HAIKU_BUILD_DECLARE_FUNCTION(_HAIKU_BUILD_IDENTIFIER(ssize_t), pwrite, (int fd, const void *buffer, _HAIKU_BUILD_FEATURE___SIZE_TYPE__ count, _haiku_build_off_t pos)) ############################################################################ Commit: c71e5e77399bd6127a63434869907d61c198be12 Author: Matt Madia <mattmadia@xxxxxxxxx> Date: Wed Aug 8 23:44:41 2012 UTC Don't wrap function pointers. ---------------------------------------------------------------------------- diff --git a/headers/build/posix_target/target_stdlib.h b/headers/build/posix_target/target_stdlib.h index 2d3eae5..0613906 100644 --- a/headers/build/posix_target/target_stdlib.h +++ b/headers/build/posix_target/target_stdlib.h @@ -167,26 +167,20 @@ _HAIKU_BUILD_DECLARE_FUNCTION(int, lcong48_r, (unsigned short int param[7], struct _HAIKU_BUILD_IDENTIFIER(drand48_data) *data)) /* search and sort functions */ -//typedef int (*_compare_function)(const void *, const void *); -_HAIKU_BUILD_DECLARE_FUNCTION(int*, _compare_function, - (const void *, const void *)) +typedef int (*_compare_function)(const void *, const void *); _HAIKU_BUILD_DECLARE_FUNCTION(void*, bsearch, (const void *key, const void *base, _HAIKU_BUILD_FEATURE___SIZE_TYPE__ numElements, - _HAIKU_BUILD_FEATURE___SIZE_TYPE__ sizeOfElement, - _haiku_build__compare_function)) + _HAIKU_BUILD_FEATURE___SIZE_TYPE__ sizeOfElement, _compare_function)) _HAIKU_BUILD_DECLARE_FUNCTION(int, heapsort, (void *base, _HAIKU_BUILD_FEATURE___SIZE_TYPE__ numElements, - _HAIKU_BUILD_FEATURE___SIZE_TYPE__ sizeOfElement, - _haiku_build__compare_function)) + _HAIKU_BUILD_FEATURE___SIZE_TYPE__ sizeOfElement, _compare_function)) _HAIKU_BUILD_DECLARE_FUNCTION(int, mergesort, (void *base, _HAIKU_BUILD_FEATURE___SIZE_TYPE__ numElements, - _HAIKU_BUILD_FEATURE___SIZE_TYPE__ sizeOfElement, - _haiku_build__compare_function)) + _HAIKU_BUILD_FEATURE___SIZE_TYPE__ sizeOfElement, _compare_function)) _HAIKU_BUILD_DECLARE_FUNCTION(void, qsort, (void *base, _HAIKU_BUILD_FEATURE___SIZE_TYPE__ numElements, - _HAIKU_BUILD_FEATURE___SIZE_TYPE__ sizeOfElement, - _haiku_build__compare_function)) + _HAIKU_BUILD_FEATURE___SIZE_TYPE__ sizeOfElement, _compare_function)) _HAIKU_BUILD_DECLARE_FUNCTION(int, radixsort, (_haiku_build_u_char const **base, int numElements, _haiku_build_u_char const *table, _haiku_build_u_int endByte))