summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-05-31 17:17:57 -0400
committerIan Moffett <ian@osmora.org>2025-05-31 17:17:57 -0400
commit65024f230dd030f2f10c155f63b1d374aac00f86 (patch)
tree6365c025fc880f9b262684b03272419ed3c80eeb
parent19497ac00ceb8e225ce7008df26024d4c6a1d2b9 (diff)
usr.bin: Add simple `fetch' program
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--usr.bin/fetch/Makefile6
-rw-r--r--usr.bin/fetch/fetch.c58
-rw-r--r--usr.bin/osh/osh.c2
3 files changed, 66 insertions, 0 deletions
diff --git a/usr.bin/fetch/Makefile b/usr.bin/fetch/Makefile
new file mode 100644
index 0000000..4b08e84
--- /dev/null
+++ b/usr.bin/fetch/Makefile
@@ -0,0 +1,6 @@
+include user.mk
+
+CFILES = $(shell find . -name "*.c")
+
+$(ROOT)/base/usr/bin/fetch:
+ gcc $(CFILES) -o $@ $(INTERNAL_CFLAGS)
diff --git a/usr.bin/fetch/fetch.c b/usr.bin/fetch/fetch.c
new file mode 100644
index 0000000..98b2d3c
--- /dev/null
+++ b/usr.bin/fetch/fetch.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2023-2025 Ian Marco Moffett and the Osmora Team.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Hyra nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+
+#define prcons(FD, STR) write((FD), (STR), strlen((STR)))
+
+#define ASCII_ART \
+ " ____ \n" \
+ " | \\__\\ \n" \
+ " | /\\ \\ user: root\n" \
+ " |/ \\ \\ OS: Hyra/amd64 v"_OSVER"\n" \
+ " \\ R. \\ \\ arch: "_OSARCH"\n" \
+ " \\ I. \\ \\\n"
+
+
+int
+main(void)
+{
+ int fd;
+
+ fd = open("/dev/console", O_WRONLY);
+ if (fd < 0) {
+ return fd;
+ }
+
+ prcons(fd, ASCII_ART);
+ close(fd);
+ return 0;
+}
diff --git a/usr.bin/osh/osh.c b/usr.bin/osh/osh.c
index 4e16463..583f29a 100644
--- a/usr.bin/osh/osh.c
+++ b/usr.bin/osh/osh.c
@@ -51,6 +51,7 @@
"reboot - Reboot the machine\n" \
"shutdown - Power off the machine\n" \
"kmsg - Print kernel message buffer\n" \
+ "fetch - System information\n" \
"exit - Exit the shell\n"
#define PROMPT "[root::osmora]~ "
@@ -188,6 +189,7 @@ struct command cmds[] = {
{"reboot", NULL, cmd_reboot},
{"shutdown", NULL, cmd_shutdown},
{"kmsg", "/usr/bin/kmsg", NULL},
+ {"fetch", "/usr/bin/fetch", NULL},
{NULL, NULL}
};