chiark / gitweb /
convert to libudev and delete udev_utils_string.c
[elogind.git] / udev / udev_rules.c
index ce1f66ecd6364e6b7621a8a9cba7c7672f9c5d35..a56ed4e1769166819d798ed00d4a6f8436aa8e13 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))
@@ -865,7 +863,7 @@ found:
                                        size = sizeof(temp2)-1;
                                while (size > 0 && isspace(temp2[size-1]))
                                        temp2[--size] = '\0';
-                               count = replace_chars(temp2, ALLOWED_CHARS_INPUT);
+                               count = util_replace_chars(temp2, ALLOWED_CHARS_INPUT);
                                if (count > 0)
                                        info(udevice->udev, "%i character(s) replaced\n" , count);
                                strlcat(string, temp2, maxsize);
@@ -923,7 +921,7 @@ found:
                                        strlcat(symlinks, name_loop->name, sizeof(symlinks));
                                        strlcat(symlinks, " ", sizeof(symlinks));
                                }
-                               remove_trailing_chars(symlinks, ' ');
+                               util_remove_trailing_chars(symlinks, ' ');
                                strlcat(string, symlinks, maxsize);
                        }
                        break;
@@ -1242,10 +1240,10 @@ try_parent:
                        int count;
 
                        dbg(udevice->udev, "PROGRAM matches\n");
-                       remove_trailing_chars(result, '\n');
+                       util_remove_trailing_chars(result, '\n');
                        if (rule->string_escape == ESCAPE_UNSET ||
                            rule->string_escape == ESCAPE_REPLACE) {
-                               count = replace_chars(result, ALLOWED_CHARS_INPUT);
+                               count = util_replace_chars(result, ALLOWED_CHARS_INPUT);
                                if (count > 0)
                                        info(udevice->udev, "%i character(s) replaced\n" , count);
                        }
@@ -1368,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;
 
@@ -1375,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;
 
@@ -1462,7 +1461,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
                                udev_rules_apply_format(udevice, temp, sizeof(temp));
                                if (rule->string_escape == ESCAPE_UNSET ||
                                    rule->string_escape == ESCAPE_REPLACE) {
-                                       count = replace_chars(temp, ALLOWED_CHARS_FILE " ");
+                                       count = util_replace_chars(temp, ALLOWED_CHARS_FILE " ");
                                        if (count > 0)
                                                info(udevice->udev, "%i character(s) replaced\n" , count);
                                }
@@ -1497,7 +1496,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
                                udev_rules_apply_format(udevice, udevice->name, sizeof(udevice->name));
                                if (rule->string_escape == ESCAPE_UNSET ||
                                    rule->string_escape == ESCAPE_REPLACE) {
-                                       count = replace_chars(udevice->name, ALLOWED_CHARS_FILE);
+                                       count = util_replace_chars(udevice->name, ALLOWED_CHARS_FILE);
                                        if (count > 0)
                                                info(udevice->udev, "%i character(s) replaced\n", count);
                                }
@@ -1530,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));
                        }
                }
        }
@@ -1551,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;
 
@@ -1609,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));
                        }
                }
        }