summaryrefslogtreecommitdiff
path: root/c_src/tools-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'c_src/tools-util.c')
-rw-r--r--c_src/tools-util.c21
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]));