mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
* Add NetBSD Support Includes: - Hints to find non-compatibility libc functions - Struct and constant definitions for sockets, polling, etc. - Changes to the linker code to work around some quirks in the NetBSD dynamic linker - A target triple for netbsd aarch64 so llvm builds/links the compiler properly on this platform * Updated releasenotes and some compacting --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com>
57 lines
1.5 KiB
Plaintext
57 lines
1.5 KiB
Plaintext
module std::os::posix @if(env::POSIX);
|
|
import libc;
|
|
|
|
alias Mode_t = uint;
|
|
typedef DIRPtr = void*;
|
|
|
|
struct Posix_dirent
|
|
{
|
|
Ino_t d_fileno;
|
|
Off_t d_off @if(!env::NETBSD);
|
|
ushort d_reclen;
|
|
ushort d_namelen @if(env::DARWIN || env::NETBSD);
|
|
char d_type;
|
|
|
|
char d_namelen @if(env::OPENBSD);
|
|
char[4] d_pad0 @if(env::OPENBSD);
|
|
|
|
char d_pad0 @if(env::FREEBSD);
|
|
ushort d_namelen @if(env::FREEBSD);
|
|
ushort d_pad1 @if(env::FREEBSD);
|
|
|
|
char[255+1] name @if(env::FREEBSD || env::OPENBSD);
|
|
char[511+1] name @if(env::NETBSD);
|
|
char[1024] name @if(env::DARWIN);
|
|
char[*] name @if(!env::DARWIN && !env::BSD_FAMILY);
|
|
}
|
|
|
|
extern fn int rmdir(ZString);
|
|
extern fn int mkdir(ZString, ushort mode_t);
|
|
extern fn int chdir(ZString);
|
|
extern fn ZString getcwd(char* pwd, usz len);
|
|
extern fn CInt pipe(CInt[2]* pipes);
|
|
extern fn CFile fdopen(CInt fd, ZString mode);
|
|
extern fn CInt access(ZString path, CInt mode);
|
|
extern fn void closedir(DIRPtr);
|
|
extern fn Posix_dirent* readdir(DIRPtr) @cname(readdir_cname());
|
|
extern fn DIRPtr opendir(ZString) @cname(env::NETBSD ??? "__opendir30" : "opendir");
|
|
|
|
const DT_UNKNOWN = 0;
|
|
const DT_FIFO = 1;
|
|
const DT_CHR = 2;
|
|
const DT_DIR = 4;
|
|
const DT_BLK = 6;
|
|
const DT_REG = 8;
|
|
const DT_LNK = 10;
|
|
const DT_SOCK = 12;
|
|
const DT_WHT = 14;
|
|
|
|
|
|
macro String readdir_cname() @local @const
|
|
{
|
|
$switch:
|
|
$case env::DARWIN && env::X86_64: return "readdir$INODE64";
|
|
$case env::NETBSD: return "__readdir30";
|
|
$default: return "readdir";
|
|
$endswitch
|
|
} |