X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev_rules_parse.c;h=535b59590a0e21310f5c263168eb6ca83d6e7a2f;hp=5603ee1d11fa83a26578e09ed2a521dd9c7882fa;hb=26133d54e06806456cc990e1cb63ca5ae35052ab;hpb=8bb39322f092fde89bf1082f51715a2f2da1c187 diff --git a/udev_rules_parse.c b/udev_rules_parse.c index 5603ee1d1..535b59590 100644 --- a/udev_rules_parse.c +++ b/udev_rules_parse.c @@ -1,8 +1,6 @@ /* - * udev_rules_parse.c - * * Copyright (C) 2003,2004 Greg Kroah-Hartman - * Copyright (C) 2003-2005 Kay Sievers + * Copyright (C) 2003-2006 Kay Sievers * * 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 @@ -15,7 +13,7 @@ * * 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., - * 675 Mass Ave, Cambridge, MA 02139, USA. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ @@ -243,6 +241,7 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena char *linepos; char *attr; size_t padding; + int physdev = 0; int retval; /* get all the keys */ @@ -375,6 +374,12 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena err("error parsing ATTRS attribute"); goto invalid; } + if (strncmp(attr, "device/", 7) == 0) + err("the 'device' link is deprecated and will be removed from a future kernel, " + "please fix it in %s:%u", filename, lineno); + else if (strchr(attr, '/') != NULL) + err("do not reference parent sysfs directories directly, that may break with a future kernel, " + "please fix it in %s:%u", filename, lineno); if (add_rule_key_pair(rule, &rule->attrs, operation, attr, value) != 0) goto invalid; valid = 1; @@ -387,6 +392,8 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena err("error parsing ENV attribute"); goto invalid; } + if (strncmp(attr, "PHYSDEV", 7) == 0) + physdev = 1; if (add_rule_key_pair(rule, &rule->env, operation, attr, value) != 0) goto invalid; valid = 1; @@ -572,6 +579,10 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena err("unknown key '%s' in %s:%u", key, filename, lineno); } + if (physdev && rule->wait_for_sysfs.operation == KEY_OP_UNSET) + err("PHYSDEV* values are deprecated and will be removed from a future kernel, " + "please fix it in %s:%u", filename, lineno); + /* skip line if not any valid key was found */ if (!valid) goto invalid;