/* posix.vala * * Copyright (C) 2008 Emmanuele Bassi */ namespace POSIX { [CCode (cheader_filename = "errno.h")] namespace Error { // see errno(3) [CCode (cname = "E2BIG")] public const int E2BIG; [CCode (cname = "EACCESS")] public const int EACCESS; [CCode (cname = "EADDRINUSE")] public const int EADDRINUSE; [CCode (cname = "EADDRNOTAVAIL")] public const int EADDRNOTAVAIL; [CCode (cname = "EAFNOSUPPORT")] public const int EAFNOSUPPORT; [CCode (cname = "EAGAIN")] public const int EAGAIN; [CCode (cname = "EALREADY")] public const int EALREADY; [CCode (cname = "EBADE")] public const int EBADE; [CCode (cname = "EINVAL")] public const int EINVAL; [CCode (cname = "ENOTSUP")] public const int ENOTSUP; // this is a const int because you're only supposed to copy // the errno value, not change it [CCode (cname = "errno")] public const int errno; [CCode (cname = "strerror")] public static weak string to_string (int err_no); [CCode (cname = "perror")] public static void print_error (string? prefix = null); } [CCode (cheader_filename = "signal.h")] namespace Signal { // signals defined in signal(7) [CCode (cname = "SIGHUP")] public const int HUP; [CCode (cname = "SIGINT")] public const int INT; [CCode (cname = "SIGQUIT")] public const int QUIT; [CCode (cname = "SIGILL")] public const int ILL; [CCode (cname = "SIGABRT")] public const int ABRT; [CCode (cname = "SIGFPE")] public const int FPE; [CCode (cname = "SIGKILL")] public const int KILL; [CCode (cname = "SIGSEGV")] public const int SEGV; [CCode (cname = "SIGPIPE")] public const int PIPE; [CCode (cname = "SIGALRM")] public const int ALRM; [CCode (cname = "SIGTERM")] public const int TERM; // dispositions defined in signal(2) [CCode (cname = "SIG_DFL")] public const int DFL; [CCode (cname = "SIG_IGN")] public const int IGN; public static delegate void Handler (int sig_num); // vala does not have overloading, so we simply create // to functions, one taking the handler and one taking // the value [CCode (cname = "signal")] public static void set_handler (int sig_num, Handler hnd); [CCode (cname = "signal")] public static void set_value (int sig_num, int disposition = DFL); [CCode (cname = "siginfo_t")] public struct Info { int si_signo; int si_errno; int si_code; // pid_t si_pid; int si_pid; // uid_t si_uid; int si_uid; int si_status; // clock_t si_utime; int si_utime; // clock_t si_stime; int si_stime; // sigval_t si_value; int si_value; int si_int; // void* si_ptr; // void* si_addr; int si_band; int si_fd; } public static delegate void ActionHandler (int sig_num, Info info, void* context); [CCode (cname = "struct sigaction")] public struct Action { public Handler sa_handler; public ActionHandler sa_sigaction; public int sa_mask; public int sa_flags; } [CCode (cname = "SA_NOCLDSTOP")] public const int NO_CLDSTOP; [CCode (cname = "SA_NOCLDWAIT")] public const int NO_CLDWAIT; [CCode (cname = "SA_RESETHAND")] public const int RESETHAND; [CCode (cname = "SA_ONSTACK")] public const int ONSTACK; [CCode (cname = "SA_RESTART")] public const int RESTART; [CCode (cname = "SA_NODEFER")] public const int NODEFER; [CCode (cname = "SA_SIGINFO")] public const int SIGINFO; [CCode (cname = "sigaction")] public static int set_action (int sig_num, Action act, out Action? old_act = null); } }