Skip to content
This repository has been archived by the owner on Oct 12, 2022. It is now read-only.

Commit

Permalink
freebsd: Replace FreeBSD_11/12 with __FreeBSD_version conditions
Browse files Browse the repository at this point in the history
  • Loading branch information
ibuclaw committed Nov 13, 2020
1 parent c6c3d90 commit 725a0c1
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 13 deletions.
22 changes: 22 additions & 0 deletions src/core/sys/freebsd/config.d
@@ -0,0 +1,22 @@
/**
* D header file for FreeBSD
*
* Authors: Iain Buclaw
*/
module core.sys.freebsd.config;

version (FreeBSD):

public import core.sys.posix.config;

// __FreeBSD_version numbers are documented in the Porter's Handbook.
// https://svnweb.freebsd.org/base/head/sys/sys/param.h?view=markup
version (FreeBSD_12) enum __FreeBSD_version = 1202000;
else version (FreeBSD_11) enum __FreeBSD_version = 1104000;
else version (FreeBSD_10) enum __FreeBSD_version = 1004000;
else version (FreeBSD_9) enum __FreeBSD_version = 903000;
else version (FreeBSD_8) enum __FreeBSD_version = 804000;
else static assert(false "Unsupported version of FreeBSD");

// First version of FreeBSD to support 64-bit stat buffer.
enum INO64_FIRST = 1200031;
5 changes: 3 additions & 2 deletions src/core/sys/freebsd/sys/event.d
Expand Up @@ -18,6 +18,7 @@ extern (C):
nothrow:
@nogc:

import core.sys.freebsd.config;
import core.stdc.stdint; // intptr_t, uintptr_t
import core.sys.posix.time; // timespec

Expand All @@ -43,7 +44,7 @@ extern(D) void EV_SET(kevent_t* kevp, typeof(kevent_t.tupleof) args)
*kevp = kevent_t(args);
}

version (FreeBSD_12)
static if (__FreeBSD_version >= 1200000 && __FreeBSD_version < 1300000)
{
struct kevent_t
{
Expand All @@ -56,7 +57,7 @@ version (FreeBSD_12)
ulong[4] ext;
}
}
else version (FreeBSD_11)
else static if (__FreeBSD_version < 1200000)
{
struct kevent_t
{
Expand Down
5 changes: 3 additions & 2 deletions src/core/sys/freebsd/sys/mount.d
Expand Up @@ -11,6 +11,7 @@ module core.sys.freebsd.sys.mount;

version (FreeBSD):

import core.sys.freebsd.config;
import core.stdc.config : c_long;
import core.sys.posix.sys.stat : stat_t;
import core.sys.posix.sys.types : uid_t;
Expand All @@ -33,12 +34,12 @@ struct fid

enum MFSNAMELEN = 16;

version (FreeBSD_12)
static if (__FreeBSD_version >= 1200000 && __FreeBSD_version < 1300000)
{
enum MNAMELEN = 1024;
enum STATFS_VERSION = 0x20140518;
}
else version (FreeBSD_11)
else static if (__FreeBSD_version < 1200000)
{
enum MNAMELEN = 88;
enum STATFS_VERSION = 0x20030518;
Expand Down
6 changes: 4 additions & 2 deletions src/core/sys/posix/dirent.d
Expand Up @@ -141,6 +141,8 @@ else version (Darwin)
}
else version (FreeBSD)
{
import core.sys.freebsd.config;

// https://github.com/freebsd/freebsd/blob/master/sys/sys/dirent.h
enum
{
Expand All @@ -155,7 +157,7 @@ else version (FreeBSD)
DT_WHT = 14
}

version (FreeBSD_12)
static if (__FreeBSD_version >= 1200000 && __FreeBSD_version < 1300000)
{
struct dirent
{
Expand All @@ -168,7 +170,7 @@ else version (FreeBSD)
char[256] d_name = 0;
}
}
else version (FreeBSD_11)
else static if (__FreeBSD_version < 1200000)
{
align(4)
struct dirent
Expand Down
9 changes: 4 additions & 5 deletions src/core/sys/posix/sys/stat.d
Expand Up @@ -1078,9 +1078,10 @@ else version (Darwin)
}
else version (FreeBSD)
{
// https://github.com/freebsd/freebsd/blob/master/sys/sys/stat.h
import core.sys.freebsd.config;

version (FreeBSD_12)
// https://github.com/freebsd/freebsd/blob/master/sys/sys/stat.h
static if (__FreeBSD_version >= INO64_FIRST)
{
struct stat_t
{
Expand Down Expand Up @@ -1122,7 +1123,7 @@ else version (FreeBSD)
ulong[10] st_spare;
}
}
else version (FreeBSD_11)
else
{
struct stat_t
{
Expand Down Expand Up @@ -1154,8 +1155,6 @@ else version (FreeBSD)
ubyte[16 - timespec.sizeof] padding;
}
}
else
static assert(0, "Unsupported version of FreeBSD");

enum S_IRUSR = 0x100; // octal 0000400
enum S_IWUSR = 0x080; // octal 0000200
Expand Down
6 changes: 4 additions & 2 deletions src/core/sys/posix/sys/types.d
Expand Up @@ -169,17 +169,19 @@ else version (Darwin)
}
else version (FreeBSD)
{
import core.sys.freebsd.config;

// https://github.com/freebsd/freebsd/blob/master/sys/sys/_types.h
alias long blkcnt_t;

version (FreeBSD_12)
static if (__FreeBSD_version >= 1200000 && __FreeBSD_version < 1300000)
{
alias ulong blksize_t;
alias ulong dev_t;
alias ulong ino_t;
alias ulong nlink_t;
}
else version (FreeBSD_11)
else static if (__FreeBSD_version < 1200000)
{
alias uint blksize_t;
alias uint dev_t;
Expand Down

0 comments on commit 725a0c1

Please sign in to comment.