posixplz.h (1665B)
1 /* ISC license. */ 2 3 #ifndef SKALIBS_POSIXPLZ_H 4 #define SKALIBS_POSIXPLZ_H 5 6 #include <sys/types.h> 7 #include <sys/stat.h> 8 #include <regex.h> 9 10 #include <skalibs/gccattributes.h> 11 #include <skalibs/functypes.h> 12 13 14 /* 15 Stuff that doesn't have its own POSIX header for some reason. 16 */ 17 18 extern char **environ ; 19 20 21 /* 22 Non-POSIX functions that some OSes provide and others don't. 23 setgroups() isn't included because it's its own kind of broken. 24 */ 25 26 extern void *memmem (void const *, size_t, void const *, size_t) gccattr_pure ; 27 extern char *strcasestr (char const *, char const *) gccattr_pure ; 28 extern int getpeereid (int, uid_t *, gid_t *) ; 29 30 31 /* 32 Functions that aren't standard at all, but honestly could be. :P 33 */ 34 35 extern void execvep (char const *, char const *const *, char const *const *, char const *) ; 36 extern void execvep_loose (char const *, char const *const *, char const *const *, char const *) ; 37 extern void unlink_void (char const *) ; 38 extern void munmap_void (void *, size_t) ; 39 extern pid_t doublefork (void) ; 40 extern int touch (char const *) ; 41 42 extern int mkfiletemp (char *, create_func_ref, mode_t, void *) ; 43 extern int mklinktemp (char const *, char *, link_func_ref) ; 44 extern int mkptemp (char *) ; 45 extern int mkptemp2 (char *, unsigned int) ; 46 extern int mkptemp3 (char *, mode_t, unsigned int) ; 47 extern int mkltemp (char const *, char *) ; 48 extern int mkhtemp (char const *, char *) ; 49 extern int mkctemp (char *, mode_t, dev_t) ; 50 extern int mkbtemp (char *, mode_t, dev_t) ; 51 52 53 /* 54 Wrappers around functions that should be specified better. 55 */ 56 57 #define skalibs_regcomp(re, s, flags) regcomp(re, (s)[0] ? (s) : ".*", flags) 58 59 #endif