Create the config directory if needed
This commit is contained in:
parent
d6846e6327
commit
5f2eaa88e0
9
sdn.cpp
9
sdn.cpp
|
@ -38,6 +38,7 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
|
||||||
#include <sys/inotify.h>
|
#include <sys/inotify.h>
|
||||||
#include <sys/xattr.h>
|
#include <sys/xattr.h>
|
||||||
|
@ -252,9 +253,11 @@ fun xdg_config_find (const string &suffix) -> unique_ptr<ifstream> {
|
||||||
fun xdg_config_write (const string &suffix) -> unique_ptr<fstream> {
|
fun xdg_config_write (const string &suffix) -> unique_ptr<fstream> {
|
||||||
auto dir = xdg_config_home ();
|
auto dir = xdg_config_home ();
|
||||||
if (dir[0] == '/') {
|
if (dir[0] == '/') {
|
||||||
// TODO: try to create the end directory
|
auto path = dir + "/" PROJECT_NAME "/" + suffix;
|
||||||
if (fstream fs {dir + "/" PROJECT_NAME "/" + suffix,
|
if (!fork ())
|
||||||
fstream::in | fstream::out | fstream::trunc})
|
_exit (-execlp ("mkdir", "mkdir", "-p",
|
||||||
|
dirname (strdup (path.c_str ())), NULL));
|
||||||
|
if (fstream fs {path, fstream::in | fstream::out | fstream::trunc})
|
||||||
return make_unique<fstream> (move (fs));
|
return make_unique<fstream> (move (fs));
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
Loading…
Reference in New Issue