From 8f14d369599ece9fdb9c0641e261e28d99f4c1c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 23 Feb 2021 18:24:46 +0100 Subject: loft variable declarations --- src/userprog/process.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/userprog/process.c') 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 -- cgit v1.2.1