mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
fix sorting of rules files
This commit is contained in:
parent
a390e6f764
commit
be7f7f5701
@ -148,7 +148,7 @@ struct udev_list_entry *udev_list_entry_add(struct udev *udev, struct udev_list_
|
||||
list_entry_insert_before(entry_new, entry_loop);
|
||||
else
|
||||
list_entry_append(entry_new, list);
|
||||
info(udev, "'%s=%s' added\n", entry_new->name, entry_new->value);
|
||||
dbg(udev, "'%s=%s' added\n", entry_new->name, entry_new->value);
|
||||
return entry_new;
|
||||
}
|
||||
|
||||
@ -182,6 +182,13 @@ void udev_list_entry_move_to_list(struct udev_list_entry *list_entry, struct ude
|
||||
list_entry->list = list;
|
||||
}
|
||||
|
||||
void udev_list_entry_move_before(struct udev_list_entry *list_entry, struct udev_list_entry *entry)
|
||||
{
|
||||
list_node_remove(&list_entry->node);
|
||||
list_node_insert_between(&list_entry->node, entry->node.prev, &entry->node);
|
||||
list_entry->list = entry->list;
|
||||
}
|
||||
|
||||
struct udev_list_entry *udev_list_get_entry(struct udev_list_node *list)
|
||||
{
|
||||
if (list_is_empty(list))
|
||||
|
@ -131,6 +131,7 @@ extern void udev_list_entry_remove(struct udev_list_entry *entry);
|
||||
extern struct udev_list_entry *udev_list_get_entry(struct udev_list_node *list);
|
||||
extern void udev_list_entry_move_to_end(struct udev_list_entry *list_entry);
|
||||
extern void udev_list_entry_move_to_list(struct udev_list_entry *list_entry, struct udev_list_node *list);
|
||||
extern void udev_list_entry_move_before(struct udev_list_entry *list_entry, struct udev_list_entry *entry);
|
||||
extern int udev_list_entry_get_flag(struct udev_list_entry *list_entry);
|
||||
extern void udev_list_entry_set_flag(struct udev_list_entry *list_entry, int flag);
|
||||
#define udev_list_entry_foreach_safe(entry, tmp, first) \
|
||||
|
@ -854,20 +854,18 @@ int udev_rules_init(struct udev *udev, struct udev_rules *rules, int resolve_nam
|
||||
|
||||
if (file_base == NULL)
|
||||
continue;
|
||||
|
||||
if (strcmp(file_base, sort_base) == 0) {
|
||||
info(udev, "rule file basename '%s' already added, ignoring '%s'\n",
|
||||
file_name, sort_name);
|
||||
udev_list_entry_remove(sort_loop);
|
||||
sort_loop = NULL;
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
|
||||
if (strcmp(file_base, sort_base) > 0)
|
||||
break;
|
||||
}
|
||||
if (sort_loop != NULL)
|
||||
udev_list_entry_move_to_list(sort_loop, &file_list);
|
||||
udev_list_entry_move_before(sort_loop, file_loop);
|
||||
}
|
||||
}
|
||||
|
||||
@ -878,7 +876,7 @@ int udev_rules_init(struct udev *udev, struct udev_rules *rules, int resolve_nam
|
||||
if (stat(file_name, &statbuf) == 0 && statbuf.st_size > 0)
|
||||
parse_file(rules, file_name);
|
||||
else
|
||||
err(udev, "could not read '%s': %m\n", file_name);
|
||||
info(udev, "can not read '%s'\n", file_name);
|
||||
udev_list_entry_remove(file_loop);
|
||||
}
|
||||
return retval;
|
||||
|
Loading…
Reference in New Issue
Block a user