--- busybox-1.18.2/modutils/modutils.c +++ busybox-1.18.2-modprobe/modutils/modutils.c @@ -71,12 +71,11 @@ char* FAST_FUNC parse_cmdline_module_opt optlen = 0; while (*++argv) { options = xrealloc(options, optlen + 2 + strlen(*argv) + 2); - /* Older versions were enclosing space-containing *argv in "", - * but both modprobe and insmod from module-init-tools 3.11.1 - * don't do this anymore. (As to extra trailing space, - * insmod adds it but modprobe does not. We do in both cases) - */ - optlen += sprintf(options + optlen, "%s ", *argv); + /* Spaces handled by "" pairs, but no way of escaping quotes */ +//TODO: module-init-tools version 3.11.1 quotes only value: +//it generates var="val with spaces", not "var=val with spaces" +//(and it won't quote var *name* even if it has spaces) + optlen += sprintf(options + optlen, (strchr(*argv, ' ') ? "\"%s\" " : "%s "), *argv); } return options; }