From 39fbc6c0b60780b37fc824acd2dc685c3733ef47 Mon Sep 17 00:00:00 2001 From: Oskar Date: Fri, 5 Apr 2024 18:33:04 +0200 Subject: Changes to some of the validation functions to allow immediate '0' in MODE_N --- process_multiples.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'process_multiples.c') diff --git a/process_multiples.c b/process_multiples.c index e59811c..74e68a9 100644 --- a/process_multiples.c +++ b/process_multiples.c @@ -165,6 +165,36 @@ uint64_t call_L(char *multiple, uint64_t focus, uint64_t Flines) { return focus; } +int call_N_immediate(char *multiple, uint64_t Flines, char *filename) { + + char new_multiple[32] = { '\0' }; + + int i = 0; + int j = 1; + for( ; multiple[j] != '\n' ; i++, j++) { + new_multiple[i] = multiple[j]; + } + + char *endptr; + uint64_t newline_insert_position = strtol(new_multiple, &endptr, 10); + errno = 0; + if (errno == ERANGE) { + return 0; + } + if (endptr == new_multiple) { + return 0; + } + + if(check_L_linecount(Flines, newline_insert_position) == _INVALID) { + return -1; + } + + new_line(filename, newline_insert_position); + + return 0; + +} + uint64_t call_N(char *multiple, uint64_t focus, uint64_t Flines, char *filename) { int imm = _IMM_NUMBER; @@ -187,7 +217,7 @@ uint64_t call_N(char *multiple, uint64_t focus, uint64_t Flines, char *filename) } if (imm == _IMM_NUMBER) { - // N immediate, I will make its on function for it i think. + call_N_immediate(multiple, Flines, filename); return 0; } -- cgit v1.2.3