diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2016-12-20 21:30:46 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2016-12-20 21:31:36 -0500 |
commit | 11e8c667f62ef3a1a0b099013352ba6053595142 (patch) | |
tree | ec42e4bac4084c73b1fca3748b3300b00af40682 | |
parent | 0609e6f29719a7e88b8233d6bd5b75509a2d59f5 (diff) | |
download | bfs-11e8c667f62ef3a1a0b099013352ba6053595142.tar.xz |
Add tera and peta suffices for -size
-rw-r--r-- | bfs.h | 4 | ||||
-rw-r--r-- | eval.c | 6 | ||||
-rw-r--r-- | parse.c | 8 |
3 files changed, 15 insertions, 3 deletions
@@ -172,6 +172,10 @@ enum size_unit { SIZE_MB, /** Gibibytes. */ SIZE_GB, + /** Tebibytes. */ + SIZE_TB, + /** Pebibytes. */ + SIZE_PB, }; /** @@ -808,8 +808,10 @@ bool eval_size(const struct expr *expr, struct eval_state *state) { [SIZE_BYTES] = 1, [SIZE_WORDS] = 2, [SIZE_KB] = 1024, - [SIZE_MB] = 1024*1024, - [SIZE_GB] = 1024*1024*1024, + [SIZE_MB] = 1024LL*1024, + [SIZE_GB] = 1024LL*1024*1024, + [SIZE_TB] = 1024LL*1024*1024*1024, + [SIZE_PB] = 1024LL*1024*1024*1024*1024, }; off_t scale = scales[expr->size_unit]; @@ -1645,6 +1645,12 @@ static struct expr *parse_size(struct parser_state *state, int arg1, int arg2) { case 'G': expr->size_unit = SIZE_GB; break; + case 'T': + expr->size_unit = SIZE_TB; + break; + case 'P': + expr->size_unit = SIZE_PB; + break; default: goto bad_unit; @@ -1654,7 +1660,7 @@ static struct expr *parse_size(struct parser_state *state, int arg1, int arg2) { bad_unit: pretty_error(state->cmdline->stderr_colors, - "error: %s %s: Expected a size unit of 'b', 'c', 'w', 'k', 'M', or 'G'; found %s.\n", + "error: %s %s: Expected a size unit (one of bcwkMGTP); found %s.\n", expr->argv[0], expr->argv[1], unit); fail: free_expr(expr); |