Date: Mon, 28 Mar 2005 09:20:05 GMT From: Andrew Belashov <bel@orel.ru> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/74360: [patch] ndiscvt(8) generate a driver which doesn't match any hardware Message-ID: <200503280920.j2S9K56M015027@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/74360; it has been noted by GNATS. From: Andrew Belashov <bel@orel.ru> To: freebsd-gnats-submit@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 ---
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503280920.j2S9K56M015027>