Module Name: src
Committed By: martin
Date: Thu Nov 8 11:15:58 UTC 2018
Modified Files:
src/usr.sbin/sysinst: disks.c
Log Message:
Simplify CD device name matching by using fnmatch(3), suggested
by Christoph Badura.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/usr.sbin/sysinst/disks.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/sysinst/disks.c
diff -u src/usr.sbin/sysinst/disks.c:1.19 src/usr.sbin/sysinst/disks.c:1.20
--- src/usr.sbin/sysinst/disks.c:1.19 Wed Nov 7 21:59:30 2018
+++ src/usr.sbin/sysinst/disks.c Thu Nov 8 11:15:58 2018
@@ -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 @@ static bool
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;
}