diff options
Diffstat (limited to 'c_src/tools-util.c')
-rw-r--r-- | c_src/tools-util.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/c_src/tools-util.c b/c_src/tools-util.c index 150925eb..f48d3f21 100644 --- a/c_src/tools-util.c +++ b/c_src/tools-util.c @@ -22,6 +22,7 @@ #include "linux/sort.h" #include "tools-util.h" #include "libbcachefs/util.h" +#include "src/rust_to_c.h" void die(const char *fmt, ...) { @@ -291,11 +292,16 @@ static int range_cmp(const void *_l, const void *_r) return 0; } +void ranges_sort(ranges *r) +{ + sort(r->data, r->nr, sizeof(r->data[0]), range_cmp, NULL); +} + void ranges_sort_merge(ranges *r) { ranges tmp = { 0 }; - sort(r->data, r->nr, sizeof(r->data[0]), range_cmp, NULL); + ranges_sort(r); /* Merge contiguous ranges: */ darray_for_each(*r, i) { @@ -681,6 +687,15 @@ static int kstrtouint_symbolic(const char *s, unsigned int base, unsigned *res) struct bpos bpos_parse(char *buf) { + if (!strcmp(buf, "POS_MIN")) + return POS_MIN; + + if (!strcmp(buf, "POS_MAX")) + return POS_MAX; + + if (!strcmp(buf, "SPOS_MAX")) + return SPOS_MAX; + char *orig = strdup(buf); char *s = buf; @@ -763,7 +778,9 @@ darray_const_str get_or_split_cmdline_devs(int argc, char *argv[]) darray_const_str ret = {}; if (argc == 1) { - bch2_split_devs(argv[0], &ret); + char *dev = bch2_scan_devices(argv[0]); + + bch2_split_devs(dev, &ret); } else { for (unsigned i = 0; i < argc; i++) darray_push(&ret, strdup(argv[i])); |