From 6fc047718bad01cb30ed5b1b8fd4a11905cb5302 Mon Sep 17 00:00:00 2001 From: SuperNovaa41 Date: Fri, 7 Feb 2025 23:01:22 -0500 Subject: [PATCH] adds interactive mode --- src/Makefile | 6 +++--- src/a.out | Bin 27504 -> 27992 bytes src/main.c | 19 +++++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Makefile b/src/Makefile index 5d65a08..33f3998 100644 --- a/src/Makefile +++ b/src/Makefile @@ -4,14 +4,14 @@ CC=gcc OBJ = main.o hex.o file.o FILES = main.c hex.c file.c -DEBUG: - gcc -g $(FILES) - $(TARGET): $(OBJ) mkdir -p ../build $(CC) -g -o $(TARGET) $(OBJ) mv $(TARGET) ../build/ +debug: + gcc -g $(FILES) + main.o: include/hex.h include/file.h hex.o: include/hex.h file.o: include/file.h diff --git a/src/a.out b/src/a.out index 4f3f5a1180e52358c9799b7932d6aaee82e36dfa..a029efdfe2d010b3b39e01af72b8df692d7e250e 100755 GIT binary patch delta 10440 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 diff --git a/src/main.c b/src/main.c index b881d61..d7552bd 100644 --- a/src/main.c +++ b/src/main.c @@ -68,13 +68,19 @@ int get_hex_lines(int len) return out; } -void do_file_read(hex_chunk_t** lines) +void do_text_parse(hex_chunk_t** lines, bool interactive) { - char* file_content; + char* file_content = NULL; int hex_lines, i; - size_t filesize; + size_t filesize, max_len; + + if (interactive) { + max_len = INT_MAX; + getdelim(&file_content, &max_len, EOF, stdin); + } else { + read_file_to_buf(flags.files[0], &file_content); + } - read_file_to_buf(flags.files[0], &file_content); filesize = (flags.len == -1) ? strlen(file_content) : flags.len; hex_lines = get_hex_lines(filesize); @@ -95,6 +101,7 @@ void do_display(hex_chunk_t** lines) { int i; bool fileout = false; + FILE* stream = stdout; if (flags.files[1] != NULL) { @@ -119,9 +126,9 @@ int main(int argc, char* argv[]) init_flags(&flags); argp_parse(&argp, argc, argv, 0, 0, &flags); - flags.files[0] = "main.c"; - do_file_read(&lines); + + do_text_parse(&lines, (flags.files[0] == NULL ? true : false)); do_display(&lines);