# HG changeset patch # User Pascal Bellard # Date 1249742001 -7200 # Node ID a583621eb383b09de9948a1734a18b8288fbed0b # Parent b6b64851e9aae29ed176a3d6bbd866bd07c2399f syslinux/ifmem: more generic algorithm for cmdline diff -r b6b64851e9aa -r a583621eb383 syslinux/stuff/extra/ifmem.c --- a/syslinux/stuff/extra/ifmem.c Sat Aug 08 16:06:48 2009 +0200 +++ b/syslinux/stuff/extra/ifmem.c Sat Aug 08 16:33:21 2009 +0200 @@ -54,7 +54,7 @@ int main(int argc, char *argv[]) { char *s; - int i; + int i, j; for (s = argv[1]; *s && (*s < '0' || *s > '9'); s++); @@ -66,15 +66,17 @@ // find target according to ram size for (i = 1; i + 2 < argc; ) { - i++; // size + j = i++; // size if (memory_size() >= strtoul(s, NULL, 0)) break; s = argv[++i]; } // find and copy extra parameters to command line - // assume last parameter is "noram" - for (s = argv[i]; i < argc; i++) { - if (!strcmp(argv[i],"noram") && ++i < argc) { + // assume the command line ends with two words (not number) + for (s = argv[i++]; i < argc; i++) { + char c = argv[i]; + if (c >= '0' && c <= '9') j = i; + if (i - j > 2 && ++i < argc) { #define SZ 512 static char cmdline[SZ]; char *p = cmdline, *q = s;