libroot_build: Properly remap fs_attr_* functions.

This was done using macros before, which isn't the way we have things set up.
In theory that method should work, however if not all consumers include the
libroot_build headers properly, then it breaks in subtle but confusing ways,
which is not what we want at all.

Thanks to Jessica for advice.

Change-Id: Idd45df5547daecf8239932957088da03ddfccf87
This commit is contained in:
Augustin Cavalier
2018-04-29 17:25:18 +00:00
committed by waddlesplash
parent 88c1a9d048
commit 648f0d5f08
5 changed files with 182 additions and 37 deletions
+16
View File
@@ -179,6 +179,22 @@ int _haiku_build_renameat(int fromFD, const char* from, int toFD,
# define fcntl(fd, op...) _haiku_build_fcntl(fd, op)
# define renameat(fromFD, from, toFD, to) \
_haiku_build_renameat(fromFD, from, toFD, to)
# if defined(HAIKU_HOST_USE_XATTR) && defined(HAIKU_HOST_PLATFORM_HAIKU)
# define fs_read_attr _haiku_build_fs_read_attr
# define fs_write_attr _haiku_build_fs_write_attr
# define fs_remove_attr _haiku_build_fs_remove_attr
# define fs_stat_attr _haiku_build_fs_stat_attr
# define fs_open_attr _haiku_build_fs_open_attr
# define fs_fopen_attr _haiku_build_fs_fopen_attr
# define fs_close_attr _haiku_build_fs_close_attr
# define fs_open_attr_dir _haiku_build_fs_open_attr_dir
# define fs_fopen_attr_dir _haiku_build_fs_fopen_attr_dir
# define fs_close_attr_dir _haiku_build_fs_close_attr_dir
# define fs_read_attr_dir _haiku_build_fs_read_attr_dir
# define fs_rewind_attr_dir _haiku_build_fs_rewind_attr_dir
# endif
#endif // _HAIKU_BUILD_DONT_REMAP_FD_FUNCTIONS
+1 -18
View File
@@ -21,24 +21,6 @@ extern "C" {
#endif
/* Since libroot_build is also used on Haiku and linked against the real
* libroot which also has the fs*attr functions, these must be shadowed. */
#ifndef BUILDING_FS_ATTR_HAIKU
#define fs_read_attr build_fs_read_attr
#define fs_write_attr build_fs_write_attr
#define fs_remove_attr build_fs_remove_attr
#define fs_stat_attr build_fs_stat_attr
#define fs_open_attr build_fs_open_attr
#define fs_fopen_attr build_fs_fopen_attr
#define fs_close_attr build_fs_close_attr
#define fs_open_attr_dir build_fs_open_attr_dir
#define fs_fopen_attr_dir build_fs_fopen_attr_dir
#define fs_close_attr_dir build_fs_close_attr_dir
#define fs_read_attr_dir build_fs_read_attr_dir
#define fs_rewind_attr_dir build_fs_rewind_attr_dir
#endif
extern ssize_t fs_read_attr(int fd, const char *attribute, uint32 type,
off_t pos, void *buffer, size_t readBytes);
extern ssize_t fs_write_attr(int fd, const char *attribute, uint32 type,
@@ -54,6 +36,7 @@ extern int fs_fopen_attr(int fd, const char *attribute, uint32 type,
extern int fs_close_attr(int fd);
extern DIR *fs_open_attr_dir(const char *path);
extern DIR *fs_lopen_attr_dir(const char *path);
extern DIR *fs_fopen_attr_dir(int fd);
extern int fs_close_attr_dir(DIR *dir);
extern struct dirent *fs_read_attr_dir(DIR *dir);