haiku/headers/build/BeOSBuildCompatibility.h
Ingo Weinhold f38eff6aa2 Added a few more functions to the host platform BeOS compatibility layer:
* thread related functions,
* semaphore related functions,
* atomic_*() functions,
* readv_pos(), writev_pos().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20858 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 12:11:30 +00:00

65 lines
1.6 KiB
C

#ifndef BEOS_BUILD_COMPATIBILITY_H
#define BEOS_BUILD_COMPATIBILITY_H
typedef unsigned long haiku_build_addr_t;
#define addr_t haiku_build_addr_t
#include <Errors.h>
#include <sys/types.h>
#include <string.h>
#ifdef __cplusplus
extern "C" {
#endif
// Is kernel-only under Linux.
extern size_t strlcpy(char *dest, const char *source, size_t length);
extern size_t strlcat(char *dest, const char *source, size_t length);
#ifdef HAIKU_HOST_PLATFORM_FREEBSD
extern size_t strnlen(const char *string, size_t length);
#endif
// BeOS only
extern ssize_t read_pos(int fd, off_t pos, void *buffer, size_t count);
extern ssize_t write_pos(int fd, off_t pos, const void *buffer, size_t count);
extern ssize_t readv_pos(int fd, off_t pos, const struct iovec *vec,
size_t count);
extern ssize_t writev_pos(int fd, off_t pos, const struct iovec *vec,
size_t count);
// There's no O_NOTRAVERSE under Linux and FreeBSD, but there's a O_NOFOLLOW, which
// means something different (open() fails when the file is a symlink), but
// we can abuse this flag for our purposes (we filter it in libroot).
#ifndef O_NOTRAVERSE
#ifdef O_NOFOLLOW
#define O_NOTRAVERSE O_NOFOLLOW
#else
#define O_NOTRAVERSE 0
#endif
#endif
#ifndef S_IUMSK
#define S_IUMSK ALLPERMS
#endif
// remap strerror()
extern char *_haiku_build_strerror(int errnum);
#ifndef BUILDING_HAIKU_ERROR_MAPPER
#undef strerror
#define strerror(errnum) _haiku_build_strerror(errnum)
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif // BEOS_BUILD_COMPATIBILITY_H