From 7c277d99bd8be6dd6b5bbbfb2faf3429054b21fe Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Sat, 19 Jun 2021 20:52:42 -0400 Subject: [PATCH] get current working directory for the console line --- src/include/loop.h | 1 + src/loop.c | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/include/loop.h b/src/include/loop.h index 89a9364..3a6a208 100644 --- a/src/include/loop.h +++ b/src/include/loop.h @@ -16,6 +16,7 @@ #ifndef _MYSHELLIN_LOOP #define _MYSHELLIN_LOOP void remove_new_line(char *line); +char *get_working_directory(); void print_input_line(); void loop(); #endif diff --git a/src/loop.c b/src/loop.c index 44ad49f..35dedea 100644 --- a/src/loop.c +++ b/src/loop.c @@ -15,19 +15,36 @@ #define _GNU_SOURCE #include +#include #include #include #include #include +#include #include "user.h" void remove_new_line(char* line) { line[strcspn(line, "\n")] = 0; } +char *get_working_directory() { + char *cwd = NULL; + cwd = getcwd(NULL, PATH_MAX); + if (cwd != NULL) { + return cwd; + } + else { + perror("getcwd() error: "); + exit(EXIT_FAILURE); + } +} + void print_input_line() { char *name = get_user(); - printf("%s $ ", name); + char *cwd = get_working_directory(); + printf("%s:%s $ ", name, cwd); + free(name); + free(cwd); } void loop() { @@ -44,8 +61,7 @@ void loop() { break; } else { - perror("Error: "); - printf("\n"); + perror("getline() error: "); if (line != NULL) { free(line); }