xref: /haiku/headers/build/os/kernel/fs_attr.h (revision c0936b5a0384bc6fe654d296ee54222a0f45d2b6)
1 /*
2  * Copyright 2002-2009, Haiku Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _FS_ATTR_H
6 #define	_FS_ATTR_H
7 
8 
9 #include <OS.h>
10 #include <dirent.h>
11 
12 
13 typedef struct attr_info {
14 	uint32	type;
15 	off_t	size;
16 } attr_info;
17 
18 
19 #ifdef  __cplusplus
20 extern "C" {
21 #endif
22 
23 
24 /* Since libroot_build is also used on Haiku and linked against the real
25  * libroot which also has the fs*attr functions, these must be shadowed. */
26 #ifndef BUILDING_FS_ATTR_HAIKU
27 #define fs_read_attr		build_fs_read_attr
28 #define fs_write_attr		build_fs_write_attr
29 #define fs_remove_attr		build_fs_remove_attr
30 #define fs_stat_attr		build_fs_stat_attr
31 #define fs_open_attr		build_fs_open_attr
32 #define fs_fopen_attr		build_fs_fopen_attr
33 #define fs_close_attr		build_fs_close_attr
34 #define fs_open_attr_dir	build_fs_open_attr_dir
35 #define fs_fopen_attr_dir	build_fs_fopen_attr_dir
36 #define fs_close_attr_dir	build_fs_close_attr_dir
37 #define fs_read_attr_dir	build_fs_read_attr_dir
38 #define fs_rewind_attr_dir	build_fs_rewind_attr_dir
39 #endif
40 
41 
42 extern ssize_t	fs_read_attr(int fd, const char *attribute, uint32 type,
43 					off_t pos, void *buffer, size_t readBytes);
44 extern ssize_t	fs_write_attr(int fd, const char *attribute, uint32 type,
45 					off_t pos, const void *buffer, size_t readBytes);
46 extern int		fs_remove_attr(int fd, const char *attribute);
47 extern int		fs_stat_attr(int fd, const char *attribute,
48 					struct attr_info *attrInfo);
49 
50 extern int		fs_open_attr(const char *path, const char *attribute,
51 					uint32 type, int openMode);
52 extern int		fs_fopen_attr(int fd, const char *attribute, uint32 type,
53 					int openMode);
54 extern int		fs_close_attr(int fd);
55 
56 extern DIR		*fs_open_attr_dir(const char *path);
57 extern DIR		*fs_fopen_attr_dir(int fd);
58 extern int		fs_close_attr_dir(DIR *dir);
59 extern struct dirent *fs_read_attr_dir(DIR *dir);
60 extern void		fs_rewind_attr_dir(DIR *dir);
61 
62 #ifdef  __cplusplus
63 }
64 #endif
65 
66 #endif	/* _FS_ATTR_H */
67