From 9c9a0a97121669ff9174ccce41a0d259e7d2b25b Mon Sep 17 00:00:00 2001 From: Daniel Hammer Date: Wed, 25 Mar 2026 07:49:51 +0100 Subject: [PATCH] feat: add touch command --- programs/src/rm/main.cpp | 1 + programs/src/touch/main.cpp | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 programs/src/touch/main.cpp diff --git a/programs/src/rm/main.cpp b/programs/src/rm/main.cpp index b361ab7..0f05156 100644 --- a/programs/src/rm/main.cpp +++ b/programs/src/rm/main.cpp @@ -25,6 +25,7 @@ extern "C" void _start() { } } else { montauk::print("usage: rm [file]\n"); + montauk::exit(-1); } montauk::exit(0); diff --git a/programs/src/touch/main.cpp b/programs/src/touch/main.cpp new file mode 100644 index 0000000..3362d77 --- /dev/null +++ b/programs/src/touch/main.cpp @@ -0,0 +1,31 @@ +/* + * main.cpp + * touch command (file create) + * Copyright (c) 2026 Daniel Hammer +*/ + +#include +#include + +extern "C" void _start() { + char args[256]; + montauk::getargs((char *)&args, 256); + + if (*args) { + const char* arg = montauk::skip_spaces((const char *)&args); + int fd = montauk::open(arg); + montauk::close(fd); + + if (fd >= 0) { /* file already exists */ + montauk::exit(0); + } else { + int fd = montauk::fcreate(arg); + montauk::close(fd); + + montauk::exit(0); + } + } else { + montauk::print("usage: touch [filename]\n"); + montauk::exit(-1); + } +} \ No newline at end of file