Iterate over all conf file parsers
authorGeoff Levand <geoffrey.levand@am.sony.com>
Thu, 9 Jul 2009 22:37:25 +0000 (15:37 -0700)
committerGeoff Levand <geoffrey.levand@am.sony.com>
Thu, 9 Jul 2009 22:54:54 +0000 (15:54 -0700)
Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
discover/kboot-parser.c
discover/parser.c
discover/yaboot-parser.c

index 23d48a401f8a82cdff8daf4035f2769d4ccc6971..7c7cb5d0aa08f645c81ac12f0d441f44672c9ce5 100644 (file)
@@ -133,7 +133,7 @@ static int kboot_parse(struct discover_context *dc)
        conf = talloc_zero(dc, struct conf_context);
 
        if (!conf)
-               return -1;
+               return 0;
 
        conf->dc = dc;
        conf->global_options = kboot_global_options,
index 2b4ddd2668e0e30a808184c004c0aac879b0e938..8f2735ccc6553b3d00bdc575b5debdd7b7203a3a 100644 (file)
@@ -13,16 +13,16 @@ extern struct parser __start_parsers[], __stop_parsers[];
 void iterate_parsers(struct discover_context *ctx)
 {
        struct parser *parser;
+       unsigned int count = 0;
 
        pb_log("trying parsers for %s\n", ctx->device_path);
 
        for (parser = __start_parsers; parser < __stop_parsers; parser++) {
                pb_log("\ttrying parser '%s'\n", parser->name);
-               /* just use a dummy device path for now */
-               if (parser->parse(ctx))
-                       return;
+               count += parser->parse(ctx);
        }
-       pb_log("\tno boot_options found\n");
+       if (!count)
+               pb_log("\tno boot_options found\n");
 }
 
 static int compare_parsers(const void *a, const void *b)
index 1000505b9681df66da2bfff4e17709d503c0175e..6101cd89f12ec8c0540b2701a7017cd2621f7de6 100644 (file)
@@ -295,7 +295,7 @@ static int yaboot_parse(struct discover_context *dc)
        conf = talloc_zero(dc, struct conf_context);
 
        if (!conf)
-               return -1;
+               return 0;
 
        conf->dc = dc;
        conf->global_options = yaboot_global_options,