chiark / gitweb /
Revert "udev-rules.c: remove 'first_token' variable"
authorKay Sievers <kay.sievers@vrfy.org>
Sun, 6 Sep 2009 14:53:14 +0000 (16:53 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Mon, 7 Sep 2009 10:13:49 +0000 (12:13 +0200)
That was a mistake. The variable is needed to be set before
we parse the file. Thanks a lot to Alan Jenkins for spotting
this.

This reverts commit 710fdac1e49276683abe927472fe1b336960edd8.

udev/udev-rules.c

index da08bc11f69668a807e675743757da033fc76dee..a92446403ff2604568814d455cd907ffd3c63895 100644 (file)
@@ -1568,6 +1568,7 @@ invalid:
 static int parse_file(struct udev_rules *rules, const char *filename, unsigned short filename_off)
 {
        FILE *f;
+       unsigned int first_token;
        char line[UTIL_LINE_SIZE];
        int line_nr = 0;
        unsigned int i;
@@ -1577,7 +1578,10 @@ static int parse_file(struct udev_rules *rules, const char *filename, unsigned s
        f = fopen(filename, "r");
        if (f == NULL)
                return -1;
-       while (fgets(line, sizeof(line), f) != NULL) {
+
+       first_token = rules->token_cur;
+
+       while(fgets(line, sizeof(line), f) != NULL) {
                char *key;
                size_t len;
 
@@ -1614,7 +1618,7 @@ static int parse_file(struct udev_rules *rules, const char *filename, unsigned s
        fclose(f);
 
        /* link GOTOs to LABEL rules in this file to be able to fast-forward */
-       for (i = rules->token_cur+1; i < rules->token_cur; i++) {
+       for (i = first_token+1; i < rules->token_cur; i++) {
                if (rules->tokens[i].type == TK_A_GOTO) {
                        char *label = &rules->buf[rules->tokens[i].key.value_off];
                        unsigned int j;