#include #include #include #include #include #include #include #include #include #include #include // --| constants |-- enum Bool {NO=0, YES=1}; // --| typedefs |-- typedef struct timeval tv_t; // --| basic wrappers |-- static inline void DieIf(int condition, char *msg) { if (condition) { fprintf(stderr, "%s", msg); exit(1); } } static inline void Die(char *msg) { fprintf(stderr, "%s", msg); exit(1); } static inline void DieError(char *msg) { perror(msg); exit(1); } static inline char * Malloc(int n) { char *rc; if ((rc=(char *)malloc(n)) == NULL) DieError("Malloc"); return rc; } // --| other wrappers |-- static inline pid_t Fork(void) { pid_t pid; if ((pid=fork()) < 0) DieError(""); return pid; } static inline int Execvp(const char *path, char * const argv[]) { int rc; if ((rc=execvp(path,argv)) < 0) perror(""); return rc; } static inline int Execl(const char *path, const char *arg0, ...) { int rc; if ((rc=execl(path,arg0,0)) < 0) DieError(""); return rc; } static inline int Execve(const char *path, char * const argv[], char * const envp[]) { int rc; if ((rc=execve(path,argv,envp)) < 0) DieError(""); return rc; } static inline char * Getcwd(char *buf, size_t size) { if (getcwd(buf,size) == NULL) DieError("Getcwd: "); return buf; } static inline char * Getenv(char *name) { char *p; if ( (p = getenv(name)) == NULL ) DieError(""); return p; } static inline int Putenv(char *name) { int rc; if ( (rc = putenv(name)) != 0 ) DieError(""); return rc; } static inline int Setenv(const char *name, const char *value, int overwrite) { int rc; if ((rc = setenv(name, value, overwrite)) != 0) DieError(""); return rc; } static inline pid_t Wait(int *status) { pid_t pid; if ((pid=wait(status)) < 0) DieError(""); return pid; } static inline pid_t Waitpid(pid_t pid, int *status, int options) { if ((pid=waitpid(pid, status, options)) < 0) DieError(""); return pid; }