diff --git a/userprog/parse_arguments.c b/userprog/parse_arguments.c index 71abd85bcc806cd23e693f543bf4d8891c9a2aee..785058f398ca3121392e632434da63ad3f008166 100644 --- a/userprog/parse_arguments.c +++ b/userprog/parse_arguments.c @@ -14,6 +14,12 @@ int parse_arguments(const char* command_line, char**argv) { printf("parse_arguments(): argv[0] = '%s'\n", argv[0]); argc++; // now, parse token-by-token for any additional arguments - // TODO: implementation! + char* token = strtok_r(NULL, " ", &state_pointer); + while (token != NULL) { + argv[argc] = token; + printf("parse_arguments(): argv[%d] = '%s'\n", argc, argv[argc]); + argc++; + token = strtok_r(NULL, " ", &state_pointer); + } return argc; } diff --git a/userprog/process.c b/userprog/process.c index ce72cf27604a863c4c658a2f26ebc05da80f86c4..34c5aa6f41d17f760dcc720a374fad5d6aa2ffc9 100644 --- a/userprog/process.c +++ b/userprog/process.c @@ -241,7 +241,9 @@ load (const char *command, void (**eip) (void), void **esp) strlcpy(command_copy, command, 255); printf("load(): command_copy = '%s'\n", command_copy); int argc = parse_arguments(command_copy, argv); - printf("load(): argv[0] = '%s'\n", argv[0]); + for (int i = 0; i < argc; i++) { + printf("load(): argv[%d] = '%s'\n", i, argv[i]); + } char* file_name = argv[0]; // file name is always argument 0 /* Allocate and activate page directory. */