diff options
Diffstat (limited to 'udev/lib')
| -rw-r--r-- | udev/lib/libudev-list.c | 13 | ||||
| -rw-r--r-- | udev/lib/libudev-private.h | 16 | 
2 files changed, 22 insertions, 7 deletions
| diff --git a/udev/lib/libudev-list.c b/udev/lib/libudev-list.c index 76c2f7e93b..606e3d5d63 100644 --- a/udev/lib/libudev-list.c +++ b/udev/lib/libudev-list.c @@ -43,14 +43,14 @@ void udev_list_init(struct udev_list_node *list)  	list->prev = list;  } -static int udev_list_is_empty(struct udev_list_node *list) +int udev_list_is_empty(struct udev_list_node *list)  {  	return list->next == list;  }  static void udev_list_node_insert_between(struct udev_list_node *new, -				     struct udev_list_node *prev, -				     struct udev_list_node *next) +					  struct udev_list_node *prev, +					  struct udev_list_node *next)  {  	next->prev = new;  	new->next = next; @@ -58,7 +58,12 @@ static void udev_list_node_insert_between(struct udev_list_node *new,  	prev->next = new;  } -static void udev_list_node_remove(struct udev_list_node *entry) +void udev_list_node_append(struct udev_list_node *new, struct udev_list_node *list) +{ +	udev_list_node_insert_between(new, list->prev, list); +} + +void udev_list_node_remove(struct udev_list_node *entry)  {  	struct udev_list_node *prev = entry->prev;  	struct udev_list_node *next = entry->next; diff --git a/udev/lib/libudev-private.h b/udev/lib/libudev-private.h index 50c96571c5..07f1491773 100644 --- a/udev/lib/libudev-private.h +++ b/udev/lib/libudev-private.h @@ -124,19 +124,29 @@ struct udev_list_node {  	struct udev_list_node *next, *prev;  };  extern void udev_list_init(struct udev_list_node *list); -extern void udev_list_cleanup(struct udev *udev, struct udev_list_node *name_list); +extern int udev_list_is_empty(struct udev_list_node *list); +extern void udev_list_node_append(struct udev_list_node *new, struct udev_list_node *list); +extern void udev_list_node_remove(struct udev_list_node *entry); +#define udev_list_node_foreach(node, list) \ +	for (node = (list)->next; \ +	     node != list; \ +	     node = (node)->next) +#define udev_list_node_foreach_safe(node, tmp, list) \ +	for (node = (list)->next, tmp = (node)->next; \ +	     node != list; \ +	     node = tmp, tmp = (tmp)->next)  extern struct udev_list_entry *udev_list_entry_add(struct udev *udev, struct udev_list_node *list,  						   const char *name, const char *value,  						   int unique, int sort);  extern void udev_list_entry_remove(struct udev_list_entry *entry); +extern void udev_list_cleanup(struct udev *udev, struct udev_list_node *name_list);  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_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) \ -	for (entry = first, \ -	     tmp = udev_list_entry_get_next(entry); \ +	for (entry = first, tmp = udev_list_entry_get_next(entry); \  	     entry != NULL; \  	     entry = tmp, tmp = udev_list_entry_get_next(tmp)) | 
