diff options
Diffstat (limited to 'src/shared.c')
-rw-r--r-- | src/shared.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/shared.c b/src/shared.c index 8d0dcca..240e364 100644 --- a/src/shared.c +++ b/src/shared.c @@ -34,6 +34,7 @@ FILE* get_file_s(const char* path, const char* type) { } FILE* get_file(const char* path, const char* type) { + if (streql("-", path)) return stdin; FILE* file = get_file_s(path, type); if (file == NULL) exit(EXIT_FAILURE); return file; @@ -48,6 +49,30 @@ long int get_number(const char* text) { return n; } +long int get_blkm(const char* text) { + char* end; + long int n = strtol(text, &end, 10); + if (text == end) { + error("error: %s is not a valid bkm", text); + } + if (*end == '\0') return n; + switch (*end) { + case 'K': + case 'k': + return n * 1024; + case 'B': + case 'b': + return n * 512; + case 'M': + case 'm': + return n * 1024 * 1204; + default: + error("error: invalid bkm type %c", *end); + } + // shouldnt get here anyways + return 0; +} + bool streql(const char* a, const char* b) { if (*a != *b) return false; int n = 0; |