Summary: | [patch] ndiscvt(8) generates a driver which doesn't match any hardware | ||||||
---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | bel | ||||
Component: | bin | Assignee: | freebsd-bugs (Nobody) <bugs> | ||||
Status: | Open --- | ||||||
Severity: | Affects Only Me | Keywords: | patch | ||||
Priority: | Normal | ||||||
Version: | 5.3-RELEASE | ||||||
Hardware: | Any | ||||||
OS: | Any | ||||||
Attachments: |
|
Description
bel
2004-11-25 08:20:32 UTC
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 --- For bugs matching the following criteria: Status: In Progress Changed: (is less than) 2014-06-01 Reset to default assignee and clear in-progress tags. Mail being skipped Keyword: patch or patch-ready – in lieu of summary line prefix: [patch] * bulk change for the keyword * summary lines may be edited manually (not in bulk). Keyword descriptions and search interface: <https://bugs.freebsd.org/bugzilla/describekeywords.cgi> |