summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'util.c')
-rw-r--r--util.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/util.c b/util.c
index 5534266..0c1dfee 100644
--- a/util.c
+++ b/util.c
@@ -826,10 +826,7 @@ struct supertype *super_by_fd(int fd)
int devnum;
if (subarray)
*subarray++ = '\0';
- if (strncmp(dev, "md_d", 4) == 0)
- devnum = -1-atoi(dev+4);
- else
- devnum = atoi(dev+2);
+ devnum = devname2devnum(dev);
subarray = strdup(subarray);
if (sra)
sysfs_free(sra);
@@ -1013,6 +1010,17 @@ char *devnum2devname(int num)
return strdup(name);
}
+int devname2devnum(char *name)
+{
+ char *ep;
+ int num;
+ if (strncmp(name, "md_d", 4)==0)
+ num = -1-strtoul(name+4, &ep, 10);
+ else
+ num = strtoul(name+2, &ep, 10);
+ return num;
+}
+
int fd2devnum(int fd)
{
struct stat stb;