summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sbin/fsck/preen.c13
-rw-r--r--sbin/fsck_ffs/preen.c13
-rw-r--r--sbin/fsck_ifs/preen.c13
-rw-r--r--sbin/quotacheck/preen.c13
4 files changed, 28 insertions, 24 deletions
diff --git a/sbin/fsck/preen.c b/sbin/fsck/preen.c
index 383467b..de9bb55 100644
--- a/sbin/fsck/preen.c
+++ b/sbin/fsck/preen.c
@@ -206,12 +206,13 @@ finddisk(name)
register char *p;
size_t len;
- for (len = strlen(name), p = name + len - 1; p >= name; --p)
- if (isdigit(*p)) {
- len = p - name + 1;
- break;
- }
-
+ p = strrchr(name, '/');
+ p = p == NULL ? name : p + 1;
+ while (*p != '\0' && !isdigit((u_char)*p))
+ p++;
+ while (isdigit((u_char)*p))
+ p++;
+ len = (size_t)(p - name);
for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
if (strncmp(dk->name, name, len) == 0 &&
dk->name[len] == 0)
diff --git a/sbin/fsck_ffs/preen.c b/sbin/fsck_ffs/preen.c
index 383467b..de9bb55 100644
--- a/sbin/fsck_ffs/preen.c
+++ b/sbin/fsck_ffs/preen.c
@@ -206,12 +206,13 @@ finddisk(name)
register char *p;
size_t len;
- for (len = strlen(name), p = name + len - 1; p >= name; --p)
- if (isdigit(*p)) {
- len = p - name + 1;
- break;
- }
-
+ p = strrchr(name, '/');
+ p = p == NULL ? name : p + 1;
+ while (*p != '\0' && !isdigit((u_char)*p))
+ p++;
+ while (isdigit((u_char)*p))
+ p++;
+ len = (size_t)(p - name);
for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
if (strncmp(dk->name, name, len) == 0 &&
dk->name[len] == 0)
diff --git a/sbin/fsck_ifs/preen.c b/sbin/fsck_ifs/preen.c
index 383467b..de9bb55 100644
--- a/sbin/fsck_ifs/preen.c
+++ b/sbin/fsck_ifs/preen.c
@@ -206,12 +206,13 @@ finddisk(name)
register char *p;
size_t len;
- for (len = strlen(name), p = name + len - 1; p >= name; --p)
- if (isdigit(*p)) {
- len = p - name + 1;
- break;
- }
-
+ p = strrchr(name, '/');
+ p = p == NULL ? name : p + 1;
+ while (*p != '\0' && !isdigit((u_char)*p))
+ p++;
+ while (isdigit((u_char)*p))
+ p++;
+ len = (size_t)(p - name);
for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
if (strncmp(dk->name, name, len) == 0 &&
dk->name[len] == 0)
diff --git a/sbin/quotacheck/preen.c b/sbin/quotacheck/preen.c
index 383467b..de9bb55 100644
--- a/sbin/quotacheck/preen.c
+++ b/sbin/quotacheck/preen.c
@@ -206,12 +206,13 @@ finddisk(name)
register char *p;
size_t len;
- for (len = strlen(name), p = name + len - 1; p >= name; --p)
- if (isdigit(*p)) {
- len = p - name + 1;
- break;
- }
-
+ p = strrchr(name, '/');
+ p = p == NULL ? name : p + 1;
+ while (*p != '\0' && !isdigit((u_char)*p))
+ p++;
+ while (isdigit((u_char)*p))
+ p++;
+ len = (size_t)(p - name);
for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
if (strncmp(dk->name, name, len) == 0 &&
dk->name[len] == 0)
OpenPOWER on IntegriCloud