summaryrefslogtreecommitdiffstats
path: root/calb.c
diff options
context:
space:
mode:
authorArun Prakash Jana <engineerarun@gmail.com>2016-09-23 09:05:05 +0530
committerArun Prakash Jana <engineerarun@gmail.com>2016-09-23 09:05:05 +0530
commit24c9fbb8517bbf39489f4b4e4956286c241e0876 (patch)
tree9a4ab9103ea9c0297acc3ffce10e2f5a9c0b9568 /calb.c
parent347c663d8bb97da7b8eeb80d6609bf1f2372be4b (diff)
Add help, version.
Diffstat (limited to 'calb.c')
-rw-r--r--calb.c46
1 files changed, 26 insertions, 20 deletions
diff --git a/calb.c b/calb.c
index 09de117..f2d6f39 100644
--- a/calb.c
+++ b/calb.c
@@ -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);