diff options
author | Tyler Murphy <tylerm@tylerm.dev> | 2023-05-02 18:02:47 -0400 |
---|---|---|
committer | Tyler Murphy <tylerm@tylerm.dev> | 2023-05-02 18:02:47 -0400 |
commit | 889b35ebd1659d7e14deee8b3c6cf63d2237ff9e (patch) | |
tree | 4ce4c9df59c03d78038f88602c31a60d9daec137 /src/util | |
parent | add more escape codes to printf (diff) | |
download | lazysphere-889b35ebd1659d7e14deee8b3c6cf63d2237ff9e.tar.gz lazysphere-889b35ebd1659d7e14deee8b3c6cf63d2237ff9e.tar.bz2 lazysphere-889b35ebd1659d7e14deee8b3c6cf63d2237ff9e.zip |
fix ls segfault
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/shared.c | 23 | ||||
-rw-r--r-- | src/util/shared.h | 5 |
2 files changed, 28 insertions, 0 deletions
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 <errno.h> +#include <limits.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> @@ -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); + |