From 889b35ebd1659d7e14deee8b3c6cf63d2237ff9e Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Tue, 2 May 2023 18:02:47 -0400 Subject: fix ls segfault --- src/util/shared.c | 23 +++++++++++++++++++++++ src/util/shared.h | 5 +++++ 2 files changed, 28 insertions(+) (limited to 'src/util') diff --git a/src/util/shared.c b/src/util/shared.c index 3e6fca3..600a967 100644 --- a/src/util/shared.c +++ b/src/util/shared.c @@ -1,6 +1,7 @@ #include "shared.h" #include +#include #include #include #include @@ -232,3 +233,25 @@ FILE* get_tty_stream(char* type) { return file; } +static char path_buffer[PATH_MAX + 1]; +static int path_buffer_index = 0; + +char* get_path_buffer() { + return path_buffer; +} + +int push_path_buffer(const char* string) { + int save = path_buffer_index; + if (path_buffer_index > 1 || (path_buffer_index == 1 && path_buffer[0] != '/')) { + path_buffer[path_buffer_index++] = '/'; + } + int string_len = strlen(string); + memcpy(path_buffer + path_buffer_index, string, string_len + 1); + path_buffer_index += string_len; + return save; +} + +void pop_path_buffer(int i) { + path_buffer_index = i; + path_buffer[path_buffer_index] = '\0'; +} diff --git a/src/util/shared.h b/src/util/shared.h index c0945c1..9bade52 100644 --- a/src/util/shared.h +++ b/src/util/shared.h @@ -57,3 +57,8 @@ int parse_args (int argc, char** argv, void (*help)(void), int (*short_arg)(char int get_tty(); FILE* get_tty_stream(char* type); + +char* get_path_buffer(); +int push_path_buffer(const char* string); +void pop_path_buffer(int i); + -- cgit v1.2.3-freya