From 6a1bd1266701eb84c11c5da96ec03fb1c0debc2c Mon Sep 17 00:00:00 2001 From: Kieran Morrissey Date: Thu, 29 Jan 2004 01:12:59 -0800 Subject: [PATCH] [PATCH] PCI: name length change - Changes gen-devlist.c to truncate long device names rather than reject the database - Changes PCI_NAME_SIZE to 96 (and PCI_NAME_HALF to 43) to allow all current pci.ids names to fit - Modifies gen-devlist.c to truncate at 89 characters rather than 79 - allows for two digit instance numbers to be added to the name as well while staying within the 96 characters allocated. No names in the current pci.ids are any longer than this. - Modifies names.c to no longer limit device name length when displaying both vendor and device name; the truncation is done by gen-devlist.c. --- drivers/pci/gen-devlist.c | 16 +++++++++------- drivers/pci/names.c | 3 +-- include/linux/pci.h | 4 ++-- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/drivers/pci/gen-devlist.c b/drivers/pci/gen-devlist.c index c0c242010ebac..372e2102581d8 100644 --- a/drivers/pci/gen-devlist.c +++ b/drivers/pci/gen-devlist.c @@ -7,12 +7,13 @@ #include #include -#define MAX_NAME_SIZE 79 +#define MAX_NAME_SIZE 89 static void -pq(FILE *f, const char *c) +pq(FILE *f, const char *c, int len) { - while (*c) { + int i = 1; + while (*c && i != len) { if (*c == '"') fprintf(f, "\\\""); else { @@ -23,6 +24,7 @@ pq(FILE *f, const char *c) } } c++; + i++; } } @@ -72,13 +74,13 @@ main(void) if (bra && bra > c && bra[-1] == ' ') bra[-1] = 0; if (vendor_len + strlen(c) + 1 > MAX_NAME_SIZE) { - fprintf(stderr, "Line %d: Device name too long\n", lino); + fprintf(stderr, "Line %d: Device name too long. Name truncated.\n", lino); fprintf(stderr, "%s\n", c); - return 1; + /*return 1;*/ } } fprintf(devf, "\tDEVICE(%s,%s,\"", vend, line+1); - pq(devf, c); + pq(devf, c, MAX_NAME_SIZE - vendor_len - 1); fputs("\")\n", devf); } else goto err; break; @@ -107,7 +109,7 @@ main(void) return 1; } fprintf(devf, "VENDOR(%s,\"", vend); - pq(devf, c); + pq(devf, c, 0); fputs("\")\n", devf); mode = 1; } else { diff --git a/drivers/pci/names.c b/drivers/pci/names.c index eb707bf79dda3..ad224aada7c94 100644 --- a/drivers/pci/names.c +++ b/drivers/pci/names.c @@ -86,8 +86,7 @@ void __devinit pci_name_device(struct pci_dev *dev) /* Full match */ match_device: { - char *n = name + sprintf(name, "%." PCI_NAME_HALF - "s %." PCI_NAME_HALF "s", + char *n = name + sprintf(name, "%s %s", vendor_p->name, device_p->name); int nr = device_p->seen + 1; device_p->seen = nr; diff --git a/include/linux/pci.h b/include/linux/pci.h index 3ffb95a8f4d2a..bc51ca9edef10 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -425,8 +425,8 @@ struct pci_dev { unsigned int transparent:1; /* Transparent PCI bridge */ unsigned int multifunction:1;/* Part of multi-function device */ #ifdef CONFIG_PCI_NAMES -#define PCI_NAME_SIZE 50 -#define PCI_NAME_HALF __stringify(20) /* less than half to handle slop */ +#define PCI_NAME_SIZE 96 +#define PCI_NAME_HALF __stringify(43) /* less than half to handle slop */ char pretty_name[PCI_NAME_SIZE]; /* pretty name for users to see */ #endif }; -- 2.53.0