1
0
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:
Kay Sievers 2008-10-16 21:12:08 +02:00
parent a390e6f764
commit be7f7f5701
3 changed files with 12 additions and 6 deletions

View File

@ -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))

View File

@ -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) \

View File

@ -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;