From d8ac772cb5217df8fce435307524242a50153a07 Mon Sep 17 00:00:00 2001 From: Anastasios Grammenos Date: Mon, 6 Jun 2022 20:35:45 +0300 Subject: Allow empty ingredient quantity --- src/food.c | 2 +- src/parser.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/food.c b/src/food.c index 9506713..e4bc981 100644 --- a/src/food.c +++ b/src/food.c @@ -180,7 +180,7 @@ main(int argc, char * argv[]) for (int i = 0; i < n; i++) { recipe * r = parse(lib[i], NULL); if (!r) { - fprintf(stderr, "Recipe %s not found\n", lib[i]); + fprintf(stderr, "Couldn't parse recipe: %s\n", lib[i]); continue; } diff --git a/src/parser.c b/src/parser.c index e4bffb4..9206f42 100644 --- a/src/parser.c +++ b/src/parser.c @@ -87,7 +87,10 @@ parse_item(const char * s, recipe * r, pt * type, char * error) char buf[LINE_SIZE] = ""; for (int i = 0; i < l; i++) { if (val) { - if (s[i] == ',' || s[i] == '=') { + if (s[i] == ',' || s[i] == '=' || i == l - 1) { + if (i == l - 1) { + buf[c++] = s[i]; + } buf[c++] = '\0'; if (!strlen(buf)) { sprintf(error, "malformed ingredient: %s", s); @@ -118,8 +121,9 @@ parse_item(const char * s, recipe * r, pt * type, char * error) } if (!strlen(buf)) { - sprintf(error, "empty ingredient quantity: %s", s); - return 1; + // sprintf(error, "empty ingredient quantity: %s", s); + // return 1; + strcpy(buf, "*"); } for (int i = 0; i < itemc; i++) { @@ -230,7 +234,10 @@ parse(char * path, const char * prev) strcpy(tmp, path); } f = fopen(tmp, "r"); - if (!f) return NULL; + if (!f) { + fprintf(stderr, "Can't open %s\n", path); + return NULL; + } } recipe * r = new_recipe(); -- cgit v1.2.3