diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2016-09-23 09:05:05 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2016-09-23 09:05:05 +0530 |
commit | 24c9fbb8517bbf39489f4b4e4956286c241e0876 (patch) | |
tree | 9a4ab9103ea9c0297acc3ffce10e2f5a9c0b9568 /calb.c | |
parent | 347c663d8bb97da7b8eeb80d6609bf1f2372be4b (diff) |
Add help, version.
Diffstat (limited to 'calb.c')
-rw-r--r-- | calb.c | 46 |
1 files changed, 26 insertions, 20 deletions
@@ -11,17 +11,9 @@ typedef unsigned long long ull; -char *units[] = { - "b", - "kib", - "mib", - "gib", - "tib", - "kb", - "mb", - "gb", - "tb", -}; +char *VERSION = "0.1"; +char *units[] = { "b", "kib", "mib", "gib", "tib", + "kb", "mb", "gb", "tb", }; void printval(double val, char *unit) { @@ -382,7 +374,23 @@ char *strtolower(char *buf) void usage() { - fprintf(stdout, "calb usage\n"); + fprintf(stdout, "usage: calb [-c N] [-s bytes] [-h]\n\ + [N unit]\n\n\ +Perform storage conversions and calculations.\n\n\ +positional arguments:\n\ + N unit capacity in B/KiB/MiB/GiB/TiB/kB/MB/GB/TB\n\ + see https://wiki.ubuntu.com/UnitsPolicy\n\ + should be space-separated, case is ignored\n\n\ +optional arguments:\n\ + -c N show N in binary, decimal and hex formats\n\ + N must be non-negative\n\ + use prefix '0b' for binary, '0x' for hex\n\ + -s sector size in decimal or hex bytes [default 0x200]\n\ + -h show this help and exit\n\n\ +Version %s\n\ +Copyright (C) 2016 Arun Prakash Jana <engineerarun@gmail.com>\n\ +License: GPLv3\n\ +Webpage: https://github.com/jarun/calb\n", VERSION); } int main(int argc, char **argv) @@ -400,7 +408,7 @@ int main(int argc, char **argv) return 1; } - fprintf(stdout, "\nCONVERSION\n"); + fprintf(stdout, "CONVERSION\n"); ull val; if (*optarg == '0' && tolower(*(optarg + 1)) == 'b') @@ -411,11 +419,8 @@ int main(int argc, char **argv) fprintf(stdout, "\tbin: "); printbin(val); fprintf(stdout, "\n\tdec: %llu\n", val); - fprintf(stdout, "\thex: 0x%llx\n", val); + fprintf(stdout, "\thex: 0x%llx\n\n", val); break; - case 'h': - usage(); - return 0; case 's': sectorsize = strtol(optarg, NULL, 0); if (sectorsize <= 0) { @@ -423,19 +428,20 @@ int main(int argc, char **argv) return 1; } break; + case 'h': + usage(); + return 0; default: usage(); return 1; } } - if (argc - optind == 1) { + if (argc - optind == 1 || (argc == 1 && optind == 1)) { usage(); return 1; } - fprintf(stdout, "\n"); - if (argc - optind == 2) { int ret = 0; int count = sizeof(units)/sizeof(*units); |