/* count arguments */
for (i = 0; i != length; ++i) {
if (buffer[i] == '\0')
++argc;
}
/* allocate argument array */
argv = (char**)malloc(argc * sizeof(char*));
if (argv == 0)
deal_with_error();
/* parse out arguments */
c = buffer;
for (i = 0; i != argc; ++i) {
argv[i] = c;
c += strlen© + 1;
}
/* exec command */
process_zmp(argc, argv);
/* don't leak memory */
free(argv);
barberpole = ""
for i = 33, 127 do
barberpole = barberpole .. string.char (i)
end – for
line = ""
for i = 1, 10000 do
line = line .. string.format ("(%i) %s", i, barberpole)
end – for
line = line .. "\n"
Simulate (line)
package.prompt | hp | 100 | maxhp | 200 | mana | 100 | maxmana | 100 | fatigue | 100 | maxfatigue | 150 | mentalstate | 100 | maxmentalstate <OOPS>
Or imagine you're sending a list of inventory items…
package.inventory | item1 | item2 | item3 | … | item15 | …item16<OOPS>
To refresh my memory: why are we restricting things like this?