fix bad error enum type - ics2txt - convert icalendar .ics file to plain text
(HTM) git clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
---
(DIR) commit 5364436bda9ac04c42dbd6eeaab75914128046b6
(DIR) parent 7a6ceff37018ad2f867397aee9f3b3289f16427f
(HTM) Author: Josuah Demangeon <me@josuah.net>
Date: Sun, 28 Jun 2020 21:01:03 +0200
fix bad error enum type
Diffstat:
M src/ical.c | 24 ++++++++++++++++--------
M src/ical.h | 3 +++
2 files changed, 19 insertions(+), 8 deletions(-)
---
(DIR) diff --git a/src/ical.c b/src/ical.c
@@ -18,18 +18,20 @@ ical_getline(char **line, char **ln, size_t *sz, FILE *fp)
void *v;
if ((v = realloc(*line, 1)) == NULL)
- return -1;
+ return -ICAL_ERR_SYSTEM;
*line = v;
(*line)[0] = '\0';
- do {
+ do { top:
if (getline(ln, sz, fp) <= 0)
- return ferror(fp) ? -1 : 0;
+ return ferror(fp) ? -ICAL_ERR_SYSTEM : 0;
strchomp(*ln);
+ if (**ln == '\0')
+ goto top;
if (strappend(line, *ln) < 0)
- return -1;
+ return -ICAL_ERR_SYSTEM;
if ((c = fgetc(fp)) == EOF)
- return ferror(fp) ? -1 : 1;
+ return ferror(fp) ? -ICAL_ERR_SYSTEM : 1;
} while (c == ' ');
ungetc(c, fp);
@@ -51,6 +53,12 @@ ical_strerror(int i)
return "END: does not match its corresponding BEGIN:";
case ICAL_ERR_MISSING_BEGIN:
return "unexpected content line before any BEGIN:";
+ case ICAL_ERR_MISSING_COLUMN:
+ return "missing ':' character from line";
+ case ICAL_ERR_MISSING_SEMICOLUMN:
+ return "missing ';' character before ':'";
+ case ICAL_ERR_MISSING_EQUAL:
+ return "missing '=' character in parameter before ':'";
case ICAL_ERR_MIN_NESTED:
return "too many END: for the number of BEGIN:";
case ICAL_ERR_MAX_NESTED:
@@ -92,7 +100,7 @@ ical_parse_value(struct ical_value *value)
value->name = value->buf;
if ((column = strchr(value->buf, ':')) == NULL)
- return -1;
+ return -ICAL_ERR_MISSING_COLUMN;
*column = '\0';
value->value = column + 1;
@@ -100,10 +108,10 @@ ical_parse_value(struct ical_value *value)
*cp++ = '\0';
while ((param = strsep(&cp, ";")) != NULL) {
if ((equal = strchr(param, '=')) == NULL)
- return -1;
+ return -ICAL_ERR_MISSING_EQUAL;
*equal = '\0';
if (map_set(&value->param, param, equal + 1) < 0)
- return -1;
+ return -ICAL_ERR_SYSTEM;
}
assert(errno == e);
(DIR) diff --git a/src/ical.h b/src/ical.h
@@ -13,6 +13,9 @@ enum ical_err {
ICAL_ERR_SYSTEM,
ICAL_ERR_END_MISMATCH,
ICAL_ERR_MISSING_BEGIN,
+ ICAL_ERR_MISSING_COLUMN,
+ ICAL_ERR_MISSING_SEMICOLUMN,
+ ICAL_ERR_MISSING_EQUAL,
ICAL_ERR_MIN_NESTED,
ICAL_ERR_MAX_NESTED,