From: Stephan Bosch Date: Thu, 14 Nov 2024 12:09:12 +0000 (+0100) Subject: lib: mkdir-parents - Add mkdir_get_executable_mode() X-Git-Tag: 2.4.1~534 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8407762b5350e56cf269512cf5879c0e1e95bd7c;p=thirdparty%2Fdovecot%2Fcore.git lib: mkdir-parents - Add mkdir_get_executable_mode() Makes get_dir_mode() from src/lib-sieve/mailbox-list.c public. --- diff --git a/src/lib/mkdir-parents.c b/src/lib/mkdir-parents.c index 2f2ee356fd..f2de0ccd09 100644 --- a/src/lib/mkdir-parents.c +++ b/src/lib/mkdir-parents.c @@ -10,6 +10,15 @@ #include #include +mode_t mkdir_get_executable_mode(mode_t mode) +{ + /* add the execute bit if either read or write bit is set */ + if ((mode & 0600) != 0) mode |= 0100; + if ((mode & 0060) != 0) mode |= 0010; + if ((mode & 0006) != 0) mode |= 0001; + return mode; +} + static int ATTR_NULL(5) mkdir_chown_full(const char *path, mode_t mode, uid_t uid, gid_t gid, const char *gid_origin) diff --git a/src/lib/mkdir-parents.h b/src/lib/mkdir-parents.h index 9b5ddf0eae..3d093e751e 100644 --- a/src/lib/mkdir-parents.h +++ b/src/lib/mkdir-parents.h @@ -3,6 +3,10 @@ #include +/* Returns the mode with executable bit added for each read/write bit. For + example mode=0640 returns 0750. */ +mode_t mkdir_get_executable_mode(mode_t mode); + /* Create path and all the directories under it if needed. Permissions for existing directories isn't changed. Returns 0 if ok. If directory already exists, returns -1 with errno=EEXIST. */