1#ifndef B_OK
2
3#include <windows.h>
4#include <winnt.h>
5//#include <semaphore.h>
6//#include <pthread.h>
7//#include <sys/utsname.h>
8
9#define B_OK				0
10#define B_ENTRY_NOT_FOUND	ENOENT
11#define B_PATH_NAME_LENGTH	1024
12#define B_FILE_NAME_LENGTH	256
13#define B_OS_NAME_LENGTH	32
14#define B_INTERRUPTED		1
15
16#define BEOS_ENOENT			2147508227
17#define BEOS_EACCES			2147483650
18#define BEOS_ENOMEM			2147483648
19#define BEOS_EINVAL			0
20
21#ifndef true
22#define true				1
23#define false				0
24#endif
25
26#define WSTAT_MODE			0x0001
27#define WSTAT_UID			0x0002
28#define WSTAT_GID			0x0004
29#define WSTAT_SIZE			0x0008
30#define WSTAT_ATIME			0x0010
31#define WSTAT_MTIME			0x0020
32#define WSTAT_CRTIME		0x0040
33
34#define B_COMMON_SETTINGS_DIRECTORY		".\\"
35#define B_COMMON_SYSTEM_DIRECTORY		".\\"
36
37#define ENOTSUP				1
38
39#define lstat(f, s)			stat(f, s)
40#define S_ISDIR(m)			((m) & _S_IFDIR)
41
42typedef char int8;
43typedef long int32;
44typedef LONGLONG int64;
45typedef unsigned char uint8;
46typedef unsigned long uint32;
47typedef ULONGLONG uint64;
48
49typedef uint64 vnode_id;
50typedef uint64 beos_ino_t;
51typedef uint64 beos_off_t;
52typedef unsigned long beos_dev_t;
53typedef HANDLE sem_id;
54typedef HANDLE thread_id;
55
56#define LITTLE_ENDIAN
57
58#ifdef LITTLE_ENDIAN
59#define B_LENDIAN_TO_HOST_INT32(x)		(x)
60#define B_LENDIAN_TO_HOST_INT64(x)		(x)
61#define B_HOST_TO_LENDIAN_INT32(x)		(x)
62#define B_HOST_TO_LENDIAN_INT64(x)		(x)
63#else
64#define B_LENDIAN_TO_HOST_INT32(x)		btSwapInt32(x)
65#define B_LENDIAN_TO_HOST_INT64(x)		btSwapInt64(x)
66#define B_HOST_TO_LENDIAN_INT32(x)		btSwapInt32(x)
67#define B_HOST_TO_LENDIAN_INT64(x)		btSwapInt64(x)
68#endif
69
70uint32 btSwapInt32(uint32 num);
71uint64 btSwapInt64(uint64 num);
72
73
74enum {
75	B_ANY_TYPE 					= 'ANYT',
76	B_BOOL_TYPE 				= 'BOOL',
77	B_CHAR_TYPE 				= 'CHAR',
78	B_COLOR_8_BIT_TYPE 			= 'CLRB',
79	B_DOUBLE_TYPE 				= 'DBLE',
80	B_FLOAT_TYPE 				= 'FLOT',
81	B_GRAYSCALE_8_BIT_TYPE		= 'GRYB',
82	B_INT64_TYPE 				= 'LLNG',
83	B_INT32_TYPE 				= 'LONG',
84	B_INT16_TYPE 				= 'SHRT',
85	B_INT8_TYPE 				= 'BYTE',
86	B_MESSAGE_TYPE				= 'MSGG',
87	B_MESSENGER_TYPE			= 'MSNG',
88	B_MIME_TYPE					= 'MIME',
89	B_MONOCHROME_1_BIT_TYPE 	= 'MNOB',
90	B_OBJECT_TYPE 				= 'OPTR',
91	B_OFF_T_TYPE 				= 'OFFT',
92	B_PATTERN_TYPE 				= 'PATN',
93	B_POINTER_TYPE 				= 'PNTR',
94	B_POINT_TYPE 				= 'BPNT',
95	B_RAW_TYPE 					= 'RAWT',
96	B_RECT_TYPE 				= 'RECT',
97	B_REF_TYPE 					= 'RREF',
98	B_RGB_32_BIT_TYPE 			= 'RGBB',
99	B_RGB_COLOR_TYPE 			= 'RGBC',
100	B_SIZE_T_TYPE	 			= 'SIZT',
101	B_SSIZE_T_TYPE	 			= 'SSZT',
102	B_STRING_TYPE 				= 'CSTR',
103	B_TIME_TYPE 				= 'TIME',
104	B_UINT64_TYPE				= 'ULLG',
105	B_UINT32_TYPE				= 'ULNG',
106	B_UINT16_TYPE 				= 'USHT',
107	B_UINT8_TYPE 				= 'UBYT',
108	B_MEDIA_PARAMETER_TYPE		= 'BMCT',
109	B_MEDIA_PARAMETER_WEB_TYPE	= 'BMCW',
110	B_MEDIA_PARAMETER_GROUP_TYPE= 'BMCG',
111
112	/* deprecated, do not use */
113	B_ASCII_TYPE 				= 'TEXT'	/* use B_STRING_TYPE instead */
114};
115
116
117typedef struct fs_info
118{
119	beos_dev_t	dev;
120	beos_ino_t	root;
121	uint32		flags;
122//	beos_off_t	block_size;
123	uint32		block_size;
124	beos_off_t	io_size;
125//	beos_off_t	total_blocks;
126//	beos_off_t	free_blocks;
127	uint32		total_blocks;
128	uint32		free_blocks;
129	beos_off_t	total_nodes;
130	beos_off_t	free_nodes;
131	char		device_name[128];
132	char		volume_name[B_FILE_NAME_LENGTH];
133	char		fsh_name[B_OS_NAME_LENGTH];
134} fs_info;
135
136typedef struct beos_stat
137{
138	uint32		st_dev;
139	uint32		st_nlink;
140	uint32		st_uid;
141	uint32		st_gid;
142	uint32		st_size;
143	uint32		st_blksize;
144	uint32		st_rdev;
145	uint32		st_ino;
146	uint32		st_mode;
147	uint32		st_atime;
148	uint32		st_mtime;
149	uint32		st_ctime;
150} beos_stat;
151
152#endif
153