X-Git-Url: https://plomlompom.com/repos/index.html?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;
}