diff options
| author | David M. Syzdek <david@syzdek.net> | 2021-10-11 19:37:31 -0800 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2021-10-11 19:37:31 -0800 |
| commit | 606f4681a29bc819b95f6cdd8735e8961e38bc7d (patch) | |
| tree | 12f57422638bff43bd42cae8a55cf92cf51ee84b | |
| parent | cd3ac306aa9dff9b3d7826023ec4123ec3ef0c42 (diff) | |
| download | dmstools-606f4681a29bc819b95f6cdd8735e8961e38bc7d.tar.gz dmstools-606f4681a29bc819b95f6cdd8735e8961e38bc7d.tar.bz2 dmstools-606f4681a29bc819b95f6cdd8735e8961e38bc7d.tar.xz dmstools-606f4681a29bc819b95f6cdd8735e8961e38bc7d.zip | |
numconvert: adding ability to toggle output notations using order option
| -rw-r--r-- | src/numconvert.c | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/src/numconvert.c b/src/numconvert.c index 16b7bb1..2efbeb8 100644 --- a/src/numconvert.c +++ b/src/numconvert.c | |||
| @@ -158,8 +158,8 @@ int main(int argc, char * argv[]) | |||
| 158 | 158 | ||
| 159 | opt = MY_OPT_SPACE | MY_OPT_LIMIT; | 159 | opt = MY_OPT_SPACE | MY_OPT_LIMIT; |
| 160 | base = 0; | 160 | base = 0; |
| 161 | order = "abxod"; | ||
| 162 | bases = 0; | 161 | bases = 0; |
| 162 | order = NULL; | ||
| 163 | 163 | ||
| 164 | while((c = getopt_long(argc, argv, short_opt, long_opt, &opt_index)) != -1) | 164 | while((c = getopt_long(argc, argv, short_opt, long_opt, &opt_index)) != -1) |
| 165 | { | 165 | { |
| @@ -258,6 +258,53 @@ int main(int argc, char * argv[]) | |||
| 258 | }; | 258 | }; |
| 259 | }; | 259 | }; |
| 260 | 260 | ||
| 261 | if ((order)) | ||
| 262 | { | ||
| 263 | bases = 0; | ||
| 264 | for(x = 0; (x < (int)strlen(order)); x++) | ||
| 265 | { | ||
| 266 | switch(order[x]) | ||
| 267 | { | ||
| 268 | case 'B': | ||
| 269 | case 'b': | ||
| 270 | opt |= MY_OPT_BIN; | ||
| 271 | bases++; | ||
| 272 | break; | ||
| 273 | |||
| 274 | case 'D': | ||
| 275 | case 'd': | ||
| 276 | opt |= MY_OPT_DEC; | ||
| 277 | bases++; | ||
| 278 | break; | ||
| 279 | |||
| 280 | case 'X': | ||
| 281 | case 'x': | ||
| 282 | opt |= MY_OPT_HEX; | ||
| 283 | bases++; | ||
| 284 | break; | ||
| 285 | |||
| 286 | case 'O': | ||
| 287 | case 'o': | ||
| 288 | opt |= MY_OPT_OCT; | ||
| 289 | bases++; | ||
| 290 | break; | ||
| 291 | |||
| 292 | case 'A': | ||
| 293 | case 'a': | ||
| 294 | opt |= MY_OPT_ASCII; | ||
| 295 | bases++; | ||
| 296 | break; | ||
| 297 | |||
| 298 | default: | ||
| 299 | fprintf(stderr, "%s: unknown order option -- %c\n", PROGRAM_NAME, order[x]); | ||
| 300 | fprintf(stderr, "Try `%s --help' for more information.\n", PROGRAM_NAME); | ||
| 301 | return(1); | ||
| 302 | }; | ||
| 303 | }; | ||
| 304 | }; | ||
| 305 | if (!(order)) | ||
| 306 | order = "abxod"; | ||
| 307 | |||
| 261 | if (!(opt & (MY_OPT_BIN|MY_OPT_DEC|MY_OPT_HEX|MY_OPT_OCT|MY_OPT_ASCII))) | 308 | if (!(opt & (MY_OPT_BIN|MY_OPT_DEC|MY_OPT_HEX|MY_OPT_OCT|MY_OPT_ASCII))) |
| 262 | { | 309 | { |
| 263 | opt |= (MY_OPT_BIN|MY_OPT_DEC|MY_OPT_HEX|MY_OPT_OCT|MY_OPT_ASCII); | 310 | opt |= (MY_OPT_BIN|MY_OPT_DEC|MY_OPT_HEX|MY_OPT_OCT|MY_OPT_ASCII); |
