From owner-freebsd-bugs@FreeBSD.ORG Mon Mar 28 09:20:05 2005 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F1C3816A4CE for ; Mon, 28 Mar 2005 09:20:05 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id B5BC543D2F for ; Mon, 28 Mar 2005 09:20:05 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j2S9K5VO015028 for ; Mon, 28 Mar 2005 09:20:05 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j2S9K56M015027; Mon, 28 Mar 2005 09:20:05 GMT (envelope-from gnats) Date: Mon, 28 Mar 2005 09:20:05 GMT Message-Id: <200503280920.j2S9K56M015027@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Andrew Belashov Subject: Re: bin/74360: [patch] ndiscvt(8) generate a driver which doesn't match any hardware X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Andrew Belashov List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Mar 2005 09:20:06 -0000 The following reply was made to PR bin/74360; it has been noted by GNATS. From: Andrew Belashov 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 ---