#include <errno.h>
#include <sys/stat.h>
+static int ensuredir(char *base, char *dir)
+{
+ if(access(dir, X_OK)) {
+ if((mkdir(base, 0777) && (errno != EEXIST)) || mkdir(dir, 0777))
+ return(1);
+ }
+ return(0);
+}
+
static void usage(FILE *out)
{
fprintf(out, "usage: nextep [-h] [-f FILE] [-s SET-VALUE] [DIR]\n");
}
snprintf(buf, sizeof(buf), "%s/.nextep", p);
snprintf(base, sizeof(base), "%s/%s", buf, dir);
- if(access(base, X_OK)) {
- if((mkdir(buf, 0777) && (errno != EEXIST)) || mkdir(base, 0777)) {
- fprintf(stderr, "nextep: %s: %s\n", base, strerror(errno));
- exit(1);
- }
- }
snprintf(fpath, sizeof(fpath), "%s/%s", base, file);
if(value == NULL) {
if((fp = fopen(fpath, "r")) == NULL) {
exit(1);
}
} else {
+ if(ensuredir(buf, base)) {
+ fprintf(stderr, "nextep: %s: %s\n", base, strerror(errno));
+ exit(1);
+ }
if((fp = fopen(fpath, "w")) == NULL) {
fprintf(stderr, "nextep: %s: %s\n", fpath, strerror(errno));
exit(1);