From ac8f545de104fa4cfb8513228daf46265bec1928 Mon Sep 17 00:00:00 2001 From: g1n Date: Sat, 27 Nov 2021 17:27:11 +0200 Subject: [PATCH] Add very simple ls --- src/Makefile | 5 +++-- src/ls.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/ls.c diff --git a/src/Makefile b/src/Makefile index e87b2a5..3b10f48 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,6 +1,6 @@ CC= gcc -SRCFILES= cat.c touch.c yes.c mkdir.c echo.c -OBJFILES= cat touch yes mkdir echo +SRCFILES= cat.c touch.c yes.c mkdir.c echo.c ls.c +OBJFILES= cat touch yes mkdir echo ls CFLAGS= -Wall -Wextra .PHONY: all clean @@ -11,6 +11,7 @@ all: $(CC) $(CFLAGS) yes.c -o yes $(CC) $(CFLAGS) mkdir.c -o mkdir $(CC) $(CFLAGS) echo.c -o echo + $(CC) $(CFLAGS) ls.c -o ls clean: @rm ${OBJFILES} diff --git a/src/ls.c b/src/ls.c new file mode 100644 index 0000000..f45f966 --- /dev/null +++ b/src/ls.c @@ -0,0 +1,32 @@ +#include +#include + +// TODO: add more sorted output (. and .. in the top) and flags + +int main(int argc, char *argv[]) { + DIR *dp; + struct dirent *ep; + if (argc > 1) { + dp = opendir(argv[1]); + if (dp != NULL) { + while ((ep = readdir (dp))) { + printf("%s\n", ep->d_name); + } + closedir(dp); + } else { + perror("ls"); + } + return 0; + } else { + dp = opendir("./"); + if (dp != NULL) { + while ((ep = readdir (dp))) { + printf("%s\n", ep->d_name); + } + closedir(dp); + } else { + perror("ls"); + } + return 0; + } +}