diff options
Diffstat (limited to 'userland/cat')
-rw-r--r-- | userland/cat/Makefile | 10 | ||||
-rwxr-xr-x | userland/cat/cat | bin | 0 -> 33852 bytes | |||
-rw-r--r-- | userland/cat/cat.c | 24 |
3 files changed, 34 insertions, 0 deletions
diff --git a/userland/cat/Makefile b/userland/cat/Makefile new file mode 100644 index 0000000..b45fae9 --- /dev/null +++ b/userland/cat/Makefile @@ -0,0 +1,10 @@ +CC="/home/anton/opt/cross/bin/i686-elf-gcc" +CFLAGS = -ggdb -ffreestanding -O0 -Wall -Wextra -pedantic -mgeneral-regs-only -Wimplicit-fallthrough +BINS=cat +all: $(BINS) + +cat.o: cat.c + $(CC) $(CFLAGS) -L../libc/ -lc -c cat.c -I../libc/ + +cat: cat.o + $(CC) -shared -o cat -ffreestanding -nostdlib $(CFLAGS) cat.o -L../libc/ -lc -lgcc #-L../libc/c.a diff --git a/userland/cat/cat b/userland/cat/cat Binary files differnew file mode 100755 index 0000000..2ba0c4d --- /dev/null +++ b/userland/cat/cat diff --git a/userland/cat/cat.c b/userland/cat/cat.c new file mode 100644 index 0000000..b143581 --- /dev/null +++ b/userland/cat/cat.c @@ -0,0 +1,24 @@ +#include <fcntl.h> +#include <stdio.h> +#include <dirent.h> + +int main(int argc, char **argv) { + DIR *d = opendir("/"); + struct dirent *de = readdir(d); + printf("x : %x\n", de->d_name[0]); + for (;;) + ; + /* + int fd = 0; + if (argc < 2) + goto read_stdin; + for (int i = 1; i < argc; i++) { + if ((fd = open(argv[i], O_RDONLY, 0)) == -1) { + return 1; + } + read_stdin: + for (char c[4096], int rc; (rc = read(fd, c, 4096) > 0);) + write(1, c, rc); + }*/ + return 0; +} |