bin/74360: [patch] ndiscvt(8) generate a driver which doesn't
match any hardware
Andrew Belashov
bel at orel.ru
Mon Mar 28 01:20:06 PST 2005
The following reply was made to PR bin/74360; it has been noted by GNATS.
From: Andrew Belashov <bel at orel.ru>
To: freebsd-gnats-submit at FreeBSD.org
Cc:
Subject: Re: bin/74360: [patch] ndiscvt(8) generate a driver which doesn't
match any hardware
Date: Mon, 28 Mar 2005 13:18:42 +0400
Sorry, ndiscvt does not processing some .INF files with my first version of the patch.
Corrected version of patch.
--- ndiscvt.patch begins here ---
--- usr.sbin/ndiscvt/inf.c.orig Sun Mar 7 05:49:06 2004
+++ usr.sbin/ndiscvt/inf.c Mon Mar 7 20:16:11 2005
@@ -233,7 +233,8 @@ dump_pci_id(const char *s)
static void
dump_deviceids_pci()
{
- struct assign *manf, *dev;
+ struct assign *manf, *dev, *devid;
+ const char *p;
struct section *sec;
struct assign *assign;
char xpsec[256];
@@ -258,8 +259,9 @@ dump_deviceids_pci()
TAILQ_FOREACH(assign, &ah, link) {
if (assign->section == sec) {
- dev = find_assign("strings", assign->key);
- if (strcasestr(assign->vals[1], "PCI") != NULL) {
+ devid = find_assign("strings", assign->vals[1]);
+ p = (devid == NULL) ? assign->vals[1] : devid->vals[0];
+ if (strcasestr(p, "PCI") != NULL) {
found++;
break;
}
@@ -285,9 +287,11 @@ retry:
TAILQ_FOREACH(assign, &ah, link) {
if (assign->section == sec) {
dev = find_assign("strings", assign->key);
+ devid = find_assign("strings", assign->vals[1]);
+ p = (devid == NULL) ? assign->vals[1] : devid->vals[0];
/* Emit device IDs. */
- if (strcasestr(assign->vals[1], "PCI") != NULL)
- dump_pci_id(assign->vals[1]);
+ if (strcasestr(p, "PCI") != NULL)
+ dump_pci_id(p);
else
continue;
/* Emit device description */
@@ -312,7 +316,8 @@ retry:
static void
dump_deviceids_pcmcia()
{
- struct assign *manf, *dev;
+ struct assign *manf, *dev, *devid;
+ const char *p;
struct section *sec;
struct assign *assign;
char xpsec[256];
@@ -337,8 +342,9 @@ dump_deviceids_pcmcia()
TAILQ_FOREACH(assign, &ah, link) {
if (assign->section == sec) {
- dev = find_assign("strings", assign->key);
- if (strcasestr(assign->vals[1], "PCMCIA") != NULL) {
+ devid = find_assign("strings", assign->vals[1]);
+ p = (devid == NULL) ? assign->vals[1] : devid->vals[0];
+ if (strcasestr(p, "PCMCIA") != NULL) {
found++;
break;
}
@@ -364,9 +370,11 @@ retry:
TAILQ_FOREACH(assign, &ah, link) {
if (assign->section == sec) {
dev = find_assign("strings", assign->key);
+ devid = find_assign("strings", assign->vals[1]);
+ p = (devid == NULL) ? assign->vals[1] : devid->vals[0];
/* Emit device IDs. */
- if (strcasestr(assign->vals[1], "PCMCIA") != NULL)
- dump_pcmcia_id(assign->vals[1]);
+ if (strcasestr(p, "PCMCIA") != NULL)
+ dump_pcmcia_id(p);
else
continue;
/* Emit device description */
--- ndiscvt.patch ends here ---
More information about the freebsd-bugs
mailing list