summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnastasios Grammenos <anastasios.grammenos@noris.gr>2022-06-06 20:35:45 +0300
committerAnastasios Grammenos <anastasios.grammenos@noris.gr>2022-06-06 20:35:45 +0300
commitd8ac772cb5217df8fce435307524242a50153a07 (patch)
treebbda6a6a74ec5bed1e285fb58e5f2444dbd43d5f
parent55eb1d5f31544ed51e1e31024ecbb9cde68b0c72 (diff)
downloadfoodtools-d8ac772cb5217df8fce435307524242a50153a07.tar.gz
foodtools-d8ac772cb5217df8fce435307524242a50153a07.tar.bz2
foodtools-d8ac772cb5217df8fce435307524242a50153a07.zip
Allow empty ingredient quantity
-rw-r--r--src/food.c2
-rw-r--r--src/parser.c15
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();