51 lines · 846 B · C
RawDownload
#pragma once#undef NDEBUG#include <assert.h>#include <dirent.h>#include <errno.h>#include <stdbool.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/syscall.h> static inline pid_t sys_getpid(void){	return syscall(SYS_getpid);} static inline pid_t sys_gettid(void){	return syscall(SYS_gettid);} static inline bool streq(const char *s1, const char *s2){	return strcmp(s1, s2) == 0;} static unsigned long long xstrtoull(const char *p, char **end){	if (*p == '0') {		*end = (char *)p + 1;		return 0;	} else if ('1' <= *p && *p <= '9') {		unsigned long long val; 		errno = 0;		val = strtoull(p, end, 10);		assert(errno == 0);		return val;	} else		assert(0);} static struct dirent *xreaddir(DIR *d){	struct dirent *de; 	errno = 0;	de = readdir(d);	assert(de || errno == 0);	return de;}