#include "sys/ioctl.h" #include "errno.h" #include "stdarg.h" #include "stdio.h" #include "unistd.h" #include "signal.h" #include "string.h" #include "types33.h" Error e33_ioctl( Size fd, unsigned long req, void *arg ) { Size ret; do { ret = ioctl(fd, req, arg); } while (ret == -1 && (errno == EINTR || errno == EAGAIN)); return ret; } Boolean e33_strcmp( String s1, String s2 ) { while( (*s1 != '\0') && (*s2 != '\0') ) { if( (*s1++) != (*s2++) ) { return E33_FALSE; } } return E33_TRUE; } Error e33_has_signal(Size signo) { struct sigaction sact = {0}; sigaction(signo, 0, &sact); return sact.sa_handler != 0; } Error e33_set_signal(Size signo, void(*sig_handler)(int)) { struct sigaction sact = {0}; sact.sa_handler = sig_handler; sigemptyset(&sact.sa_mask); sact.sa_flags = SA_RESTART; return sigaction(signo, &sact, NULL); }