mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
std: add type safety to cc_t
This commit is contained in:
parent
0c725a354a
commit
5258c3caad
10 changed files with 267 additions and 121 deletions
161
lib/std/c.zig
161
lib/std/c.zig
|
|
@ -679,6 +679,167 @@ pub const MAP = switch (native_os) {
|
|||
/// Used by libc to communicate failure. Not actually part of the underlying syscall.
|
||||
pub const MAP_FAILED: *anyopaque = @ptrFromInt(std.math.maxInt(usize));
|
||||
|
||||
pub const cc_t = switch (native_os) {
|
||||
.linux => std.os.linux.cc_t,
|
||||
.macos, .ios, .tvos, .watchos => enum(u8) {
|
||||
VEOF = 0,
|
||||
VEOL = 1,
|
||||
VEOL2 = 2,
|
||||
VERASE = 3,
|
||||
VWERASE = 4,
|
||||
VKILL = 5,
|
||||
VREPRINT = 6,
|
||||
VINTR = 8,
|
||||
VQUIT = 9,
|
||||
VSUSP = 10,
|
||||
VDSUSP = 11,
|
||||
VSTART = 12,
|
||||
VSTOP = 13,
|
||||
VLNEXT = 14,
|
||||
VDISCARD = 15,
|
||||
VMIN = 16,
|
||||
VTIME = 17,
|
||||
VSTATUS = 18,
|
||||
},
|
||||
.freebsd, .kfreebsd => enum(u8) {
|
||||
VEOF = 0,
|
||||
VEOL = 1,
|
||||
VEOL2 = 2,
|
||||
VERASE = 3,
|
||||
VWERASE = 4,
|
||||
VKILL = 5,
|
||||
VREPRINT = 6,
|
||||
VERASE2 = 7,
|
||||
VINTR = 8,
|
||||
VQUIT = 9,
|
||||
VSUSP = 10,
|
||||
VDSUSP = 11,
|
||||
VSTART = 12,
|
||||
VSTOP = 13,
|
||||
VLNEXT = 14,
|
||||
VDISCARD = 15,
|
||||
VMIN = 16,
|
||||
VTIME = 17,
|
||||
VSTATUS = 18,
|
||||
},
|
||||
.netbsd => enum(u8) {
|
||||
VEOF = 0,
|
||||
VEOL = 1,
|
||||
VEOL2 = 2,
|
||||
VERASE = 3,
|
||||
VWERASE = 4,
|
||||
VKILL = 5,
|
||||
VREPRINT = 6,
|
||||
VINTR = 8,
|
||||
VQUIT = 9,
|
||||
VSUSP = 10,
|
||||
VDSUSP = 11,
|
||||
VSTART = 12,
|
||||
VSTOP = 13,
|
||||
VLNEXT = 14,
|
||||
VDISCARD = 15,
|
||||
VMIN = 16,
|
||||
VTIME = 17,
|
||||
VSTATUS = 18,
|
||||
},
|
||||
.openbsd => enum(u8) {
|
||||
VEOF = 0,
|
||||
VEOL = 1,
|
||||
VEOL2 = 2,
|
||||
VERASE = 3,
|
||||
VWERASE = 4,
|
||||
VKILL = 5,
|
||||
VREPRINT = 6,
|
||||
VINTR = 8,
|
||||
VQUIT = 9,
|
||||
VSUSP = 10,
|
||||
VDSUSP = 11,
|
||||
VSTART = 12,
|
||||
VSTOP = 13,
|
||||
VLNEXT = 14,
|
||||
VDISCARD = 15,
|
||||
VMIN = 16,
|
||||
VTIME = 17,
|
||||
VSTATUS = 18,
|
||||
},
|
||||
.haiku => enum(u8) {
|
||||
VINTR = 0,
|
||||
VQUIT = 1,
|
||||
VERASE = 2,
|
||||
VKILL = 3,
|
||||
VEOF = 4,
|
||||
VEOL = 5,
|
||||
VMIN = 4,
|
||||
VTIME = 5,
|
||||
VEOL2 = 6,
|
||||
VSWTCH = 7,
|
||||
VSTART = 8,
|
||||
VSTOP = 9,
|
||||
VSUSP = 10,
|
||||
},
|
||||
.solaris, .illumos => enum(u8) {
|
||||
VINTR = 0,
|
||||
VQUIT = 1,
|
||||
VERASE = 2,
|
||||
VKILL = 3,
|
||||
VEOF = 4,
|
||||
VEOL = 5,
|
||||
VEOL2 = 6,
|
||||
VMIN = 4,
|
||||
VTIME = 5,
|
||||
VSWTCH = 7,
|
||||
VSTART = 8,
|
||||
VSTOP = 9,
|
||||
VSUSP = 10,
|
||||
VDSUSP = 11,
|
||||
VREPRINT = 12,
|
||||
VDISCARD = 13,
|
||||
VWERASE = 14,
|
||||
VLNEXT = 15,
|
||||
VSTATUS = 16,
|
||||
VERASE2 = 17,
|
||||
},
|
||||
.emscripten => enum(u8) {
|
||||
VINTR = 0,
|
||||
VQUIT = 1,
|
||||
VERASE = 2,
|
||||
VKILL = 3,
|
||||
VEOF = 4,
|
||||
VTIME = 5,
|
||||
VMIN = 6,
|
||||
VSWTC = 7,
|
||||
VSTART = 8,
|
||||
VSTOP = 9,
|
||||
VSUSP = 10,
|
||||
VEOL = 11,
|
||||
VREPRINT = 12,
|
||||
VDISCARD = 13,
|
||||
VWERASE = 14,
|
||||
VLNEXT = 15,
|
||||
VEOL2 = 16,
|
||||
},
|
||||
.wasi => enum(u8) {
|
||||
VINTR = 0,
|
||||
VQUIT = 1,
|
||||
VERASE = 2,
|
||||
VKILL = 3,
|
||||
VEOF = 4,
|
||||
VTIME = 5,
|
||||
VMIN = 6,
|
||||
VSWTC = 7,
|
||||
VSTART = 8,
|
||||
VSTOP = 9,
|
||||
VSUSP = 10,
|
||||
VEOL = 11,
|
||||
VREPRINT = 12,
|
||||
VDISCARD = 13,
|
||||
VWERASE = 14,
|
||||
VLNEXT = 15,
|
||||
VEOL2 = 16,
|
||||
},
|
||||
else => @compileError("target libc does not have cc_t"),
|
||||
};
|
||||
|
||||
pub const whence_t = if (native_os == .wasi) std.os.wasi.whence_t else c_int;
|
||||
|
||||
// Unix-like systems
|
||||
|
|
|
|||
|
|
@ -2692,31 +2692,8 @@ pub const SHUT = struct {
|
|||
pub const RDWR = 2;
|
||||
};
|
||||
|
||||
// Term
|
||||
pub const V = struct {
|
||||
pub const EOF = 0;
|
||||
pub const EOL = 1;
|
||||
pub const EOL2 = 2;
|
||||
pub const ERASE = 3;
|
||||
pub const WERASE = 4;
|
||||
pub const KILL = 5;
|
||||
pub const REPRINT = 6;
|
||||
pub const INTR = 8;
|
||||
pub const QUIT = 9;
|
||||
pub const SUSP = 10;
|
||||
pub const DSUSP = 11;
|
||||
pub const START = 12;
|
||||
pub const STOP = 13;
|
||||
pub const LNEXT = 14;
|
||||
pub const DISCARD = 15;
|
||||
pub const MIN = 16;
|
||||
pub const TIME = 17;
|
||||
pub const STATUS = 18;
|
||||
};
|
||||
|
||||
pub const NCCS = 20; // 2 spares (7, 19)
|
||||
|
||||
pub const cc_t = u8;
|
||||
pub const speed_t = u64;
|
||||
pub const tcflag_t = u64;
|
||||
|
||||
|
|
@ -2859,7 +2836,7 @@ pub const termios = extern struct {
|
|||
oflag: tcflag_t, // output flags
|
||||
cflag: tcflag_t, // control flags
|
||||
lflag: tcflag_t, // local flags
|
||||
cc: [NCCS]cc_t, // control chars
|
||||
cc: [NCCS]std.c.cc_t, // control chars
|
||||
ispeed: speed_t align(8), // input speed
|
||||
ospeed: speed_t, // output speed
|
||||
};
|
||||
|
|
|
|||
|
|
@ -72,8 +72,6 @@ pub const sigset_t = emscripten.sigset_t;
|
|||
pub const sockaddr = emscripten.sockaddr;
|
||||
pub const socklen_t = emscripten.socklen_t;
|
||||
pub const stack_t = emscripten.stack_t;
|
||||
pub const tcflag_t = emscripten.tcflag_t;
|
||||
pub const termios = emscripten.termios;
|
||||
pub const time_t = emscripten.time_t;
|
||||
pub const timespec = emscripten.timespec;
|
||||
pub const timeval = emscripten.timeval;
|
||||
|
|
@ -180,3 +178,19 @@ pub const dirent = struct {
|
|||
type: u8,
|
||||
name: [256]u8,
|
||||
};
|
||||
|
||||
pub const speed_t = u32;
|
||||
pub const tcflag_t = u32;
|
||||
|
||||
pub const NCCS = 32;
|
||||
|
||||
pub const termios = extern struct {
|
||||
iflag: tcflag_t,
|
||||
oflag: tcflag_t,
|
||||
cflag: tcflag_t,
|
||||
lflag: tcflag_t,
|
||||
line: std.c.cc_t,
|
||||
cc: [NCCS]std.c.cc_t,
|
||||
ispeed: speed_t,
|
||||
ospeed: speed_t,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -950,7 +950,6 @@ pub const directory_which = enum(c_int) {
|
|||
_,
|
||||
};
|
||||
|
||||
pub const cc_t = u8;
|
||||
pub const speed_t = u8;
|
||||
pub const tcflag_t = u32;
|
||||
|
||||
|
|
@ -961,10 +960,10 @@ pub const termios = extern struct {
|
|||
c_oflag: tcflag_t,
|
||||
c_cflag: tcflag_t,
|
||||
c_lflag: tcflag_t,
|
||||
c_line: cc_t,
|
||||
c_line: std.c.cc_t,
|
||||
c_ispeed: speed_t,
|
||||
c_ospeed: speed_t,
|
||||
cc_t: [NCCS]cc_t,
|
||||
cc_t: [NCCS]std.c.cc_t,
|
||||
};
|
||||
|
||||
pub const MSG_NOSIGNAL = 0x0800;
|
||||
|
|
|
|||
|
|
@ -806,30 +806,6 @@ pub const T = struct {
|
|||
pub const IOCXMTFRAME = 0x80087444;
|
||||
};
|
||||
|
||||
// Term
|
||||
const V = struct {
|
||||
pub const EOF = 0; // ICANON
|
||||
pub const EOL = 1; // ICANON
|
||||
pub const EOL2 = 2; // ICANON
|
||||
pub const ERASE = 3; // ICANON
|
||||
pub const WERASE = 4; // ICANON
|
||||
pub const KILL = 5; // ICANON
|
||||
pub const REPRINT = 6; // ICANON
|
||||
// 7 spare 1
|
||||
pub const INTR = 8; // ISIG
|
||||
pub const QUIT = 9; // ISIG
|
||||
pub const SUSP = 10; // ISIG
|
||||
pub const DSUSP = 11; // ISIG
|
||||
pub const START = 12; // IXON, IXOFF
|
||||
pub const STOP = 13; // IXON, IXOFF
|
||||
pub const LNEXT = 14; // IEXTEN
|
||||
pub const DISCARD = 15; // IEXTEN
|
||||
pub const MIN = 16; // !ICANON
|
||||
pub const TIME = 17; // !ICANON
|
||||
pub const STATUS = 18; // ICANON
|
||||
// 19 spare 2
|
||||
};
|
||||
|
||||
// Input flags - software input processing
|
||||
pub const IGNBRK: tcflag_t = 0x00000001; // ignore BREAK condition
|
||||
pub const BRKINT: tcflag_t = 0x00000002; // map BREAK to SIGINT
|
||||
|
|
@ -876,7 +852,6 @@ pub const CHWFLOW: tcflag_t = (MDMBUF | CRTSCTS | CDTRCTS); // all types of hw f
|
|||
|
||||
pub const tcflag_t = c_uint;
|
||||
pub const speed_t = c_uint;
|
||||
pub const cc_t = u8;
|
||||
|
||||
pub const NCCS = 20;
|
||||
|
||||
|
|
@ -885,7 +860,7 @@ pub const termios = extern struct {
|
|||
oflag: tcflag_t, // output flags
|
||||
cflag: tcflag_t, // control flags
|
||||
lflag: tcflag_t, // local flags
|
||||
cc: [NCCS]cc_t, // control chars
|
||||
cc: [NCCS]std.c.cc_t, // control chars
|
||||
ispeed: c_int, // input speed
|
||||
ospeed: c_int, // output speed
|
||||
};
|
||||
|
|
|
|||
|
|
@ -768,33 +768,8 @@ pub const AUTH = struct {
|
|||
pub const ALLOW: c_int = (OKAY | ROOTOKAY | SECURE);
|
||||
};
|
||||
|
||||
// Term
|
||||
pub const V = struct {
|
||||
pub const EOF = 0; // ICANON
|
||||
pub const EOL = 1; // ICANON
|
||||
pub const EOL2 = 2; // ICANON
|
||||
pub const ERASE = 3; // ICANON
|
||||
pub const WERASE = 4; // ICANON
|
||||
pub const KILL = 5; // ICANON
|
||||
pub const REPRINT = 6; // ICANON
|
||||
// 7 spare 1
|
||||
pub const INTR = 8; // ISIG
|
||||
pub const QUIT = 9; // ISIG
|
||||
pub const SUSP = 10; // ISIG
|
||||
pub const DSUSP = 11; // ISIG
|
||||
pub const START = 12; // IXON, IXOFF
|
||||
pub const STOP = 13; // IXON, IXOFF
|
||||
pub const LNEXT = 14; // IEXTEN
|
||||
pub const DISCARD = 15; // IEXTEN
|
||||
pub const MIN = 16; // !ICANON
|
||||
pub const TIME = 17; // !ICANON
|
||||
pub const STATUS = 18; // ICANON
|
||||
// 19 spare 2
|
||||
};
|
||||
|
||||
pub const tcflag_t = c_uint;
|
||||
pub const speed_t = c_uint;
|
||||
pub const cc_t = u8;
|
||||
|
||||
pub const NCCS = 20;
|
||||
|
||||
|
|
@ -848,7 +823,7 @@ pub const termios = extern struct {
|
|||
oflag: tcflag_t, // output flags
|
||||
cflag: tcflag_t, // control flags
|
||||
lflag: tcflag_t, // local flags
|
||||
cc: [NCCS]cc_t, // control chars
|
||||
cc: [NCCS]std.c.cc_t, // control chars
|
||||
ispeed: c_int, // input speed
|
||||
ospeed: c_int, // output speed
|
||||
};
|
||||
|
|
|
|||
|
|
@ -699,7 +699,6 @@ pub const SEEK = struct {
|
|||
};
|
||||
|
||||
pub const tcflag_t = c_uint;
|
||||
pub const cc_t = u8;
|
||||
pub const speed_t = c_uint;
|
||||
|
||||
pub const NCCS = 19;
|
||||
|
|
@ -709,7 +708,7 @@ pub const termios = extern struct {
|
|||
c_oflag: tcflag_t,
|
||||
c_cflag: tcflag_t,
|
||||
c_lflag: tcflag_t,
|
||||
c_cc: [NCCS]cc_t,
|
||||
c_cc: [NCCS]std.c.cc_t,
|
||||
};
|
||||
|
||||
fn tioc(t: u16, num: u8) u16 {
|
||||
|
|
|
|||
|
|
@ -139,6 +139,7 @@ pub const W = system.W;
|
|||
pub const addrinfo = system.addrinfo;
|
||||
pub const blkcnt_t = system.blkcnt_t;
|
||||
pub const blksize_t = system.blksize_t;
|
||||
pub const cc_t = system.cc_t;
|
||||
pub const clock_t = system.clock_t;
|
||||
pub const cpu_set_t = system.cpu_set_t;
|
||||
pub const dev_t = system.dev_t;
|
||||
|
|
|
|||
|
|
@ -1098,23 +1098,6 @@ pub const stack_t = extern struct {
|
|||
size: usize,
|
||||
};
|
||||
|
||||
pub const cc_t = u8;
|
||||
pub const speed_t = u32;
|
||||
pub const tcflag_t = u32;
|
||||
|
||||
pub const NCCS = 32;
|
||||
|
||||
pub const termios = extern struct {
|
||||
iflag: tcflag_t,
|
||||
oflag: tcflag_t,
|
||||
cflag: tcflag_t,
|
||||
lflag: tcflag_t,
|
||||
line: cc_t,
|
||||
cc: [NCCS]cc_t,
|
||||
ispeed: speed_t,
|
||||
ospeed: speed_t,
|
||||
};
|
||||
|
||||
pub const timespec = extern struct {
|
||||
tv_sec: time_t,
|
||||
tv_nsec: isize,
|
||||
|
|
|
|||
|
|
@ -5004,9 +5004,7 @@ pub const rusage = extern struct {
|
|||
pub const THREAD = 1;
|
||||
};
|
||||
|
||||
pub const cc_t = u8;
|
||||
pub const speed_t = u32;
|
||||
pub const tcflag_t = u32;
|
||||
|
||||
pub const NCCS = 32;
|
||||
|
||||
|
|
@ -5124,21 +5122,84 @@ pub const V = switch (native_arch) {
|
|||
},
|
||||
};
|
||||
|
||||
pub const IGNBRK: tcflag_t = 1;
|
||||
pub const BRKINT: tcflag_t = 2;
|
||||
pub const IGNPAR: tcflag_t = 4;
|
||||
pub const PARMRK: tcflag_t = 8;
|
||||
pub const INPCK: tcflag_t = 16;
|
||||
pub const ISTRIP: tcflag_t = 32;
|
||||
pub const INLCR: tcflag_t = 64;
|
||||
pub const IGNCR: tcflag_t = 128;
|
||||
pub const ICRNL: tcflag_t = 256;
|
||||
pub const IUCLC: tcflag_t = 512;
|
||||
pub const IXON: tcflag_t = 1024;
|
||||
pub const IXANY: tcflag_t = 2048;
|
||||
pub const IXOFF: tcflag_t = 4096;
|
||||
pub const IMAXBEL: tcflag_t = 8192;
|
||||
pub const IUTF8: tcflag_t = 16384;
|
||||
pub const tc_iflag_t = packed struct (u32) {
|
||||
IGNBRK: bool = false,
|
||||
BRKINT: bool = false,
|
||||
IGNPAR: bool = false,
|
||||
PARMRK: bool = false,
|
||||
INPCK: bool = false,
|
||||
ISTRIP: bool = false,
|
||||
INLCR: bool = false,
|
||||
IGNCR: bool = false,
|
||||
ICRNL: bool = false,
|
||||
IUCLC: bool = false,
|
||||
IXON: bool = false,
|
||||
IXANY: bool = false,
|
||||
IXOFF: bool = false,
|
||||
IMAXBEL: bool = false,
|
||||
IUTF8: bool = false,
|
||||
_: u17 = 0,
|
||||
};
|
||||
|
||||
pub const cc_t = switch (native_arch) {
|
||||
.mips, .mipsel, .mips64, .mips64el => enum(u8){
|
||||
VINTR = 0,
|
||||
VQUIT = 1,
|
||||
VERASE = 2,
|
||||
VKILL = 3,
|
||||
VMIN = 4,
|
||||
VTIME = 5,
|
||||
VEOL2 = 6,
|
||||
VSWTC = 7,
|
||||
VSTART = 8,
|
||||
VSTOP = 9,
|
||||
VSUSP = 10,
|
||||
VREPRINT = 12,
|
||||
VDISCARD = 13,
|
||||
VWERASE = 14,
|
||||
VLNEXT = 15,
|
||||
VEOF = 16,
|
||||
VEOL = 17,
|
||||
},
|
||||
.powerpc, .powerpc64, .powerpc64le => enum(u8) {
|
||||
VINTR = 0,
|
||||
VQUIT = 1,
|
||||
VERASE = 2,
|
||||
VKILL = 3,
|
||||
VEOF = 4,
|
||||
VMIN = 5,
|
||||
VEOL = 6,
|
||||
VTIME = 7,
|
||||
VEOL2 = 8,
|
||||
VSWTC = 9,
|
||||
VWERASE = 10,
|
||||
VREPRINT = 11,
|
||||
VSUSP = 12,
|
||||
VSTART = 13,
|
||||
VSTOP = 14,
|
||||
VLNEXT = 15,
|
||||
VDISCARD = 16,
|
||||
},
|
||||
else => enum(u8) {
|
||||
VINTR = 0,
|
||||
VQUIT = 1,
|
||||
VERASE = 2,
|
||||
VKILL = 3,
|
||||
VEOF = 4,
|
||||
VTIME = 5,
|
||||
VMIN = 6,
|
||||
VSWTC = 7,
|
||||
VSTART = 8,
|
||||
VSTOP = 9,
|
||||
VSUSP = 10,
|
||||
VEOL = 11,
|
||||
VREPRINT = 12,
|
||||
VDISCARD = 13,
|
||||
VWERASE = 14,
|
||||
VLNEXT = 15,
|
||||
VEOL2 = 16,
|
||||
},
|
||||
};
|
||||
|
||||
pub const OPOST: tcflag_t = 1;
|
||||
pub const OLCUC: tcflag_t = 2;
|
||||
|
|
@ -5148,6 +5209,7 @@ pub const ONOCR: tcflag_t = 16;
|
|||
pub const ONLRET: tcflag_t = 32;
|
||||
pub const OFILL: tcflag_t = 64;
|
||||
pub const OFDEL: tcflag_t = 128;
|
||||
|
||||
pub const VTDLY: tcflag_t = 16384;
|
||||
pub const VT0: tcflag_t = 0;
|
||||
pub const VT1: tcflag_t = 16384;
|
||||
|
|
@ -5182,10 +5244,10 @@ pub const TCSA = enum(c_uint) {
|
|||
};
|
||||
|
||||
pub const termios = extern struct {
|
||||
iflag: tcflag_t,
|
||||
oflag: tcflag_t,
|
||||
cflag: tcflag_t,
|
||||
lflag: tcflag_t,
|
||||
iflag: tc_iflag_t,
|
||||
oflag: tc_oflag_t,
|
||||
cflag: tc_cflag_t,
|
||||
lflag: tc_lflag_t,
|
||||
line: cc_t,
|
||||
cc: [NCCS]cc_t,
|
||||
ispeed: speed_t,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue