#+build linux, darwin, netbsd, openbsd, freebsd package posix import "core:c" when ODIN_OS == .Darwin { foreign import lib "system:System" } else { foreign import lib "system:c" } // ulimit.h - ulimit commands foreign lib { /* Control process limits. Note that -1 is a valid return value, applications should clear errno, do this call and then check both -1 and the errno to determine status. Returns: -1 (setting errno) on failure. [[ More; https://pubs.opengroup.org/onlinepubs/9699919799/functions/ulimit.html ]] */ ulimit :: proc(i: c.int, #c_vararg arg: ..c.long) -> c.long --- } Ulimit_Cmd :: enum c.int { // Returns the file size limit of the process in units of 512-byte blocks inherited by children. GETFSIZE = UL_GETFSIZE, // Set the file size limit for output operations, taken as a long, multiplied by 512. SETFSIZE = UL_SETFSIZE, } when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux { UL_GETFSIZE :: 1 UL_SETFSIZE :: 2 // NOTE: I don't think OpenBSD implements this API. }