From: Sascha Hauer <s.hauer@pengutronix.de>
To: barebox@lists.infradead.org
Subject: [PATCH 1/2] boot command: honour global.boot.default also for -l and -m
Date: Wed, 19 Mar 2014 16:20:10 +0100 [thread overview]
Message-ID: <1395242411-10247-1-git-send-email-s.hauer@pengutronix.de> (raw)
The boot command is expected to work on bootsources from the commandline
if given, on global.boot.default otherwise. Fix this behaviour for the
-m and -l options also.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
commands/boot.c | 79 +++++++++++++++++++++++++++++++++++----------------------
1 file changed, 48 insertions(+), 31 deletions(-)
diff --git a/commands/boot.c b/commands/boot.c
index bb8d07f..9c7aa21 100644
--- a/commands/boot.c
+++ b/commands/boot.c
@@ -333,9 +333,11 @@ static int boot(const char *name)
static int do_boot(int argc, char *argv[])
{
- const char *sources = NULL;
- char *source, *freep;
+ char *freep = NULL;
int opt, ret = 0, do_list = 0, do_menu = 0;
+ char **sources;
+ int num_sources;
+ int i;
verbose = 0;
dryrun = 0;
@@ -361,47 +363,62 @@ static int do_boot(int argc, char *argv[])
}
}
- if (do_list) {
- bootsources_list(&argv[optind], argc - optind);
- return 0;
- }
+ if (optind < argc) {
+ num_sources = argc - optind;
+ sources = xmemdup(&argv[optind], sizeof(char *) * num_sources);
+ } else {
+ const char *def;
+ char *sep;
- if (do_menu) {
- bootsources_menu(&argv[optind], argc - optind);
- return 0;
- }
+ def = getenv("global.boot.default");
+ if (!def)
+ return 0;
- if (optind < argc) {
- while (optind < argc) {
- source = argv[optind];
- optind++;
- ret = boot(source);
- if (!ret)
+ sep = freep = xstrdup(def);
+
+ num_sources = 0;
+
+ while (1) {
+ num_sources++;
+
+ sep = strchr(sep, ' ');
+ if (!sep)
break;
+ sep++;
+ }
+
+ sources = xmalloc(sizeof(char *) * num_sources);
+
+ sep = freep;
+
+ for (i = 0; i < num_sources; i++) {
+ sources[i] = sep;
+ sep = strchr(sep, ' ');
+ if (sep)
+ *sep = 0;
+ sep++;
}
- return ret;
}
- sources = getenv("global.boot.default");
- if (!sources)
- return 0;
+ if (do_list) {
+ bootsources_list(sources, num_sources);
+ goto out;
+ }
- freep = source = xstrdup(sources);
+ if (do_menu) {
+ bootsources_menu(sources, num_sources);
+ goto out;
+ }
- while (1) {
- char *sep = strchr(source, ' ');
- if (sep)
- *sep = 0;
- ret = boot(source);
+ for (i = 0; i < num_sources; i++) {
+ ret = boot(sources[i]);
if (!ret)
break;
-
- if (sep)
- source = sep + 1;
- else
- break;
+ goto out;
}
+out:
+ free(sources);
free(freep);
return ret;
--
1.9.0
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next reply other threads:[~2014-03-19 15:20 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-19 15:20 Sascha Hauer [this message]
2014-03-19 15:20 ` [PATCH 2/2] boot command: only create boot entries from scripts Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1395242411-10247-1-git-send-email-s.hauer@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox