]> git.ozlabs.org Git - ppp.git/commitdiff
try to create rundir if missing
authorDominique Martinet <dominique.martinet@atmark-techno.com>
Thu, 3 Aug 2023 07:37:27 +0000 (16:37 +0900)
committerDominique Martinet <dominique.martinet@atmark-techno.com>
Tue, 10 Oct 2023 03:22:49 +0000 (12:22 +0900)
Runtime dir changed from /run to /run/pppd in commit 66a8c74c3f73 ("Let
./configure control the paths for pppd") and is likely to not exist on
some distros, in which case the pppdb will not be created.

See: #419 (lock directory moved in ppp-2.5.0)
Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
pppd/tdb.c

index 8a563f88b9a62b8aedc2ea504f8f8b22afdddb95..62644171aa6ed8eee736bcde7e9ff13350207b01 100644 (file)
 #include <sys/mman.h>
 #include <sys/stat.h>
 #include <signal.h>
+
+#include "pppd-private.h"
 #include "tdb.h"
 #include "spinlock.h"
+#include "pathnames.h"
 
 #define TDB_MAGIC_FOOD "TDB file\n"
 #define TDB_VERSION (0x26011967 + 6)
@@ -1728,7 +1731,12 @@ TDB_CONTEXT *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
                goto internal;
        }
 
+again:
        if ((tdb->fd = open(name, open_flags, mode)) == -1) {
+               if ((open_flags & O_CREAT) && errno == ENOENT &&
+                       mkdir_recursive(PPP_PATH_VARRUN) == 0)
+                       goto again;
+
                TDB_LOG((tdb, 5, "tdb_open_ex: could not open file %s: %s\n",
                         name, strerror(errno)));
                goto fail;      /* errno set by open(2) */