From: Dominique Martinet Date: Thu, 3 Aug 2023 07:37:27 +0000 (+0900) Subject: try to create rundir if missing X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=commitdiff_plain;h=3a4fec968174fd6f387d5ec872a56343f256f645 try to create rundir if missing 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 --- diff --git a/pppd/tdb.c b/pppd/tdb.c index 8a563f8..6264417 100644 --- a/pppd/tdb.c +++ b/pppd/tdb.c @@ -60,8 +60,11 @@ #include #include #include + +#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) */