diff options
| author | verdant <im@verdant.ee> | 2026-07-28 20:38:07 +0800 |
|---|---|---|
| committer | verdant <im@verdant.ee> | 2026-07-28 20:44:30 +0800 |
| commit | 38508ed6e468758939a48cc4eb1ef45f4f452628 (patch) | |
| tree | 6bf23d7d78a9b9bb2f5ac9cc43e17765df1cd352 | |
| parent | 14bdd63e40e913dfce20190de923d2aca0d1d45a (diff) | |
| download | sf-38508ed6e468758939a48cc4eb1ef45f4f452628.tar.gz sf-38508ed6e468758939a48cc4eb1ef45f4f452628.zip | |
Refactor open_with_editor()
Use spawn() instead of fork child process and execute external
commands manually.
| -rw-r--r-- | src/fm.c | 16 |
1 files changed, 3 insertions, 13 deletions
@@ -3,6 +3,7 @@ #include "display.h" #include "err.h" #include "log.h" +#include "process.h" #include "wm.h" #include <curses.h> #include <dirent.h> @@ -458,7 +459,6 @@ fm_getenv(void) int open_with_editor(char **argv) { - pid_t pid; def_prog_mode(); endwin(); @@ -466,18 +466,8 @@ open_with_editor(char **argv) argv[0] = utils[UTIL_VI]; } - if ((pid = fork()) < 0) { - log_write(LOG_ERR, "fork error"); - return -1; - } else if (pid == 0) { - if (execvp(argv[0], argv) < 0) { - log_write(LOG_ERR, "execvp error"); - return -1; - } - } else { - wait(NULL); - need_redraw = true; - } + spawn(argv); + need_redraw = true; return 0; } |
