Browse Source

Fix up more prefs reading code

master
cancel 5 years ago
parent
commit
f95ddbe45d
  1. 19
      prefs.c
  2. 15
      prefs.h

19
prefs.c

@ -3,12 +3,10 @@
ORCA_FORCE_NO_INLINE
Readprefs_result prefs_read_line(FILE* file, char* buf, Usz bufsize,
Usz* out_strlen, char** out_left,
Usz* out_leftsize, char** out_right,
Usz* out_rightsize) {
char** out_left, Usz* out_leftsize,
char** out_right, Usz* out_rightsize) {
Usz len, a0, a1, b0, b1;
char* s;
*out_strlen = 0;
if (bufsize < 2)
goto insufficient_buffer;
#if SIZE_MAX > INT_MAX
@ -24,7 +22,6 @@ Readprefs_result prefs_read_line(FILE* file, char* buf, Usz bufsize,
len = strlen(buf);
if (len == bufsize - 1 && buf[len - 1] != '\n' && !feof(file))
goto insufficient_buffer;
*out_strlen = len - 1;
a0 = 0; // start of left
for (;;) {
if (a0 == len)
@ -90,13 +87,17 @@ eof:
ioerror:
err = Readprefs_io_error;
goto fail;
ignore:
s[len - 1] = '\0';
err = Readprefs_irrelevant;
goto fail;
fail:
*out_left = NULL;
*out_leftsize = 0;
goto no_right;
ignore:
s[len - 1] = '\0';
*out_left = s;
*out_leftsize = len;
err = Readprefs_irrelevant;
goto no_right;
no_right:
*out_right = NULL;
*out_rightsize = 0;
return err;

15
prefs.h

@ -3,14 +3,13 @@
#include <stdio.h> // FILE cannot be forward declared
typedef enum {
Readprefs_left_and_right = 0,
Readprefs_irrelevant,
Readprefs_buffer_too_small,
Readprefs_eof,
Readprefs_io_error,
Readprefs_left_and_right = 0, // left and right will be set
Readprefs_irrelevant, // only left will be set
Readprefs_buffer_too_small, // neither will be set
Readprefs_eof, // "
Readprefs_io_error, // "
} Readprefs_result;
Readprefs_result prefs_read_line(FILE* file, char* buf, Usz bufsize,
Usz* out_linelen, char** out_left,
Usz* out_leftlen, char** out_right,
Usz* out_rightlen);
char** out_left, Usz* out_leftlen,
char** out_right, Usz* out_rightlen);

Loading…
Cancel
Save