c54ce73
--- pcmciautils-014/src/pccardctl.c~	2006-06-01 10:07:52.000000000 +0100
c54ce73
+++ pcmciautils-014/src/pccardctl.c	2007-06-05 22:20:36.000000000 +0100
c54ce73
@@ -37,6 +37,7 @@ static char *fn[] = {
c54ce73
 	"AIMS",
c54ce73
 	"SCSI"
c54ce73
 };
c54ce73
+#define NR_FNS ( sizeof(fn) / sizeof(*fn) )
c54ce73
 
c54ce73
 /* crc32hash.c - derived from linux/lib/crc32.c, GNU GPL v2 */
c54ce73
 static unsigned int crc32(unsigned char const *p, unsigned int len)
c54ce73
@@ -219,7 +220,7 @@ static int pccardctl_ident(unsigned long
c54ce73
 	char *prod_id[4];
c54ce73
 	int valid_prod_id = 0;
c54ce73
 	int i;
c54ce73
-	unsigned int manf_id, card_id;
c54ce73
+	unsigned int manf_id, card_id, func_id;
c54ce73
 
c54ce73
 	if (!pccardctl_socket_exists(socket_no))
c54ce73
 		return -ENODEV;
c54ce73
@@ -249,9 +250,15 @@ static int pccardctl_ident(unsigned long
c54ce73
 		if (!pccardctl_get_one(socket_no, "card_id", &card_id))
c54ce73
 			printf("  manfid: 0x%04x, 0x%04x\n", manf_id, card_id);
c54ce73
 
c54ce73
-	if (!pccardctl_get_one(socket_no, "func_id", &manf_id))
c54ce73
-		printf("  function: %d (%s)\n", manf_id, fn[manf_id]);
c54ce73
+	if (!pccardctl_get_one(socket_no, "func_id", &func_id)) {
c54ce73
+		char *func_name;
c54ce73
+		if (func_id < NR_FNS)
c54ce73
+			func_name = fn[func_id];
c54ce73
+		else
c54ce73
+			func_name = "unknown";
c54ce73
 
c54ce73
+		printf("  function: 0x%x (%s), %d\n", func_id, func_name, NR_FNS);
c54ce73
+	}
c54ce73
 
c54ce73
 	return 0;
c54ce73
 }