static int path_vopen(int flags, const char *path, va_list ap) { int fd; const char *p = path_vcreate(path, ap); fd = open(p, flags); if (fd == -1) err(EXIT_FAILURE, _("cannot open %s"), p); return fd; }
static FILE * path_vfopen(const char *mode, int exit_on_error, const char *path, va_list ap) { FILE *f; const char *p = path_vcreate(path, ap); f = fopen(p, mode); if (!f && exit_on_error) err(EXIT_FAILURE, _("cannot open %s"), p); return f; }
const char * path_get(const char *path, ...) { const char *p; va_list ap; va_start(ap, path); p = path_vcreate(path, ap); va_end(ap); return p; }
int path_exist(const char *path, ...) { va_list ap; const char *p; va_start(ap, path); p = path_vcreate(path, ap); va_end(ap); return p && access(p, F_OK) == 0; }
char * path_strdup(const char *path, ...) { const char *p; va_list ap; va_start(ap, path); p = path_vcreate(path, ap); va_end(ap); return p ? strdup(p) : NULL; }
static int path_vopen(int flags, const char *path, va_list ap) { int fd; const char *p = path_vcreate(path, ap); if (!p) goto err; fd = open(p, flags); if (fd == -1) goto err; return fd; err: err(EXIT_FAILURE, _("cannot open %s"), p ? p : "path"); }
static FILE * path_vfopen(const char *mode, int exit_on_error, const char *path, va_list ap) { FILE *f; const char *p = path_vcreate(path, ap); if (!p) goto err; f = fopen(p, mode); if (!f) goto err; return f; err: if (exit_on_error) err(EXIT_FAILURE, _("cannot open %s"), p ? p : "path"); return NULL; }