e883b3c9ff
I definitely compiled last night, but how in the world was that possible?
323 lines
9.3 KiB
C++
323 lines
9.3 KiB
C++
#ifndef HAIKU_BUILD_COMPATIBILITY_H
|
|
#define HAIKU_BUILD_COMPATIBILITY_H
|
|
|
|
/*!
|
|
This header is automatically included in all Haiku applications
|
|
that are built for BeOS or a Haiku host (which might not be compatible
|
|
with the current Haiku source anymore).
|
|
It will make BeOS/Haiku a bit more Haiku compatible, and slightly more
|
|
POSIX compatible, too. It is supposed to keep the BeOS compatibility
|
|
kludges in our source files at a minimum.
|
|
*/
|
|
|
|
#ifdef HAIKU_HOST_PLATFORM_DANO
|
|
# include <be_setup.h>
|
|
# include <be_errors.h>
|
|
# define _ERRORS_H
|
|
// this is what Haiku/BeOS is using
|
|
#endif
|
|
|
|
#ifdef HAIKU_TARGET_PLATFORM_LIBBE_TEST
|
|
# define _BE_ERRNO_H_
|
|
// this is what Dano/Zeta is using
|
|
# include <Errors.h>
|
|
#endif
|
|
|
|
#include <sys/stat.h>
|
|
#include <sys/types.h>
|
|
#include <SupportDefs.h>
|
|
#include <TypeConstants.h>
|
|
|
|
#include <string.h>
|
|
|
|
// no addr_t under standard BeOS
|
|
#if !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
|
|
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
|
|
typedef unsigned long haiku_build_addr_t;
|
|
# define addr_t haiku_build_addr_t
|
|
#endif
|
|
|
|
#if !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
|
|
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
|
|
|
|
struct sockaddr_storage {
|
|
uint8 ss_len; /* total length */
|
|
uint8 ss_family; /* address family */
|
|
uint8 __ss_pad1[6]; /* align to quad */
|
|
uint64 __ss_pad2; /* force alignment to 64 bit */
|
|
uint8 __ss_pad3[112]; /* pad to a total of 128 bytes */
|
|
};
|
|
|
|
typedef int socklen_t;
|
|
|
|
#endif // !HAIKU_HOST_PLATFORM_HAIKU
|
|
|
|
#ifndef DEFFILEMODE
|
|
# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
|
|
#endif
|
|
|
|
#ifndef FS_WRITE_FSINFO_NAME
|
|
# define FS_WRITE_FSINFO_NAME 0x0001
|
|
#endif
|
|
|
|
#ifndef B_CURRENT_TEAM
|
|
# define B_CURRENT_TEAM 0
|
|
#endif
|
|
|
|
#ifndef SYMLOOP_MAX
|
|
# define SYMLOOP_MAX (16)
|
|
#endif
|
|
|
|
#ifndef B_FIRST_REAL_TIME_PRIORITY
|
|
# define B_FIRST_REAL_TIME_PRIORITY B_REAL_TIME_DISPLAY_PRIORITY
|
|
#endif
|
|
|
|
#if !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
|
|
&& !defined(B_SPINLOCK_INITIALIZER)
|
|
# define B_SPINLOCK_INITIALIZER 0
|
|
#endif
|
|
|
|
#if defined(__GNUC__) && !defined(_PRINTFLIKE)
|
|
# define _PRINTFLIKE(_format_, _args_) \
|
|
__attribute__((format(__printf__, _format_, _args_)))
|
|
#endif
|
|
|
|
#if 0
|
|
// NOTE: This is probably only needed on platforms which don't use ELF
|
|
// as binary format. So could probably be removed completely.
|
|
#if defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
|
|
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
|
|
// BeOS version of BeBuild.h defines this
|
|
# define _IMPEXP_ROOT __declspec(dllimport)
|
|
# define _IMPEXP_BE __declspec(dllimport)
|
|
# define _IMPEXP_MEDIA __declspec(dllimport)
|
|
# define _IMPEXP_TRACKER __declspec(dllimport)
|
|
# define _IMPEXP_TRANSLATION __declspec(dllimport)
|
|
# define _IMPEXP_DEVICE __declspec(dllimport)
|
|
# define _IMPEXP_NET __declspec(dllimport)
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(__cplusplus) && !defined(HAIKU_HOST_PLATFORM_HAIKU)
|
|
class BBuffer;
|
|
class BBufferConsumer;
|
|
class BBufferGroup;
|
|
class BContinuousParameter;
|
|
class BControllable;
|
|
class BFileInterface;
|
|
class BMimeType;
|
|
class BParameterWeb;
|
|
class BRegion;
|
|
class BTextView;
|
|
class BTranslator;
|
|
class BTimeSource;
|
|
struct entry_ref;
|
|
struct media_node;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
extern void atomic_set(int32* value, int32 newValue);
|
|
extern int32 atomic_get_and_set(int32* value, int32 newValue);
|
|
extern int32 atomic_test_and_set(int32 *value, int32 newValue,
|
|
int32 testAgainst);
|
|
extern int32 atomic_get(int32 *value);
|
|
extern void atomic_set64(int64* value, int64 newValue);
|
|
extern int64 atomic_get_and_set64(int64* value, int64 newValue);
|
|
extern int64 atomic_test_and_set64(int64 *value, int64 newValue,
|
|
int64 testAgainst);
|
|
extern int64 atomic_get64(int64 *value);
|
|
extern int64 atomic_add64(int64 *value, int64 addValue);
|
|
extern int64 atomic_and64(int64 *value, int64 andValue);
|
|
extern int64 atomic_or64(int64 *value, int64 orValue);
|
|
|
|
extern size_t strnlen(const char *string, size_t count);
|
|
|
|
extern size_t strlcat(char *dest, const char *source, size_t length);
|
|
extern size_t strlcpy(char *dest, const char *source, size_t length);
|
|
|
|
extern char *strcasestr(const char *string, const char *searchString);
|
|
|
|
extern float roundf(float value);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
// These are R1-specific extensions
|
|
#if !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
|
|
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
|
|
# define B_TRANSLATION_MAKE_VERSION(major, minor, revision) \
|
|
((major << 8) | ((minor << 4) & 0xf0) | (revision & 0x0f))
|
|
# define B_TRANSLATION_MAJOR_VERSION(v) (v >> 8)
|
|
# define B_TRANSLATION_MINOR_VERSION(v) ((v >> 4) & 0xf)
|
|
# define B_TRANSLATION_REVISION_VERSION(v) (v & 0xf)
|
|
# ifndef USING_HAIKU_TYPE_CONSTANTS_H
|
|
# define B_LARGE_ICON_TYPE 'ICON'
|
|
# define B_MINI_ICON_TYPE 'MICN'
|
|
# define B_VECTOR_ICON_TYPE 'VICN'
|
|
# define B_BITMAP_NO_SERVER_LINK 0
|
|
# define B_BITMAP_SCALE_BILINEAR 0
|
|
# endif
|
|
#endif // HAIKU_TARGET_PLATFORM_LIBBE_TEST
|
|
|
|
#if defined(HAIKU_TARGET_PLATFORM_BEOS) || defined(HAIKU_TARGET_PLATFORM_BONE)
|
|
# define B_REDO 'REDO'
|
|
# define B_BAD_DATA (B_NOT_ALLOWED + 1)
|
|
# define B_DOCUMENT_BACKGROUND_COLOR B_PANEL_BACKGROUND_COLOR
|
|
# define B_DOCUMENT_TEXT_COLOR B_MENU_ITEM_TEXT_COLOR
|
|
#endif
|
|
|
|
#if !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
|
|
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
|
|
# if !defined(B_NOT_SUPPORTED) && !defined(HAIKU_HOST_PLATFORM_DANO)
|
|
# define B_NOT_SUPPORTED (B_ERROR)
|
|
# endif
|
|
# define B_KERNEL_READ_AREA 0
|
|
# define B_KERNEL_WRITE_AREA 0
|
|
#endif
|
|
|
|
#if defined(HAIKU_TARGET_PLATFORM_BONE) || defined(HAIKU_TARGET_PLATFORM_DANO)
|
|
# define IF_NAMESIZE IFNAMSIZ
|
|
# define ifc_value ifc_val
|
|
# define IFF_AUTO_CONFIGURED 0
|
|
#endif
|
|
|
|
#include <limits.h>
|
|
|
|
#ifndef INT32_MAX
|
|
# define INT32_MAX INT_MAX
|
|
#endif
|
|
|
|
#ifndef INT64_MAX
|
|
# define INT64_MAX LONGLONG_MAX
|
|
#endif
|
|
|
|
#if !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
|
|
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
|
|
# define B_MPEG_2_AUDIO_LAYER_1 (enum mpeg_id)0x201
|
|
# define B_MPEG_2_AUDIO_LAYER_2 (enum mpeg_id)0x202
|
|
# define B_MPEG_2_AUDIO_LAYER_3 (enum mpeg_id)0x203
|
|
# define B_MPEG_2_VIDEO (enum mpeg_id)0x211
|
|
# define B_MPEG_2_5_AUDIO_LAYER_1 (enum mpeg_id)0x301
|
|
# define B_MPEG_2_5_AUDIO_LAYER_2 (enum mpeg_id)0x302
|
|
# define B_MPEG_2_5_AUDIO_LAYER_3 (enum mpeg_id)0x303
|
|
#endif
|
|
|
|
// TODO: experimental API (keep in sync with Accelerant.h)
|
|
#if !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
|
|
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
|
|
typedef struct {
|
|
uint32 version;
|
|
char vendor[128];
|
|
char name[128];
|
|
char serial_number[128];
|
|
uint32 product_id;
|
|
struct {
|
|
uint16 week;
|
|
uint16 year;
|
|
} produced;
|
|
float width;
|
|
float height;
|
|
uint32 min_horizontal_frequency; // in kHz
|
|
uint32 max_horizontal_frequency;
|
|
uint32 min_vertical_frequency; // in Hz
|
|
uint32 max_vertical_frequency;
|
|
uint32 max_pixel_clock; // in kHz
|
|
} monitor_info;
|
|
#endif // !HAIKU_HOST_PLATFORM_HAIKU
|
|
|
|
|
|
#if !defined(B_HAIKU_32_BIT) && !defined(B_HAIKU_64_BIT)
|
|
# ifdef HAIKU_HOST_PLATFORM_64_BIT
|
|
# define B_HAIKU_64_BIT 1
|
|
# else
|
|
# define B_HAIKU_32_BIT 1
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef B_PRId8
|
|
# define __HAIKU_PRI_PREFIX_32 "l"
|
|
# define __HAIKU_PRI_PREFIX_64 "ll"
|
|
# define __HAIKU_PRI_PREFIX_ADDR "l"
|
|
|
|
/* printf()/scanf() format strings for [u]int* types */
|
|
# define B_PRId8 "d"
|
|
# define B_PRIi8 "i"
|
|
# define B_PRId16 "d"
|
|
# define B_PRIi16 "i"
|
|
# define B_PRId32 __HAIKU_PRI_PREFIX_32 "d"
|
|
# define B_PRIi32 __HAIKU_PRI_PREFIX_32 "i"
|
|
# define B_PRId64 __HAIKU_PRI_PREFIX_64 "d"
|
|
# define B_PRIi64 __HAIKU_PRI_PREFIX_64 "i"
|
|
# define B_PRIu8 "u"
|
|
# define B_PRIo8 "o"
|
|
# define B_PRIx8 "x"
|
|
# define B_PRIX8 "X"
|
|
# define B_PRIu16 "u"
|
|
# define B_PRIo16 "o"
|
|
# define B_PRIx16 "x"
|
|
# define B_PRIX16 "X"
|
|
# define B_PRIu32 __HAIKU_PRI_PREFIX_32 "u"
|
|
# define B_PRIo32 __HAIKU_PRI_PREFIX_32 "o"
|
|
# define B_PRIx32 __HAIKU_PRI_PREFIX_32 "x"
|
|
# define B_PRIX32 __HAIKU_PRI_PREFIX_32 "X"
|
|
# define B_PRIu64 __HAIKU_PRI_PREFIX_64 "u"
|
|
# define B_PRIo64 __HAIKU_PRI_PREFIX_64 "o"
|
|
# define B_PRIx64 __HAIKU_PRI_PREFIX_64 "x"
|
|
# define B_PRIX64 __HAIKU_PRI_PREFIX_64 "X"
|
|
|
|
# define B_SCNd8 "hhd"
|
|
# define B_SCNi8 "hhi"
|
|
# define B_SCNd16 "hd"
|
|
# define B_SCNi16 "hi"
|
|
# define B_SCNd32 __HAIKU_PRI_PREFIX_32 "d"
|
|
# define B_SCNi32 __HAIKU_PRI_PREFIX_32 "i"
|
|
# define B_SCNd64 __HAIKU_PRI_PREFIX_64 "d"
|
|
# define B_SCNi64 __HAIKU_PRI_PREFIX_64 "i"
|
|
# define B_SCNu8 "hhu"
|
|
# define B_SCNo8 "hho"
|
|
# define B_SCNx8 "hhx"
|
|
# define B_SCNu16 "hu"
|
|
# define B_SCNo16 "ho"
|
|
# define B_SCNx16 "hx"
|
|
# define B_SCNu32 __HAIKU_PRI_PREFIX_32 "u"
|
|
# define B_SCNo32 __HAIKU_PRI_PREFIX_32 "o"
|
|
# define B_SCNx32 __HAIKU_PRI_PREFIX_32 "x"
|
|
# define B_SCNu64 __HAIKU_PRI_PREFIX_64 "u"
|
|
# define B_SCNo64 __HAIKU_PRI_PREFIX_64 "o"
|
|
# define B_SCNx64 __HAIKU_PRI_PREFIX_64 "x"
|
|
|
|
/* printf() format strings for some standard types */
|
|
/* size_t */
|
|
# define B_PRIuSIZE __HAIKU_PRI_PREFIX_ADDR "u"
|
|
# define B_PRIoSIZE __HAIKU_PRI_PREFIX_ADDR "o"
|
|
# define B_PRIxSIZE __HAIKU_PRI_PREFIX_ADDR "x"
|
|
# define B_PRIXSIZE __HAIKU_PRI_PREFIX_ADDR "X"
|
|
/* ssize_t */
|
|
# define B_PRIdSSIZE __HAIKU_PRI_PREFIX_ADDR "d"
|
|
# define B_PRIiSSIZE __HAIKU_PRI_PREFIX_ADDR "i"
|
|
/* addr_t */
|
|
# define B_PRIuADDR __HAIKU_PRI_PREFIX_ADDR "u"
|
|
# define B_PRIoADDR __HAIKU_PRI_PREFIX_ADDR "o"
|
|
# define B_PRIxADDR __HAIKU_PRI_PREFIX_ADDR "x"
|
|
# define B_PRIXADDR __HAIKU_PRI_PREFIX_ADDR "X"
|
|
/* off_t */
|
|
# define B_PRIdOFF B_PRId64
|
|
# define B_PRIiOFF B_PRIi64
|
|
/* dev_t */
|
|
# define B_PRIdDEV B_PRId32
|
|
# define B_PRIiDEV B_PRIi32
|
|
/* ino_t */
|
|
# define B_PRIdINO B_PRId64
|
|
# define B_PRIiINO B_PRIi64
|
|
/* time_t */
|
|
# define B_PRIdTIME B_PRId32
|
|
# define B_PRIiTIME B_PRIi32
|
|
#endif // !B_PRId8
|
|
|
|
|
|
#endif // HAIKU_BUILD_COMPATIBILITY_H
|