diff options
author | gramanas <anastasis.gramm2@gmail.com> | 2022-01-31 17:25:17 +0200 |
---|---|---|
committer | gramanas <anastasis.gramm2@gmail.com> | 2022-01-31 17:25:17 +0200 |
commit | c9605d74204f2502ba57b8e9acd21350f07bf032 (patch) | |
tree | 0f961263f97730b3388ad25a3af48b1b5b6cccfd /food.c | |
parent | 53ab9ae05a579a19c626e8be0c1e2cf9244bf863 (diff) | |
download | foodtools-c9605d74204f2502ba57b8e9acd21350f07bf032.tar.gz foodtools-c9605d74204f2502ba57b8e9acd21350f07bf032.tar.bz2 foodtools-c9605d74204f2502ba57b8e9acd21350f07bf032.zip |
Move project to autoconf
Diffstat (limited to 'food.c')
-rw-r--r-- | food.c | 193 |
1 files changed, 0 insertions, 193 deletions
@@ -1,193 +0,0 @@ -#include <getopt.h> - -#include "src/util.h" -#include "src/parser.h" -#include "src/search.h" -#include "src/eval.h" -#include "src/lib.h" - -recipe ** cookbook; - -static struct opts { - int json; - int html; - int rcp; - char query[2048]; - int eval; - int list; - int hash; - int search; - int search_strict; - int help; -} opt = { - .json = 0, - .html = 0, - .rcp = 0, - .query = "", - .eval = 1, - .list = 0, - .hash = 0, - .search = 0, - .search_strict = 0, - .help = 0, -}; - -void -print_help(char * argv0) { - printf("%s [OPTION] FILE ...\n", argv0); - printf("OPTIONS:\n"); - printf("--format json,html,rcp\n"); - printf("--to-{json,html,rcp}\n"); - printf("-j json\n"); - printf("-w html\n"); - printf("-r rcp\n"); - printf("-l, --list-ingredients\n"); - printf("-s TERMS, --search TERMS\n"); - printf("-S TERMS, --strict TERMS\n"); - printf("-n, --no-eval\n"); -} - -int -main(int argc, char * argv[]) -{ - fdebug("--- Debug mode is on ---\n"); - - int c; - - while (1) { - static struct option long_options[] = - { - /* <span class="roman">These options set a flag.</span> */ - // {"verbose", no_argument, &verbose_flag, 1}, - // {"brief", no_argument, &verbose_flag, 0}, - {"help", no_argument, 0, 'h'}, - {"no-eval", no_argument, 0, 'n'}, - {"to-json", no_argument, 0, 'j'}, - {"to-html", no_argument, 0, 'w'}, - {"to-rcp", no_argument, 0, 'r'}, - {"format", required_argument, 0, 'f'}, - {"search", required_argument, 0, 's'}, - {"strict", required_argument, 0, 'S'}, - {"hash", required_argument, 0, 'H'}, - {"list-ingredients", no_argument, 0, 'l'}, - // {"to-rcp", required_argument, 0, 'r'}, - {0, 0, 0, 0} - }; - - int option_index = 0; - - c = getopt_long (argc, argv, "jnlhrwf:s:S:H:", - long_options, &option_index); - - if (c == -1) - break; - - switch (c) { - case 0: - if (long_options[option_index].flag != 0) - break; - printf ("option %s", long_options[option_index].name); - if (optarg) - printf (" with arg %s", optarg); - printf ("\n"); - break; - case 'f': - if (!strcmp(optarg, "json")) - opt.json = 1; - else if (!strcmp(optarg, "rcp")) - opt.rcp = 1; - else if (!strcmp(optarg, "html")) - opt.html = 1; - else - fprintf(stderr, "invalid format: %s\n", optarg); - break; - case 's': - opt.search = 1; - strcpy(opt.query, optarg); - break; - case 'S': - opt.search = 1; - opt.search_strict = 1; - strcpy(opt.query, optarg); - break; - case 'H': - opt.hash = 1; - strcpy(opt.query, optarg); - break; - case 'j': - opt.json = 1; - break; - case 'w': - opt.html = 1; - break; - case 'r': - opt.rcp = 1; - break; - case 'l': - opt.list = 1; - break; - case 'h': - opt.help = 1; - break; - case 'n': - opt.eval = 0; - break; - case '?': - return -1; - break; - default: - abort (); - } - } - - if (opt.help) { - print_help(argv[0]); - return 0; - } - - char ** lib = NULL; - int n = collect_library(&lib, argv, argc, optind); - - for (int i = 0; i < n; i++) { - recipe * r = parse(lib[i], NULL); - if (r) { - if (opt.eval) { - recipe * r_eval = eval(r); - free_recipe(r); - r = r_eval; - } - if (opt.hash) { - if (!check_hash(r, opt.query)) { - free_recipe(r); - continue; - } - } - if (opt.search) { - int c; - if (!(c = query_for_items_pbn(r, opt.query, opt.search_strict))) { - free_recipe(r); - continue; - } - if (c < 0) - exit(1); - } - - if (opt.list) { - pprint_items(r); - } - else { - if (opt.json) tojson(r); - else if (opt.html) tohtml(r); - else if (opt.rcp) torcp(r); - else { - listing(r); - } - } - free_recipe(r); - } - } - - free_library(lib, n); - - return 0; -} |