]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: mkdir-parents - Add mkdir_get_executable_mode()
authorStephan Bosch <stephan.bosch@open-xchange.com>
Thu, 14 Nov 2024 12:09:12 +0000 (13:09 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:14 +0000 (12:34 +0200)
Makes get_dir_mode() from src/lib-sieve/mailbox-list.c public.

src/lib/mkdir-parents.c
src/lib/mkdir-parents.h

index 2f2ee356fd1efafb9252de929c69f019d5e42e5b..f2de0ccd097fb5b45a066475003d0f2a1a1e464c 100644 (file)
 #include <fcntl.h>
 #include <unistd.h>
 
+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)
index 9b5ddf0eae3abdb9bcb5fa2c3a9eb1115ff10df8..3d093e751e76fb2610170a9f5fdaa6f168c2fb75 100644 (file)
@@ -3,6 +3,10 @@
 
 #include <sys/stat.h>
 
+/* 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. */