aboutsummaryrefslogtreecommitdiffstats
path: root/src/fm.c
diff options
context:
space:
mode:
authorverdant <im@verdant.ee>2026-07-28 20:38:07 +0800
committerverdant <im@verdant.ee>2026-07-28 20:44:30 +0800
commit38508ed6e468758939a48cc4eb1ef45f4f452628 (patch)
tree6bf23d7d78a9b9bb2f5ac9cc43e17765df1cd352 /src/fm.c
parent14bdd63e40e913dfce20190de923d2aca0d1d45a (diff)
downloadsf-38508ed6e468758939a48cc4eb1ef45f4f452628.tar.gz
sf-38508ed6e468758939a48cc4eb1ef45f4f452628.zip
Refactor open_with_editor()
Use spawn() instead of fork child process and execute external commands manually.
Diffstat (limited to 'src/fm.c')
-rw-r--r--src/fm.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/src/fm.c b/src/fm.c
index a112e13..0ab41bc 100644
--- a/src/fm.c
+++ b/src/fm.c
@@ -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;
}