X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/de355530ae67247cbd0da700edb3a2a1dae884c2..a3d08fcd5120d2aa8303b6349ca8b14e3f284af3:/pexpert/gen/bootargs.c diff --git a/pexpert/gen/bootargs.c b/pexpert/gen/bootargs.c index 70463e769..a3e5e88dd 100644 --- a/pexpert/gen/bootargs.c +++ b/pexpert/gen/bootargs.c @@ -77,7 +77,12 @@ PE_parse_boot_arg( args = cp+1; goto gotit; } - + if ('_' == *arg_string) /* Force a string copy if the argument name begins with an underscore */ + { + argstrcpy2 (++cp, (char *)arg_ptr, 16); /* Hack - terminate after 16 characters */ + arg_found = TRUE; + break; + } switch (getval(cp, &val)) { case NUM: @@ -126,6 +131,22 @@ argstrcpy( return(i); } +int +argstrcpy2( + char *from, + char *to, + unsigned maxlen) +{ + int i = 0; + + while (!isargsep(*from) && i < maxlen) { + i++; + *to++ = *from++; + } + *to = 0; + return(i); +} + int getval( char *s, @@ -172,6 +193,12 @@ getval( c -= 'a' - 10; else if ((c >= 'A') && (c <= 'F')) c -= 'A' - 10; + else if (c == 'k' || c == 'K') + { sign *= 1024; break; } + else if (c == 'm' || c == 'M') + { sign *= 1024 * 1024; break; } + else if (c == 'g' || c == 'G') + { sign *= 1024 * 1024 * 1024; break; } else if (isargsep(c)) break; else