summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/pccard/pccardd/cardd.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/usr.sbin/pccard/pccardd/cardd.c b/usr.sbin/pccard/pccardd/cardd.c
index ccac0b3da9b1..e8e16224f42b 100644
--- a/usr.sbin/pccard/pccardd/cardd.c
+++ b/usr.sbin/pccard/pccardd/cardd.c
@@ -206,6 +206,21 @@ card_removed(struct slot *sp)
pool_irq[sp->irq] = 1;
}
+/* CIS string comparison */
+
+static int
+cis_strcmp(char *db, char *cis)
+{
+ size_t n;
+
+ if (!db || !cis) {
+ return -1;
+ }
+ n = strlen(db);
+ return strncmp(db, cis, n);
+ /* XXX Add code for regex CIS string comparison here */
+}
+
/*
* card_inserted - Card has been inserted;
* - Read the CIS
@@ -235,8 +250,8 @@ card_inserted(struct slot *sp)
for (cp = cards; cp; cp = cp->next) {
switch (cp->deftype) {
case DT_VERS:
- if (strcmp(cp->manuf, sp->cis->manuf) == 0 &&
- strcmp(cp->version, sp->cis->vers) == 0) {
+ if (cis_strcmp(cp->manuf, sp->cis->manuf) == 0 &&
+ cis_strcmp(cp->version, sp->cis->vers) == 0) {
logmsg("Card \"%s\"(\"%s\") "
"matched \"%s\" (\"%s\") ",
sp->cis->manuf, sp->cis->vers,