Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/sysinst Simplify CD device name matching by using f...



details:   https://anonhg.NetBSD.org/src/rev/ffb4784bd18f
branches:  trunk
changeset: 445672:ffb4784bd18f
user:      martin <martin%NetBSD.org@localhost>
date:      Thu Nov 08 11:15:58 2018 +0000

description:
Simplify CD device name matching by using fnmatch(3), suggested
by Christoph Badura.

diffstat:

 usr.sbin/sysinst/disks.c |  28 +++++-----------------------
 1 files changed, 5 insertions(+), 23 deletions(-)

diffs (50 lines):

diff -r c6c49c7bebba -r ffb4784bd18f usr.sbin/sysinst/disks.c
--- a/usr.sbin/sysinst/disks.c  Thu Nov 08 10:55:41 2018 +0000
+++ b/usr.sbin/sysinst/disks.c  Thu Nov 08 11:15:58 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: disks.c,v 1.19 2018/11/07 21:59:30 martin Exp $ */
+/*     $NetBSD: disks.c,v 1.20 2018/11/08 11:15:58 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -41,6 +41,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <fnmatch.h>
 #include <util.h>
 #include <uuid.h>
 
@@ -509,29 +510,10 @@
 is_cdrom_device(const char *dev)
 {
        static const char *cdrom_devices[] = { CD_NAMES, 0 };
-       char pat[SSTRSIZE], comp[SSTRSIZE], *star, *p;
-       const char **dev_pat;
 
-       /* trim device number off */
-       strcpy(comp, dev);
-       for (p = comp + strlen(comp) - 1; p != comp; p--)
-               if (!isdigit((unsigned char)*p))
-                       break;
-       if (p != comp)
-               p[1] = 0;
-
-       for (dev_pat = cdrom_devices; *dev_pat; dev_pat++) {
-               strcpy(pat, *dev_pat);
-               star = strchr(pat, '*');
-               if (star) {
-                       *star = 0;
-                       if (strcmp(comp, pat) == 0)
-                               return true;
-               } else {
-                       if (strcmp(dev, pat) == 0)
-                               return true;
-               }
-       }
+       for (const char **dev_pat = cdrom_devices; *dev_pat; dev_pat++)
+               if (fnmatch(*dev_pat, dev, 0) == 0)
+                       return true;
 
        return false;
 }



Home | Main Index | Thread Index | Old Index