static int get_acls_from_arg(Item *item) {
#ifdef HAVE_ACL
int r;
- _cleanup_(acl_freep) acl_t a = NULL, d = NULL;
assert(item);
* afterwards, so the mask can be added now if necessary. */
r = parse_acl(item->argument, &item->acl_access, &item->acl_default, !item->force);
if (r < 0)
- log_warning_errno(errno, "Failed to parse ACL \"%s\": %m. Ignoring",
+ log_warning_errno(r, "Failed to parse ACL \"%s\": %m. Ignoring",
item->argument);
#else
log_warning_errno(ENOSYS, "ACLs are not supported. Ignoring");
return 0;
}
+#ifdef HAVE_ACL
static int path_set_acl(const char *path, acl_type_t type, acl_t acl, bool modify) {
_cleanup_(acl_freep) acl_t dup = NULL;
int r;
strna(t), path);
return 0;
}
+#endif
static int path_set_acls(Item *item, const char *path) {
#ifdef HAVE_ACL
CREATION_NORMAL,
CREATION_EXISTING,
CREATION_FORCE,
+ _CREATION_MODE_MAX,
+ _CREATION_MODE_INVALID = -1
} CreationMode;
-static const char* creation_verb(CreationMode mode) {
- switch(mode) {
- case CREATION_NORMAL:
- return "Created";
- case CREATION_EXISTING:
- return "Found existing";
- case CREATION_FORCE:
- return "Created replacement";
- }
- assert_not_reached("Bad creation");
-}
+static const char *creation_mode_verb_table[_CREATION_MODE_MAX] = {
+ [CREATION_NORMAL] = "Created",
+ [CREATION_EXISTING] = "Found existing",
+ [CREATION_FORCE] = "Created replacement",
+};
+
+DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING(creation_mode_verb, CreationMode);
static int create_item(Item *i) {
struct stat st;
creation = CREATION_EXISTING;
} else
creation = CREATION_NORMAL;
- log_debug("%s directory \"%s\".", creation_verb(creation), i->path);
+ log_debug("%s directory \"%s\".", creation_mode_verb_to_string(creation), i->path);
r = path_set_perms(i, i->path);
if (r < 0)
creation = CREATION_EXISTING;
} else
creation = CREATION_NORMAL;
- log_debug("%s fifo \"%s\".", creation_verb(creation), i->path);
+ log_debug("%s fifo \"%s\".", creation_mode_verb_to_string(creation), i->path);
r = path_set_perms(i, i->path);
if (r < 0)
creation = CREATION_EXISTING;
} else
creation = CREATION_NORMAL;
- log_debug("%s symlink \"%s\".", creation_verb(creation), i->path);
+ log_debug("%s symlink \"%s\".", creation_mode_verb_to_string(creation), i->path);
break;
} else
creation = CREATION_NORMAL;
log_debug("%s %s device node \"%s\" %u:%u.",
- creation_verb(creation),
+ creation_mode_verb_to_string(creation),
i->type == CREATE_BLOCK_DEVICE ? "block" : "char",
i->path, major(i->mode), minor(i->mode));