mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Alexander Aring <alex.aring@googlemail.com>
To: barebox@lists.infradead.org
Subject: [PATCH 3/3] sandbox: fix malloc argument
Date: Mon,  3 Sep 2012 08:18:08 +0200	[thread overview]
Message-ID: <1346653088-7576-3-git-send-email-alex.aring@gmail.com> (raw)
In-Reply-To: <1346653088-7576-1-git-send-email-alex.aring@gmail.com>

Fix malloc argument for sandbox system.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
---
 arch/sandbox/os/common.c | 87 +++++++++++++++++++++++++++++++-----------------
 1 file changed, 57 insertions(+), 30 deletions(-)

diff --git a/arch/sandbox/os/common.c b/arch/sandbox/os/common.c
index 92b7dbb..e296574 100644
--- a/arch/sandbox/os/common.c
+++ b/arch/sandbox/os/common.c
@@ -271,33 +271,29 @@ err_out:
 
 static void print_usage(const char*);
 
+static struct option long_options[] = {
+	{"help",   0, 0, 'h'},
+	{"malloc", 1, 0, 'm'},
+	{"image",  1, 0, 'i'},
+	{"env",    1, 0, 'e'},
+	{"stdout", 1, 0, 'O'},
+	{"stdin",  1, 0, 'I'},
+	{0, 0, 0, 0},
+};
+
+static const char optstring[] = "hm:i:e:O:I:";
+
 int main(int argc, char *argv[])
 {
 	void *ram;
 	int opt, ret, fd;
 	int malloc_size = 8 * 1024 * 1024;
 	char str[6];
-	int fdno = 0, envno = 0;
-
-	ram = malloc(malloc_size);
-	if (!ram) {
-		printf("unable to get malloc space\n");
-		exit(1);
-	}
-	mem_malloc_init(ram, ram + malloc_size - 1);
+	int fdno = 0, envno = 0, option_index = 0;
 
 	while (1) {
-		int option_index = 0;
-		static struct option long_options[] = {
-			{"help",   0, 0, 'h'},
-			{"image",  1, 0, 'i'},
-			{"env",    1, 0, 'e'},
-			{"stdout", 1, 0, 'O'},
-			{"stdin",  1, 0, 'I'},
-			{0, 0, 0, 0},
-		};
-
-		opt = getopt_long(argc, argv, "hi:e:O:I:",
+		option_index = 0;
+		opt = getopt_long(argc, argv, optstring,
 			long_options, &option_index);
 
 		if (opt == -1)
@@ -307,18 +303,7 @@ int main(int argc, char *argv[])
 		case 'h':
 			print_usage(basename(argv[0]));
 			exit(0);
-		case 'i':
-			sprintf(str, "fd%d", fdno);
-			ret = add_image(optarg, str);
-			if (ret)
-				exit(1);
-			fdno++;
-			break;
 		case 'm':
-			/* This option is broken. add_image needs malloc, so
-			 * mem_alloc_init() has to be called before option
-			 * parsing
-			 */
 			malloc_size = strtoul(optarg, NULL, 0);
 			break;
 		case 'e':
@@ -351,6 +336,47 @@ int main(int argc, char *argv[])
 		}
 	}
 
+	ram = malloc(malloc_size);
+	if (!ram) {
+		printf("unable to get malloc space\n");
+		exit(1);
+	}
+	mem_malloc_init(ram, ram + malloc_size - 1);
+
+	/* reset getopt */
+	optind = 1;
+
+	while (1) {
+		option_index = 0;
+		opt = getopt_long(argc, argv, optstring,
+			long_options, &option_index);
+
+		if (opt == -1)
+			break;
+
+		switch (opt) {
+		case 'h':
+			break;
+		case 'm':
+			break;
+		case 'i':
+			sprintf(str, "fd%d", fdno);
+			ret = add_image(optarg, str);
+			if (ret)
+				exit(1);
+			fdno++;
+			break;
+		case 'e':
+			break;
+		case 'O':
+			break;
+		case 'I':
+			break;
+		default:
+			exit(1);
+		}
+	}
+
 	barebox_register_console("console", fileno(stdin), fileno(stdout));
 
 	rawmode();
@@ -371,6 +397,7 @@ static void print_usage(const char *prgname)
 "Usage: %s [OPTIONS]\n"
 "Start barebox.\n\n"
 "Options:\n\n"
+"  -m, "
 "  -i, --image=<file>   Map an image file to barebox. This option can be given\n"
 "                       multiple times. The files will show up as\n"
 "                       /dev/fd0 ... /dev/fdx under barebox.\n"
-- 
1.7.12


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2012-09-03  6:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-03  6:18 [PATCH 1/3] sandbox: add asm-generic/io.h Alexander Aring
2012-09-03  6:18 ` [PATCH 2/3] sandbox: fix whitespaces in board file Alexander Aring
2012-09-03  6:18 ` Alexander Aring [this message]
2012-09-03  9:09 ` [PATCH 1/3] sandbox: add asm-generic/io.h 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=1346653088-7576-3-git-send-email-alex.aring@gmail.com \
    --to=alex.aring@googlemail.com \
    --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