From 13f797da7f190e9ea52f2f3d235210b8a4963b21 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 10 Feb 2009 15:44:07 -0800 Subject: auto import from //branches/cupcake/...@130745 --- toolbox/insmod.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'toolbox/insmod.c') diff --git a/toolbox/insmod.c b/toolbox/insmod.c index d084403f..44b98474 100644 --- a/toolbox/insmod.c +++ b/toolbox/insmod.c @@ -45,10 +45,12 @@ bail: return buffer; } +#define min(x,y) ((x) < (y) ? (x) : (y)) int insmod_main(int argc, char **argv) { void *file; - ssize_t size; + ssize_t size = 0; + char opts[1024]; int ret; /* make sure we've got an argument */ @@ -64,9 +66,24 @@ int insmod_main(int argc, char **argv) return -1; } + opts[0] = '\0'; + if (argc > 2) { + int i, len; + char *end = opts + sizeof(opts) - 1; + char *ptr = opts; + + for (i = 2; (i < argc) && (ptr < end); i++) { + len = min(strlen(argv[i]), end - ptr); + memcpy(ptr, argv[i], len); + ptr += len; + *ptr++ = ' '; + *ptr++ = '\0'; + } + *(ptr - 1) = '\0'; + } + /* pass it to the kernel */ - /* XXX options */ - ret = init_module(file, size, ""); + ret = init_module(file, size, opts); if (ret != 0) { fprintf(stderr, "insmod: init_module '%s' failed (%s)\n", -- cgit v1.2.3