X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fcommon%2Ferr_try_fgets.c;h=797a442ac1dc4945166a39587fe36c1142d61b61;hb=cc4ed0c49279f08a053a3e3a9a4acba22283a01f;hp=7f399a9b883d92d3463ecf9ee47342f349893464;hpb=6f98f0b029c3e84f1df0f2f3642f88e91b17cf33;p=plomrogue diff --git a/src/common/err_try_fgets.c b/src/common/err_try_fgets.c index 7f399a9..797a442 100644 --- a/src/common/err_try_fgets.c +++ b/src/common/err_try_fgets.c @@ -1,7 +1,8 @@ /* err_try_fgets.c */ -#include /* uint8_t, uint32_t */ +#include /* uint8_t, uint32_t, UINT8_MAX */ #include /* FILE, sprintf() */ +#include /* atoi() */ #include /* strlen(), strchr(), strcmp() */ #include "../common/readwrite.h" /* try_fgets() */ #include "../common/rexit.h" /* exit_err() */ @@ -12,7 +13,7 @@ /* Increments by one on each err_try_fgets() call, servers as a line counter. */ static uint32_t err_try_fgets_counter = 0; -/* Delimiter to use for err_try_fgets()' 'c' test. */ +/* Delimiter to use for err_try_fgets()' 'd' test. */ char * err_try_fgets_delim = ""; @@ -48,8 +49,8 @@ extern void err_line(uint8_t test, char * line, char * intro, char * msg) -extern void err_try_fgets(char * line, uint32_t linemax, FILE * file, - char * context, char * test) +extern char * err_try_fgets(char * line, uint32_t linemax, FILE * file, + char * context, char * test) { char * err_end = "File ended unexpectedly."; char * err_empty = "Hit empty line where non-empty line was expected."; @@ -57,9 +58,10 @@ extern void err_try_fgets(char * line, uint32_t linemax, FILE * file, char * err_int = "Expected valid positive or negative integer number."; char * err_full = "Hit non-empty line where empty line was expected."; char * err_delim = "Expected proper delimiter, found something else."; + char * err_uint8 = "Value is too large. Must be 255 or less."; char * f_name = "err_try_fgets()"; line[0] = '\0'; - try_fgets(line, linemax + 1, file, f_name); + char * fgets_return = try_fgets(line, linemax + 1, file, f_name); err_try_fgets_counter++; err_line(strchr(test, '0') && !(strlen(line)), line, context, err_end); err_line(strchr(test, 'n') && line[strlen(line) - 1] != '\n', line, context, @@ -69,7 +71,7 @@ extern void err_try_fgets(char * line, uint32_t linemax, FILE * file, err_line(strchr(test, 's') && strlen(line) > 2, line, context, err_many); err_line(strchr(test, 'd') && strcmp(line, err_try_fgets_delim), line, context, err_delim); - if (strchr(test, 'i')) + if (strchr(test, 'i') || strchr(test, '8')) { err_line(!(strchr(test, 'f')) && strlen(line) < 2, line, context, err_int); @@ -83,4 +85,7 @@ extern void err_try_fgets(char * line, uint32_t linemax, FILE * file, err_line(strlen(line) < 2 && ('-' == line[i] || '+' == line[i]), line, context, err_int); } + err_line(strchr(test, '8') && atoi(line) > UINT8_MAX, line, context, + err_uint8); + return fgets_return; }