diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-07-02 01:17:21 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-07-02 01:17:21 +0200 |
commit | 1cf18f27331286dfb56d92e1800facf4f696ad27 (patch) | |
tree | 2a3320769c865a060d9cd767c03e99f1da59d442 /src | |
parent | cdb788e4cdc67bf7da6b3b1b3f4f295ef5c25c67 (diff) |
automount: add DirectoryMode= setting
Diffstat (limited to 'src')
-rw-r--r-- | src/automount.c | 13 | ||||
-rw-r--r-- | src/automount.h | 2 | ||||
-rw-r--r-- | src/load-fragment.c | 1 |
3 files changed, 12 insertions, 4 deletions
diff --git a/src/automount.c b/src/automount.c index 5e669c5d32..b8d7ad25f4 100644 --- a/src/automount.c +++ b/src/automount.c @@ -53,6 +53,8 @@ static void automount_init(Unit *u) { a->pipe_watch.fd = a->pipe_fd = -1; a->pipe_watch.type = WATCH_INVALID; + + a->directory_mode = 0755; } static void repeat_unmout(const char *path) { @@ -253,9 +255,11 @@ static void automount_dump(Unit *u, FILE *f, const char *prefix) { fprintf(f, "%sAutomount State: %s\n" - "%sWhere: %s\n", + "%sWhere: %s\n" + "%sDirectoryMode: %04o\n", prefix, automount_state_to_string(a->state), - prefix, a->where); + prefix, a->where, + prefix, a->directory_mode); } static void automount_enter_dead(Automount *a, bool success) { @@ -536,9 +540,10 @@ static void automount_enter_runnning(Automount *a) { assert(a); assert(a->mount); - /* Before we do anything, let's see if somebody is playing games with us? */ + mkdir_p(a->where, a->directory_mode); - if (stat(a->where, &st) < 0) { + /* Before we do anything, let's see if somebody is playing games with us? */ + if (lstat(a->where, &st) < 0) { log_warning("%s failed stat automount point: %m", a->meta.id); goto fail; } diff --git a/src/automount.h b/src/automount.h index 44e6100ff6..13b56effb6 100644 --- a/src/automount.h +++ b/src/automount.h @@ -48,6 +48,8 @@ struct Automount { Watch pipe_watch; dev_t dev_id; + mode_t directory_mode; + Set *tokens; bool failure:1; diff --git a/src/load-fragment.c b/src/load-fragment.c index 43a4027c32..49b577fb2f 100644 --- a/src/load-fragment.c +++ b/src/load-fragment.c @@ -1566,6 +1566,7 @@ static int load_from_path(Unit *u, const char *path) { EXEC_CONTEXT_CONFIG_ITEMS(u->mount.exec_context, "Mount"), { "Where", config_parse_path, &u->automount.where, "Automount" }, + { "DirectoryMode", config_parse_mode, &u->automount.directory_mode, "Automount" }, { "What", config_parse_path, &u->swap.parameters_fragment.what, "Swap" }, { "Priority", config_parse_int, &u->swap.parameters_fragment.priority, "Swap" }, |