diff options
Diffstat (limited to 'nt/runemacs.c')
-rw-r--r-- | nt/runemacs.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/nt/runemacs.c b/nt/runemacs.c index 88e14a30d81..dc8d1bfe710 100644 --- a/nt/runemacs.c +++ b/nt/runemacs.c @@ -34,6 +34,7 @@ WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow) SECURITY_DESCRIPTOR sec_desc; PROCESS_INFORMATION child; int wait_for_child = FALSE; + DWORD priority_class = NORMAL_PRIORITY_CLASS; DWORD ret_code = 0; char *new_cmdline; char *p; @@ -82,13 +83,28 @@ WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow) strcat (new_cmdline, "\\emacs.exe "); #endif - /* Append original arguments if any; first look for -wait as first - argument, and apply that ourselves. */ - if (strncmp (cmdline, "-wait", 5) == 0) + /* Append original arguments if any; first look for arguments we + recognise (-wait, -high, and -low), and apply them ourselves. */ + while (cmdline[0] == '-' || cmdline[0] == '/') { + if (strncmp (cmdline+1, "wait", 4) == 0) + { wait_for_child = TRUE; cmdline += 5; } + else if (strncmp (cmdline+1, "high", 4) == 0) + { + priority_class = HIGH_PRIORITY_CLASS; + cmdline += 5; + } + else if (strncmp (cmdline+1, "low", 3) == 0) + { + priority_class = IDLE_PRIORITY_CLASS; + cmdline += 4; + } + else + break; + } strcat (new_cmdline, cmdline); /* Set emacs_dir variable if runemacs was in "%emacs_dir%\bin". */ @@ -109,7 +125,7 @@ WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow) sec_attrs.lpSecurityDescriptor = NULL; sec_attrs.bInheritHandle = FALSE; - if (CreateProcess (NULL, new_cmdline, &sec_attrs, NULL, TRUE, 0, + if (CreateProcess (NULL, new_cmdline, &sec_attrs, NULL, TRUE, priority_class, NULL, NULL, &start, &child)) { if (wait_for_child) |