/*
* 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>
#include "udev.h"
#include "udev_rules.h"
-#include "udev_selinux.h"
extern char **environ;
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))
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);
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;
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);
}
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;
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;
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);
}
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);
}
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));
}
}
}
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;
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));
}
}
}