- uargs[uargc++] = argv[argi-1];
- if(allargs) {
- for(argi++; argi <= argc; argi++)
- uargs[uargc++] = argv[argi-1];
+ uargs[uargc++] = args_buffer + args_pos;
+ if(allargs == 0) {
+ args_pos += sprintf(args_buffer + args_pos, "%s", argv[argi-1]) + 1;
+ } else if(allargs == 1) {
+ args_pos += sprintf(args_buffer + args_pos, "%s", argv[argi-1]) + 1;
+ for(argi++; argi <= argc; argi++) {
+ uargs[uargc++] = args_buffer + args_pos;
+ args_pos += sprintf(args_buffer + args_pos, "%s", argv[argi-1]) + 1;
+ }
+ } else if(allargs == 2) {
+ for(;argi <= argc; argi++) {
+ args_pos += sprintf(args_buffer + args_pos, (allargs ? "%s" : " %s"), argv[argi-1]);
+ allargs = 0;
+ }
+ args_pos++;