feat: copy, move commands

This commit is contained in:
2026-04-06 09:20:29 +02:00
parent dd628f9fb2
commit c1c06a0438
2 changed files with 145 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
/*
* main.cpp
* move - command to move/rename files
* Copyright (c) 2026 Daniel Hammer
*/
#include <montauk/syscall.h>
#include <montauk/string.h>
extern "C" void _start() {
char args[256];
montauk::getargs((char *)&args, 256);
const char* p = montauk::skip_spaces((const char *)&args);
if (*p == '\0') {
montauk::print("usage: move [source] [dest]\n");
montauk::exit(-1);
}
// Parse source path
const char* src = p;
while (*p && *p != ' ') p++;
if (*p == '\0') {
montauk::print("move: missing destination\n");
montauk::exit(-1);
}
char srcPath[256];
size_t len = p - src;
if (len >= sizeof(srcPath)) len = sizeof(srcPath) - 1;
for (size_t i = 0; i < len; i++) srcPath[i] = src[i];
srcPath[len] = '\0';
// Parse dest path
p = montauk::skip_spaces(p);
if (*p == '\0') {
montauk::print("move: missing destination\n");
montauk::exit(-1);
}
const char* dst = p;
if (montauk::frename(srcPath, dst) < 0) {
montauk::print("move: failed to move file\n");
montauk::exit(-1);
}
montauk::exit(0);
}