From ae5027200390d67bceb239a652121c76c398131d Mon Sep 17 00:00:00 2001 From: wullie <1+wullie@noreply.localhost> Date: Tue, 11 Aug 2026 21:05:04 +0000 Subject: [PATCH] Upload files to "/" --- exithandle.c | 38 ++++++++++++++++++++++++++++++++ main.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ syscall.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++ time.c | 24 +++++++++++++++++++++ 4 files changed, 179 insertions(+) create mode 100644 exithandle.c create mode 100644 main.c create mode 100644 syscall.c create mode 100644 time.c diff --git a/exithandle.c b/exithandle.c new file mode 100644 index 0000000..261a770 --- /dev/null +++ b/exithandle.c @@ -0,0 +1,38 @@ +// this code is licenced under Wrathmark licence +// © 2026 wullie wulliestudio.com +// please see attached licence for full usage and rights + +#include "LocalHeader.h" +#include "stdWullie/exit.h" + +#include "stdWullie/definitions/typeNull.h" +#include "stdWullie/namespaces/print.h" +#include "stdWullie/String/colours.h" +// exit not ment to be used in other programs +void exit(int code){ + syscall1(SYS_exit, code); + for(;;){} +} + +// safty last +// errors out with either an error message or generic, and exits +void safeError(char *error){ + + // if the user does provide an error message + if(error == NULL){ + print.text(error); + print.colour("exiting program with code -1\n", RED); + exit(-1); + } + // if no error was provided + print.text("something went wrong: "); + print.colour("exiting with code -1\n", RED); + exit(-1); +} + +// safty?? +void riskyError(){ + print.text("there was an error\n"); + return; +} + diff --git a/main.c b/main.c new file mode 100644 index 0000000..3a8ff4c --- /dev/null +++ b/main.c @@ -0,0 +1,61 @@ +// this code is licenced under Wrathmark licence +// © 2026 wullie wulliestudio.com +// please see attached licence for full usage and rights +#include "LocalHeader.h" +#include "stdWullie.h" + +int main(int argc, char *argv[]){ + + if(argc != 2){ + print.nl("to many or to few arguments were provided"); + print.nl("the test functions for StdWullie use 1 - 7"); + return 0; + } + + long argNumb = convert.toInt(argv[1]); + + switch(argNumb){ + case 1: + print.text("look Ma no stdlib\n"); + print.colour("NOW WITH COLOURS\n", RED); + print.background("and with backgrounds\n", BBLUE); + break; + + case 2: + print.nl("test for safe exit, should close the program"); + safeError(NULL); + break; + + case 3: + print.nl("sleeps for 2 seconds: program will terminate like other test cases"); + sleeper(2); + break; + + case 4: + char string[] = "converts to upper then to lower\n"; + convert.toUpper(string); + print.text(string); + convert.toLower(string); + print.text(string); + break; + + default: + print.nl("args is out or range or is NAN please check avaible args with ./stdwullie"); + break; + } + return 0; +} + +// #I say softly to my self "FUCK your STDLIB"# +// hadles the entry point of code and calls main when registary is set +__attribute__((naked)) void _start(){ + __asm__ __volatile( + "xor %ebp, %ebp\n" + "mov (%rsp), %rdi\n" + "lea 8(%rsp), %rsi\n" + "and $-16, %rsp\n" + "call main\n" + "mov %rax, %rdi\n" + "call exit\n" + ); +} diff --git a/syscall.c b/syscall.c new file mode 100644 index 0000000..31aa439 --- /dev/null +++ b/syscall.c @@ -0,0 +1,56 @@ +// this code is licenced under Wrathmark licence +// © 2026 wullie wulliestudio.com +// please see attached licence for full usage and rights + +#include "LocalHeader.h" +// look at me I am the handler now + + +// each numbered syscall take that amount of arguments eg syscall1 takes one arg + +long syscall1(long number, long arg1){ + long result; + __asm__ __volatile( + "syscall" + : "=a"(result) + : "a"(number), "D"(arg1) + : "rcx", "r11", "memory" + ); + return result; +} + +long syscall2(long number, long arg1, long arg2){ + long result; + __asm__ __volatile( + "syscall" + : "=a"(result) + : "a"(number), "D"(arg1), "S"(arg2) + : "rcx", "r11", "memory" + ); + return result; +} + +long syscall3(long number, long arg1, long arg2, long arg3){ + long result; + __asm__ __volatile( + "syscall" + : "=a"(result) + : "a"(number), "D"(arg1), "S"(arg2), "d"(arg3) + : "rcx", "r11", "memory" + ); + return result; +} + +long syscall4(long number, long arg1, long arg2, long arg3, long arg4){ + long result; + + register long r10 __asm__("r10") = arg4; + + __asm__ __volatile( + "syscall" + : "=a"(result) + : "a"(number), "D"(arg1), "S"(arg2), "d"(arg3), "r"(r10) + : "rcx", "r11", "memory" + ); + return result; +} diff --git a/time.c b/time.c new file mode 100644 index 0000000..a571d1c --- /dev/null +++ b/time.c @@ -0,0 +1,24 @@ +// this code is licenced under Wrathmark licence +// © 2026 wullie wulliestudio.com +// please see attached licence for full usage and rights + +#include "stdWullie/time.h" +#include "LocalHeader.h" +// #you out of touch, im out of time when youre not a round# + +// # Schlaft mine Kindlein, schlaft doch ein, der Rabe hat nach der gerufen # +void sleeper(long seconds){ + timespec duration = {0}; + duration.tv_sec = seconds; + + syscall2(SYS_sleep, (long)(&duration), 0); +} + + +int unixTime(){ + timespec seconds = {0}; + syscall2(SYS_getTime, 0, (long)(&seconds)); + + return seconds.tv_sec; +} +