From 10f056f7fed9856b5147e24d283e8986f0d6e2bd Mon Sep 17 00:00:00 2001 From: nanochess Date: Mon, 6 Nov 2017 10:27:10 -0600 Subject: [PATCH] Reads the input file in one pass. Nicer repetition of spaces in output (robertlipe). --- pretty6502 | Bin 17316 -> 13204 bytes pretty6502.c | 72 ++++++++++++++++++++++++++++----------------------- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/pretty6502 b/pretty6502 index ab6669526f2df8cef75f9f3e0df7e33e5003dc80..29dcbb91516c9848912ac4af6e28bf25f286b5f4 100755 GIT binary patch literal 13204 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 literal 17316 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 input_lines || next_position + strlen(line) + 1 > allocation) { - fprintf(stderr, "Buuurp! the source file grew!\n"); - fclose(input); - exit(1); - } - strcpy(data + next_position, line); - next_position += strlen(line) + 1; - current_line++; - } fclose(input); + /* + ** Ease processing of input file + */ + request = 0; + p1 = data; + p2 = data; + while (p1 < data + allocation) { + if (*p1 == '\r') { /* Ignore \r characters */ + p1++; + continue; + } + if (*p1 == '\n') { + p1++; + *p2++ = '\0'; /* Break line */ + request = 1; + continue; + } + *p2++ = *p1++; + request = 0; + } + if (request == 0) + *p2++ = '\0'; /* Force line break */ + allocation = p2 - data; + /* ** Now generate output file */ @@ -245,7 +251,7 @@ int main(int argc, char *argv[]) exit(1); } p = data; - for (input_lines = 0; input_lines < current_line; input_lines++) { + while (p < data + allocation) { current_column = 0; p1 = p; if (*p1 && !isspace(*p1) && *p1 != ';') { /* Label */ @@ -276,7 +282,7 @@ int main(int argc, char *argv[]) request = start_operand; request_space(output, ¤t_column, request, 1); p2 = p1; - while (*p2 && *p2 != ';' && *p2 != '\r' && *p2 != '\n') { + while (*p2 && *p2 != ';') { if (*p2 == '"') { p2++; while (*p2 && *p2 != '"') @@ -311,7 +317,7 @@ int main(int argc, char *argv[]) request = start_mnemonic; request_space(output, ¤t_column, request, 0); p2 = p1; - while (*p2 && *p2 != '\r' && *p2 != '\n') + while (*p2) p2++; while (p2 > p1 && isspace(*(p2 - 1))) p2--;