aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-09-01 00:39:44 +0000
committer_ov4 <ov4@ov4.org>2026-09-01 00:39:44 +0000
commit5e94ca9f060d2952ef08913234c500a815f734bf (patch)
tree169e6c67289b70753aa76edb818f3b1f63112884 /src
parent54261d62d47624e9ff4724c42aaa05eaf478e606 (diff)
refactor
Diffstat (limited to 'src')
-rw-r--r--src/command/builtin.cc23
-rw-r--r--src/command/quit.cc13
-rw-r--r--src/eval.cc21
-rw-r--r--src/global.cc1
-rw-r--r--src/main.cc2
-rw-r--r--src/util/io.cc (renamed from src/util.cc)21
6 files changed, 49 insertions, 32 deletions
diff --git a/src/command/builtin.cc b/src/command/builtin.cc
new file mode 100644
index 0000000..b2c3149
--- /dev/null
+++ b/src/command/builtin.cc
@@ -0,0 +1,23 @@
+#include "command/builtin.h"
+
+namespace ov4
+{
+
+using namespace std;
+
+//array<string> builtin_cmd_list{"quit", "fg", "bg", "jobs"};
+
+/*
+ * builtin_cmd - If the user has typed a built-in command then execute
+ * it immediately.
+ */
+bool exe_bultin_command(char **argv)
+{
+ if (argv == nullptr || argv[0] == nullptr) exit(1); // WTF???
+ if (strcmp(argv[0], "quit") == 0) { ov4::command::quit(); return true; }
+ else return false;
+}
+
+
+
+}
diff --git a/src/command/quit.cc b/src/command/quit.cc
new file mode 100644
index 0000000..917f642
--- /dev/null
+++ b/src/command/quit.cc
@@ -0,0 +1,13 @@
+#include "command/builtin.h"
+
+namespace ov4::command
+{
+
+using namespace ov4;
+
+void quit()
+{
+ exit(0);
+}
+
+}
diff --git a/src/eval.cc b/src/eval.cc
index 4350367..1b5884f 100644
--- a/src/eval.cc
+++ b/src/eval.cc
@@ -27,17 +27,18 @@ void eval(char *cmdline)
int ground = parseline(cmdline, argv);
if (argv[0] == nullptr) return;
+ if (exe_bultin_command(argv)) return;
- if (builtin_cmd(argv[0]))
- {
- LOG << "built-in" << endl;
- if (strcmp(argv[0], "quit") == 0) builtin_command_quit();
- else if (strcmp(argv[0], "jobs") == 0) listjobs(jobs);
- else if (strcmp(argv[0], "fg") == 0) do_bgfg(argv);
- else if (strcmp(argv[0], "bg") == 0) do_bgfg(argv);
- else cerr << "built-in but not supported" << endl;
- return;
- }
+ // if (builtin_cmd(argv[0]))
+ // {
+ // LOG << "built-in" << endl;
+ // if (strcmp(argv[0], "quit") == 0) builtin_command_quit();
+ // else if (strcmp(argv[0], "jobs") == 0) listjobs(jobs);
+ // else if (strcmp(argv[0], "fg") == 0) do_bgfg(argv);
+ // else if (strcmp(argv[0], "bg") == 0) do_bgfg(argv);
+ // else cerr << "built-in but not supported" << endl;
+ // return;
+ // }
sigset_t prev;
block_all(&prev);
diff --git a/src/global.cc b/src/global.cc
index 5b92331..0995b4d 100644
--- a/src/global.cc
+++ b/src/global.cc
@@ -6,6 +6,5 @@ namespace ov4
using namespace std;
int verbose = 0;
-vector<string> builtin_cmd_list = {"quit", "fg", "bg", "jobs"};
}
diff --git a/src/main.cc b/src/main.cc
index f75dc7d..04aca2a 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -11,7 +11,7 @@
#include <vector>
#include <string>
-#include "util.h"
+#include "util/io.h"
#include "job.h"
#include "parse.h"
#include "handler.h"
diff --git a/src/util.cc b/src/util/io.cc
index 9574ce6..531bd47 100644
--- a/src/util.cc
+++ b/src/util/io.cc
@@ -1,4 +1,4 @@
-#include "util.h"
+#include "util/io.h"
namespace ov4
{
@@ -96,23 +96,4 @@ char *itoa(int num, char* str, int base)
return str;
}
-/*
- * builtin_cmd - If the user has typed a built-in command then execute
- * it immediately.
- */
-int builtin_cmd(char *c_str)
-{
- string s(c_str);
- for (auto c : builtin_cmd_list)
- if (c == s)
- return 1;
- return 0; /* not a builtin command */
-}
-
-void builtin_command_quit()
-{
- exit(0);
-}
-
-
}