summary refs log tree commit diff
path: root/src/main-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main-utils.c')
-rw-r--r--src/main-utils.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/main-utils.c b/src/main-utils.c
index 6497ea25..9e3aa7bd 100644
--- a/src/main-utils.c
+++ b/src/main-utils.c
@@ -34,6 +34,7 @@
 
 #include "main-utils.h"
 #include "NetworkManagerUtils.h"
+#include "nm-config.h"
 
 static gboolean
 sighup_handler (gpointer user_data)
@@ -139,11 +140,23 @@ nm_main_utils_ensure_statedir ()
 void
 nm_main_utils_ensure_rundir ()
 {
+	int errsv;
+
 	/* Setup runtime directory */
 	if (g_mkdir_with_parents (NMRUNDIR, 0755) != 0) {
-		fprintf (stderr, _("Cannot create '%s': %s"), NMRUNDIR, strerror (errno));
+		errsv = errno;
+		fprintf (stderr, _("Cannot create '%s': %s"), NMRUNDIR, g_strerror (errsv));
 		exit (1);
 	}
+
+	nm_assert (g_str_has_prefix (NM_CONFIG_DEVICE_STATE_DIR, NMRUNDIR"/"));
+	if (g_mkdir (NM_CONFIG_DEVICE_STATE_DIR, 0755) != 0) {
+		errsv = errno;
+		if (errsv != EEXIST) {
+			fprintf (stderr, _("Cannot create '%s': %s"), NM_CONFIG_DEVICE_STATE_DIR, g_strerror (errsv));
+			exit (1);
+		}
+	}
 }
 
 /**