Mercurial > ecos-v3_0-branch
diff packages/redboot/current/src/main.c @ 117:bd1a71e3e476 ecos-sw-2000-08-25
Merge from eCos master repository on 2000-08-25-19:22:58-BST
| author | jlarmour |
|---|---|
| date | Fri, 25 Aug 2000 19:17:22 +0000 |
| parents | 6ed91473a1cd |
| children | 518f42066aba |
line wrap: on
line diff
--- a/packages/redboot/current/src/main.c +++ b/packages/redboot/current/src/main.c @@ -303,9 +303,18 @@ scan_opts(int argc, char *argv[], int fi } opt = opts; for (j = 0; j < num_opts; j++, opt++) { - *opt->arg_set = false; + if (opt->arg_set) { + *opt->arg_set = false; + } if (!opt->takes_arg) { - *(int *)opt->arg = 0; + switch (opt->arg_type) { + case OPTION_ARG_TYPE_NUM: + *(int *)opt->arg = 0; + break; + case OPTION_ARG_TYPE_FLG: + *(bool *)opt->arg = false; + break; + } } } for (i = first; i < argc; i++) { @@ -315,7 +324,7 @@ scan_opts(int argc, char *argv[], int fi opt = opts; for (j = 0; j < num_opts; j++, opt++) { if (c == opt->flag) { - if (*opt->arg_set) { + if (opt->arg_set && *opt->arg_set) { printf("%s alread set\n", opt->name); ret = false; } @@ -339,7 +348,14 @@ scan_opts(int argc, char *argv[], int fi } *opt->arg_set = true; } else { - *(int *)opt->arg = *(int *)opt->arg + 1; + switch (opt->arg_type) { + case OPTION_ARG_TYPE_NUM: + *(int *)opt->arg = *(int *)opt->arg + 1; + break; + case OPTION_ARG_TYPE_FLG: + *(bool *)opt->arg = true; + break; + } } flag_ok = true; break;
