From a7946d0522fcfd89b58ccd2d2948729b7e4c66b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20=C3=98yvind=20Karlsen?= Date: Wed, 3 Mar 2010 20:16:39 +0000 Subject: actually go through all procfiles to detect Compaq Smart Array in stead of only checking the first (yeay, 8 years and 6 months old bug fixed! \o/) --- mdk-stage1/probing.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/mdk-stage1/probing.c b/mdk-stage1/probing.c index 3052b2823..55769e87f 100644 --- a/mdk-stage1/probing.c +++ b/mdk-stage1/probing.c @@ -800,23 +800,25 @@ void find_media(enum media_bus bus) static char cpq_descr[] = "Compaq RAID logical disk"; char ** procfile = procfiles; FILE * f; - while (procfile && *procfile && (f = fopen(*procfile, "rb"))) { - while (fgets(buf, sizeof(buf), f)) { - if (ptr_begins_static_str(buf, "ida/") || ptr_begins_static_str(buf, "cciss/")) { - char * end = strchr(buf, ':'); - if (!end) - log_message("Inconsistency in %s, line:\n%s", *procfile, buf); - else { - *end = '\0'; - tmp[count].name = strdup(buf); - tmp[count].type = DISK; - tmp[count].model = cpq_descr; - log_message("CPQ: found %s", tmp[count].name); - count++; + while (procfile && *procfile) { + if(f = fopen(*procfile, "rb")) { + while (fgets(buf, sizeof(buf), f)) { + if (ptr_begins_static_str(buf, "ida/") || ptr_begins_static_str(buf, "cciss/")) { + char * end = strchr(buf, ':'); + if (!end) + log_message("Inconsistency in %s, line:\n%s", *procfile, buf); + else { + *end = '\0'; + tmp[count].name = strdup(buf); + tmp[count].type = DISK; + tmp[count].model = cpq_descr; + log_message("CPQ: found %s", tmp[count].name); + count++; + } } } + fclose(f); } - fclose(f); procfile++; } } -- cgit v1.2.1