]> git.pond.sub.org Git - empserver/blobdiff - src/lib/gen/fnameat.c
Make conftab.c independent of the current directory
[empserver] / src / lib / gen / fnameat.c
index 1f4a942cfcf5ad09ff7ea26367f4db803925be7d..995320c36fa56429f36fcd378486940128358167 100644 (file)
@@ -71,3 +71,26 @@ fname_is_abs(const char *fname)
     return fname[0] == '/';
 #endif
 }
+
+/*
+ * Open a stream like fopen(), optionally relative to a directory.
+ * This is exactly like fopen(), except FNAME is interpreted relative
+ * to DIR if that is neither null nor empty.
+ */
+FILE *
+fopenat(const char *fname, const char *mode, const char *dir)
+{
+    char *fnat;
+    FILE *fp;
+
+    fnat = fnameat(fname, dir);
+    if (!fnat)
+       return NULL;
+
+    fp = fopen(fnat, mode);
+
+    if (fnat != fname)
+       free(fnat);
+
+    return fp;
+}