chiark / gitweb /
libudev: get rid of udev_sysfs.c
[elogind.git] / udev / udev_rules.c
index b864599a9d5d980526d6b7560e20f609107ce893..fce73e4293fc8226b52aac327a205f4ce47b6d18 100644 (file)
@@ -1,20 +1,19 @@
 /*
  * Copyright (C) 2003 Greg Kroah-Hartman <greg@kroah.com>
- * Copyright (C) 2003-2006 Kay Sievers <kay.sievers@vrfy.org>
+ * Copyright (C) 2003-2008 Kay Sievers <kay.sievers@vrfy.org>
  *
- *     This program is free software; you can redistribute it and/or modify it
- *     under the terms of the GNU General Public License as published by the
- *     Free Software Foundation version 2 of the License.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
  *
- *     This program is distributed in the hope that it will be useful, but
- *     WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *     General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public License along
- *     with this program; if not, write to the Free Software Foundation, Inc.,
- *     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <stddef.h>
@@ -35,7 +34,6 @@
 
 #include "udev.h"
 #include "udev_rules.h"
-#include "udev_selinux.h"
 
 extern char **environ;
 
@@ -486,10 +484,10 @@ static int pass_env_to_socket(struct udev *udev, const char *sockpath, const cha
                saddrlen = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&saddr.sun_path[1]);
        }
 
-       bufpos = snprintf(buf, sizeof(buf)-1, "%s@%s", action, devpath);
+       bufpos = snprintf(buf, sizeof(buf), "%s@%s", action, devpath);
        bufpos++;
-       for (i = 0; environ[i] != NULL && bufpos < (sizeof(buf)-1); i++) {
-               bufpos += strlcpy(&buf[bufpos], environ[i], sizeof(buf) - bufpos-1);
+       for (i = 0; environ[i] != NULL && bufpos < (sizeof(buf)); i++) {
+               bufpos += strlcpy(&buf[bufpos], environ[i], sizeof(buf) - bufpos);
                bufpos++;
        }
        if (bufpos > sizeof(buf))
@@ -850,10 +848,8 @@ found:
                                        do {
                                                dbg(udevice->udev, "looking at '%s'\n", dev_parent->devpath);
                                                value = sysfs_attr_get_value(udevice->udev, dev_parent->devpath, attr);
-                                               if (value != NULL) {
-                                                       strlcpy(temp2, value, sizeof(temp2));
+                                               if (value != NULL)
                                                        break;
-                                               }
                                                dev_parent = sysfs_device_get_parent(udevice->udev, dev_parent);
                                        } while (dev_parent != NULL);
                                }
@@ -1370,6 +1366,7 @@ nomatch:
 
 int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
 {
+       struct udev_rules_iter iter;
        struct udev_rule *rule;
        int name_set = 0;
 
@@ -1377,9 +1374,9 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
        dbg(udevice->udev, "udevice->dev->kernel='%s'\n", udevice->dev->kernel);
 
        /* look for a matching rule to apply */
-       udev_rules_iter_init(rules);
+       udev_rules_iter_init(&iter, rules);
        while (1) {
-               rule = udev_rules_iter_next(rules);
+               rule = udev_rules_iter_next(&iter);
                if (rule == NULL)
                        break;
 
@@ -1532,7 +1529,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
 
                        if (rule->goto_label.operation != KEY_OP_UNSET) {
                                dbg(udevice->udev, "moving forward to label '%s'\n", key_val(rule, &rule->goto_label));
-                               udev_rules_iter_label(rules, key_val(rule, &rule->goto_label));
+                               udev_rules_iter_label(&iter, key_val(rule, &rule->goto_label));
                        }
                }
        }
@@ -1553,14 +1550,15 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
 
 int udev_rules_get_run(struct udev_rules *rules, struct udevice *udevice)
 {
+       struct udev_rules_iter iter;
        struct udev_rule *rule;
 
        dbg(udevice->udev, "udevice->kernel='%s'\n", udevice->dev->kernel);
 
        /* look for a matching rule to apply */
-       udev_rules_iter_init(rules);
+       udev_rules_iter_init(&iter, rules);
        while (1) {
-               rule = udev_rules_iter_next(rules);
+               rule = udev_rules_iter_next(&iter);
                if (rule == NULL)
                        break;
 
@@ -1611,7 +1609,7 @@ int udev_rules_get_run(struct udev_rules *rules, struct udevice *udevice)
 
                        if (rule->goto_label.operation != KEY_OP_UNSET) {
                                dbg(udevice->udev, "moving forward to label '%s'\n", key_val(rule, &rule->goto_label));
-                               udev_rules_iter_label(rules, key_val(rule, &rule->goto_label));
+                               udev_rules_iter_label(&iter, key_val(rule, &rule->goto_label));
                        }
                }
        }