diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-02-23 18:24:46 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-02-23 18:24:46 +0100 |
| commit | 8f14d369599ece9fdb9c0641e261e28d99f4c1c9 (patch) | |
| tree | 25a15b3140b3b1c9a0932347cb5c6d2be9f23e9d /src | |
| parent | ab83c9c8e73a6ed3d98691d615a378ccbc3e4888 (diff) | |
| download | pintos-8f14d369599ece9fdb9c0641e261e28d99f4c1c9.tar.gz | |
loft variable declarations
Diffstat (limited to 'src')
| -rw-r--r-- | src/userprog/process.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/userprog/process.c b/src/userprog/process.c index 84aea39..589b48b 100644 --- a/src/userprog/process.c +++ b/src/userprog/process.c @@ -295,17 +295,19 @@ load (const char *file_name, void (**eip) (void), void **esp) goto done; } + size_t cmd_len, word_alignment; + char *esp_cmd, **esp_argv_first, **esp_argv_entry, ***esp_argv; + int *esp_argc, argc = 0; + /* Copy passed command to start of user stack. */ - size_t cmd_len = strlen (file_name); - char *esp_cmd = *esp; + cmd_len = strlen (file_name); + esp_cmd = *esp; esp_cmd -= cmd_len + 1; // +1 makes room for '\0' - for (size_t i = 0; i < cmd_len; i++) { + for (i = 0; i < cmd_len; i++) { esp_cmd[i] = file_name[i]; } esp_cmd[cmd_len] = '\0'; - unsigned argc = 0; - /* Tokenize passed command in-place. */ // esp_cmd still points to first character of passed command char *token, *save_ptr; @@ -319,29 +321,29 @@ load (const char *file_name, void (**eip) (void), void **esp) /* argv entries are pointers so they need to be aligned to the pointer size. */ size_t psize = sizeof (char *); - size_t word_alignment = (cmd_len + psize) / psize; + word_alignment = (cmd_len + psize) / psize; /* Write argv entries. */ - char **esp_argv_entry = *esp; + esp_argv_entry = *esp; esp_argv_entry -= word_alignment + argc + 1; // +1 makes room for argv[argc] = NULL - char **esp_argv_first = esp_argv_entry; // save for later + esp_argv_first = esp_argv_entry; // save for later // esp_cmd points to first entry so write directly *esp_argv_entry = esp_cmd; esp_argv_entry++; - for (unsigned i = 0; i < argc - 1; i++) { + for (i = 0; i < argc - 1; i++) { // find next \0 in cmd while (*(++esp_cmd) != '\0') {} *esp_argv_entry = esp_cmd + 1; // point to next character esp_argv_entry++; } - char ***esp_argv = esp_argv_first - 1; + esp_argv = esp_argv_first - 1; *esp_argv = esp_argv_first; - int *esp_argc = esp_argv - 1; + esp_argc = esp_argv - 1; *esp_argc = argc; *esp = esp_argc - 1; // return address |
