#ifndef UTIL_LINUX_FILEUTILS #define UTIL_LINUX_FILEUTILS #include #include #include #include #include "c.h" extern int xmkstemp(char **tmpname, const char *dir, const char *prefix); static inline FILE *xfmkstemp(char **tmpname, const char *dir, const char *prefix) { int fd; FILE *ret; fd = xmkstemp(tmpname, dir, prefix); if (fd == -1) return NULL; if (!(ret = fdopen(fd, "w+" UL_CLOEXECSTR))) { close(fd); return NULL; } return ret; } static inline int is_same_inode(const int fd, const struct stat *st) { struct stat f; if (fstat(fd, &f) < 0) return 0; else if (f.st_dev != st->st_dev || f.st_ino != st->st_ino) return 0; return 1; } extern int dup_fd_cloexec(int oldfd, int lowfd); extern int get_fd_tabsize(void); extern int mkdir_p(const char *path, mode_t mode); extern char *stripoff_last_component(char *path); #endif /* UTIL_LINUX_FILEUTILS */