diff --git a/src/core/sys/freebsd/sys/event.d b/src/core/sys/freebsd/sys/event.d index 2bd3839f095..6e4c8928bd0 100644 --- a/src/core/sys/freebsd/sys/event.d +++ b/src/core/sys/freebsd/sys/event.d @@ -161,7 +161,13 @@ enum } int kqueue(); -pragma(mangle, "kevent@FBSD_1.0") -int kevent(int kq, const kevent_t *changelist, int nchanges, - kevent_t *eventlist, int nevents, - const timespec *timeout); +static if (__FreeBSD_version >= 1200000) + pragma(mangle, "kevent@@FBSD_1.5") + int kevent(int kq, const kevent_t *changelist, int nchanges, + kevent_t *eventlist, int nevents, + const timespec *timeout); +else + pragma(mangle, "kevent@FBSD_1.0") + int kevent(int kq, const kevent_t *changelist, int nchanges, + kevent_t *eventlist, int nevents, + const timespec *timeout); diff --git a/src/core/sys/freebsd/sys/mount.d b/src/core/sys/freebsd/sys/mount.d index 7051dd675c5..3c488408dbd 100644 --- a/src/core/sys/freebsd/sys/mount.d +++ b/src/core/sys/freebsd/sys/mount.d @@ -298,17 +298,28 @@ enum uint VQ_FLAG2000 = 0x2000; enum uint VQ_FLAG4000 = 0x4000; enum uint VQ_FLAG8000 = 0x8000; -pragma(mangle, "fhopen@@FBSD_1.0") int fhopen(const fhandle_t*, int); -pragma(mangle, "fhstat@FBSD_1.0") int fhstat(const fhandle_t*, stat_t*); -pragma(mangle, "fhstatfs@FBSD_1.0") int fhstatfs(const fhandle_t*, statfs_t*); -pragma(mangle, "fstatfs@FBSD_1.0") int fstatfs(int, statfs_t*); -pragma(mangle, "getfh@@FBSD_1.0") int getfh(const char*, fhandle_t*); -pragma(mangle, "getfsstat@FBSD_1.0") int getfsstat(statfs_t*, c_long, int); -pragma(mangle, "getmntinfo@FBSD_1.0") int getmntinfo(statfs_t**, int); -pragma(mangle, "lgetfh@@FBSD_1.0") int lgetfh(const char*, fhandle_t*); -pragma(mangle, "mount@@FBSD_1.0") int mount(const char*, const char*, int, void*); +static if (__FreeBSD_version >= 1200000) +{ + pragma(mangle, "fhstat@FBSD_1.5") int fhstat(const fhandle_t*, stat_t*); + pragma(mangle, "fhstatfs@FBSD_1.5") int fhstatfs(const fhandle_t*, statfs_t*); + pragma(mangle, "fstatfs@FBSD_1.5") int fstatfs(int, statfs_t*); + pragma(mangle, "getfsstat@FBSD_1.5") int getfsstat(statfs_t*, c_long, int); + pragma(mangle, "getmntinfo@FBSD_1.5") int getmntinfo(statfs_t**, int); + pragma(mangle, "statfs@FBSD_1.5") int statfs(const char*, statfs_t*); +} +else +{ + pragma(mangle, "fhstat@FBSD_1.0") int fhstat(const fhandle_t*, stat_t*); + pragma(mangle, "fhstatfs@FBSD_1.0") int fhstatfs(const fhandle_t*, statfs_t*); + pragma(mangle, "fstatfs@FBSD_1.0") int fstatfs(int, statfs_t*); + pragma(mangle, "getfsstat@FBSD_1.0") int getfsstat(statfs_t*, c_long, int); + pragma(mangle, "getmntinfo@FBSD_1.0") int getmntinfo(statfs_t**, int); + pragma(mangle, "statfs@FBSD_1.0") int statfs(const char*, statfs_t*); +} +pragma(mangle, "fhopen@@FBSD_1.0") int fhopen(const fhandle_t*, int); +pragma(mangle, "getfh@@FBSD_1.0") int getfh(const char*, fhandle_t*); +pragma(mangle, "lgetfh@@FBSD_1.0") int lgetfh(const char*, fhandle_t*); +pragma(mangle, "mount@@FBSD_1.0") int mount(const char*, const char*, int, void*); //int nmount(iovec*, uint, int); -pragma(mangle, "statfs@FBSD_1.0") int statfs(const char*, statfs_t*); -pragma(mangle, "unmount@@FBSD_1.0") int unmount(const char*, int); - +pragma(mangle, "unmount@@FBSD_1.0") int unmount(const char*, int); //int getvfsbyname(const char*, xvfsconf*); diff --git a/src/core/sys/posix/dirent.d b/src/core/sys/posix/dirent.d index f9189e182d0..4e02e310c69 100644 --- a/src/core/sys/posix/dirent.d +++ b/src/core/sys/posix/dirent.d @@ -186,7 +186,10 @@ else version (FreeBSD) alias void* DIR; - pragma(mangle, "readdir@FBSD_1.0") dirent* readdir(DIR*); + static if (__FreeBSD_version >= 1200000) + pragma(mangle, "readdir@FBSD_1.5") dirent* readdir(DIR*); + else + pragma(mangle, "readdir@FBSD_1.0") dirent* readdir(DIR*); } else version (NetBSD) { @@ -504,7 +507,10 @@ else version (Darwin) } else version (FreeBSD) { - pragma(mangle, "readdir_r@FBSD_1.0") int readdir_r(DIR*, dirent*, dirent**); + static if (__FreeBSD_version >= 1200000) + pragma(mangle, "readdir_r@FBSD_1.5") int readdir_r(DIR*, dirent*, dirent**); + else + pragma(mangle, "readdir_r@FBSD_1.0") int readdir_r(DIR*, dirent*, dirent**); } else version (DragonFlyBSD) { diff --git a/src/core/sys/posix/sys/stat.d b/src/core/sys/posix/sys/stat.d index d1b1e75bb98..5295fb43556 100644 --- a/src/core/sys/posix/sys/stat.d +++ b/src/core/sys/posix/sys/stat.d @@ -2278,9 +2278,18 @@ else version (Darwin) } else version (FreeBSD) { - pragma(mangle, "fstat@FBSD_1.0") int fstat(int, stat_t*); - pragma(mangle, "lstat@FBSD_1.0") int lstat(const scope char*, stat_t*); - pragma(mangle, "stat@FBSD_1.0") int stat(const scope char*, stat_t*); + static if (__FreeBSD_version >= INO64_FIRST) + { + pragma(mangle, "fstat@FBSD_1.5") int fstat(int, stat_t*); + pragma(mangle, "lstat@FBSD_1.5") int lstat(const scope char*, stat_t*); + pragma(mangle, "stat@FBSD_1.5") int stat(const scope char*, stat_t*); + } + else + { + pragma(mangle, "fstat@FBSD_1.0") int fstat(int, stat_t*); + pragma(mangle, "lstat@FBSD_1.0") int lstat(const scope char*, stat_t*); + pragma(mangle, "stat@FBSD_1.0") int stat(const scope char*, stat_t*); + } } else version (NetBSD) { @@ -2400,7 +2409,10 @@ else version (FreeBSD) enum S_IFLNK = 0xA000; // octal 0120000 enum S_IFSOCK = 0xC000; // octal 0140000 - pragma(mangle, "mknod@FBSD_1.0") int mknod(const scope char*, mode_t, dev_t); + static if (__FreeBSD_version >= INO64_FIRST) + pragma(mangle, "mknod@FBSD_1.5") int mknod(const scope char*, mode_t, dev_t); + else + pragma(mangle, "mknod@FBSD_1.0") int mknod(const scope char*, mode_t, dev_t); } else version (NetBSD) {