From 9baa4b2881f555ef7ed69b6bbd14e0234bd29084 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Thu, 13 Sep 2018 17:09:08 -0300 Subject: [PATCH] Add version and options to check for it --- src/addtax.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/addtax.c b/src/addtax.c index 6c31310..8a0cef1 100644 --- a/src/addtax.c +++ b/src/addtax.c @@ -3,10 +3,12 @@ #include #include #include +#include #include "misc.h" #define _(STRING) gettext(STRING) #define TAX 1.111111111 +#define VERSION "1.0.0" GtkLabel *calculated_value = NULL; @@ -27,25 +29,34 @@ void calculate_tax(GtkWidget *entry) { int main(int argc, char *argv[]) { int opt; - float money; + int long_index = 0; + static struct option long_options[] = { + {"version", no_argument, 0, 'v'}, + {0, 0, 0, 0} + }; setlocale(LC_ALL, ""); bindtextdomain("addtax", "/usr/share/locale/"); textdomain("addtax"); if (argc > 1) { - while ((opt = getopt(argc, argv, "")) != -1) { + // Process options + while ((opt = getopt_long(argc, argv,"v", long_options, &long_index)) != -1) { switch (opt) { + case 'v': + printf("%s %s\n", argv[0], VERSION); + break; default: fprintf(stderr, _("Usage: %s [prices...]\n"), argv[0]); return 1; } } - for (opt = 1; opt < argc; opt++) { - money = atof(argv[opt]); - if (is_float(argv[opt], money)) { + // Process arguments that are not options + while (optind < argc) { + money = atof(argv[optind]); + if (is_float(argv[optind++], money)) { printf("$%d * %f = ", (int) round(money), TAX); money = money * TAX; printf("$%d\n", (int) round(money));