lib/std/c: sync "struct stat" for DragonFly

* Add missing functions like ISDIR() or ISREG(). This is required to
  build the zig compiler

* Use octal notation for the S_ constants. This is how it is done for
  ".freebsd" and it is also the notation used by DragonFly in
  "sys/stat.h"

* Reorder S_ constants in the same order as ".freebsd" does. Again, this
  follows the ordering within "sys/stat.h"
This commit is contained in:
Michael Neumann 2025-09-27 09:53:47 +02:00 committed by Alex Rønne Petersen
parent 6b1d94c539
commit 8b5e4e032b
No known key found for this signature in database

View File

@ -2235,40 +2235,70 @@ pub const S = switch (native_os) {
} }
}, },
.dragonfly => struct { .dragonfly => 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 const IREAD = IRUSR; pub const IREAD = IRUSR;
pub const IEXEC = IXUSR; pub const IEXEC = IXUSR;
pub const IWRITE = IWUSR; 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 ISTXT = 512;
pub const BLKSIZE = 512; pub const BLKSIZE = 512;
pub const ISVTX = 512;
pub const ISGID = 1024; pub fn ISFIFO(m: u32) bool {
pub const ISUID = 2048; return m & IFMT == IFIFO;
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 { pub fn ISCHR(m: u32) bool {
return m & IFMT == IFCHR; 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;
}
}, },
.haiku => struct { .haiku => struct {
pub const IFMT = 0o170000; pub const IFMT = 0o170000;