Upload files to "/"

This commit is contained in:
2026-08-11 21:05:04 +00:00
parent a0ce78ca80
commit ae50272003
4 changed files with 179 additions and 0 deletions
+38
View File
@@ -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;
}
+61
View File
@@ -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"
);
}
+56
View File
@@ -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;
}
+24
View File
@@ -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;
}