chiark / gitweb /
apply format char to variables exported by ENV
authorKay Sievers <kay.sievers@suse.de>
Sat, 15 Apr 2006 17:32:05 +0000 (19:32 +0200)
committerKay Sievers <kay.sievers@suse.de>
Sat, 15 Apr 2006 17:32:05 +0000 (19:32 +0200)
udev.h
udev_node.c
udev_rules.c
udev_utils.c

diff --git a/udev.h b/udev.h
index 94d1676..79942e7 100644 (file)
--- a/udev.h
+++ b/udev.h
@@ -136,8 +136,8 @@ struct name_entry {
        char name[PATH_SIZE];
 };
 extern int log_priority(const char *priority);
-extern int name_list_add(struct list_head *name_list, const char *name, int sort);
-extern int name_list_key_add(struct list_head *name_list, const char *key, const char *value);
+extern char *name_list_add(struct list_head *name_list, const char *name, int sort);
+extern char *name_list_key_add(struct list_head *name_list, const char *key, const char *value);
 extern void name_list_cleanup(struct list_head *name_list);
 extern int add_matching_files(struct list_head *name_list, const char *dirname, const char *suffix);
 
index d2889a3..86fdcd3 100644 (file)
@@ -231,7 +231,6 @@ void udev_node_remove_symlinks(struct udevice *udev)
        char filename[PATH_SIZE];
        struct name_entry *name_loop;
        struct stat stats;
-       int retval;
 
        if (!list_empty(&udev->symlink_list)) {
                char symlinks[512] = "";
index 623ca46..5b1e688 100644 (file)
@@ -903,10 +903,13 @@ try_parent:
                if (pair->key.operation == KEY_OP_ASSIGN) {
                        const char *key_name = key_pair_name(rule, pair);
                        const char *value = key_val(rule, &pair->key);
+                       char *key_value = name_list_key_add(&udev->env_list, key_name, value);
+                       if (key_value == NULL)
+                               break;
 
-                       name_list_key_add(&udev->env_list, key_name, value);
-                       setenv(key_name, value, 1);
-                       dbg("export ENV '%s=%s'", key_name, value);
+                       udev_rules_apply_format(udev, key_value, NAME_SIZE);
+                       putenv(key_value);
+                       dbg("export ENV '%s'", key_value);
                }
        }
 
index a37c4df..003d7bd 100644 (file)
@@ -53,7 +53,7 @@ int log_priority(const char *priority)
        return 0;
 }
 
-int name_list_add(struct list_head *name_list, const char *name, int sort)
+char *name_list_add(struct list_head *name_list, const char *name, int sort)
 {
        struct name_entry *loop_name;
        struct name_entry *new_name;
@@ -62,7 +62,7 @@ int name_list_add(struct list_head *name_list, const char *name, int sort)
                /* avoid doubles */
                if (strcmp(loop_name->name, name) == 0) {
                        dbg("'%s' is already in the list", name);
-                       return 0;
+                       return loop_name->name;
                }
        }
 
@@ -73,19 +73,17 @@ int name_list_add(struct list_head *name_list, const char *name, int sort)
                }
 
        new_name = malloc(sizeof(struct name_entry));
-       if (new_name == NULL) {
-               dbg("error malloc");
-               return -ENOMEM;
-       }
+       if (new_name == NULL)
+               return NULL;
 
        strlcpy(new_name->name, name, sizeof(new_name->name));
        dbg("adding '%s'", new_name->name);
        list_add_tail(&new_name->node, &loop_name->node);
 
-       return 0;
+       return new_name->name;
 }
 
-int name_list_key_add(struct list_head *name_list, const char *key, const char *value)
+char *name_list_key_add(struct list_head *name_list, const char *key, const char *value)
 {
        struct name_entry *loop_name;
        struct name_entry *new_name;
@@ -95,22 +93,20 @@ int name_list_key_add(struct list_head *name_list, const char *key, const char *
                        dbg("key already present '%s', replace it", loop_name->name);
                        snprintf(loop_name->name, sizeof(loop_name->name), "%s=%s", key, value);
                        loop_name->name[sizeof(loop_name->name)-1] = '\0';
-                       return 0;
+                       return loop_name->name;
                }
        }
 
        new_name = malloc(sizeof(struct name_entry));
-       if (new_name == NULL) {
-               dbg("error malloc");
-               return -ENOMEM;
-       }
+       if (new_name == NULL)
+               return NULL;
 
        snprintf(new_name->name, sizeof(new_name->name), "%s=%s", key, value);
        new_name->name[sizeof(new_name->name)-1] = '\0';
        dbg("adding '%s'", new_name->name);
        list_add_tail(&new_name->node, &loop_name->node);
 
-       return 0;
+       return new_name->name;
 }
 
 void name_list_cleanup(struct list_head *name_list)