udev: when complaining about invalid characters, print them out

systemd-udevd[6260]: invalid key/value pair in file /usr/lib/udev/rules.d/60-ffado.rules on line 46,starting at character 84 ('#')
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-08-15 20:01:19 -04:00
parent 091526ab20
commit 1291bc895b

View file

@ -34,6 +34,7 @@
#include "conf-files.h"
#include "strbuf.h"
#include "strv.h"
#include "util.h"
#define PREALLOC_TOKEN 2048
@ -1069,10 +1070,17 @@ static int add_rule(struct udev_rules *rules, char *line,
if (get_key(rules->udev, &linepos, &key, &op, &value) != 0) {
/* If we aren't at the end of the line, this is a parsing error.
* Make a best effort to describe where the problem is. */
if (*linepos != '\n')
if (*linepos != '\n') {
char buf[2] = {linepos[1]};
_cleanup_free_ char *tmp;
tmp = cescape(buf);
log_error("invalid key/value pair in file %s on line %u,"
"starting at character %lu\n",
filename, lineno, linepos - line + 1);
"starting at character %lu ('%s')\n",
filename, lineno, linepos - line + 1, tmp);
if (linepos[1] == '#')
log_info("hint: comments can only start at beginning of line");
}
break;
}