Commit cca57042df
Changed files (44)
lib
std
event
os
special
test
behavior
standalone
brace_expansion
lib/std/c/darwin.zig
@@ -395,10 +395,85 @@ pub const timespec = extern struct {
pub const sigset_t = u32;
pub const empty_sigset: sigset_t = 0;
-pub const SIG_ERR = @intToPtr(?Sigaction.sigaction_fn, maxInt(usize));
-pub const SIG_DFL = @intToPtr(?Sigaction.sigaction_fn, 0);
-pub const SIG_IGN = @intToPtr(?Sigaction.sigaction_fn, 1);
-pub const SIG_HOLD = @intToPtr(?Sigaction.sigaction_fn, 5);
+pub const SIG = struct {
+ pub const ERR = @intToPtr(?Sigaction.sigaction_fn, maxInt(usize));
+ pub const DFL = @intToPtr(?Sigaction.sigaction_fn, 0);
+ pub const IGN = @intToPtr(?Sigaction.sigaction_fn, 1);
+ pub const HOLD = @intToPtr(?Sigaction.sigaction_fn, 5);
+
+ /// block specified signal set
+ pub const _BLOCK = 1;
+ /// unblock specified signal set
+ pub const _UNBLOCK = 2;
+ /// set specified signal set
+ pub const _SETMASK = 3;
+ /// hangup
+ pub const HUP = 1;
+ /// interrupt
+ pub const INT = 2;
+ /// quit
+ pub const QUIT = 3;
+ /// illegal instruction (not reset when caught)
+ pub const ILL = 4;
+ /// trace trap (not reset when caught)
+ pub const TRAP = 5;
+ /// abort()
+ pub const ABRT = 6;
+ /// pollable event ([XSR] generated, not supported)
+ pub const POLL = 7;
+ /// compatibility
+ pub const IOT = ABRT;
+ /// EMT instruction
+ pub const EMT = 7;
+ /// floating point exception
+ pub const FPE = 8;
+ /// kill (cannot be caught or ignored)
+ pub const KILL = 9;
+ /// bus error
+ pub const BUS = 10;
+ /// segmentation violation
+ pub const SEGV = 11;
+ /// bad argument to system call
+ pub const SYS = 12;
+ /// write on a pipe with no one to read it
+ pub const PIPE = 13;
+ /// alarm clock
+ pub const ALRM = 14;
+ /// software termination signal from kill
+ pub const TERM = 15;
+ /// urgent condition on IO channel
+ pub const URG = 16;
+ /// sendable stop signal not from tty
+ pub const STOP = 17;
+ /// stop signal from tty
+ pub const TSTP = 18;
+ /// continue a stopped process
+ pub const CONT = 19;
+ /// to parent on child stop or exit
+ pub const CHLD = 20;
+ /// to readers pgrp upon background tty read
+ pub const TTIN = 21;
+ /// like TTIN for output if (tp->t_local<OSTOP)
+ pub const TTOU = 22;
+ /// input/output possible signal
+ pub const IO = 23;
+ /// exceeded CPU time limit
+ pub const XCPU = 24;
+ /// exceeded file size limit
+ pub const XFSZ = 25;
+ /// virtual time alarm
+ pub const VTALRM = 26;
+ /// profiling time alarm
+ pub const PROF = 27;
+ /// window size changes
+ pub const WINCH = 28;
+ /// information request
+ pub const INFO = 29;
+ /// user defined signal 1
+ pub const USR1 = 30;
+ /// user defined signal 2
+ pub const USR2 = 31;
+};
pub const siginfo_t = extern struct {
signo: c_int,
@@ -507,17 +582,16 @@ pub const STDIN_FILENO = 0;
pub const STDOUT_FILENO = 1;
pub const STDERR_FILENO = 2;
-/// [MC2] no permissions
-pub const PROT_NONE = 0x00;
-
-/// [MC2] pages can be read
-pub const PROT_READ = 0x01;
-
-/// [MC2] pages can be written
-pub const PROT_WRITE = 0x02;
-
-/// [MC2] pages can be executed
-pub const PROT_EXEC = 0x04;
+pub const PROT = struct {
+ /// [MC2] no permissions
+ pub const NONE = 0x00;
+ /// [MC2] pages can be read
+ pub const READ = 0x01;
+ /// [MC2] pages can be written
+ pub const WRITE = 0x02;
+ /// [MC2] pages can be executed
+ pub const EXEC = 0x04;
+};
pub const MAP = struct {
/// allocated from memory, swap space
@@ -551,10 +625,10 @@ pub const SA_ONSTACK = 0x0001;
/// restart system on signal return
pub const SA_RESTART = 0x0002;
-/// reset to SIG_DFL when taking signal
+/// reset to SIG.DFL when taking signal
pub const SA_RESETHAND = 0x0004;
-/// do not generate SIGCHLD on child stop
+/// do not generate SIG.CHLD on child stop
pub const SA_NOCLDSTOP = 0x0008;
/// don't mask the signal we're delivering
@@ -572,66 +646,53 @@ pub const SA_USERTRAMP = 0x0100;
/// signal handler with SA_SIGINFO args with 64bit regs information
pub const SA_64REGSET = 0x0200;
-pub const O_PATH = 0x0000;
-
pub const F_OK = 0;
pub const X_OK = 1;
pub const W_OK = 2;
pub const R_OK = 4;
-/// open for reading only
-pub const O_RDONLY = 0x0000;
-
-/// open for writing only
-pub const O_WRONLY = 0x0001;
-
-/// open for reading and writing
-pub const O_RDWR = 0x0002;
-
-/// do not block on open or for data to become available
-pub const O_NONBLOCK = 0x0004;
-
-/// append on each write
-pub const O_APPEND = 0x0008;
-
-/// create file if it does not exist
-pub const O_CREAT = 0x0200;
-
-/// truncate size to 0
-pub const O_TRUNC = 0x0400;
-
-/// error if O_CREAT and the file exists
-pub const O_EXCL = 0x0800;
-
-/// atomically obtain a shared lock
-pub const O_SHLOCK = 0x0010;
-
-/// atomically obtain an exclusive lock
-pub const O_EXLOCK = 0x0020;
-
-/// do not follow symlinks
-pub const O_NOFOLLOW = 0x0100;
-
-/// allow open of symlinks
-pub const O_SYMLINK = 0x200000;
-
-/// descriptor requested for event notifications only
-pub const O_EVTONLY = 0x8000;
-
-/// mark as close-on-exec
-pub const O_CLOEXEC = 0x1000000;
-
-pub const O_ACCMODE = 3;
-pub const O_ALERT = 536870912;
-pub const O_ASYNC = 64;
-pub const O_DIRECTORY = 1048576;
-pub const O_DP_GETRAWENCRYPTED = 1;
-pub const O_DP_GETRAWUNENCRYPTED = 2;
-pub const O_DSYNC = 4194304;
-pub const O_FSYNC = O_SYNC;
-pub const O_NOCTTY = 131072;
-pub const O_POPUP = 2147483648;
-pub const O_SYNC = 128;
+pub const O = struct {
+ pub const PATH = 0x0000;
+ /// open for reading only
+ pub const RDONLY = 0x0000;
+ /// open for writing only
+ pub const WRONLY = 0x0001;
+ /// open for reading and writing
+ pub const RDWR = 0x0002;
+ /// do not block on open or for data to become available
+ pub const NONBLOCK = 0x0004;
+ /// append on each write
+ pub const APPEND = 0x0008;
+ /// create file if it does not exist
+ pub const CREAT = 0x0200;
+ /// truncate size to 0
+ pub const TRUNC = 0x0400;
+ /// error if CREAT and the file exists
+ pub const EXCL = 0x0800;
+ /// atomically obtain a shared lock
+ pub const SHLOCK = 0x0010;
+ /// atomically obtain an exclusive lock
+ pub const EXLOCK = 0x0020;
+ /// do not follow symlinks
+ pub const NOFOLLOW = 0x0100;
+ /// allow open of symlinks
+ pub const SYMLINK = 0x200000;
+ /// descriptor requested for event notifications only
+ pub const EVTONLY = 0x8000;
+ /// mark as close-on-exec
+ pub const CLOEXEC = 0x1000000;
+ pub const ACCMODE = 3;
+ pub const ALERT = 536870912;
+ pub const ASYNC = 64;
+ pub const DIRECTORY = 1048576;
+ pub const DP_GETRAWENCRYPTED = 1;
+ pub const DP_GETRAWUNENCRYPTED = 2;
+ pub const DSYNC = 4194304;
+ pub const FSYNC = SYNC;
+ pub const NOCTTY = 131072;
+ pub const POPUP = 2147483648;
+ pub const SYNC = 128;
+};
pub const SEEK_SET = 0x0;
pub const SEEK_CUR = 0x1;
@@ -647,114 +708,6 @@ pub const DT_LNK = 10;
pub const DT_SOCK = 12;
pub const DT_WHT = 14;
-/// block specified signal set
-pub const SIG_BLOCK = 1;
-
-/// unblock specified signal set
-pub const SIG_UNBLOCK = 2;
-
-/// set specified signal set
-pub const SIG_SETMASK = 3;
-
-/// hangup
-pub const SIGHUP = 1;
-
-/// interrupt
-pub const SIGINT = 2;
-
-/// quit
-pub const SIGQUIT = 3;
-
-/// illegal instruction (not reset when caught)
-pub const SIGILL = 4;
-
-/// trace trap (not reset when caught)
-pub const SIGTRAP = 5;
-
-/// abort()
-pub const SIGABRT = 6;
-
-/// pollable event ([XSR] generated, not supported)
-pub const SIGPOLL = 7;
-
-/// compatibility
-pub const SIGIOT = SIGABRT;
-
-/// EMT instruction
-pub const SIGEMT = 7;
-
-/// floating point exception
-pub const SIGFPE = 8;
-
-/// kill (cannot be caught or ignored)
-pub const SIGKILL = 9;
-
-/// bus error
-pub const SIGBUS = 10;
-
-/// segmentation violation
-pub const SIGSEGV = 11;
-
-/// bad argument to system call
-pub const SIGSYS = 12;
-
-/// write on a pipe with no one to read it
-pub const SIGPIPE = 13;
-
-/// alarm clock
-pub const SIGALRM = 14;
-
-/// software termination signal from kill
-pub const SIGTERM = 15;
-
-/// urgent condition on IO channel
-pub const SIGURG = 16;
-
-/// sendable stop signal not from tty
-pub const SIGSTOP = 17;
-
-/// stop signal from tty
-pub const SIGTSTP = 18;
-
-/// continue a stopped process
-pub const SIGCONT = 19;
-
-/// to parent on child stop or exit
-pub const SIGCHLD = 20;
-
-/// to readers pgrp upon background tty read
-pub const SIGTTIN = 21;
-
-/// like TTIN for output if (tp->t_local<OSTOP)
-pub const SIGTTOU = 22;
-
-/// input/output possible signal
-pub const SIGIO = 23;
-
-/// exceeded CPU time limit
-pub const SIGXCPU = 24;
-
-/// exceeded file size limit
-pub const SIGXFSZ = 25;
-
-/// virtual time alarm
-pub const SIGVTALRM = 26;
-
-/// profiling time alarm
-pub const SIGPROF = 27;
-
-/// window size changes
-pub const SIGWINCH = 28;
-
-/// information request
-pub const SIGINFO = 29;
-
-/// user defined signal 1
-pub const SIGUSR1 = 30;
-
-/// user defined signal 2
-pub const SIGUSR2 = 31;
-
/// no flag value
pub const KEVENT_FLAG_NONE = 0x000;
@@ -1116,28 +1069,31 @@ pub const SO = struct {
pub const REUSESHAREUID = 0x1025;
};
-fn wstatus(x: u32) u32 {
- return x & 0o177;
-}
-const wstopped = 0o177;
-pub fn WEXITSTATUS(x: u32) u8 {
- return @intCast(u8, x >> 8);
-}
-pub fn WTERMSIG(x: u32) u32 {
- return wstatus(x);
-}
-pub fn WSTOPSIG(x: u32) u32 {
- return x >> 8;
-}
-pub fn WIFEXITED(x: u32) bool {
- return wstatus(x) == 0;
-}
-pub fn WIFSTOPPED(x: u32) bool {
- return wstatus(x) == wstopped and WSTOPSIG(x) != 0x13;
-}
-pub fn WIFSIGNALED(x: u32) bool {
- return wstatus(x) != wstopped and wstatus(x) != 0;
-}
+pub const W = struct {
+ pub fn EXITSTATUS(x: u32) u8 {
+ return @intCast(u8, x >> 8);
+ }
+ pub fn TERMSIG(x: u32) u32 {
+ return status(x);
+ }
+ pub fn STOPSIG(x: u32) u32 {
+ return x >> 8;
+ }
+ pub fn IFEXITED(x: u32) bool {
+ return status(x) == 0;
+ }
+ pub fn IFSTOPPED(x: u32) bool {
+ return status(x) == stopped and STOPSIG(x) != 0x13;
+ }
+ pub fn IFSIGNALED(x: u32) bool {
+ return status(x) != stopped and status(x) != 0;
+ }
+
+ fn status(x: u32) u32 {
+ return x & 0o177;
+ }
+ const stopped = 0o177;
+};
pub const E = enum(u16) {
/// No error occurred.
@@ -1488,64 +1444,66 @@ pub const stack_t = extern struct {
ss_flags: i32,
};
-pub const S_IFMT = 0o170000;
-
-pub const S_IFIFO = 0o010000;
-pub const S_IFCHR = 0o020000;
-pub const S_IFDIR = 0o040000;
-pub const S_IFBLK = 0o060000;
-pub const S_IFREG = 0o100000;
-pub const S_IFLNK = 0o120000;
-pub const S_IFSOCK = 0o140000;
-pub const S_IFWHT = 0o160000;
-
-pub const S_ISUID = 0o4000;
-pub const S_ISGID = 0o2000;
-pub const S_ISVTX = 0o1000;
-pub const S_IRWXU = 0o700;
-pub const S_IRUSR = 0o400;
-pub const S_IWUSR = 0o200;
-pub const S_IXUSR = 0o100;
-pub const S_IRWXG = 0o070;
-pub const S_IRGRP = 0o040;
-pub const S_IWGRP = 0o020;
-pub const S_IXGRP = 0o010;
-pub const S_IRWXO = 0o007;
-pub const S_IROTH = 0o004;
-pub const S_IWOTH = 0o002;
-pub const S_IXOTH = 0o001;
-
-pub fn S_ISFIFO(m: u32) bool {
- return m & S_IFMT == S_IFIFO;
-}
+pub const S = struct {
+ pub const IFMT = 0o170000;
+
+ pub const IFIFO = 0o010000;
+ pub const IFCHR = 0o020000;
+ pub const IFDIR = 0o040000;
+ pub const IFBLK = 0o060000;
+ pub const IFREG = 0o100000;
+ pub const IFLNK = 0o120000;
+ pub const IFSOCK = 0o140000;
+ pub const IFWHT = 0o160000;
+
+ pub const ISUID = 0o4000;
+ pub const ISGID = 0o2000;
+ pub const ISVTX = 0o1000;
+ pub const IRWXU = 0o700;
+ pub const IRUSR = 0o400;
+ pub const IWUSR = 0o200;
+ pub const IXUSR = 0o100;
+ pub const IRWXG = 0o070;
+ pub const IRGRP = 0o040;
+ pub const IWGRP = 0o020;
+ pub const IXGRP = 0o010;
+ pub const IRWXO = 0o007;
+ pub const IROTH = 0o004;
+ pub const IWOTH = 0o002;
+ pub const IXOTH = 0o001;
+
+ pub fn ISFIFO(m: u32) bool {
+ return m & IFMT == IFIFO;
+ }
-pub fn S_ISCHR(m: u32) bool {
- return m & S_IFMT == S_IFCHR;
-}
+ pub fn ISCHR(m: u32) bool {
+ return m & IFMT == IFCHR;
+ }
-pub fn S_ISDIR(m: u32) bool {
- return m & S_IFMT == S_IFDIR;
-}
+ pub fn ISDIR(m: u32) bool {
+ return m & IFMT == IFDIR;
+ }
-pub fn S_ISBLK(m: u32) bool {
- return m & S_IFMT == S_IFBLK;
-}
+ pub fn ISBLK(m: u32) bool {
+ return m & IFMT == IFBLK;
+ }
-pub fn S_ISREG(m: u32) bool {
- return m & S_IFMT == S_IFREG;
-}
+ pub fn ISREG(m: u32) bool {
+ return m & IFMT == IFREG;
+ }
-pub fn S_ISLNK(m: u32) bool {
- return m & S_IFMT == S_IFLNK;
-}
+ pub fn ISLNK(m: u32) bool {
+ return m & IFMT == IFLNK;
+ }
-pub fn S_ISSOCK(m: u32) bool {
- return m & S_IFMT == S_IFSOCK;
-}
+ pub fn ISSOCK(m: u32) bool {
+ return m & IFMT == IFSOCK;
+ }
-pub fn S_IWHT(m: u32) bool {
- return m & S_IFMT == S_IFWHT;
-}
+ pub fn IWHT(m: u32) bool {
+ return m & IFMT == IFWHT;
+ }
+};
pub const HOST_NAME_MAX = 72;
@@ -1981,7 +1939,9 @@ pub const winsize = extern struct {
ws_ypixel: u16,
};
-pub const TIOCGWINSZ = ior(0x40000000, 't', 104, @sizeOf(winsize));
+pub const T = struct {
+ pub const IOCGWINSZ = ior(0x40000000, 't', 104, @sizeOf(winsize));
+};
pub const IOCPARM_MASK = 0x1fff;
fn ior(inout: u32, group: usize, num: usize, len: usize) usize {
lib/std/c/dragonfly.zig
@@ -33,10 +33,6 @@ pub const pthread_attr_t = extern struct { // copied from freebsd
pub const sem_t = ?*opaque {};
-pub fn S_ISCHR(m: u32) bool {
- return m & S_IFMT == S_IFCHR;
-}
-
// See:
// - https://gitweb.dragonflybsd.org/dragonfly.git/blob/HEAD:/include/unistd.h
// - https://gitweb.dragonflybsd.org/dragonfly.git/blob/HEAD:/sys/sys/types.h
@@ -157,10 +153,12 @@ pub const STDIN_FILENO = 0;
pub const STDOUT_FILENO = 1;
pub const STDERR_FILENO = 2;
-pub const PROT_NONE = 0;
-pub const PROT_READ = 1;
-pub const PROT_WRITE = 2;
-pub const PROT_EXEC = 4;
+pub const PROT = struct {
+ pub const NONE = 0;
+ pub const READ = 1;
+ pub const WRITE = 2;
+ pub const EXEC = 4;
+};
pub const MAP = struct {
pub const FILE = 0;
@@ -321,32 +319,34 @@ pub const X_OK = 1; // test for execute or search permission
pub const W_OK = 2; // test for write permission
pub const R_OK = 4; // test for read permission
-pub const O_RDONLY = 0;
-pub const O_NDELAY = O_NONBLOCK;
-pub const O_WRONLY = 1;
-pub const O_RDWR = 2;
-pub const O_ACCMODE = 3;
-pub const O_NONBLOCK = 4;
-pub const O_APPEND = 8;
-pub const O_SHLOCK = 16;
-pub const O_EXLOCK = 32;
-pub const O_ASYNC = 64;
-pub const O_FSYNC = 128;
-pub const O_SYNC = 128;
-pub const O_NOFOLLOW = 256;
-pub const O_CREAT = 512;
-pub const O_TRUNC = 1024;
-pub const O_EXCL = 2048;
-pub const O_NOCTTY = 32768;
-pub const O_DIRECT = 65536;
-pub const O_CLOEXEC = 131072;
-pub const O_FBLOCKING = 262144;
-pub const O_FNONBLOCKING = 524288;
-pub const O_FAPPEND = 1048576;
-pub const O_FOFFSET = 2097152;
-pub const O_FSYNCWRITE = 4194304;
-pub const O_FASYNCWRITE = 8388608;
-pub const O_DIRECTORY = 134217728;
+pub const O = struct {
+ pub const RDONLY = 0;
+ pub const NDELAY = NONBLOCK;
+ pub const WRONLY = 1;
+ pub const RDWR = 2;
+ pub const ACCMODE = 3;
+ pub const NONBLOCK = 4;
+ pub const APPEND = 8;
+ pub const SHLOCK = 16;
+ pub const EXLOCK = 32;
+ pub const ASYNC = 64;
+ pub const FSYNC = 128;
+ pub const SYNC = 128;
+ pub const NOFOLLOW = 256;
+ pub const CREAT = 512;
+ pub const TRUNC = 1024;
+ pub const EXCL = 2048;
+ pub const NOCTTY = 32768;
+ pub const DIRECT = 65536;
+ pub const CLOEXEC = 131072;
+ pub const FBLOCKING = 262144;
+ pub const FNONBLOCKING = 524288;
+ pub const FAPPEND = 1048576;
+ pub const FOFFSET = 2097152;
+ pub const FSYNCWRITE = 4194304;
+ pub const FASYNCWRITE = 8388608;
+ pub const DIRECTORY = 134217728;
+};
pub const SEEK_SET = 0;
pub const SEEK_CUR = 1;
@@ -540,81 +540,90 @@ pub const stack_t = extern struct {
ss_flags: i32,
};
-pub const S_IREAD = S_IRUSR;
-pub const S_IEXEC = S_IXUSR;
-pub const S_IWRITE = S_IWUSR;
-pub const S_IXOTH = 1;
-pub const S_IWOTH = 2;
-pub const S_IROTH = 4;
-pub const S_IRWXO = 7;
-pub const S_IXGRP = 8;
-pub const S_IWGRP = 16;
-pub const S_IRGRP = 32;
-pub const S_IRWXG = 56;
-pub const S_IXUSR = 64;
-pub const S_IWUSR = 128;
-pub const S_IRUSR = 256;
-pub const S_IRWXU = 448;
-pub const S_ISTXT = 512;
-pub const S_BLKSIZE = 512;
-pub const S_ISVTX = 512;
-pub const S_ISGID = 1024;
-pub const S_ISUID = 2048;
-pub const S_IFIFO = 4096;
-pub const S_IFCHR = 8192;
-pub const S_IFDIR = 16384;
-pub const S_IFBLK = 24576;
-pub const S_IFREG = 32768;
-pub const S_IFDB = 36864;
-pub const S_IFLNK = 40960;
-pub const S_IFSOCK = 49152;
-pub const S_IFWHT = 57344;
-pub const S_IFMT = 61440;
-
-pub const SIG_DFL = @intToPtr(?Sigaction.sigaction_fn, 0);
-pub const SIG_IGN = @intToPtr(?Sigaction.sigaction_fn, 1);
-pub const SIG_ERR = @intToPtr(?Sigaction.sigaction_fn, maxInt(usize));
-pub const BADSIG = SIG_ERR;
-
-pub const SIG_BLOCK = 1;
-pub const SIG_UNBLOCK = 2;
-pub const SIG_SETMASK = 3;
-
-pub const SIGIOT = SIGABRT;
-pub const SIGHUP = 1;
-pub const SIGINT = 2;
-pub const SIGQUIT = 3;
-pub const SIGILL = 4;
-pub const SIGTRAP = 5;
-pub const SIGABRT = 6;
-pub const SIGEMT = 7;
-pub const SIGFPE = 8;
-pub const SIGKILL = 9;
-pub const SIGBUS = 10;
-pub const SIGSEGV = 11;
-pub const SIGSYS = 12;
-pub const SIGPIPE = 13;
-pub const SIGALRM = 14;
-pub const SIGTERM = 15;
-pub const SIGURG = 16;
-pub const SIGSTOP = 17;
-pub const SIGTSTP = 18;
-pub const SIGCONT = 19;
-pub const SIGCHLD = 20;
-pub const SIGTTIN = 21;
-pub const SIGTTOU = 22;
-pub const SIGIO = 23;
-pub const SIGXCPU = 24;
-pub const SIGXFSZ = 25;
-pub const SIGVTALRM = 26;
-pub const SIGPROF = 27;
-pub const SIGWINCH = 28;
-pub const SIGINFO = 29;
-pub const SIGUSR1 = 30;
-pub const SIGUSR2 = 31;
-pub const SIGTHR = 32;
-pub const SIGCKPT = 33;
-pub const SIGCKPTEXIT = 34;
+pub const S = struct {
+ pub const IREAD = IRUSR;
+ pub const IEXEC = IXUSR;
+ pub const IWRITE = IWUSR;
+ pub const IXOTH = 1;
+ pub const IWOTH = 2;
+ pub const IROTH = 4;
+ pub const IRWXO = 7;
+ pub const IXGRP = 8;
+ pub const IWGRP = 16;
+ pub const IRGRP = 32;
+ pub const IRWXG = 56;
+ pub const IXUSR = 64;
+ pub const IWUSR = 128;
+ pub const IRUSR = 256;
+ pub const IRWXU = 448;
+ pub const ISTXT = 512;
+ pub const BLKSIZE = 512;
+ pub const ISVTX = 512;
+ pub const ISGID = 1024;
+ pub const ISUID = 2048;
+ pub const IFIFO = 4096;
+ pub const IFCHR = 8192;
+ pub const IFDIR = 16384;
+ pub const IFBLK = 24576;
+ pub const IFREG = 32768;
+ pub const IFDB = 36864;
+ pub const IFLNK = 40960;
+ pub const IFSOCK = 49152;
+ pub const IFWHT = 57344;
+ pub const IFMT = 61440;
+
+ pub fn ISCHR(m: u32) bool {
+ return m & IFMT == IFCHR;
+ }
+};
+
+pub const BADSIG = SIG.ERR;
+
+pub const SIG = struct {
+ pub const DFL = @intToPtr(?Sigaction.sigaction_fn, 0);
+ pub const IGN = @intToPtr(?Sigaction.sigaction_fn, 1);
+ pub const ERR = @intToPtr(?Sigaction.sigaction_fn, maxInt(usize));
+
+ pub const BLOCK = 1;
+ pub const UNBLOCK = 2;
+ pub const SETMASK = 3;
+
+ pub const IOT = ABRT;
+ pub const HUP = 1;
+ pub const INT = 2;
+ pub const QUIT = 3;
+ pub const ILL = 4;
+ pub const TRAP = 5;
+ pub const ABRT = 6;
+ pub const EMT = 7;
+ pub const FPE = 8;
+ pub const KILL = 9;
+ pub const BUS = 10;
+ pub const SEGV = 11;
+ pub const SYS = 12;
+ pub const PIPE = 13;
+ pub const ALRM = 14;
+ pub const TERM = 15;
+ pub const URG = 16;
+ pub const STOP = 17;
+ pub const TSTP = 18;
+ pub const CONT = 19;
+ pub const CHLD = 20;
+ pub const TTIN = 21;
+ pub const TTOU = 22;
+ pub const IO = 23;
+ pub const XCPU = 24;
+ pub const XFSZ = 25;
+ pub const VTALRM = 26;
+ pub const PROF = 27;
+ pub const WINCH = 28;
+ pub const INFO = 29;
+ pub const USR1 = 30;
+ pub const USR2 = 31;
+ pub const THR = 32;
+ pub const CKPT = 33;
+ pub const CKPTEXIT = 34;
+};
pub const siginfo_t = extern struct {
signo: c_int,
lib/std/c/freebsd.zig
@@ -363,10 +363,12 @@ pub const STDIN_FILENO = 0;
pub const STDOUT_FILENO = 1;
pub const STDERR_FILENO = 2;
-pub const PROT_NONE = 0;
-pub const PROT_READ = 1;
-pub const PROT_WRITE = 2;
-pub const PROT_EXEC = 4;
+pub const PROT = struct {
+ pub const NONE = 0;
+ pub const READ = 1;
+ pub const WRITE = 2;
+ pub const EXEC = 4;
+};
pub const CLOCK = struct {
pub const REALTIME = 0;
@@ -504,33 +506,35 @@ pub const X_OK = 1; // test for execute or search permission
pub const W_OK = 2; // test for write permission
pub const R_OK = 4; // test for read permission
-pub const O_RDONLY = 0x0000;
-pub const O_WRONLY = 0x0001;
-pub const O_RDWR = 0x0002;
-pub const O_ACCMODE = 0x0003;
-
-pub const O_SHLOCK = 0x0010;
-pub const O_EXLOCK = 0x0020;
-
-pub const O_CREAT = 0x0200;
-pub const O_EXCL = 0x0800;
-pub const O_NOCTTY = 0x8000;
-pub const O_TRUNC = 0x0400;
-pub const O_APPEND = 0x0008;
-pub const O_NONBLOCK = 0x0004;
-pub const O_DSYNC = 0o10000;
-pub const O_SYNC = 0x0080;
-pub const O_RSYNC = 0o4010000;
-pub const O_DIRECTORY = 0x20000;
-pub const O_NOFOLLOW = 0x0100;
-pub const O_CLOEXEC = 0x00100000;
-
-pub const O_ASYNC = 0x0040;
-pub const O_DIRECT = 0x00010000;
-pub const O_NOATIME = 0o1000000;
-pub const O_PATH = 0o10000000;
-pub const O_TMPFILE = 0o20200000;
-pub const O_NDELAY = O_NONBLOCK;
+pub const O = struct {
+ pub const RDONLY = 0x0000;
+ pub const WRONLY = 0x0001;
+ pub const RDWR = 0x0002;
+ pub const ACCMODE = 0x0003;
+
+ pub const SHLOCK = 0x0010;
+ pub const EXLOCK = 0x0020;
+
+ pub const CREAT = 0x0200;
+ pub const EXCL = 0x0800;
+ pub const NOCTTY = 0x8000;
+ pub const TRUNC = 0x0400;
+ pub const APPEND = 0x0008;
+ pub const NONBLOCK = 0x0004;
+ pub const DSYNC = 0o10000;
+ pub const SYNC = 0x0080;
+ pub const RSYNC = 0o4010000;
+ pub const DIRECTORY = 0x20000;
+ pub const NOFOLLOW = 0x0100;
+ pub const CLOEXEC = 0x00100000;
+
+ pub const ASYNC = 0x0040;
+ pub const DIRECT = 0x00010000;
+ pub const NOATIME = 0o1000000;
+ pub const PATH = 0o10000000;
+ pub const TMPFILE = 0o20200000;
+ pub const NDELAY = NONBLOCK;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -877,31 +881,33 @@ pub const NOTE_NSECONDS = 0x00000008;
/// timeout is absolute
pub const NOTE_ABSTIME = 0x00000010;
-pub const TIOCEXCL = 0x2000740d;
-pub const TIOCNXCL = 0x2000740e;
-pub const TIOCSCTTY = 0x20007461;
-pub const TIOCGPGRP = 0x40047477;
-pub const TIOCSPGRP = 0x80047476;
-pub const TIOCOUTQ = 0x40047473;
-pub const TIOCSTI = 0x80017472;
-pub const TIOCGWINSZ = 0x40087468;
-pub const TIOCSWINSZ = 0x80087467;
-pub const TIOCMGET = 0x4004746a;
-pub const TIOCMBIS = 0x8004746c;
-pub const TIOCMBIC = 0x8004746b;
-pub const TIOCMSET = 0x8004746d;
-pub const FIONREAD = 0x4004667f;
-pub const TIOCCONS = 0x80047462;
-pub const TIOCPKT = 0x80047470;
-pub const FIONBIO = 0x8004667e;
-pub const TIOCNOTTY = 0x20007471;
-pub const TIOCSETD = 0x8004741b;
-pub const TIOCGETD = 0x4004741a;
-pub const TIOCSBRK = 0x2000747b;
-pub const TIOCCBRK = 0x2000747a;
-pub const TIOCGSID = 0x40047463;
-pub const TIOCGPTN = 0x4004740f;
-pub const TIOCSIG = 0x2004745f;
+pub const T = struct {
+ pub const IOCEXCL = 0x2000740d;
+ pub const IOCNXCL = 0x2000740e;
+ pub const IOCSCTTY = 0x20007461;
+ pub const IOCGPGRP = 0x40047477;
+ pub const IOCSPGRP = 0x80047476;
+ pub const IOCOUTQ = 0x40047473;
+ pub const IOCSTI = 0x80017472;
+ pub const IOCGWINSZ = 0x40087468;
+ pub const IOCSWINSZ = 0x80087467;
+ pub const IOCMGET = 0x4004746a;
+ pub const IOCMBIS = 0x8004746c;
+ pub const IOCMBIC = 0x8004746b;
+ pub const IOCMSET = 0x8004746d;
+ pub const FIONREAD = 0x4004667f;
+ pub const IOCCONS = 0x80047462;
+ pub const IOCPKT = 0x80047470;
+ pub const FIONBIO = 0x8004667e;
+ pub const IOCNOTTY = 0x20007471;
+ pub const IOCSETD = 0x8004741b;
+ pub const IOCGETD = 0x4004741a;
+ pub const IOCSBRK = 0x2000747b;
+ pub const IOCCBRK = 0x2000747a;
+ pub const IOCGSID = 0x40047463;
+ pub const IOCGPTN = 0x4004740f;
+ pub const IOCSIG = 0x2004745f;
+};
pub fn WEXITSTATUS(s: u32) u8 {
return @intCast(u8, (s & 0xff00) >> 8);
@@ -1166,69 +1172,71 @@ pub const SS_ONSTACK = 1;
pub const SS_DISABLE = 4;
pub const stack_t = extern struct {
- ss_sp: [*]u8,
- ss_size: isize,
- ss_flags: i32,
+ sp: [*]u8,
+ size: isize,
+ flags: i32,
};
-pub const S_IFMT = 0o170000;
-
-pub const S_IFIFO = 0o010000;
-pub const S_IFCHR = 0o020000;
-pub const S_IFDIR = 0o040000;
-pub const S_IFBLK = 0o060000;
-pub const S_IFREG = 0o100000;
-pub const S_IFLNK = 0o120000;
-pub const S_IFSOCK = 0o140000;
-pub const S_IFWHT = 0o160000;
-
-pub const S_ISUID = 0o4000;
-pub const S_ISGID = 0o2000;
-pub const S_ISVTX = 0o1000;
-pub const S_IRWXU = 0o700;
-pub const S_IRUSR = 0o400;
-pub const S_IWUSR = 0o200;
-pub const S_IXUSR = 0o100;
-pub const S_IRWXG = 0o070;
-pub const S_IRGRP = 0o040;
-pub const S_IWGRP = 0o020;
-pub const S_IXGRP = 0o010;
-pub const S_IRWXO = 0o007;
-pub const S_IROTH = 0o004;
-pub const S_IWOTH = 0o002;
-pub const S_IXOTH = 0o001;
-
-pub fn S_ISFIFO(m: u32) bool {
- return m & S_IFMT == S_IFIFO;
-}
+pub const S = struct {
+ pub const IFMT = 0o170000;
+
+ pub const IFIFO = 0o010000;
+ pub const IFCHR = 0o020000;
+ pub const IFDIR = 0o040000;
+ pub const IFBLK = 0o060000;
+ pub const IFREG = 0o100000;
+ pub const IFLNK = 0o120000;
+ pub const IFSOCK = 0o140000;
+ pub const IFWHT = 0o160000;
+
+ pub const ISUID = 0o4000;
+ pub const ISGID = 0o2000;
+ pub const ISVTX = 0o1000;
+ pub const IRWXU = 0o700;
+ pub const IRUSR = 0o400;
+ pub const IWUSR = 0o200;
+ pub const IXUSR = 0o100;
+ pub const IRWXG = 0o070;
+ pub const IRGRP = 0o040;
+ pub const IWGRP = 0o020;
+ pub const IXGRP = 0o010;
+ pub const IRWXO = 0o007;
+ pub const IROTH = 0o004;
+ pub const IWOTH = 0o002;
+ pub const IXOTH = 0o001;
+
+ pub fn ISFIFO(m: u32) bool {
+ return m & IFMT == IFIFO;
+ }
-pub fn S_ISCHR(m: u32) bool {
- return m & S_IFMT == S_IFCHR;
-}
+ pub fn ISCHR(m: u32) bool {
+ return m & IFMT == IFCHR;
+ }
-pub fn S_ISDIR(m: u32) bool {
- return m & S_IFMT == S_IFDIR;
-}
+ pub fn ISDIR(m: u32) bool {
+ return m & IFMT == IFDIR;
+ }
-pub fn S_ISBLK(m: u32) bool {
- return m & S_IFMT == S_IFBLK;
-}
+ pub fn ISBLK(m: u32) bool {
+ return m & IFMT == IFBLK;
+ }
-pub fn S_ISREG(m: u32) bool {
- return m & S_IFMT == S_IFREG;
-}
+ pub fn ISREG(m: u32) bool {
+ return m & IFMT == IFREG;
+ }
-pub fn S_ISLNK(m: u32) bool {
- return m & S_IFMT == S_IFLNK;
-}
+ pub fn ISLNK(m: u32) bool {
+ return m & IFMT == IFLNK;
+ }
-pub fn S_ISSOCK(m: u32) bool {
- return m & S_IFMT == S_IFSOCK;
-}
+ pub fn ISSOCK(m: u32) bool {
+ return m & IFMT == IFSOCK;
+ }
-pub fn S_IWHT(m: u32) bool {
- return m & S_IFMT == S_IFWHT;
-}
+ pub fn IWHT(m: u32) bool {
+ return m & IFMT == IFWHT;
+ }
+};
pub const HOST_NAME_MAX = 255;
lib/std/c/haiku.zig
@@ -377,10 +377,12 @@ pub const STDIN_FILENO = 0;
pub const STDOUT_FILENO = 1;
pub const STDERR_FILENO = 2;
-pub const PROT_NONE = 0;
-pub const PROT_READ = 1;
-pub const PROT_WRITE = 2;
-pub const PROT_EXEC = 4;
+pub const PROT = struct {
+ pub const NONE = 0;
+ pub const READ = 1;
+ pub const WRITE = 2;
+ pub const EXEC = 4;
+};
pub const CLOCK = struct {
pub const MONOTONIC = 0;
@@ -425,6 +427,10 @@ pub const SA_STACK = SA_ONSTACK;
pub const SA_ONESHOT = SA_RESETHAND;
pub const SIG = struct {
+ pub const ERR = @intToPtr(fn (i32) callconv(.C) void, maxInt(usize));
+ pub const DFL = @intToPtr(fn (i32) callconv(.C) void, 0);
+ pub const IGN = @intToPtr(fn (i32) callconv(.C) void, 1);
+
pub const HUP = 1;
pub const INT = 2;
pub const QUIT = 3;
@@ -489,33 +495,35 @@ pub const X_OK = 1; // test for execute or search permission
pub const W_OK = 2; // test for write permission
pub const R_OK = 4; // test for read permission
-pub const O_RDONLY = 0x0000;
-pub const O_WRONLY = 0x0001;
-pub const O_RDWR = 0x0002;
-pub const O_ACCMODE = 0x0003;
-
-pub const O_SHLOCK = 0x0010;
-pub const O_EXLOCK = 0x0020;
-
-pub const O_CREAT = 0x0200;
-pub const O_EXCL = 0x0800;
-pub const O_NOCTTY = 0x8000;
-pub const O_TRUNC = 0x0400;
-pub const O_APPEND = 0x0008;
-pub const O_NONBLOCK = 0x0004;
-pub const O_DSYNC = 0o10000;
-pub const O_SYNC = 0x0080;
-pub const O_RSYNC = 0o4010000;
-pub const O_DIRECTORY = 0x20000;
-pub const O_NOFOLLOW = 0x0100;
-pub const O_CLOEXEC = 0x00100000;
-
-pub const O_ASYNC = 0x0040;
-pub const O_DIRECT = 0x00010000;
-pub const O_NOATIME = 0o1000000;
-pub const O_PATH = 0o10000000;
-pub const O_TMPFILE = 0o20200000;
-pub const O_NDELAY = O_NONBLOCK;
+pub const O = struct {
+ pub const RDONLY = 0x0000;
+ pub const WRONLY = 0x0001;
+ pub const RDWR = 0x0002;
+ pub const ACCMODE = 0x0003;
+
+ pub const SHLOCK = 0x0010;
+ pub const EXLOCK = 0x0020;
+
+ pub const CREAT = 0x0200;
+ pub const EXCL = 0x0800;
+ pub const NOCTTY = 0x8000;
+ pub const TRUNC = 0x0400;
+ pub const APPEND = 0x0008;
+ pub const NONBLOCK = 0x0004;
+ pub const DSYNC = 0o10000;
+ pub const SYNC = 0x0080;
+ pub const RSYNC = 0o4010000;
+ pub const DIRECTORY = 0x20000;
+ pub const NOFOLLOW = 0x0100;
+ pub const CLOEXEC = 0x00100000;
+
+ pub const ASYNC = 0x0040;
+ pub const DIRECT = 0x00010000;
+ pub const NOATIME = 0o1000000;
+ pub const PATH = 0o10000000;
+ pub const TMPFILE = 0o20200000;
+ pub const NDELAY = NONBLOCK;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -773,52 +781,56 @@ pub const EVFILT_SENDFILE = -12;
pub const EVFILT_EMPTY = -13;
-pub const TCGETA = 0x8000;
-pub const TCSETA = 0x8001;
-pub const TCSETAW = 0x8004;
-pub const TCSETAF = 0x8003;
-pub const TCSBRK = 08005;
-pub const TCXONC = 0x8007;
-pub const TCFLSH = 0x8006;
-
-pub const TIOCSCTTY = 0x8017;
-pub const TIOCGPGRP = 0x8015;
-pub const TIOCSPGRP = 0x8016;
-pub const TIOCGWINSZ = 0x8012;
-pub const TIOCSWINSZ = 0x8013;
-pub const TIOCMGET = 0x8018;
-pub const TIOCMBIS = 0x8022;
-pub const TIOCMBIC = 0x8023;
-pub const TIOCMSET = 0x8019;
-pub const FIONREAD = 0xbe000001;
-pub const FIONBIO = 0xbe000000;
-pub const TIOCSBRK = 0x8020;
-pub const TIOCCBRK = 0x8021;
-pub const TIOCGSID = 0x8024;
-
-pub fn WEXITSTATUS(s: u32) u8 {
- return @intCast(u8, s & 0xff);
-}
-
-pub fn WTERMSIG(s: u32) u32 {
- return (s >> 8) & 0xff;
-}
-
-pub fn WSTOPSIG(s: u32) u32 {
- return WEXITSTATUS(s);
-}
-
-pub fn WIFEXITED(s: u32) bool {
- return WTERMSIG(s) == 0;
-}
-
-pub fn WIFSTOPPED(s: u32) bool {
- return ((s >> 16) & 0xff) != 0;
-}
-
-pub fn WIFSIGNALED(s: u32) bool {
- return ((s >> 8) & 0xff) != 0;
-}
+pub const T = struct {
+ pub const CGETA = 0x8000;
+ pub const CSETA = 0x8001;
+ pub const CSETAW = 0x8004;
+ pub const CSETAF = 0x8003;
+ pub const CSBRK = 08005;
+ pub const CXONC = 0x8007;
+ pub const CFLSH = 0x8006;
+
+ pub const IOCSCTTY = 0x8017;
+ pub const IOCGPGRP = 0x8015;
+ pub const IOCSPGRP = 0x8016;
+ pub const IOCGWINSZ = 0x8012;
+ pub const IOCSWINSZ = 0x8013;
+ pub const IOCMGET = 0x8018;
+ pub const IOCMBIS = 0x8022;
+ pub const IOCMBIC = 0x8023;
+ pub const IOCMSET = 0x8019;
+ pub const FIONREAD = 0xbe000001;
+ pub const FIONBIO = 0xbe000000;
+ pub const IOCSBRK = 0x8020;
+ pub const IOCCBRK = 0x8021;
+ pub const IOCGSID = 0x8024;
+};
+
+pub const W = struct {
+ pub fn EXITSTATUS(s: u32) u8 {
+ return @intCast(u8, s & 0xff);
+ }
+
+ pub fn TERMSIG(s: u32) u32 {
+ return (s >> 8) & 0xff;
+ }
+
+ pub fn STOPSIG(s: u32) u32 {
+ return EXITSTATUS(s);
+ }
+
+ pub fn IFEXITED(s: u32) bool {
+ return TERMSIG(s) == 0;
+ }
+
+ pub fn IFSTOPPED(s: u32) bool {
+ return ((s >> 16) & 0xff) != 0;
+ }
+
+ pub fn IFSIGNALED(s: u32) bool {
+ return ((s >> 8) & 0xff) != 0;
+ }
+};
pub const winsize = extern struct {
ws_row: u16,
@@ -829,10 +841,6 @@ pub const winsize = extern struct {
const NSIG = 32;
-pub const SIG_ERR = @intToPtr(fn (i32) callconv(.C) void, maxInt(usize));
-pub const SIG_DFL = @intToPtr(fn (i32) callconv(.C) void, 0);
-pub const SIG_IGN = @intToPtr(fn (i32) callconv(.C) void, 1);
-
/// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
pub const Sigaction = extern struct {
/// signal handler
@@ -992,64 +1000,66 @@ pub const stack_t = extern struct {
ss_flags: i32,
};
-pub const S_IFMT = 0o170000;
-
-pub const S_IFIFO = 0o010000;
-pub const S_IFCHR = 0o020000;
-pub const S_IFDIR = 0o040000;
-pub const S_IFBLK = 0o060000;
-pub const S_IFREG = 0o100000;
-pub const S_IFLNK = 0o120000;
-pub const S_IFSOCK = 0o140000;
-pub const S_IFWHT = 0o160000;
-
-pub const S_ISUID = 0o4000;
-pub const S_ISGID = 0o2000;
-pub const S_ISVTX = 0o1000;
-pub const S_IRWXU = 0o700;
-pub const S_IRUSR = 0o400;
-pub const S_IWUSR = 0o200;
-pub const S_IXUSR = 0o100;
-pub const S_IRWXG = 0o070;
-pub const S_IRGRP = 0o040;
-pub const S_IWGRP = 0o020;
-pub const S_IXGRP = 0o010;
-pub const S_IRWXO = 0o007;
-pub const S_IROTH = 0o004;
-pub const S_IWOTH = 0o002;
-pub const S_IXOTH = 0o001;
-
-pub fn S_ISFIFO(m: u32) bool {
- return m & S_IFMT == S_IFIFO;
-}
-
-pub fn S_ISCHR(m: u32) bool {
- return m & S_IFMT == S_IFCHR;
-}
-
-pub fn S_ISDIR(m: u32) bool {
- return m & S_IFMT == S_IFDIR;
-}
-
-pub fn S_ISBLK(m: u32) bool {
- return m & S_IFMT == S_IFBLK;
-}
-
-pub fn S_ISREG(m: u32) bool {
- return m & S_IFMT == S_IFREG;
-}
-
-pub fn S_ISLNK(m: u32) bool {
- return m & S_IFMT == S_IFLNK;
-}
-
-pub fn S_ISSOCK(m: u32) bool {
- return m & S_IFMT == S_IFSOCK;
-}
-
-pub fn S_IWHT(m: u32) bool {
- return m & S_IFMT == S_IFWHT;
-}
+pub const S = struct {
+ pub const IFMT = 0o170000;
+
+ pub const IFIFO = 0o010000;
+ pub const IFCHR = 0o020000;
+ pub const IFDIR = 0o040000;
+ pub const IFBLK = 0o060000;
+ pub const IFREG = 0o100000;
+ pub const IFLNK = 0o120000;
+ pub const IFSOCK = 0o140000;
+ pub const IFWHT = 0o160000;
+
+ pub const ISUID = 0o4000;
+ pub const ISGID = 0o2000;
+ pub const ISVTX = 0o1000;
+ pub const IRWXU = 0o700;
+ pub const IRUSR = 0o400;
+ pub const IWUSR = 0o200;
+ pub const IXUSR = 0o100;
+ pub const IRWXG = 0o070;
+ pub const IRGRP = 0o040;
+ pub const IWGRP = 0o020;
+ pub const IXGRP = 0o010;
+ pub const IRWXO = 0o007;
+ pub const IROTH = 0o004;
+ pub const IWOTH = 0o002;
+ pub const IXOTH = 0o001;
+
+ pub fn ISFIFO(m: u32) bool {
+ return m & IFMT == IFIFO;
+ }
+
+ pub fn ISCHR(m: u32) bool {
+ return m & IFMT == IFCHR;
+ }
+
+ pub fn ISDIR(m: u32) bool {
+ return m & IFMT == IFDIR;
+ }
+
+ pub fn ISBLK(m: u32) bool {
+ return m & IFMT == IFBLK;
+ }
+
+ pub fn ISREG(m: u32) bool {
+ return m & IFMT == IFREG;
+ }
+
+ pub fn ISLNK(m: u32) bool {
+ return m & IFMT == IFLNK;
+ }
+
+ pub fn ISSOCK(m: u32) bool {
+ return m & IFMT == IFSOCK;
+ }
+
+ pub fn IWHT(m: u32) bool {
+ return m & IFMT == IFWHT;
+ }
+};
pub const HOST_NAME_MAX = 255;
lib/std/c/linux.zig
@@ -25,7 +25,11 @@ pub const IOV_MAX = linux.IOV_MAX;
pub const IPPROTO = linux.IPPROTO;
pub const LOCK = linux.LOCK;
pub const MADV = linux.MADV;
-pub const MAP = linux.MAP;
+pub const MAP = struct {
+ pub usingnamespace linux.MAP;
+ /// Only used by libc to communicate failure.
+ pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+};
pub const MMAP2_UNIT = linux.MMAP2_UNIT;
pub const NAME_MAX = linux.NAME_MAX;
pub const O = linux.O;
lib/std/c/netbsd.zig
@@ -534,10 +534,12 @@ pub const STDIN_FILENO = 0;
pub const STDOUT_FILENO = 1;
pub const STDERR_FILENO = 2;
-pub const PROT_NONE = 0;
-pub const PROT_READ = 1;
-pub const PROT_WRITE = 2;
-pub const PROT_EXEC = 4;
+pub const PROT = struct {
+ pub const NONE = 0;
+ pub const READ = 1;
+ pub const WRITE = 2;
+ pub const EXEC = 4;
+};
pub const CLOCK = struct {
pub const REALTIME = 0;
@@ -589,71 +591,52 @@ pub const X_OK = 1; // test for execute or search permission
pub const W_OK = 2; // test for write permission
pub const R_OK = 4; // test for read permission
-/// open for reading only
-pub const O_RDONLY = 0x00000000;
-
-/// open for writing only
-pub const O_WRONLY = 0x00000001;
-
-/// open for reading and writing
-pub const O_RDWR = 0x00000002;
-
-/// mask for above modes
-pub const O_ACCMODE = 0x00000003;
-
-/// no delay
-pub const O_NONBLOCK = 0x00000004;
-
-/// set append mode
-pub const O_APPEND = 0x00000008;
-
-/// open with shared file lock
-pub const O_SHLOCK = 0x00000010;
-
-/// open with exclusive file lock
-pub const O_EXLOCK = 0x00000020;
-
-/// signal pgrp when data ready
-pub const O_ASYNC = 0x00000040;
-
-/// synchronous writes
-pub const O_SYNC = 0x00000080;
-
-/// don't follow symlinks on the last
-pub const O_NOFOLLOW = 0x00000100;
-
-/// create if nonexistent
-pub const O_CREAT = 0x00000200;
-
-/// truncate to zero length
-pub const O_TRUNC = 0x00000400;
-
-/// error if already exists
-pub const O_EXCL = 0x00000800;
-
-/// don't assign controlling terminal
-pub const O_NOCTTY = 0x00008000;
-
-/// write: I/O data completion
-pub const O_DSYNC = 0x00010000;
-
-/// read: I/O completion as for write
-pub const O_RSYNC = 0x00020000;
-
-/// use alternate i/o semantics
-pub const O_ALT_IO = 0x00040000;
-
-/// direct I/O hint
-pub const O_DIRECT = 0x00080000;
-
-/// fail if not a directory
-pub const O_DIRECTORY = 0x00200000;
-
-/// set close on exec
-pub const O_CLOEXEC = 0x00400000;
-
-/// skip search permission checks
-pub const O_SEARCH = 0x00800000;
+pub const O = struct {
+ /// open for reading only
+ pub const RDONLY = 0x00000000;
+ /// open for writing only
+ pub const WRONLY = 0x00000001;
+ /// open for reading and writing
+ pub const RDWR = 0x00000002;
+ /// mask for above modes
+ pub const ACCMODE = 0x00000003;
+ /// no delay
+ pub const NONBLOCK = 0x00000004;
+ /// set append mode
+ pub const APPEND = 0x00000008;
+ /// open with shared file lock
+ pub const SHLOCK = 0x00000010;
+ /// open with exclusive file lock
+ pub const EXLOCK = 0x00000020;
+ /// signal pgrp when data ready
+ pub const ASYNC = 0x00000040;
+ /// synchronous writes
+ pub const SYNC = 0x00000080;
+ /// don't follow symlinks on the last
+ pub const NOFOLLOW = 0x00000100;
+ /// create if nonexistent
+ pub const CREAT = 0x00000200;
+ /// truncate to zero length
+ pub const TRUNC = 0x00000400;
+ /// error if already exists
+ pub const EXCL = 0x00000800;
+ /// don't assign controlling terminal
+ pub const NOCTTY = 0x00008000;
+ /// write: I/O data completion
+ pub const DSYNC = 0x00010000;
+ /// read: I/O completion as for write
+ pub const RSYNC = 0x00020000;
+ /// use alternate i/o semantics
+ pub const ALT_IO = 0x00040000;
+ /// direct I/O hint
+ pub const DIRECT = 0x00080000;
+ /// fail if not a directory
+ pub const DIRECTORY = 0x00200000;
+ /// set close on exec
+ pub const CLOEXEC = 0x00400000;
+ /// skip search permission checks
+ pub const SEARCH = 0x00800000;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -687,10 +670,6 @@ pub const SEEK_SET = 0;
pub const SEEK_CUR = 1;
pub const SEEK_END = 2;
-pub const SIG_BLOCK = 1;
-pub const SIG_UNBLOCK = 2;
-pub const SIG_SETMASK = 3;
-
pub const DT_UNKNOWN = 0;
pub const DT_FIFO = 1;
pub const DT_CHR = 2;
@@ -789,80 +768,82 @@ pub const NOTE_EXEC = 0x20000000;
pub const NOTE_PDATAMASK = 0x000fffff;
pub const NOTE_PCTRLMASK = 0xf0000000;
-pub const TIOCCBRK = 0x2000747a;
-pub const TIOCCDTR = 0x20007478;
-pub const TIOCCONS = 0x80047462;
-pub const TIOCDCDTIMESTAMP = 0x40107458;
-pub const TIOCDRAIN = 0x2000745e;
-pub const TIOCEXCL = 0x2000740d;
-pub const TIOCEXT = 0x80047460;
-pub const TIOCFLAG_CDTRCTS = 0x10;
-pub const TIOCFLAG_CLOCAL = 0x2;
-pub const TIOCFLAG_CRTSCTS = 0x4;
-pub const TIOCFLAG_MDMBUF = 0x8;
-pub const TIOCFLAG_SOFTCAR = 0x1;
-pub const TIOCFLUSH = 0x80047410;
-pub const TIOCGETA = 0x402c7413;
-pub const TIOCGETD = 0x4004741a;
-pub const TIOCGFLAGS = 0x4004745d;
-pub const TIOCGLINED = 0x40207442;
-pub const TIOCGPGRP = 0x40047477;
-pub const TIOCGQSIZE = 0x40047481;
-pub const TIOCGRANTPT = 0x20007447;
-pub const TIOCGSID = 0x40047463;
-pub const TIOCGSIZE = 0x40087468;
-pub const TIOCGWINSZ = 0x40087468;
-pub const TIOCMBIC = 0x8004746b;
-pub const TIOCMBIS = 0x8004746c;
-pub const TIOCMGET = 0x4004746a;
-pub const TIOCMSET = 0x8004746d;
-pub const TIOCM_CAR = 0x40;
-pub const TIOCM_CD = 0x40;
-pub const TIOCM_CTS = 0x20;
-pub const TIOCM_DSR = 0x100;
-pub const TIOCM_DTR = 0x2;
-pub const TIOCM_LE = 0x1;
-pub const TIOCM_RI = 0x80;
-pub const TIOCM_RNG = 0x80;
-pub const TIOCM_RTS = 0x4;
-pub const TIOCM_SR = 0x10;
-pub const TIOCM_ST = 0x8;
-pub const TIOCNOTTY = 0x20007471;
-pub const TIOCNXCL = 0x2000740e;
-pub const TIOCOUTQ = 0x40047473;
-pub const TIOCPKT = 0x80047470;
-pub const TIOCPKT_DATA = 0x0;
-pub const TIOCPKT_DOSTOP = 0x20;
-pub const TIOCPKT_FLUSHREAD = 0x1;
-pub const TIOCPKT_FLUSHWRITE = 0x2;
-pub const TIOCPKT_IOCTL = 0x40;
-pub const TIOCPKT_NOSTOP = 0x10;
-pub const TIOCPKT_START = 0x8;
-pub const TIOCPKT_STOP = 0x4;
-pub const TIOCPTMGET = 0x40287446;
-pub const TIOCPTSNAME = 0x40287448;
-pub const TIOCRCVFRAME = 0x80087445;
-pub const TIOCREMOTE = 0x80047469;
-pub const TIOCSBRK = 0x2000747b;
-pub const TIOCSCTTY = 0x20007461;
-pub const TIOCSDTR = 0x20007479;
-pub const TIOCSETA = 0x802c7414;
-pub const TIOCSETAF = 0x802c7416;
-pub const TIOCSETAW = 0x802c7415;
-pub const TIOCSETD = 0x8004741b;
-pub const TIOCSFLAGS = 0x8004745c;
-pub const TIOCSIG = 0x2000745f;
-pub const TIOCSLINED = 0x80207443;
-pub const TIOCSPGRP = 0x80047476;
-pub const TIOCSQSIZE = 0x80047480;
-pub const TIOCSSIZE = 0x80087467;
-pub const TIOCSTART = 0x2000746e;
-pub const TIOCSTAT = 0x80047465;
-pub const TIOCSTI = 0x80017472;
-pub const TIOCSTOP = 0x2000746f;
-pub const TIOCSWINSZ = 0x80087467;
-pub const TIOCUCNTL = 0x80047466;
-pub const TIOCXMTFRAME = 0x80087444;
+pub const T = struct {
+ pub const IOCCBRK = 0x2000747a;
+ pub const IOCCDTR = 0x20007478;
+ pub const IOCCONS = 0x80047462;
+ pub const IOCDCDTIMESTAMP = 0x40107458;
+ pub const IOCDRAIN = 0x2000745e;
+ pub const IOCEXCL = 0x2000740d;
+ pub const IOCEXT = 0x80047460;
+ pub const IOCFLAG_CDTRCTS = 0x10;
+ pub const IOCFLAG_CLOCAL = 0x2;
+ pub const IOCFLAG_CRTSCTS = 0x4;
+ pub const IOCFLAG_MDMBUF = 0x8;
+ pub const IOCFLAG_SOFTCAR = 0x1;
+ pub const IOCFLUSH = 0x80047410;
+ pub const IOCGETA = 0x402c7413;
+ pub const IOCGETD = 0x4004741a;
+ pub const IOCGFLAGS = 0x4004745d;
+ pub const IOCGLINED = 0x40207442;
+ pub const IOCGPGRP = 0x40047477;
+ pub const IOCGQSIZE = 0x40047481;
+ pub const IOCGRANTPT = 0x20007447;
+ pub const IOCGSID = 0x40047463;
+ pub const IOCGSIZE = 0x40087468;
+ pub const IOCGWINSZ = 0x40087468;
+ pub const IOCMBIC = 0x8004746b;
+ pub const IOCMBIS = 0x8004746c;
+ pub const IOCMGET = 0x4004746a;
+ pub const IOCMSET = 0x8004746d;
+ pub const IOCM_CAR = 0x40;
+ pub const IOCM_CD = 0x40;
+ pub const IOCM_CTS = 0x20;
+ pub const IOCM_DSR = 0x100;
+ pub const IOCM_DTR = 0x2;
+ pub const IOCM_LE = 0x1;
+ pub const IOCM_RI = 0x80;
+ pub const IOCM_RNG = 0x80;
+ pub const IOCM_RTS = 0x4;
+ pub const IOCM_SR = 0x10;
+ pub const IOCM_ST = 0x8;
+ pub const IOCNOTTY = 0x20007471;
+ pub const IOCNXCL = 0x2000740e;
+ pub const IOCOUTQ = 0x40047473;
+ pub const IOCPKT = 0x80047470;
+ pub const IOCPKT_DATA = 0x0;
+ pub const IOCPKT_DOSTOP = 0x20;
+ pub const IOCPKT_FLUSHREAD = 0x1;
+ pub const IOCPKT_FLUSHWRITE = 0x2;
+ pub const IOCPKT_IOCTL = 0x40;
+ pub const IOCPKT_NOSTOP = 0x10;
+ pub const IOCPKT_START = 0x8;
+ pub const IOCPKT_STOP = 0x4;
+ pub const IOCPTMGET = 0x40287446;
+ pub const IOCPTSNAME = 0x40287448;
+ pub const IOCRCVFRAME = 0x80087445;
+ pub const IOCREMOTE = 0x80047469;
+ pub const IOCSBRK = 0x2000747b;
+ pub const IOCSCTTY = 0x20007461;
+ pub const IOCSDTR = 0x20007479;
+ pub const IOCSETA = 0x802c7414;
+ pub const IOCSETAF = 0x802c7416;
+ pub const IOCSETAW = 0x802c7415;
+ pub const IOCSETD = 0x8004741b;
+ pub const IOCSFLAGS = 0x8004745c;
+ pub const IOCSIG = 0x2000745f;
+ pub const IOCSLINED = 0x80207443;
+ pub const IOCSPGRP = 0x80047476;
+ pub const IOCSQSIZE = 0x80047480;
+ pub const IOCSSIZE = 0x80087467;
+ pub const IOCSTART = 0x2000746e;
+ pub const IOCSTAT = 0x80047465;
+ pub const IOCSTI = 0x80017472;
+ pub const IOCSTOP = 0x2000746f;
+ pub const IOCSWINSZ = 0x80087467;
+ pub const IOCUCNTL = 0x80047466;
+ pub const IOCXMTFRAME = 0x80087444;
+};
pub fn WEXITSTATUS(s: u32) u8 {
return @intCast(u8, (s >> 8) & 0xff);
@@ -906,6 +887,10 @@ pub const SIG = struct {
pub const WORDS = 4;
pub const MAXSIG = 128;
+ pub const BLOCK = 1;
+ pub const UNBLOCK = 2;
+ pub const SETMASK = 3;
+
pub const HUP = 1;
pub const INT = 2;
pub const QUIT = 3;
@@ -1213,64 +1198,66 @@ pub const stack_t = extern struct {
ss_flags: i32,
};
-pub const S_IFMT = 0o170000;
-
-pub const S_IFIFO = 0o010000;
-pub const S_IFCHR = 0o020000;
-pub const S_IFDIR = 0o040000;
-pub const S_IFBLK = 0o060000;
-pub const S_IFREG = 0o100000;
-pub const S_IFLNK = 0o120000;
-pub const S_IFSOCK = 0o140000;
-pub const S_IFWHT = 0o160000;
-
-pub const S_ISUID = 0o4000;
-pub const S_ISGID = 0o2000;
-pub const S_ISVTX = 0o1000;
-pub const S_IRWXU = 0o700;
-pub const S_IRUSR = 0o400;
-pub const S_IWUSR = 0o200;
-pub const S_IXUSR = 0o100;
-pub const S_IRWXG = 0o070;
-pub const S_IRGRP = 0o040;
-pub const S_IWGRP = 0o020;
-pub const S_IXGRP = 0o010;
-pub const S_IRWXO = 0o007;
-pub const S_IROTH = 0o004;
-pub const S_IWOTH = 0o002;
-pub const S_IXOTH = 0o001;
-
-pub fn S_ISFIFO(m: u32) bool {
- return m & S_IFMT == S_IFIFO;
-}
+pub const S = struct {
+ pub const IFMT = 0o170000;
+
+ pub const IFIFO = 0o010000;
+ pub const IFCHR = 0o020000;
+ pub const IFDIR = 0o040000;
+ pub const IFBLK = 0o060000;
+ pub const IFREG = 0o100000;
+ pub const IFLNK = 0o120000;
+ pub const IFSOCK = 0o140000;
+ pub const IFWHT = 0o160000;
+
+ pub const ISUID = 0o4000;
+ pub const ISGID = 0o2000;
+ pub const ISVTX = 0o1000;
+ pub const IRWXU = 0o700;
+ pub const IRUSR = 0o400;
+ pub const IWUSR = 0o200;
+ pub const IXUSR = 0o100;
+ pub const IRWXG = 0o070;
+ pub const IRGRP = 0o040;
+ pub const IWGRP = 0o020;
+ pub const IXGRP = 0o010;
+ pub const IRWXO = 0o007;
+ pub const IROTH = 0o004;
+ pub const IWOTH = 0o002;
+ pub const IXOTH = 0o001;
+
+ pub fn ISFIFO(m: u32) bool {
+ return m & IFMT == IFIFO;
+ }
-pub fn S_ISCHR(m: u32) bool {
- return m & S_IFMT == S_IFCHR;
-}
+ pub fn ISCHR(m: u32) bool {
+ return m & IFMT == IFCHR;
+ }
-pub fn S_ISDIR(m: u32) bool {
- return m & S_IFMT == S_IFDIR;
-}
+ pub fn ISDIR(m: u32) bool {
+ return m & IFMT == IFDIR;
+ }
-pub fn S_ISBLK(m: u32) bool {
- return m & S_IFMT == S_IFBLK;
-}
+ pub fn ISBLK(m: u32) bool {
+ return m & IFMT == IFBLK;
+ }
-pub fn S_ISREG(m: u32) bool {
- return m & S_IFMT == S_IFREG;
-}
+ pub fn ISREG(m: u32) bool {
+ return m & IFMT == IFREG;
+ }
-pub fn S_ISLNK(m: u32) bool {
- return m & S_IFMT == S_IFLNK;
-}
+ pub fn ISLNK(m: u32) bool {
+ return m & IFMT == IFLNK;
+ }
-pub fn S_ISSOCK(m: u32) bool {
- return m & S_IFMT == S_IFSOCK;
-}
+ pub fn ISSOCK(m: u32) bool {
+ return m & IFMT == IFSOCK;
+ }
-pub fn S_IWHT(m: u32) bool {
- return m & S_IFMT == S_IFWHT;
-}
+ pub fn IWHT(m: u32) bool {
+ return m & IFMT == IFWHT;
+ }
+};
pub const AT = struct {
/// Magic value that specify the use of the current working directory
lib/std/c/openbsd.zig
@@ -330,10 +330,12 @@ pub const STDIN_FILENO = 0;
pub const STDOUT_FILENO = 1;
pub const STDERR_FILENO = 2;
-pub const PROT_NONE = 0;
-pub const PROT_READ = 1;
-pub const PROT_WRITE = 2;
-pub const PROT_EXEC = 4;
+pub const PROT = struct {
+ pub const NONE = 0;
+ pub const READ = 1;
+ pub const WRITE = 2;
+ pub const EXEC = 4;
+};
pub const CLOCK = struct {
pub const REALTIME = 0;
@@ -371,102 +373,52 @@ pub const SA_NODEFER = 0x0010;
pub const SA_NOCLDWAIT = 0x0020;
pub const SA_SIGINFO = 0x0040;
-pub const SIGHUP = 1;
-pub const SIGINT = 2;
-pub const SIGQUIT = 3;
-pub const SIGILL = 4;
-pub const SIGTRAP = 5;
-pub const SIGABRT = 6;
-pub const SIGIOT = SIGABRT;
-pub const SIGEMT = 7;
-pub const SIGFPE = 8;
-pub const SIGKILL = 9;
-pub const SIGBUS = 10;
-pub const SIGSEGV = 11;
-pub const SIGSYS = 12;
-pub const SIGPIPE = 13;
-pub const SIGALRM = 14;
-pub const SIGTERM = 15;
-pub const SIGURG = 16;
-pub const SIGSTOP = 17;
-pub const SIGTSTP = 18;
-pub const SIGCONT = 19;
-pub const SIGCHLD = 20;
-pub const SIGTTIN = 21;
-pub const SIGTTOU = 22;
-pub const SIGIO = 23;
-pub const SIGXCPU = 24;
-pub const SIGXFSZ = 25;
-pub const SIGVTALRM = 26;
-pub const SIGPROF = 27;
-pub const SIGWINCH = 28;
-pub const SIGINFO = 29;
-pub const SIGUSR1 = 30;
-pub const SIGUSR2 = 31;
-pub const SIGPWR = 32;
-
// access function
pub const F_OK = 0; // test for existence of file
pub const X_OK = 1; // test for execute or search permission
pub const W_OK = 2; // test for write permission
pub const R_OK = 4; // test for read permission
-/// open for reading only
-pub const O_RDONLY = 0x00000000;
-
-/// open for writing only
-pub const O_WRONLY = 0x00000001;
-
-/// open for reading and writing
-pub const O_RDWR = 0x00000002;
-
-/// mask for above modes
-pub const O_ACCMODE = 0x00000003;
-
-/// no delay
-pub const O_NONBLOCK = 0x00000004;
-
-/// set append mode
-pub const O_APPEND = 0x00000008;
-
-/// open with shared file lock
-pub const O_SHLOCK = 0x00000010;
-
-/// open with exclusive file lock
-pub const O_EXLOCK = 0x00000020;
-
-/// signal pgrp when data ready
-pub const O_ASYNC = 0x00000040;
-
-/// synchronous writes
-pub const O_SYNC = 0x00000080;
-
-/// don't follow symlinks on the last
-pub const O_NOFOLLOW = 0x00000100;
-
-/// create if nonexistent
-pub const O_CREAT = 0x00000200;
-
-/// truncate to zero length
-pub const O_TRUNC = 0x00000400;
-
-/// error if already exists
-pub const O_EXCL = 0x00000800;
-
-/// don't assign controlling terminal
-pub const O_NOCTTY = 0x00008000;
-
-/// write: I/O data completion
-pub const O_DSYNC = O_SYNC;
-
-/// read: I/O completion as for write
-pub const O_RSYNC = O_SYNC;
-
-/// fail if not a directory
-pub const O_DIRECTORY = 0x20000;
-
-/// set close on exec
-pub const O_CLOEXEC = 0x10000;
+pub const O = struct {
+ /// open for reading only
+ pub const RDONLY = 0x00000000;
+ /// open for writing only
+ pub const WRONLY = 0x00000001;
+ /// open for reading and writing
+ pub const RDWR = 0x00000002;
+ /// mask for above modes
+ pub const ACCMODE = 0x00000003;
+ /// no delay
+ pub const NONBLOCK = 0x00000004;
+ /// set append mode
+ pub const APPEND = 0x00000008;
+ /// open with shared file lock
+ pub const SHLOCK = 0x00000010;
+ /// open with exclusive file lock
+ pub const EXLOCK = 0x00000020;
+ /// signal pgrp when data ready
+ pub const ASYNC = 0x00000040;
+ /// synchronous writes
+ pub const SYNC = 0x00000080;
+ /// don't follow symlinks on the last
+ pub const NOFOLLOW = 0x00000100;
+ /// create if nonexistent
+ pub const CREAT = 0x00000200;
+ /// truncate to zero length
+ pub const TRUNC = 0x00000400;
+ /// error if already exists
+ pub const EXCL = 0x00000800;
+ /// don't assign controlling terminal
+ pub const NOCTTY = 0x00008000;
+ /// write: I/O data completion
+ pub const DSYNC = SYNC;
+ /// read: I/O completion as for write
+ pub const RSYNC = SYNC;
+ /// fail if not a directory
+ pub const DIRECTORY = 0x20000;
+ /// set close on exec
+ pub const CLOEXEC = 0x10000;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -500,10 +452,6 @@ pub const SEEK_SET = 0;
pub const SEEK_CUR = 1;
pub const SEEK_END = 2;
-pub const SIG_BLOCK = 1;
-pub const SIG_UNBLOCK = 2;
-pub const SIG_SETMASK = 3;
-
pub const SOCK = struct {
pub const STREAM = 1;
pub const DGRAM = 2;
@@ -643,80 +591,82 @@ pub const NOTE_CHILD = 0x00000004;
// data/hint flags for EVFILT_DEVICE
pub const NOTE_CHANGE = 0x00000001;
-pub const TIOCCBRK = 0x2000747a;
-pub const TIOCCDTR = 0x20007478;
-pub const TIOCCONS = 0x80047462;
-pub const TIOCDCDTIMESTAMP = 0x40107458;
-pub const TIOCDRAIN = 0x2000745e;
-pub const TIOCEXCL = 0x2000740d;
-pub const TIOCEXT = 0x80047460;
-pub const TIOCFLAG_CDTRCTS = 0x10;
-pub const TIOCFLAG_CLOCAL = 0x2;
-pub const TIOCFLAG_CRTSCTS = 0x4;
-pub const TIOCFLAG_MDMBUF = 0x8;
-pub const TIOCFLAG_SOFTCAR = 0x1;
-pub const TIOCFLUSH = 0x80047410;
-pub const TIOCGETA = 0x402c7413;
-pub const TIOCGETD = 0x4004741a;
-pub const TIOCGFLAGS = 0x4004745d;
-pub const TIOCGLINED = 0x40207442;
-pub const TIOCGPGRP = 0x40047477;
-pub const TIOCGQSIZE = 0x40047481;
-pub const TIOCGRANTPT = 0x20007447;
-pub const TIOCGSID = 0x40047463;
-pub const TIOCGSIZE = 0x40087468;
-pub const TIOCGWINSZ = 0x40087468;
-pub const TIOCMBIC = 0x8004746b;
-pub const TIOCMBIS = 0x8004746c;
-pub const TIOCMGET = 0x4004746a;
-pub const TIOCMSET = 0x8004746d;
-pub const TIOCM_CAR = 0x40;
-pub const TIOCM_CD = 0x40;
-pub const TIOCM_CTS = 0x20;
-pub const TIOCM_DSR = 0x100;
-pub const TIOCM_DTR = 0x2;
-pub const TIOCM_LE = 0x1;
-pub const TIOCM_RI = 0x80;
-pub const TIOCM_RNG = 0x80;
-pub const TIOCM_RTS = 0x4;
-pub const TIOCM_SR = 0x10;
-pub const TIOCM_ST = 0x8;
-pub const TIOCNOTTY = 0x20007471;
-pub const TIOCNXCL = 0x2000740e;
-pub const TIOCOUTQ = 0x40047473;
-pub const TIOCPKT = 0x80047470;
-pub const TIOCPKT_DATA = 0x0;
-pub const TIOCPKT_DOSTOP = 0x20;
-pub const TIOCPKT_FLUSHREAD = 0x1;
-pub const TIOCPKT_FLUSHWRITE = 0x2;
-pub const TIOCPKT_IOCTL = 0x40;
-pub const TIOCPKT_NOSTOP = 0x10;
-pub const TIOCPKT_START = 0x8;
-pub const TIOCPKT_STOP = 0x4;
-pub const TIOCPTMGET = 0x40287446;
-pub const TIOCPTSNAME = 0x40287448;
-pub const TIOCRCVFRAME = 0x80087445;
-pub const TIOCREMOTE = 0x80047469;
-pub const TIOCSBRK = 0x2000747b;
-pub const TIOCSCTTY = 0x20007461;
-pub const TIOCSDTR = 0x20007479;
-pub const TIOCSETA = 0x802c7414;
-pub const TIOCSETAF = 0x802c7416;
-pub const TIOCSETAW = 0x802c7415;
-pub const TIOCSETD = 0x8004741b;
-pub const TIOCSFLAGS = 0x8004745c;
-pub const TIOCSIG = 0x2000745f;
-pub const TIOCSLINED = 0x80207443;
-pub const TIOCSPGRP = 0x80047476;
-pub const TIOCSQSIZE = 0x80047480;
-pub const TIOCSSIZE = 0x80087467;
-pub const TIOCSTART = 0x2000746e;
-pub const TIOCSTAT = 0x80047465;
-pub const TIOCSTI = 0x80017472;
-pub const TIOCSTOP = 0x2000746f;
-pub const TIOCSWINSZ = 0x80087467;
-pub const TIOCUCNTL = 0x80047466;
-pub const TIOCXMTFRAME = 0x80087444;
+pub const T = struct {
+ pub const IOCCBRK = 0x2000747a;
+ pub const IOCCDTR = 0x20007478;
+ pub const IOCCONS = 0x80047462;
+ pub const IOCDCDTIMESTAMP = 0x40107458;
+ pub const IOCDRAIN = 0x2000745e;
+ pub const IOCEXCL = 0x2000740d;
+ pub const IOCEXT = 0x80047460;
+ pub const IOCFLAG_CDTRCTS = 0x10;
+ pub const IOCFLAG_CLOCAL = 0x2;
+ pub const IOCFLAG_CRTSCTS = 0x4;
+ pub const IOCFLAG_MDMBUF = 0x8;
+ pub const IOCFLAG_SOFTCAR = 0x1;
+ pub const IOCFLUSH = 0x80047410;
+ pub const IOCGETA = 0x402c7413;
+ pub const IOCGETD = 0x4004741a;
+ pub const IOCGFLAGS = 0x4004745d;
+ pub const IOCGLINED = 0x40207442;
+ pub const IOCGPGRP = 0x40047477;
+ pub const IOCGQSIZE = 0x40047481;
+ pub const IOCGRANTPT = 0x20007447;
+ pub const IOCGSID = 0x40047463;
+ pub const IOCGSIZE = 0x40087468;
+ pub const IOCGWINSZ = 0x40087468;
+ pub const IOCMBIC = 0x8004746b;
+ pub const IOCMBIS = 0x8004746c;
+ pub const IOCMGET = 0x4004746a;
+ pub const IOCMSET = 0x8004746d;
+ pub const IOCM_CAR = 0x40;
+ pub const IOCM_CD = 0x40;
+ pub const IOCM_CTS = 0x20;
+ pub const IOCM_DSR = 0x100;
+ pub const IOCM_DTR = 0x2;
+ pub const IOCM_LE = 0x1;
+ pub const IOCM_RI = 0x80;
+ pub const IOCM_RNG = 0x80;
+ pub const IOCM_RTS = 0x4;
+ pub const IOCM_SR = 0x10;
+ pub const IOCM_ST = 0x8;
+ pub const IOCNOTTY = 0x20007471;
+ pub const IOCNXCL = 0x2000740e;
+ pub const IOCOUTQ = 0x40047473;
+ pub const IOCPKT = 0x80047470;
+ pub const IOCPKT_DATA = 0x0;
+ pub const IOCPKT_DOSTOP = 0x20;
+ pub const IOCPKT_FLUSHREAD = 0x1;
+ pub const IOCPKT_FLUSHWRITE = 0x2;
+ pub const IOCPKT_IOCTL = 0x40;
+ pub const IOCPKT_NOSTOP = 0x10;
+ pub const IOCPKT_START = 0x8;
+ pub const IOCPKT_STOP = 0x4;
+ pub const IOCPTMGET = 0x40287446;
+ pub const IOCPTSNAME = 0x40287448;
+ pub const IOCRCVFRAME = 0x80087445;
+ pub const IOCREMOTE = 0x80047469;
+ pub const IOCSBRK = 0x2000747b;
+ pub const IOCSCTTY = 0x20007461;
+ pub const IOCSDTR = 0x20007479;
+ pub const IOCSETA = 0x802c7414;
+ pub const IOCSETAF = 0x802c7416;
+ pub const IOCSETAW = 0x802c7415;
+ pub const IOCSETD = 0x8004741b;
+ pub const IOCSFLAGS = 0x8004745c;
+ pub const IOCSIG = 0x2000745f;
+ pub const IOCSLINED = 0x80207443;
+ pub const IOCSPGRP = 0x80047476;
+ pub const IOCSQSIZE = 0x80047480;
+ pub const IOCSSIZE = 0x80087467;
+ pub const IOCSTART = 0x2000746e;
+ pub const IOCSTAT = 0x80047465;
+ pub const IOCSTI = 0x80017472;
+ pub const IOCSTOP = 0x2000746f;
+ pub const IOCSWINSZ = 0x80087467;
+ pub const IOCUCNTL = 0x80047466;
+ pub const IOCXMTFRAME = 0x80087444;
+};
pub fn WEXITSTATUS(s: u32) u8 {
return @intCast(u8, (s >> 8) & 0xff);
@@ -752,11 +702,51 @@ pub const winsize = extern struct {
const NSIG = 33;
-pub const SIG_DFL = @intToPtr(?Sigaction.sigaction_fn, 0);
-pub const SIG_IGN = @intToPtr(?Sigaction.sigaction_fn, 1);
-pub const SIG_ERR = @intToPtr(?Sigaction.sigaction_fn, maxInt(usize));
-pub const SIG_CATCH = @intToPtr(?Sigaction.sigaction_fn, 2);
-pub const SIG_HOLD = @intToPtr(?Sigaction.sigaction_fn, 3);
+pub const SIG = struct {
+ pub const DFL = @intToPtr(?Sigaction.sigaction_fn, 0);
+ pub const IGN = @intToPtr(?Sigaction.sigaction_fn, 1);
+ pub const ERR = @intToPtr(?Sigaction.sigaction_fn, maxInt(usize));
+ pub const CATCH = @intToPtr(?Sigaction.sigaction_fn, 2);
+ pub const HOLD = @intToPtr(?Sigaction.sigaction_fn, 3);
+
+ pub const HUP = 1;
+ pub const INT = 2;
+ pub const QUIT = 3;
+ pub const ILL = 4;
+ pub const TRAP = 5;
+ pub const ABRT = 6;
+ pub const IOT = ABRT;
+ pub const EMT = 7;
+ pub const FPE = 8;
+ pub const KILL = 9;
+ pub const BUS = 10;
+ pub const SEGV = 11;
+ pub const SYS = 12;
+ pub const PIPE = 13;
+ pub const ALRM = 14;
+ pub const TERM = 15;
+ pub const URG = 16;
+ pub const STOP = 17;
+ pub const TSTP = 18;
+ pub const CONT = 19;
+ pub const CHLD = 20;
+ pub const TTIN = 21;
+ pub const TTOU = 22;
+ pub const IO = 23;
+ pub const XCPU = 24;
+ pub const XFSZ = 25;
+ pub const VTALRM = 26;
+ pub const PROF = 27;
+ pub const WINCH = 28;
+ pub const INFO = 29;
+ pub const USR1 = 30;
+ pub const USR2 = 31;
+ pub const PWR = 32;
+
+ pub const BLOCK = 1;
+ pub const UNBLOCK = 2;
+ pub const SETMASK = 3;
+};
/// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
pub const Sigaction = extern struct {
@@ -1013,59 +1003,61 @@ pub const stack_t = extern struct {
ss_flags: c_int,
};
-pub const S_IFMT = 0o170000;
-
-pub const S_IFIFO = 0o010000;
-pub const S_IFCHR = 0o020000;
-pub const S_IFDIR = 0o040000;
-pub const S_IFBLK = 0o060000;
-pub const S_IFREG = 0o100000;
-pub const S_IFLNK = 0o120000;
-pub const S_IFSOCK = 0o140000;
-
-pub const S_ISUID = 0o4000;
-pub const S_ISGID = 0o2000;
-pub const S_ISVTX = 0o1000;
-pub const S_IRWXU = 0o700;
-pub const S_IRUSR = 0o400;
-pub const S_IWUSR = 0o200;
-pub const S_IXUSR = 0o100;
-pub const S_IRWXG = 0o070;
-pub const S_IRGRP = 0o040;
-pub const S_IWGRP = 0o020;
-pub const S_IXGRP = 0o010;
-pub const S_IRWXO = 0o007;
-pub const S_IROTH = 0o004;
-pub const S_IWOTH = 0o002;
-pub const S_IXOTH = 0o001;
-
-pub fn S_ISFIFO(m: u32) bool {
- return m & S_IFMT == S_IFIFO;
-}
+pub const S = struct {
+ pub const IFMT = 0o170000;
+
+ pub const IFIFO = 0o010000;
+ pub const IFCHR = 0o020000;
+ pub const IFDIR = 0o040000;
+ pub const IFBLK = 0o060000;
+ pub const IFREG = 0o100000;
+ pub const IFLNK = 0o120000;
+ pub const IFSOCK = 0o140000;
+
+ pub const ISUID = 0o4000;
+ pub const ISGID = 0o2000;
+ pub const ISVTX = 0o1000;
+ pub const IRWXU = 0o700;
+ pub const IRUSR = 0o400;
+ pub const IWUSR = 0o200;
+ pub const IXUSR = 0o100;
+ pub const IRWXG = 0o070;
+ pub const IRGRP = 0o040;
+ pub const IWGRP = 0o020;
+ pub const IXGRP = 0o010;
+ pub const IRWXO = 0o007;
+ pub const IROTH = 0o004;
+ pub const IWOTH = 0o002;
+ pub const IXOTH = 0o001;
+
+ pub fn ISFIFO(m: u32) bool {
+ return m & IFMT == IFIFO;
+ }
-pub fn S_ISCHR(m: u32) bool {
- return m & S_IFMT == S_IFCHR;
-}
+ pub fn ISCHR(m: u32) bool {
+ return m & IFMT == IFCHR;
+ }
-pub fn S_ISDIR(m: u32) bool {
- return m & S_IFMT == S_IFDIR;
-}
+ pub fn ISDIR(m: u32) bool {
+ return m & IFMT == IFDIR;
+ }
-pub fn S_ISBLK(m: u32) bool {
- return m & S_IFMT == S_IFBLK;
-}
+ pub fn ISBLK(m: u32) bool {
+ return m & IFMT == IFBLK;
+ }
-pub fn S_ISREG(m: u32) bool {
- return m & S_IFMT == S_IFREG;
-}
+ pub fn ISREG(m: u32) bool {
+ return m & IFMT == IFREG;
+ }
-pub fn S_ISLNK(m: u32) bool {
- return m & S_IFMT == S_IFLNK;
-}
+ pub fn ISLNK(m: u32) bool {
+ return m & IFMT == IFLNK;
+ }
-pub fn S_ISSOCK(m: u32) bool {
- return m & S_IFMT == S_IFSOCK;
-}
+ pub fn ISSOCK(m: u32) bool {
+ return m & IFMT == IFSOCK;
+ }
+};
pub const AT = struct {
/// Magic value that specify the use of the current working directory
lib/std/c/wasi.zig
@@ -17,6 +17,11 @@ pub const ino_t = wasi.ino_t;
pub const mode_t = wasi.mode_t;
pub const time_t = wasi.time_t;
pub const timespec = wasi.timespec;
+pub const STDERR_FILENO = wasi.STDERR_FILENO;
+pub const STDIN_FILENO = wasi.STDIN_FILENO;
+pub const STDOUT_FILENO = wasi.STDOUT_FILENO;
+pub const E = wasi.E;
+pub const CLOCK = wasi.CLOCK;
pub const Stat = extern struct {
dev: i32,
lib/std/event/loop.zig
@@ -904,7 +904,7 @@ pub const Loop = struct {
addr_size: *os.socklen_t,
/// The following values can be bitwise ORed in flags to obtain different behavior:
/// * `SOCK.CLOEXEC` - Set the close-on-exec (`FD_CLOEXEC`) flag on the new file descriptor. See the
- /// description of the `O_CLOEXEC` flag in `open` for reasons why this may be useful.
+ /// description of the `O.CLOEXEC` flag in `open` for reasons why this may be useful.
flags: u32,
) os.AcceptError!os.socket_t {
while (true) {
lib/std/fs/file.zig
@@ -106,7 +106,7 @@ pub const File = struct {
/// and `false` means `error.WouldBlock` is handled by the event loop.
lock_nonblocking: bool = false,
- /// Setting this to `.blocking` prevents `O_NONBLOCK` from being passed even
+ /// Setting this to `.blocking` prevents `O.NONBLOCK` from being passed even
/// if `std.io.is_async`. It allows the use of `nosuspend` when calling functions
/// related to opening the file, reading, writing, and locking.
intended_io_mode: io.ModeOverride = io.default_mode,
@@ -167,7 +167,7 @@ pub const File = struct {
/// be created with.
mode: Mode = default_mode,
- /// Setting this to `.blocking` prevents `O_NONBLOCK` from being passed even
+ /// Setting this to `.blocking` prevents `O.NONBLOCK` from being passed even
/// if `std.io.is_async`. It allows the use of `nosuspend` when calling functions
/// related to opening the file, reading, writing, and locking.
intended_io_mode: io.ModeOverride = io.default_mode,
@@ -325,12 +325,12 @@ pub const File = struct {
.size = @bitCast(u64, st.size),
.mode = st.mode,
.kind = if (builtin.os.tag == .wasi and !builtin.link_libc) switch (st.filetype) {
- os.FILETYPE_BLOCK_DEVICE => Kind.BlockDevice,
- os.FILETYPE_CHARACTER_DEVICE => Kind.CharacterDevice,
- os.FILETYPE_DIRECTORY => Kind.Directory,
- os.FILETYPE_SYMBOLIC_LINK => Kind.SymLink,
- os.FILETYPE_REGULAR_FILE => Kind.File,
- os.FILETYPE_SOCKET_STREAM, os.FILETYPE_SOCKET_DGRAM => Kind.UnixDomainSocket,
+ .BLOCK_DEVICE => Kind.BlockDevice,
+ .CHARACTER_DEVICE => Kind.CharacterDevice,
+ .DIRECTORY => Kind.Directory,
+ .SYMBOLIC_LINK => Kind.SymLink,
+ .REGULAR_FILE => Kind.File,
+ .SOCKET_STREAM, .SOCKET_DGRAM => Kind.UnixDomainSocket,
else => Kind.Unknown,
} else switch (st.mode & os.S.IFMT) {
os.S.IFBLK => Kind.BlockDevice,
lib/std/fs/watch.zig
@@ -250,7 +250,7 @@ pub fn Watch(comptime V: type) type {
};
// @TODO Can I close this fd and get an error from bsdWaitKev?
- const flags = if (comptime std.Target.current.isDarwin()) os.O_SYMLINK | os.O_EVTONLY else 0;
+ const flags = if (comptime std.Target.current.isDarwin()) os.O.SYMLINK | os.O.EVTONLY else 0;
const fd = try os.open(realpath, flags, 0);
gop.value_ptr.putter_frame = async self.kqPutEvents(fd, gop.key_ptr.*, gop.value_ptr.*);
return null;
lib/std/os/linux/arm-eabi.zig
@@ -532,26 +532,28 @@ pub const SYS = enum(usize) {
pub const MMAP2_UNIT = 4096;
-pub const O_CREAT = 0o100;
-pub const O_EXCL = 0o200;
-pub const O_NOCTTY = 0o400;
-pub const O_TRUNC = 0o1000;
-pub const O_APPEND = 0o2000;
-pub const O_NONBLOCK = 0o4000;
-pub const O_DSYNC = 0o10000;
-pub const O_SYNC = 0o4010000;
-pub const O_RSYNC = 0o4010000;
-pub const O_DIRECTORY = 0o40000;
-pub const O_NOFOLLOW = 0o100000;
-pub const O_CLOEXEC = 0o2000000;
-
-pub const O_ASYNC = 0o20000;
-pub const O_DIRECT = 0o200000;
-pub const O_LARGEFILE = 0o400000;
-pub const O_NOATIME = 0o1000000;
-pub const O_PATH = 0o10000000;
-pub const O_TMPFILE = 0o20040000;
-pub const O_NDELAY = O_NONBLOCK;
+pub const O = struct {
+ pub const CREAT = 0o100;
+ pub const EXCL = 0o200;
+ pub const NOCTTY = 0o400;
+ pub const TRUNC = 0o1000;
+ pub const APPEND = 0o2000;
+ pub const NONBLOCK = 0o4000;
+ pub const DSYNC = 0o10000;
+ pub const SYNC = 0o4010000;
+ pub const RSYNC = 0o4010000;
+ pub const DIRECTORY = 0o40000;
+ pub const NOFOLLOW = 0o100000;
+ pub const CLOEXEC = 0o2000000;
+
+ pub const ASYNC = 0o20000;
+ pub const DIRECT = 0o200000;
+ pub const LARGEFILE = 0o400000;
+ pub const NOATIME = 0o1000000;
+ pub const PATH = 0o10000000;
+ pub const TMPFILE = 0o20040000;
+ pub const NDELAY = NONBLOCK;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -597,35 +599,38 @@ pub const MAP = struct {
pub const LOCKED = 0x2000;
/// don't check for reservations
pub const NORESERVE = 0x4000;
- /// Only used by libc to communicate failure.
- pub const FAILED = @intToPtr(*c_void, maxInt(usize));
};
-pub const VDSO_CGT_SYM = "__vdso_clock_gettime";
-pub const VDSO_CGT_VER = "LINUX_2.6";
-
-pub const HWCAP_SWP = 1 << 0;
-pub const HWCAP_HALF = 1 << 1;
-pub const HWCAP_THUMB = 1 << 2;
-pub const HWCAP_26BIT = 1 << 3;
-pub const HWCAP_FAST_MULT = 1 << 4;
-pub const HWCAP_FPA = 1 << 5;
-pub const HWCAP_VFP = 1 << 6;
-pub const HWCAP_EDSP = 1 << 7;
-pub const HWCAP_JAVA = 1 << 8;
-pub const HWCAP_IWMMXT = 1 << 9;
-pub const HWCAP_CRUNCH = 1 << 10;
-pub const HWCAP_THUMBEE = 1 << 11;
-pub const HWCAP_NEON = 1 << 12;
-pub const HWCAP_VFPv3 = 1 << 13;
-pub const HWCAP_VFPv3D16 = 1 << 14;
-pub const HWCAP_TLS = 1 << 15;
-pub const HWCAP_VFPv4 = 1 << 16;
-pub const HWCAP_IDIVA = 1 << 17;
-pub const HWCAP_IDIVT = 1 << 18;
-pub const HWCAP_VFPD32 = 1 << 19;
-pub const HWCAP_IDIV = HWCAP_IDIVA | HWCAP_IDIVT;
-pub const HWCAP_LPAE = 1 << 20;
-pub const HWCAP_EVTSTRM = 1 << 21;
+
+pub const VDSO = struct {
+ pub const CGT_SYM = "__vdso_clock_gettime";
+ pub const CGT_VER = "LINUX_2.6";
+};
+
+pub const HWCAP = struct {
+ pub const SWP = 1 << 0;
+ pub const HALF = 1 << 1;
+ pub const THUMB = 1 << 2;
+ pub const @"26BIT" = 1 << 3;
+ pub const FAST_MULT = 1 << 4;
+ pub const FPA = 1 << 5;
+ pub const VFP = 1 << 6;
+ pub const EDSP = 1 << 7;
+ pub const JAVA = 1 << 8;
+ pub const IWMMXT = 1 << 9;
+ pub const CRUNCH = 1 << 10;
+ pub const THUMBEE = 1 << 11;
+ pub const NEON = 1 << 12;
+ pub const VFPv3 = 1 << 13;
+ pub const VFPv3D16 = 1 << 14;
+ pub const TLS = 1 << 15;
+ pub const VFPv4 = 1 << 16;
+ pub const IDIVA = 1 << 17;
+ pub const IDIVT = 1 << 18;
+ pub const VFPD32 = 1 << 19;
+ pub const IDIV = IDIVA | IDIVT;
+ pub const LPAE = 1 << 20;
+ pub const EVTSTRM = 1 << 21;
+};
pub const Flock = extern struct {
l_type: i16,
lib/std/os/linux/arm64.zig
@@ -410,26 +410,28 @@ pub const SYS = enum(usize) {
_,
};
-pub const O_CREAT = 0o100;
-pub const O_EXCL = 0o200;
-pub const O_NOCTTY = 0o400;
-pub const O_TRUNC = 0o1000;
-pub const O_APPEND = 0o2000;
-pub const O_NONBLOCK = 0o4000;
-pub const O_DSYNC = 0o10000;
-pub const O_SYNC = 0o4010000;
-pub const O_RSYNC = 0o4010000;
-pub const O_DIRECTORY = 0o40000;
-pub const O_NOFOLLOW = 0o100000;
-pub const O_CLOEXEC = 0o2000000;
-
-pub const O_ASYNC = 0o20000;
-pub const O_DIRECT = 0o200000;
-pub const O_LARGEFILE = 0o400000;
-pub const O_NOATIME = 0o1000000;
-pub const O_PATH = 0o10000000;
-pub const O_TMPFILE = 0o20040000;
-pub const O_NDELAY = O_NONBLOCK;
+pub const O = struct {
+ pub const CREAT = 0o100;
+ pub const EXCL = 0o200;
+ pub const NOCTTY = 0o400;
+ pub const TRUNC = 0o1000;
+ pub const APPEND = 0o2000;
+ pub const NONBLOCK = 0o4000;
+ pub const DSYNC = 0o10000;
+ pub const SYNC = 0o4010000;
+ pub const RSYNC = 0o4010000;
+ pub const DIRECTORY = 0o40000;
+ pub const NOFOLLOW = 0o100000;
+ pub const CLOEXEC = 0o2000000;
+
+ pub const ASYNC = 0o20000;
+ pub const DIRECT = 0o200000;
+ pub const LARGEFILE = 0o400000;
+ pub const NOATIME = 0o1000000;
+ pub const PATH = 0o10000000;
+ pub const TMPFILE = 0o20040000;
+ pub const NDELAY = NONBLOCK;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -475,11 +477,12 @@ pub const MAP = struct {
pub const LOCKED = 0x2000;
/// don't check for reservations
pub const NORESERVE = 0x4000;
- /// Only used by libc to communicate failure.
- pub const FAILED = @intToPtr(*c_void, maxInt(usize));
};
-pub const VDSO_CGT_SYM = "__kernel_clock_gettime";
-pub const VDSO_CGT_VER = "LINUX_2.6.39";
+
+pub const VDSO = struct {
+ pub const CGT_SYM = "__kernel_clock_gettime";
+ pub const CGT_VER = "LINUX_2.6.39";
+};
pub const Flock = extern struct {
l_type: i16,
lib/std/os/linux/i386.zig
@@ -572,10 +572,6 @@ pub const SYS = enum(usize) {
};
pub const O = struct {
- pub const RDONLY = 0o0;
- pub const WRONLY = 0o1;
- pub const RDWR = 0o2;
-
pub const CREAT = 0o100;
pub const EXCL = 0o200;
pub const NOCTTY = 0o400;
@@ -628,42 +624,12 @@ pub const LOCK = struct {
};
pub const MAP = struct {
- /// Share changes
- pub const SHARED = 0x01;
- /// Changes are private
- pub const PRIVATE = 0x02;
- /// share + validate extension flags
- pub const SHARED_VALIDATE = 0x03;
- /// Mask for type of mapping
- pub const TYPE = 0x0f;
- /// Interpret addr exactly
- pub const FIXED = 0x10;
- /// don't use a file
- pub const ANONYMOUS = 0x20;
- /// populate (prefault) pagetables
- pub const POPULATE = 0x8000;
- /// do not block on IO
- pub const NONBLOCK = 0x10000;
- /// give out an address that is best suited for process/thread stacks
- pub const STACK = 0x20000;
- /// create a huge page mapping
- pub const HUGETLB = 0x40000;
- /// perform synchronous page faults for the mapping
- pub const SYNC = 0x80000;
- /// FIXED which doesn't unmap underlying mapping
- pub const FIXED_NOREPLACE = 0x100000;
- /// For anonymous mmap, memory could be uninitialized
- pub const UNINITIALIZED = 0x4000000;
-
pub const NORESERVE = 0x4000;
pub const GROWSDOWN = 0x0100;
pub const DENYWRITE = 0x0800;
pub const EXECUTABLE = 0x1000;
pub const LOCKED = 0x2000;
pub const @"32BIT" = 0x40;
-
- /// Only used by libc to communicate failure.
- pub const FAILED = @intToPtr(*c_void, maxInt(usize));
};
pub const MMAP2_UNIT = 4096;
lib/std/os/linux/io_uring.zig
@@ -539,7 +539,7 @@ pub const IO_Uring = struct {
pub fn timeout(
self: *IO_Uring,
user_data: u64,
- ts: *const os.__kernel_timespec,
+ ts: *const os.linux.timespec,
count: u32,
flags: u32,
) !*io_uring_sqe {
@@ -979,7 +979,7 @@ pub fn io_uring_prep_close(sqe: *io_uring_sqe, fd: os.fd_t) void {
pub fn io_uring_prep_timeout(
sqe: *io_uring_sqe,
- ts: *const os.__kernel_timespec,
+ ts: *const os.linux.timespec,
count: u32,
flags: u32,
) void {
@@ -1136,7 +1136,7 @@ test "readv" {
};
defer ring.deinit();
- const fd = try os.openZ("/dev/zero", os.O_RDONLY | os.O_CLOEXEC, 0);
+ const fd = try os.openZ("/dev/zero", os.O.RDONLY | os.O.CLOEXEC, 0);
defer os.close(fd);
// Linux Kernel 5.4 supports IORING_REGISTER_FILES but not sparse fd sets (i.e. an fd of -1).
@@ -1295,7 +1295,7 @@ test "openat" {
const path = "test_io_uring_openat";
defer std.fs.cwd().deleteFile(path) catch {};
- const flags: u32 = os.O_CLOEXEC | os.O_RDWR | os.O_CREAT;
+ const flags: u32 = os.O.CLOEXEC | os.O.RDWR | os.O.CREAT;
const mode: os.mode_t = 0o666;
const sqe_openat = try ring.openat(0x33333333, linux.AT.FDCWD, path, flags, mode);
try testing.expectEqual(io_uring_sqe{
@@ -1450,7 +1450,7 @@ test "timeout (after a relative time)" {
const ms = 10;
const margin = 5;
- const ts = os.__kernel_timespec{ .tv_sec = 0, .tv_nsec = ms * 1000000 };
+ const ts = os.linux.timespec{ .tv_sec = 0, .tv_nsec = ms * 1000000 };
const started = std.time.milliTimestamp();
const sqe = try ring.timeout(0x55555555, &ts, 0, 0);
@@ -1479,7 +1479,7 @@ test "timeout (after a number of completions)" {
};
defer ring.deinit();
- const ts = os.__kernel_timespec{ .tv_sec = 3, .tv_nsec = 0 };
+ const ts = os.linux.timespec{ .tv_sec = 3, .tv_nsec = 0 };
const count_completions: u64 = 1;
const sqe_timeout = try ring.timeout(0x66666666, &ts, count_completions, 0);
try testing.expectEqual(linux.IORING_OP.TIMEOUT, sqe_timeout.opcode);
@@ -1512,7 +1512,7 @@ test "timeout_remove" {
};
defer ring.deinit();
- const ts = os.__kernel_timespec{ .tv_sec = 3, .tv_nsec = 0 };
+ const ts = os.linux.timespec{ .tv_sec = 3, .tv_nsec = 0 };
const sqe_timeout = try ring.timeout(0x88888888, &ts, 0, 0);
try testing.expectEqual(linux.IORING_OP.TIMEOUT, sqe_timeout.opcode);
try testing.expectEqual(@as(u64, 0x88888888), sqe_timeout.user_data);
lib/std/os/linux/mips.zig
@@ -629,26 +629,28 @@ pub const SYS = enum(usize) {
_,
};
-pub const O_CREAT = 0o0400;
-pub const O_EXCL = 0o02000;
-pub const O_NOCTTY = 0o04000;
-pub const O_TRUNC = 0o01000;
-pub const O_APPEND = 0o0010;
-pub const O_NONBLOCK = 0o0200;
-pub const O_DSYNC = 0o0020;
-pub const O_SYNC = 0o040020;
-pub const O_RSYNC = 0o040020;
-pub const O_DIRECTORY = 0o0200000;
-pub const O_NOFOLLOW = 0o0400000;
-pub const O_CLOEXEC = 0o02000000;
-
-pub const O_ASYNC = 0o010000;
-pub const O_DIRECT = 0o0100000;
-pub const O_LARGEFILE = 0o020000;
-pub const O_NOATIME = 0o01000000;
-pub const O_PATH = 0o010000000;
-pub const O_TMPFILE = 0o020200000;
-pub const O_NDELAY = O_NONBLOCK;
+pub const O = struct {
+ pub const CREAT = 0o0400;
+ pub const EXCL = 0o02000;
+ pub const NOCTTY = 0o04000;
+ pub const TRUNC = 0o01000;
+ pub const APPEND = 0o0010;
+ pub const NONBLOCK = 0o0200;
+ pub const DSYNC = 0o0020;
+ pub const SYNC = 0o040020;
+ pub const RSYNC = 0o040020;
+ pub const DIRECTORY = 0o0200000;
+ pub const NOFOLLOW = 0o0400000;
+ pub const CLOEXEC = 0o02000000;
+
+ pub const ASYNC = 0o010000;
+ pub const DIRECT = 0o0100000;
+ pub const LARGEFILE = 0o020000;
+ pub const NOATIME = 0o01000000;
+ pub const PATH = 0o010000000;
+ pub const TMPFILE = 0o020200000;
+ pub const NDELAY = NONBLOCK;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -692,8 +694,6 @@ pub const MAP = struct {
pub const EXECUTABLE = 0x4000;
pub const LOCKED = 0x8000;
pub const @"32BIT" = 0x40;
- /// Only used by libc to communicate failure.
- pub const FAILED = @intToPtr(*c_void, maxInt(usize));
};
pub const SO = struct {
@@ -726,8 +726,10 @@ pub const SO = struct {
pub const RCVBUFFORCE = 33;
};
-pub const VDSO_CGT_SYM = "__kernel_clock_gettime";
-pub const VDSO_CGT_VER = "LINUX_2.6.39";
+pub const VDSO = struct {
+ pub const CGT_SYM = "__kernel_clock_gettime";
+ pub const CGT_VER = "LINUX_2.6.39";
+};
pub const Flock = extern struct {
l_type: i16,
lib/std/os/linux/powerpc.zig
@@ -562,26 +562,28 @@ pub const SYS = enum(usize) {
process_madvise = 440,
};
-pub const O_CREAT = 0o100;
-pub const O_EXCL = 0o200;
-pub const O_NOCTTY = 0o400;
-pub const O_TRUNC = 0o1000;
-pub const O_APPEND = 0o2000;
-pub const O_NONBLOCK = 0o4000;
-pub const O_DSYNC = 0o10000;
-pub const O_SYNC = 0o4010000;
-pub const O_RSYNC = 0o4010000;
-pub const O_DIRECTORY = 0o40000;
-pub const O_NOFOLLOW = 0o100000;
-pub const O_CLOEXEC = 0o2000000;
-
-pub const O_ASYNC = 0o20000;
-pub const O_DIRECT = 0o400000;
-pub const O_LARGEFILE = 0o200000;
-pub const O_NOATIME = 0o1000000;
-pub const O_PATH = 0o10000000;
-pub const O_TMPFILE = 0o20040000;
-pub const O_NDELAY = O_NONBLOCK;
+pub const O = struct {
+ pub const CREAT = 0o100;
+ pub const EXCL = 0o200;
+ pub const NOCTTY = 0o400;
+ pub const TRUNC = 0o1000;
+ pub const APPEND = 0o2000;
+ pub const NONBLOCK = 0o4000;
+ pub const DSYNC = 0o10000;
+ pub const SYNC = 0o4010000;
+ pub const RSYNC = 0o4010000;
+ pub const DIRECTORY = 0o40000;
+ pub const NOFOLLOW = 0o100000;
+ pub const CLOEXEC = 0o2000000;
+
+ pub const ASYNC = 0o20000;
+ pub const DIRECT = 0o400000;
+ pub const LARGEFILE = 0o200000;
+ pub const NOATIME = 0o1000000;
+ pub const PATH = 0o10000000;
+ pub const TMPFILE = 0o20040000;
+ pub const NDELAY = NONBLOCK;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -627,11 +629,12 @@ pub const MAP = struct {
pub const LOCKED = 0x0080;
/// don't check for reservations
pub const NORESERVE = 0x0040;
- /// Only used by libc to communicate failure.
- pub const FAILED = @intToPtr(*c_void, maxInt(usize));
};
-pub const VDSO_CGT_SYM = "__kernel_clock_gettime";
-pub const VDSO_CGT_VER = "LINUX_2.6.15";
+
+pub const VDSO = struct {
+ pub const CGT_SYM = "__kernel_clock_gettime";
+ pub const CGT_VER = "LINUX_2.6.15";
+};
pub const Flock = extern struct {
l_type: i16,
lib/std/os/linux/powerpc64.zig
@@ -537,26 +537,28 @@ pub const SYS = enum(usize) {
_,
};
-pub const O_CREAT = 0o100;
-pub const O_EXCL = 0o200;
-pub const O_NOCTTY = 0o400;
-pub const O_TRUNC = 0o1000;
-pub const O_APPEND = 0o2000;
-pub const O_NONBLOCK = 0o4000;
-pub const O_DSYNC = 0o10000;
-pub const O_SYNC = 0o4010000;
-pub const O_RSYNC = 0o4010000;
-pub const O_DIRECTORY = 0o40000;
-pub const O_NOFOLLOW = 0o100000;
-pub const O_CLOEXEC = 0o2000000;
-
-pub const O_ASYNC = 0o20000;
-pub const O_DIRECT = 0o400000;
-pub const O_LARGEFILE = 0o200000;
-pub const O_NOATIME = 0o1000000;
-pub const O_PATH = 0o10000000;
-pub const O_TMPFILE = 0o20200000;
-pub const O_NDELAY = O_NONBLOCK;
+pub const O = struct {
+ pub const CREAT = 0o100;
+ pub const EXCL = 0o200;
+ pub const NOCTTY = 0o400;
+ pub const TRUNC = 0o1000;
+ pub const APPEND = 0o2000;
+ pub const NONBLOCK = 0o4000;
+ pub const DSYNC = 0o10000;
+ pub const SYNC = 0o4010000;
+ pub const RSYNC = 0o4010000;
+ pub const DIRECTORY = 0o40000;
+ pub const NOFOLLOW = 0o100000;
+ pub const CLOEXEC = 0o2000000;
+
+ pub const ASYNC = 0o20000;
+ pub const DIRECT = 0o400000;
+ pub const LARGEFILE = 0o200000;
+ pub const NOATIME = 0o1000000;
+ pub const PATH = 0o10000000;
+ pub const TMPFILE = 0o20200000;
+ pub const NDELAY = NONBLOCK;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -602,12 +604,12 @@ pub const MAP = struct {
pub const LOCKED = 0x0080;
/// don't check for reservations
pub const NORESERVE = 0x0040;
- /// Only used by libc to communicate failure.
- pub const FAILED = @intToPtr(*c_void, maxInt(usize));
};
-pub const VDSO_CGT_SYM = "__kernel_clock_gettime";
-pub const VDSO_CGT_VER = "LINUX_2.6.15";
+pub const VDSO = struct {
+ pub const CGT_SYM = "__kernel_clock_gettime";
+ pub const CGT_VER = "LINUX_2.6.15";
+};
pub const Flock = extern struct {
l_type: i16,
lib/std/os/linux/riscv64.zig
@@ -406,26 +406,28 @@ pub const SYS = enum(usize) {
_,
};
-pub const O_CREAT = 0o100;
-pub const O_EXCL = 0o200;
-pub const O_NOCTTY = 0o400;
-pub const O_TRUNC = 0o1000;
-pub const O_APPEND = 0o2000;
-pub const O_NONBLOCK = 0o4000;
-pub const O_DSYNC = 0o10000;
-pub const O_SYNC = 0o4010000;
-pub const O_RSYNC = 0o4010000;
-pub const O_DIRECTORY = 0o200000;
-pub const O_NOFOLLOW = 0o400000;
-pub const O_CLOEXEC = 0o2000000;
+pub const O = struct {
+ pub const CREAT = 0o100;
+ pub const EXCL = 0o200;
+ pub const NOCTTY = 0o400;
+ pub const TRUNC = 0o1000;
+ pub const APPEND = 0o2000;
+ pub const NONBLOCK = 0o4000;
+ pub const DSYNC = 0o10000;
+ pub const SYNC = 0o4010000;
+ pub const RSYNC = 0o4010000;
+ pub const DIRECTORY = 0o200000;
+ pub const NOFOLLOW = 0o400000;
+ pub const CLOEXEC = 0o2000000;
-pub const O_ASYNC = 0o20000;
-pub const O_DIRECT = 0o40000;
-pub const O_LARGEFILE = 0o100000;
-pub const O_NOATIME = 0o1000000;
-pub const O_PATH = 0o10000000;
-pub const O_TMPFILE = 0o20200000;
-pub const O_NDELAY = O_NONBLOCK;
+ pub const ASYNC = 0o20000;
+ pub const DIRECT = 0o40000;
+ pub const LARGEFILE = 0o100000;
+ pub const NOATIME = 0o1000000;
+ pub const PATH = 0o10000000;
+ pub const TMPFILE = 0o20200000;
+ pub const NDELAY = NONBLOCK;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -518,3 +520,6 @@ pub const Stat = extern struct {
};
pub const Elf_Symndx = u32;
+
+pub const VDSO = struct {};
+pub const MAP = struct {};
lib/std/os/linux/sparc64.zig
@@ -571,26 +571,28 @@ pub const SYS = enum(usize) {
_,
};
-pub const O_CREAT = 0x200;
-pub const O_EXCL = 0x800;
-pub const O_NOCTTY = 0x8000;
-pub const O_TRUNC = 0x400;
-pub const O_APPEND = 0x8;
-pub const O_NONBLOCK = 0x4000;
-pub const O_SYNC = 0x802000;
-pub const O_DSYNC = 0x2000;
-pub const O_RSYNC = O_SYNC;
-pub const O_DIRECTORY = 0x10000;
-pub const O_NOFOLLOW = 0x20000;
-pub const O_CLOEXEC = 0x400000;
-
-pub const O_ASYNC = 0x40;
-pub const O_DIRECT = 0x100000;
-pub const O_LARGEFILE = 0;
-pub const O_NOATIME = 0x200000;
-pub const O_PATH = 0x1000000;
-pub const O_TMPFILE = 0x2010000;
-pub const O_NDELAY = O_NONBLOCK | 0x4;
+pub const O = struct {
+ pub const CREAT = 0x200;
+ pub const EXCL = 0x800;
+ pub const NOCTTY = 0x8000;
+ pub const TRUNC = 0x400;
+ pub const APPEND = 0x8;
+ pub const NONBLOCK = 0x4000;
+ pub const SYNC = 0x802000;
+ pub const DSYNC = 0x2000;
+ pub const RSYNC = SYNC;
+ pub const DIRECTORY = 0x10000;
+ pub const NOFOLLOW = 0x20000;
+ pub const CLOEXEC = 0x400000;
+
+ pub const ASYNC = 0x40;
+ pub const DIRECT = 0x100000;
+ pub const LARGEFILE = 0;
+ pub const NOATIME = 0x200000;
+ pub const PATH = 0x1000000;
+ pub const TMPFILE = 0x2010000;
+ pub const NDELAY = NONBLOCK | 0x4;
+};
pub const F = struct {
pub const DUPFD = 0;
@@ -633,11 +635,12 @@ pub const MAP = struct {
pub const LOCKED = 0x0100;
/// don't check for reservations
pub const NORESERVE = 0x0040;
- /// Only used by libc to communicate failure.
- pub const FAILED = @intToPtr(*c_void, maxInt(usize));
};
-pub const VDSO_CGT_SYM = "__vdso_clock_gettime";
-pub const VDSO_CGT_VER = "LINUX_2.6";
+
+pub const VDSO = struct {
+ pub const CGT_SYM = "__vdso_clock_gettime";
+ pub const CGT_VER = "LINUX_2.6";
+};
pub const Flock = extern struct {
l_type: i16,
lib/std/os/linux/x86_64.zig
@@ -476,10 +476,6 @@ pub const SYS = enum(usize) {
};
pub const O = struct {
- pub const RDONLY = 0o0;
- pub const WRONLY = 0o1;
- pub const RDWR = 0o2;
-
pub const CREAT = 0o100;
pub const EXCL = 0o200;
pub const NOCTTY = 0o400;
@@ -526,32 +522,6 @@ pub const F = struct {
};
pub const MAP = struct {
- /// Share changes
- pub const SHARED = 0x01;
- /// Changes are private
- pub const PRIVATE = 0x02;
- /// share + validate extension flags
- pub const SHARED_VALIDATE = 0x03;
- /// Mask for type of mapping
- pub const TYPE = 0x0f;
- /// Interpret addr exactly
- pub const FIXED = 0x10;
- /// don't use a file
- pub const ANONYMOUS = 0x20;
- /// populate (prefault) pagetables
- pub const POPULATE = 0x8000;
- /// do not block on IO
- pub const NONBLOCK = 0x10000;
- /// give out an address that is best suited for process/thread stacks
- pub const STACK = 0x20000;
- /// create a huge page mapping
- pub const HUGETLB = 0x40000;
- /// perform synchronous page faults for the mapping
- pub const SYNC = 0x80000;
- /// FIXED which doesn't unmap underlying mapping
- pub const FIXED_NOREPLACE = 0x100000;
- /// For anonymous mmap, memory could be uninitialized
- pub const UNINITIALIZED = 0x4000000;
/// only give out 32bit addresses
pub const @"32BIT" = 0x40;
/// stack-like segment
@@ -564,8 +534,6 @@ pub const MAP = struct {
pub const LOCKED = 0x2000;
/// don't check for reservations
pub const NORESERVE = 0x4000;
- /// Only used by libc to communicate failure.
- pub const FAILED = @intToPtr(*c_void, maxInt(usize));
};
pub const VDSO = struct {
lib/std/os/linux.zig
@@ -57,24 +57,23 @@ pub const socketcall = syscall_bits.socketcall;
pub const syscall_pipe = syscall_bits.syscall_pipe;
pub const syscall_fork = syscall_bits.syscall_fork;
-pub const clone = arch_bits.clone;
pub const ARCH = arch_bits.ARCH;
pub const Elf_Symndx = arch_bits.Elf_Symndx;
pub const F = arch_bits.F;
pub const Flock = arch_bits.Flock;
+pub const HWCAP = arch_bits.HWCAP;
pub const LOCK = arch_bits.LOCK;
-pub const MAP = arch_bits.MAP;
pub const MMAP2_UNIT = arch_bits.MMAP2_UNIT;
-pub const O = arch_bits.O;
pub const REG = arch_bits.REG;
pub const SC = arch_bits.SC;
pub const SYS = arch_bits.SYS;
+pub const Stat = arch_bits.Stat;
pub const VDSO = arch_bits.VDSO;
pub const blkcnt_t = arch_bits.blkcnt_t;
pub const blksize_t = arch_bits.blksize_t;
+pub const clone = arch_bits.clone;
pub const dev_t = arch_bits.dev_t;
pub const ino_t = arch_bits.ino_t;
-pub const Stat = arch_bits.Stat;
pub const mcontext_t = arch_bits.mcontext_t;
pub const mode_t = arch_bits.mode_t;
pub const msghdr = arch_bits.msghdr;
@@ -92,29 +91,46 @@ pub const tls = @import("linux/tls.zig");
pub const pie = @import("linux/start_pie.zig");
pub const BPF = @import("linux/bpf.zig");
-const io_uring = @import("linux/io_uring.zig");
-pub const IO_Uring = io_uring.IO_Uring;
-pub const SubmissionQueue = io_uring.SubmissionQueue;
-pub const CompletionQueue = io_uring.CompletionQueue;
-pub const io_uring_prep_nop = io_uring.io_uring_prep_nop;
-pub const io_uring_prep_fsync = io_uring.io_uring_prep_fsync;
-pub const io_uring_prep_rw = io_uring.io_uring_prep_rw;
-pub const io_uring_prep_read = io_uring.io_uring_prep_read;
-pub const io_uring_prep_write = io_uring.io_uring_prep_write;
-pub const io_uring_prep_readv = io_uring.io_uring_prep_readv;
-pub const io_uring_prep_writev = io_uring.io_uring_prep_writev;
-pub const io_uring_prep_accept = io_uring.io_uring_prep_accept;
-pub const io_uring_prep_connect = io_uring.io_uring_prep_connect;
-pub const io_uring_prep_epoll_ctl = io_uring.io_uring_prep_epoll_ctl;
-pub const io_uring_prep_recv = io_uring.io_uring_prep_recv;
-pub const io_uring_prep_send = io_uring.io_uring_prep_send;
-pub const io_uring_prep_openat = io_uring.io_uring_prep_openat;
-pub const io_uring_prep_close = io_uring.io_uring_prep_close;
-pub const io_uring_prep_timeout = io_uring.io_uring_prep_timeout;
-pub const io_uring_prep_timeout_remove = io_uring.io_uring_prep_timeout_remove;
-pub const io_uring_prep_poll_add = io_uring.io_uring_prep_poll_add;
-pub const io_uring_prep_poll_remove = io_uring.io_uring_prep_poll_remove;
-pub const io_uring_prep_fallocate = io_uring.io_uring_prep_fallocate;
+pub const MAP = struct {
+ pub usingnamespace arch_bits.MAP;
+
+ /// Share changes
+ pub const SHARED = 0x01;
+ /// Changes are private
+ pub const PRIVATE = 0x02;
+ /// share + validate extension flags
+ pub const SHARED_VALIDATE = 0x03;
+ /// Mask for type of mapping
+ pub const TYPE = 0x0f;
+ /// Interpret addr exactly
+ pub const FIXED = 0x10;
+ /// don't use a file
+ pub const ANONYMOUS = 0x20;
+ /// populate (prefault) pagetables
+ pub const POPULATE = 0x8000;
+ /// do not block on IO
+ pub const NONBLOCK = 0x10000;
+ /// give out an address that is best suited for process/thread stacks
+ pub const STACK = 0x20000;
+ /// create a huge page mapping
+ pub const HUGETLB = 0x40000;
+ /// perform synchronous page faults for the mapping
+ pub const SYNC = 0x80000;
+ /// FIXED which doesn't unmap underlying mapping
+ pub const FIXED_NOREPLACE = 0x100000;
+ /// For anonymous mmap, memory could be uninitialized
+ pub const UNINITIALIZED = 0x4000000;
+};
+
+pub const O = struct {
+ pub usingnamespace arch_bits.O;
+
+ pub const RDONLY = 0o0;
+ pub const WRONLY = 0o1;
+ pub const RDWR = 0o2;
+};
+
+pub usingnamespace @import("linux/io_uring.zig");
/// Set by startup code, used by `getauxval`.
pub var elf_aux_maybe: ?[*]std.elf.Auxv = null;
@@ -1725,26 +1741,20 @@ pub const FUTEX = struct {
pub const PROT = struct {
/// page can not be accessed
pub const NONE = 0x0;
-
/// page can be read
pub const READ = 0x1;
-
/// page can be written
pub const WRITE = 0x2;
-
/// page can be executed
pub const EXEC = 0x4;
-
/// page may be used for atomic ops
pub const SEM = switch (native_arch) {
// TODO: also xtensa
.mips, .mipsel, .mips64, .mips64el => 0x10,
else => 0x8,
};
-
/// mprotect flag: extend change to start of growsdown vma
pub const GROWSDOWN = 0x01000000;
-
/// mprotect flag: extend change to end of growsup vma
pub const GROWSUP = 0x02000000;
};
@@ -1960,16 +1970,16 @@ pub const RWF = struct {
/// high priority request, poll if possible
pub const HIPRI: kernel_rwf = 0x00000001;
- /// per-IO O_DSYNC
+ /// per-IO O.DSYNC
pub const DSYNC: kernel_rwf = 0x00000002;
- /// per-IO O_SYNC
+ /// per-IO O.SYNC
pub const SYNC: kernel_rwf = 0x00000004;
/// per-IO, return -EAGAIN if operation would block
pub const NOWAIT: kernel_rwf = 0x00000008;
- /// per-IO O_APPEND
+ /// per-IO O.APPEND
pub const APPEND: kernel_rwf = 0x00000010;
};
lib/std/os/test.zig
@@ -401,7 +401,7 @@ test "sigaltstack" {
// If the type is not available use void to avoid erroring out when `iter_fn` is
// analyzed
-const dl_phdr_info = if (@hasDecl(os, "dl_phdr_info")) os.dl_phdr_info else c_void;
+const dl_phdr_info = if (@hasDecl(os.system, "dl_phdr_info")) os.dl_phdr_info else c_void;
const IterFnError = error{
MissingPtLoadSegment,
@@ -676,7 +676,7 @@ test "fsync" {
}
test "getrlimit and setrlimit" {
- if (native_os == .windows) {
+ if (!@hasDecl(os.system, "rlimit")) {
return error.SkipZigTest;
}
lib/std/os/wasi.zig
@@ -337,6 +337,7 @@ pub const filestat_t = extern struct {
}
};
+/// Also known as `FILETYPE`.
pub const filetype_t = enum(u8) {
UNKNOWN,
BLOCK_DEVICE,
@@ -532,6 +533,7 @@ pub const timestamp_t = u64;
pub const userdata_t = u64;
+/// Also known as `WHENCE`.
pub const whence_t = enum(u8) { SET, CUR, END };
pub const S = struct {
lib/std/os/windows.zig
@@ -3192,7 +3192,7 @@ pub usingnamespace switch (native_arch) {
pub const EXCEPTION_POINTERS = extern struct {
ExceptionRecord: *EXCEPTION_RECORD,
- ContextRecord: *@This().CONTEXT,
+ ContextRecord: *std.os.windows.CONTEXT,
};
pub const VECTORED_EXCEPTION_HANDLER = fn (ExceptionInfo: *EXCEPTION_POINTERS) callconv(WINAPI) c_long;
lib/std/special/ssp.zig
@@ -25,9 +25,7 @@ pub fn panic(msg: []const u8, error_return_trace: ?*builtin.StackTrace) noreturn
_ = msg;
_ = error_return_trace;
@setCold(true);
- if (@hasDecl(std.os, "abort"))
- std.os.abort();
- while (true) {}
+ std.os.abort();
}
export fn __stack_chk_fail() callconv(.C) noreturn {
lib/std/x/net/tcp.zig
@@ -193,7 +193,7 @@ pub const Client = struct {
/// Disable Nagle's algorithm on a TCP socket. It returns `error.UnsupportedSocketOption` if
/// the host does not support sockets disabling Nagle's algorithm.
pub fn setNoDelay(self: Client, enabled: bool) !void {
- if (comptime @hasDecl(os, "TCP_NODELAY")) {
+ if (@hasDecl(os.TCP, "NODELAY")) {
const bytes = mem.asBytes(&@as(usize, @boolToInt(enabled)));
return self.socket.setOption(os.IPPROTO.TCP, os.TCP_NODELAY, bytes);
}
@@ -203,7 +203,7 @@ pub const Client = struct {
/// Enables TCP Quick ACK on a TCP socket to immediately send rather than delay ACKs when necessary. It returns
/// `error.UnsupportedSocketOption` if the host does not support TCP Quick ACK.
pub fn setQuickACK(self: Client, enabled: bool) !void {
- if (comptime @hasDecl(os, "TCP_QUICKACK")) {
+ if (@hasDecl(os.TCP, "QUICKACK")) {
return self.socket.setOption(os.IPPROTO.TCP, os.TCP_QUICKACK, mem.asBytes(&@as(u32, @boolToInt(enabled))));
}
return error.UnsupportedSocketOption;
@@ -304,7 +304,7 @@ pub const Listener = struct {
/// Enables TCP Fast Open (RFC 7413) on a TCP socket. It returns `error.UnsupportedSocketOption` if the host does not
/// support TCP Fast Open.
pub fn setFastOpen(self: Listener, enabled: bool) !void {
- if (comptime @hasDecl(os, "TCP_FASTOPEN")) {
+ if (@hasDecl(os.TCP, "FASTOPEN")) {
return self.socket.setOption(os.IPPROTO.TCP, os.TCP_FASTOPEN, mem.asBytes(&@as(u32, @boolToInt(enabled))));
}
return error.UnsupportedSocketOption;
lib/std/x/os/net.zig
@@ -6,12 +6,13 @@ const mem = std.mem;
const math = std.math;
const testing = std.testing;
const native_os = std.Target.current.os;
+const have_ifnamesize = @hasDecl(os.system, "IFNAMESIZE");
/// Resolves a network interface name into a scope/zone ID. It returns
/// an error if either resolution fails, or if the interface name is
/// too long.
pub fn resolveScopeID(name: []const u8) !u32 {
- if (@hasDecl(os, "IFNAMESIZE")) {
+ if (have_ifnamesize) {
if (name.len >= os.IFNAMESIZE - 1) return error.NameTooLong;
if (native_os.tag == .windows) {
@@ -556,7 +557,7 @@ test "ipv6: parse & format" {
}
test "ipv6: parse & format addresses with scope ids" {
- if (!@hasDecl(os, "IFNAMESIZE")) return error.SkipZigTest;
+ if (!have_ifnamesize) return error.SkipZigTest;
const inputs = [_][]const u8{
"FF01::FB%lo",
lib/std/c.zig
@@ -58,41 +58,7 @@ pub usingnamespace switch (builtin.os.tag) {
};
pub usingnamespace switch (builtin.os.tag) {
- .netbsd => struct {},
- .macos, .ios, .watchos, .tvos => struct {
- // XXX: close -> close$NOCANCEL
- // XXX: getdirentries -> _getdirentries64
- pub extern "c" fn clock_getres(clk_id: c_int, tp: *c.timespec) c_int;
- pub extern "c" fn clock_gettime(clk_id: c_int, tp: *c.timespec) c_int;
- pub extern "c" fn getrusage(who: c_int, usage: *c.rusage) c_int;
- pub extern "c" fn gettimeofday(noalias tv: ?*c.timeval, noalias tz: ?*c.timezone) c_int;
- pub extern "c" fn nanosleep(rqtp: *const c.timespec, rmtp: ?*c.timespec) c_int;
- pub extern "c" fn sched_yield() c_int;
- pub extern "c" fn sigaction(sig: c_int, noalias act: ?*const c.Sigaction, noalias oact: ?*c.Sigaction) c_int;
- pub extern "c" fn sigprocmask(how: c_int, noalias set: ?*const c.sigset_t, noalias oset: ?*c.sigset_t) c_int;
- pub extern "c" fn socket(domain: c_uint, sock_type: c_uint, protocol: c_uint) c_int;
- pub extern "c" fn stat(noalias path: [*:0]const u8, noalias buf: *c.Stat) c_int;
- pub extern "c" fn sigfillset(set: ?*c.sigset_t) void;
- pub extern "c" fn alarm(seconds: c_uint) c_uint;
- pub extern "c" fn sigwait(set: ?*c.sigset_t, sig: ?*c_int) c_int;
- },
- .windows => struct {
- // TODO: copied the else case and removed the socket function (because its in ws2_32)
- // need to verify which of these is actually supported on windows
- pub extern "c" fn clock_getres(clk_id: c_int, tp: *c.timespec) c_int;
- pub extern "c" fn clock_gettime(clk_id: c_int, tp: *c.timespec) c_int;
- pub extern "c" fn fstat(fd: c.fd_t, buf: *c.Stat) c_int;
- pub extern "c" fn getrusage(who: c_int, usage: *c.rusage) c_int;
- pub extern "c" fn gettimeofday(noalias tv: ?*c.timeval, noalias tz: ?*c.timezone) c_int;
- pub extern "c" fn nanosleep(rqtp: *const c.timespec, rmtp: ?*c.timespec) c_int;
- pub extern "c" fn sched_yield() c_int;
- pub extern "c" fn sigaction(sig: c_int, noalias act: ?*const c.Sigaction, noalias oact: ?*c.Sigaction) c_int;
- pub extern "c" fn sigprocmask(how: c_int, noalias set: ?*const c.sigset_t, noalias oset: ?*c.sigset_t) c_int;
- pub extern "c" fn stat(noalias path: [*:0]const u8, noalias buf: *c.Stat) c_int;
- pub extern "c" fn sigfillset(set: ?*c.sigset_t) void;
- pub extern "c" fn alarm(seconds: c_uint) c_uint;
- pub extern "c" fn sigwait(set: ?*c.sigset_t, sig: ?*c_int) c_int;
- },
+ .netbsd, .macos, .ios, .watchos, .tvos, .windows => struct {},
else => struct {
pub extern "c" fn clock_getres(clk_id: c_int, tp: *c.timespec) c_int;
pub extern "c" fn clock_gettime(clk_id: c_int, tp: *c.timespec) c_int;
lib/std/debug.zig
@@ -1470,7 +1470,7 @@ fn getDebugInfoAllocator() *mem.Allocator {
pub const have_segfault_handling_support = switch (native_os) {
.linux, .netbsd => true,
.windows => true,
- .freebsd, .openbsd => @hasDecl(os, "ucontext_t"),
+ .freebsd, .openbsd => @hasDecl(os.system, "ucontext_t"),
else => false,
};
pub const enable_segfault_handler: bool = if (@hasDecl(root, "enable_segfault_handler"))
lib/std/fs.zig
@@ -479,15 +479,15 @@ pub const Dir = struct {
&stat_info,
0,
);
- const statmode = stat_info.mode & os.S_IFMT;
+ const statmode = stat_info.mode & os.S.IFMT;
const entry_kind = switch (statmode) {
- os.S_IFDIR => Entry.Kind.Directory,
- os.S_IFBLK => Entry.Kind.BlockDevice,
- os.S_IFCHR => Entry.Kind.CharacterDevice,
- os.S_IFLNK => Entry.Kind.SymLink,
- os.S_IFREG => Entry.Kind.File,
- os.S_IFIFO => Entry.Kind.NamedPipe,
+ os.S.IFDIR => Entry.Kind.Directory,
+ os.S.IFBLK => Entry.Kind.BlockDevice,
+ os.S.IFCHR => Entry.Kind.CharacterDevice,
+ os.S.IFLNK => Entry.Kind.SymLink,
+ os.S.IFREG => Entry.Kind.File,
+ os.S.IFIFO => Entry.Kind.NamedPipe,
else => Entry.Kind.Unknown,
};
@@ -678,12 +678,12 @@ pub const Dir = struct {
}
const entry_kind = switch (entry.d_type) {
- w.FILETYPE_BLOCK_DEVICE => Entry.Kind.BlockDevice,
- w.FILETYPE_CHARACTER_DEVICE => Entry.Kind.CharacterDevice,
- w.FILETYPE_DIRECTORY => Entry.Kind.Directory,
- w.FILETYPE_SYMBOLIC_LINK => Entry.Kind.SymLink,
- w.FILETYPE_REGULAR_FILE => Entry.Kind.File,
- w.FILETYPE_SOCKET_STREAM, wasi.FILETYPE_SOCKET_DGRAM => Entry.Kind.UnixDomainSocket,
+ .BLOCK_DEVICE => Entry.Kind.BlockDevice,
+ .CHARACTER_DEVICE => Entry.Kind.CharacterDevice,
+ .DIRECTORY => Entry.Kind.Directory,
+ .SYMBOLIC_LINK => Entry.Kind.SymLink,
+ .REGULAR_FILE => Entry.Kind.File,
+ .SOCKET_STREAM, .SOCKET_DGRAM => Entry.Kind.UnixDomainSocket,
else => Entry.Kind.Unknown,
};
return Entry{
@@ -909,11 +909,11 @@ pub const Dir = struct {
}
var os_flags: u32 = os.O.CLOEXEC;
- // Use the O_ locking flags if the os supports them to acquire the lock
+ // Use the O locking flags if the os supports them to acquire the lock
// atomically.
const has_flock_open_flags = @hasDecl(os.O, "EXLOCK");
if (has_flock_open_flags) {
- // Note that the O_NONBLOCK flag is removed after the openat() call
+ // Note that the O.NONBLOCK flag is removed after the openat() call
// is successful.
const nonblocking_lock_flag: u32 = if (flags.lock_nonblocking)
os.O.NONBLOCK
@@ -1071,10 +1071,10 @@ pub const Dir = struct {
return self.createFileW(path_w.span(), flags);
}
- // Use the O_ locking flags if the os supports them to acquire the lock
+ // Use the O locking flags if the os supports them to acquire the lock
// atomically.
const has_flock_open_flags = @hasDecl(os.O, "EXLOCK");
- // Note that the O_NONBLOCK flag is removed after the openat() call
+ // Note that the O.NONBLOCK flag is removed after the openat() call
// is successful.
const nonblocking_lock_flag: u32 = if (has_flock_open_flags and flags.lock_nonblocking)
os.O.NONBLOCK
@@ -1427,9 +1427,9 @@ pub const Dir = struct {
const result = os.openatWasi(self.fd, sub_path, symlink_flags, w.O.DIRECTORY, 0x0, base, inheriting);
const fd = result catch |err| switch (err) {
error.FileTooBig => unreachable, // can't happen for directories
- error.IsDir => unreachable, // we're providing O_DIRECTORY
- error.NoSpaceLeft => unreachable, // not providing O_CREAT
- error.PathAlreadyExists => unreachable, // not providing O_CREAT
+ error.IsDir => unreachable, // we're providing O.DIRECTORY
+ error.NoSpaceLeft => unreachable, // not providing O.CREAT
+ error.PathAlreadyExists => unreachable, // not providing O.CREAT
error.FileLocksNotSupported => unreachable, // locking folders is not supported
error.WouldBlock => unreachable, // can't happen for directories
else => |e| return e,
@@ -1463,7 +1463,7 @@ pub const Dir = struct {
return self.openDirAccessMaskW(sub_path_w, flags, args.no_follow);
}
- /// `flags` must contain `os.O_DIRECTORY`.
+ /// `flags` must contain `os.O.DIRECTORY`.
fn openDirFlagsZ(self: Dir, sub_path_c: [*:0]const u8, flags: u32) OpenError!Dir {
const result = if (need_async_thread)
std.event.Loop.instance.?.openatZ(self.fd, sub_path_c, flags, 0)
@@ -1471,9 +1471,9 @@ pub const Dir = struct {
os.openatZ(self.fd, sub_path_c, flags, 0);
const fd = result catch |err| switch (err) {
error.FileTooBig => unreachable, // can't happen for directories
- error.IsDir => unreachable, // we're providing O_DIRECTORY
- error.NoSpaceLeft => unreachable, // not providing O_CREAT
- error.PathAlreadyExists => unreachable, // not providing O_CREAT
+ error.IsDir => unreachable, // we're providing O.DIRECTORY
+ error.NoSpaceLeft => unreachable, // not providing O.CREAT
+ error.PathAlreadyExists => unreachable, // not providing O.CREAT
error.FileLocksNotSupported => unreachable, // locking folders is not supported
error.WouldBlock => unreachable, // can't happen for directories
else => |e| return e,
@@ -1559,7 +1559,7 @@ pub const Dir = struct {
.macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd => {
// Don't follow symlinks to match unlinkat (which acts on symlinks rather than follows them)
const fstat = os.fstatatZ(self.fd, sub_path_c, os.AT.SYMLINK_NOFOLLOW) catch return e;
- const is_dir = fstat.mode & os.S_IFMT == os.S_IFDIR;
+ const is_dir = fstat.mode & os.S.IFMT == os.S.IFDIR;
return if (is_dir) error.IsDir else e;
},
else => return e,
lib/std/os.zig
@@ -72,7 +72,6 @@ pub const E = system.E;
pub const Elf_Symndx = system.Elf_Symndx;
pub const F = system.F;
pub const FD_CLOEXEC = system.FD_CLOEXEC;
-pub const F_OK = system.F_OK;
pub const Flock = system.Flock;
pub const HOST_NAME_MAX = system.HOST_NAME_MAX;
pub const IFNAMESIZE = system.IFNAMESIZE;
@@ -96,7 +95,6 @@ pub const REG = system.REG;
pub const RIGHT = system.RIGHT;
pub const RLIM = system.RLIM;
pub const RR = system.RR;
-pub const R_OK = system.R_OK;
pub const S = system.S;
pub const SA = system.SA;
pub const SC = system.SC;
@@ -116,8 +114,6 @@ pub const Stat = system.Stat;
pub const TCSA = system.TCSA;
pub const VDSO = system.VDSO;
pub const W = system.W;
-pub const W_OK = system.W_OK;
-pub const X_OK = system.X_OK;
pub const addrinfo = system.addrinfo;
pub const blkcnt_t = system.blkcnt_t;
pub const blksize_t = system.blksize_t;
@@ -165,6 +161,11 @@ pub const uid_t = system.uid_t;
pub const user_desc = system.user_desc;
pub const utsname = system.utsname;
+pub const F_OK = system.F_OK;
+pub const R_OK = system.R_OK;
+pub const W_OK = system.W_OK;
+pub const X_OK = system.X_OK;
+
pub const iovec = extern struct {
iov_base: [*]u8,
iov_len: usize,
@@ -4237,7 +4238,7 @@ pub fn lseek_SET(fd: fd_t, offset: u64) SeekError!void {
}
if (builtin.os.tag == .wasi and !builtin.link_libc) {
var new_offset: wasi.filesize_t = undefined;
- switch (wasi.fd_seek(fd, @bitCast(wasi.filedelta_t, offset), wasi.WHENCE_SET, &new_offset)) {
+ switch (wasi.fd_seek(fd, @bitCast(wasi.filedelta_t, offset), .SET, &new_offset)) {
.SUCCESS => return,
.BADF => unreachable, // always a race condition
.INVAL => return error.Unseekable,
@@ -4285,7 +4286,7 @@ pub fn lseek_CUR(fd: fd_t, offset: i64) SeekError!void {
}
if (builtin.os.tag == .wasi and !builtin.link_libc) {
var new_offset: wasi.filesize_t = undefined;
- switch (wasi.fd_seek(fd, offset, wasi.WHENCE_CUR, &new_offset)) {
+ switch (wasi.fd_seek(fd, offset, .CUR, &new_offset)) {
.SUCCESS => return,
.BADF => unreachable, // always a race condition
.INVAL => return error.Unseekable,
@@ -4332,7 +4333,7 @@ pub fn lseek_END(fd: fd_t, offset: i64) SeekError!void {
}
if (builtin.os.tag == .wasi and !builtin.link_libc) {
var new_offset: wasi.filesize_t = undefined;
- switch (wasi.fd_seek(fd, offset, wasi.WHENCE_END, &new_offset)) {
+ switch (wasi.fd_seek(fd, offset, .END, &new_offset)) {
.SUCCESS => return,
.BADF => unreachable, // always a race condition
.INVAL => return error.Unseekable,
@@ -4379,7 +4380,7 @@ pub fn lseek_CUR_get(fd: fd_t) SeekError!u64 {
}
if (builtin.os.tag == .wasi and !builtin.link_libc) {
var new_offset: wasi.filesize_t = undefined;
- switch (wasi.fd_seek(fd, 0, wasi.WHENCE_CUR, &new_offset)) {
+ switch (wasi.fd_seek(fd, 0, .CUR, &new_offset)) {
.SUCCESS => return new_offset,
.BADF => unreachable, // always a race condition
.INVAL => return error.Unseekable,
lib/std/start.zig
@@ -345,7 +345,7 @@ fn posixCallMainAndExit() noreturn {
// FIXME: Elide the check for targets >= ARMv7 when the target feature API
// becomes less verbose (and more usable).
if (comptime native_arch.isARM()) {
- if (at_hwcap & std.os.linux.HWCAP_TLS == 0) {
+ if (at_hwcap & std.os.linux.HWCAP.TLS == 0) {
// FIXME: Make __aeabi_read_tp call the kernel helper kuser_get_tls
// For the time being use a simple abort instead of a @panic call to
// keep the binary bloat under control.
test/behavior/usingnamespace/a.zig
@@ -0,0 +1,7 @@
+usingnamespace @import("b.zig");
+
+pub const a_text = "OK\n";
+
+pub fn ok() bool {
+ return @import("std").mem.eql(u8, @This().b_text, "OK\n");
+}
test/behavior/usingnamespace/b.zig
@@ -0,0 +1,3 @@
+usingnamespace @import("a.zig");
+
+pub const b_text = @This().a_text;
test/behavior/usingnamespace/bar.zig
@@ -0,0 +1,8 @@
+usingnamespace @import("other.zig");
+
+pub var saw_bar_function = false;
+pub fn bar_function() void {
+ if (@This().foo_function()) {
+ saw_bar_function = true;
+ }
+}
test/behavior/usingnamespace/foo.zig
@@ -0,0 +1,14 @@
+// purposefully conflicting function with main source file
+// but it's private so it should be OK
+fn privateFunction() bool {
+ return false;
+}
+
+pub fn printText() bool {
+ return privateFunction();
+}
+
+pub var saw_foo_function = false;
+pub fn foo_function() void {
+ saw_foo_function = true;
+}
test/behavior/usingnamespace/import_segregation.zig
@@ -0,0 +1,11 @@
+const expect = @import("std").testing.expect;
+
+usingnamespace @import("foo.zig");
+usingnamespace @import("bar.zig");
+
+test "no clobbering happened" {
+ @This().foo_function();
+ @This().bar_function();
+ try expect(@This().saw_foo_function);
+ try expect(@This().saw_bar_function);
+}
test/behavior/usingnamespace/other.zig
@@ -0,0 +1,4 @@
+pub fn foo_function() bool {
+ // this one conflicts with the one from foo
+ return true;
+}
test/behavior/usingnamespace_stage1.zig
@@ -1,4 +1,5 @@
const std = @import("std");
+const expect = std.testing.expect;
fn Foo(comptime T: type) type {
return struct {
@@ -20,3 +21,21 @@ usingnamespace struct {
test "usingnamespace does not redeclare an imported variable" {
comptime try std.testing.expect(@This().foo == 42);
}
+
+usingnamespace @import("usingnamespace/foo.zig");
+test "usingnamespace omits mixing in private functions" {
+ try expect(@This().privateFunction());
+ try expect(!@This().printText());
+}
+fn privateFunction() bool {
+ return true;
+}
+
+test {
+ _ = @import("usingnamespace/import_segregation.zig");
+}
+
+usingnamespace @import("usingnamespace/a.zig");
+test "two files usingnamespace import each other" {
+ try expect(@This().ok());
+}
test/standalone/brace_expansion/main.zig
@@ -234,7 +234,7 @@ pub fn main() !void {
var result_buf = ArrayList(u8).init(global_allocator);
defer result_buf.deinit();
- try expandString(stdin_buf.items, &result_buf);
+ try expandString(stdin.items, &result_buf);
try stdout_file.write(result_buf.items);
}
test/cases.zig
@@ -1073,37 +1073,37 @@ pub fn addCases(ctx: *TestContext) !void {
case.addError(
\\pub fn main() void {
\\ var i = 0;
- \\ for (n) |_, i| {
+ \\ for ("n") |_, i| {
\\ }
\\}
, &[_][]const u8{
- ":3:17: error: redeclaration of local variable 'i'",
+ ":3:19: error: redeclaration of local variable 'i'",
":2:9: note: previous declaration here",
});
case.addError(
\\pub fn main() void {
\\ var i = 0;
- \\ for (n) |i| {
+ \\ for ("n") |i| {
\\ }
\\}
, &[_][]const u8{
- ":3:14: error: redeclaration of local variable 'i'",
+ ":3:16: error: redeclaration of local variable 'i'",
":2:9: note: previous declaration here",
});
case.addError(
\\pub fn main() void {
\\ var i = 0;
- \\ while (n) |i| {
+ \\ while ("n") |i| {
\\ }
\\}
, &[_][]const u8{
- ":3:16: error: redeclaration of local variable 'i'",
+ ":3:18: error: redeclaration of local variable 'i'",
":2:9: note: previous declaration here",
});
case.addError(
\\pub fn main() void {
\\ var i = 0;
- \\ while (n) |bruh| {
+ \\ while ("n") |bruh| {
\\ _ = bruh;
\\ } else |i| {
\\
test/cli.zig
@@ -45,13 +45,6 @@ pub fn main() !void {
}
}
-fn unwrapArg(arg: UnwrapArgError![]u8) UnwrapArgError![]u8 {
- return arg catch |err| {
- warn("Unable to parse command line: {}\n", .{err});
- return err;
- };
-}
-
fn printCmd(cwd: []const u8, argv: []const []const u8) void {
std.debug.warn("cd {s} && ", .{cwd});
for (argv) |arg| {
test/compare_output.zig
@@ -17,111 +17,6 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
\\}
, "Hello, world!" ++ std.cstr.line_sep);
- cases.addCase(x: {
- var tc = cases.create("multiple files with private function",
- \\usingnamespace @import("std").io;
- \\usingnamespace @import("foo.zig");
- \\
- \\pub fn main() void {
- \\ privateFunction();
- \\ const stdout = getStdOut().writer();
- \\ stdout.print("OK 2\n", .{}) catch unreachable;
- \\}
- \\
- \\fn privateFunction() void {
- \\ printText();
- \\}
- , "OK 1\nOK 2\n");
-
- tc.addSourceFile("foo.zig",
- \\usingnamespace @import("std").io;
- \\
- \\// purposefully conflicting function with main.zig
- \\// but it's private so it should be OK
- \\fn privateFunction() void {
- \\ const stdout = getStdOut().writer();
- \\ stdout.print("OK 1\n", .{}) catch unreachable;
- \\}
- \\
- \\pub fn printText() void {
- \\ privateFunction();
- \\}
- );
-
- break :x tc;
- });
-
- cases.addCase(x: {
- var tc = cases.create("import segregation",
- \\usingnamespace @import("foo.zig");
- \\usingnamespace @import("bar.zig");
- \\
- \\pub fn main() void {
- \\ foo_function();
- \\ bar_function();
- \\}
- , "OK\nOK\n");
-
- tc.addSourceFile("foo.zig",
- \\usingnamespace @import("std").io;
- \\pub fn foo_function() void {
- \\ const stdout = getStdOut().writer();
- \\ stdout.print("OK\n", .{}) catch unreachable;
- \\}
- );
-
- tc.addSourceFile("bar.zig",
- \\usingnamespace @import("other.zig");
- \\usingnamespace @import("std").io;
- \\
- \\pub fn bar_function() void {
- \\ if (foo_function()) {
- \\ const stdout = getStdOut().writer();
- \\ stdout.print("OK\n", .{}) catch unreachable;
- \\ }
- \\}
- );
-
- tc.addSourceFile("other.zig",
- \\pub fn foo_function() bool {
- \\ // this one conflicts with the one from foo
- \\ return true;
- \\}
- );
-
- break :x tc;
- });
-
- cases.addCase(x: {
- var tc = cases.create("two files usingnamespace import each other",
- \\usingnamespace @import("a.zig");
- \\
- \\pub fn main() void {
- \\ ok();
- \\}
- , "OK\n");
-
- tc.addSourceFile("a.zig",
- \\usingnamespace @import("b.zig");
- \\const io = @import("std").io;
- \\
- \\pub const a_text = "OK\n";
- \\
- \\pub fn ok() void {
- \\ const stdout = io.getStdOut().writer();
- \\ stdout.print(b_text, .{}) catch unreachable;
- \\}
- );
-
- tc.addSourceFile("b.zig",
- \\usingnamespace @import("a.zig");
- \\
- \\pub const b_text = a_text;
- );
-
- break :x tc;
- });
-
cases.add("hello world without libc",
\\const io = @import("std").io;
\\