From c40f400f6ab879e08d54de753aabc987fd6ba07a Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Tue, 5 Mar 2024 18:46:44 -0500 Subject: Added a simple shell, jsh --- src/cmd/pwd/makefile | 12 ++++++++++++ src/cmd/pwd/pwd.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 src/cmd/pwd/makefile create mode 100755 src/cmd/pwd/pwd.c (limited to 'src/cmd/pwd') diff --git a/src/cmd/pwd/makefile b/src/cmd/pwd/makefile new file mode 100755 index 0000000..85f4d06 --- /dev/null +++ b/src/cmd/pwd/makefile @@ -0,0 +1,12 @@ +CFLAGS=-Wall -Werror + +build: pwd + @cp pwd $(PROROOT)/build/bin/pwd + +pwd: pwd.c + $(CC) $(CFLAGS) -o pwd pwd.c + +clean: + @rm -r pwd + +.PHONY: build clean diff --git a/src/cmd/pwd/pwd.c b/src/cmd/pwd/pwd.c new file mode 100755 index 0000000..d8c4c2a --- /dev/null +++ b/src/cmd/pwd/pwd.c @@ -0,0 +1,30 @@ +#include +#include +#include +#include + +#define MAXLEN 1024 + +/* print the current working directory */ +int main(void) +{ + char *cwd, i = 1; + + do { + size_t size = i * MAXLEN; + cwd = (char *)malloc(size); + getcwd(cwd, size); + if (errno == ERANGE) + free((void *)cwd); + } while (errno == ERANGE && ++i < 10); + + if (errno == ERANGE) { + fprintf(stderr, "pwd: directory name is too large\n"); + return -1; + } + + printf("%s\n", cwd); + free((void *)cwd); + return 0; +} + -- cgit v1.2.3