From: <ow...@us...> - 2008-12-16 07:05:55
|
Revision: 2206 http://ipcop.svn.sourceforge.net/ipcop/?rev=2206&view=rev Author: owes Date: 2008-12-16 07:05:51 +0000 (Tue, 16 Dec 2008) Log Message: ----------- Especially setup should use the running kernel version, not the compile time version (KVER). Use the same mechanism for installer. Remove PCI busclass 0280 from network category. I have 2 ISDN cards identifying itself as class 0280. Assigning green/blue to an ISDN card might be an interesting idea, but that will not work easily ;-) Modified Paths: -------------- ipcop/trunk/src/installer/arch_defs.h ipcop/trunk/src/installer/hardware.c ipcop/trunk/src/installer/installer.c ipcop/trunk/src/installer/setup.c Modified: ipcop/trunk/src/installer/arch_defs.h =================================================================== --- ipcop/trunk/src/installer/arch_defs.h 2008-12-15 21:29:56 UTC (rev 2205) +++ ipcop/trunk/src/installer/arch_defs.h 2008-12-16 07:05:51 UTC (rev 2206) @@ -40,6 +40,10 @@ #endif +/* To fetch running kernel release (i.e. 2.6.27) */ +#include <sys/utsname.h> + + /* Number of partitions */ @@ -123,3 +127,4 @@ /* Some global variables used when installing */ +extern struct utsname utsbuf; Modified: ipcop/trunk/src/installer/hardware.c =================================================================== --- ipcop/trunk/src/installer/hardware.c 2008-12-15 21:29:56 UTC (rev 2205) +++ ipcop/trunk/src/installer/hardware.c 2008-12-16 07:05:51 UTC (rev 2206) @@ -24,7 +24,6 @@ */ -#include <linux/version.h> #include <discover/discover.h> #include <discover/discover-conf.h> @@ -219,12 +218,8 @@ type = cdrom; if (modprobe && !have_idecd) { have_idecd = 1; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25) - /* In kernel 2.6.25 ide-cd is now ide-cd_mod */ + /* Since kernel 2.6.25 ide-cd is ide-cd_mod */ snprintf(command, STRING_SIZE, "/sbin/modprobe %s", "ide-cd_mod"); - #else - snprintf(command, STRING_SIZE, "/sbin/modprobe %s", "ide-cd"); - #endif mysystem(command); /* no need to put in hardware list */ @@ -429,18 +424,18 @@ if ((busclass = discover_device_get_busclass(devices)) == NULL) continue; - module = discover_device_get_data(devices, "linux/module/name", KVER, status); + module = discover_device_get_data(devices, "linux/module/name", utsbuf.release, status); description = discover_device_get_model_name(devices); - /* - Busclass found, now go hunt for NIC, mass storage and PCMCIA/Cardbus. - We'll leave out some special hardware. - */ + /* Busclass found, now go hunt for NIC, mass storage and PCMCIA/Cardbus. + We'll leave out some special hardware. + Info about PCI classes can be found here: http://pci-ids.ucw.cz/read/PD/ + */ if (!strcmp(busclass, "0200") || /* Ethernet */ - !strcmp(busclass, "0201") || /* Token Ring */ -// !strcmp(busclass, "0202") || /* FDDI */ -// !strcmp(busclass, "0203") || /* ATM */ - !strcmp(busclass, "0280") /* Other */ +// !strcmp(busclass, "0202") || /* FDDI */ +// !strcmp(busclass, "0203") || /* ATM */ +// !strcmp(busclass, "0280") || /* Other */ + !strcmp(busclass, "0201") /* Token Ring */ ) { type = network; } @@ -452,8 +447,8 @@ } else if (install_setup && ((!strcmp(busclass, "0100") && !noscsi) || /* SCSI controller */ !strcmp(busclass, "0101") || /* IDE controller */ -// !strcmp(busclass, "0102") || /* Floppy controller */ -// !strcmp(busclass, "0103") || /* IPI controller (anyone using this ?) */ +// !strcmp(busclass, "0102") || /* Floppy controller */ +// !strcmp(busclass, "0103") || /* IPI controller (anyone using this ?) */ !strcmp(busclass, "0104") || /* RAID controller */ !strcmp(busclass, "0180") /* Other mass storage controller */ )) { @@ -492,17 +487,18 @@ FILE *p; snprintf(command, STRING_SIZE, - "/bin/grep \"%s 0x0000%s\" /lib/modules/" KVER "/modules.pcimap", - discover_device_get_vendor_id(devices), discover_device_get_model_id(devices)); + "/bin/grep \"%s 0x0000%s\" /lib/modules/%s/modules.pcimap", + discover_device_get_vendor_id(devices), discover_device_get_model_id(devices), utsbuf.release); if (install_setup) { - fprintf(fhwdetect, "*****\n%s\n", command); + fprintf(fhwdetect, "*****\n Search 0x%s, 0x%s, 0x%s in pcimap\n", + busclass, discover_device_get_vendor_id(devices), discover_device_get_model_id(devices)); } p = popen(command, "r"); if (fgets(line, STRING_SIZE, p)) { if (install_setup) { - fprintf(fhwdetect, "%s\n", line); + fprintf(fhwdetect, "%s", line); } if ((module = strchr(line, ' ')) != NULL) { *module = 0; @@ -511,7 +507,7 @@ } pclose(p); if (install_setup) { - fprintf(fhwdetect, "%s\n*****\n", module == NULL ? "still unknown" : module); + fprintf(fhwdetect, " After pcimap: %s\n*****\n", module == NULL ? "still unknown" : module); } } Modified: ipcop/trunk/src/installer/installer.c =================================================================== --- ipcop/trunk/src/installer/installer.c 2008-12-15 21:29:56 UTC (rev 2205) +++ ipcop/trunk/src/installer/installer.c 2008-12-16 07:05:51 UTC (rev 2206) @@ -50,6 +50,7 @@ supported_media_t medium_target = none; char network_source[STRING_SIZE]; unsigned int memtotal = 0; /* Total memory in MB */ +struct utsname utsbuf; /* local variables */ static NODEKV *kv = NULL; // contains a list key=value pairs from boot parameters @@ -420,6 +421,9 @@ fprintf(flog, "Logging from installer.\n"); fprintf(fstderr, "Error messages and more logging from installer.\n"); + memset(&utsbuf, 0, sizeof(struct utsname)); + uname(&utsbuf); + // read the parameters from the kernel cmdline if (!(handle = fopen("/proc/cmdline", "r"))) { fprintf(flog, "Couldn't open commandline: /proc/cmdline\n"); Modified: ipcop/trunk/src/installer/setup.c =================================================================== --- ipcop/trunk/src/installer/setup.c 2008-12-15 21:29:56 UTC (rev 2205) +++ ipcop/trunk/src/installer/setup.c 2008-12-16 07:05:51 UTC (rev 2206) @@ -34,11 +34,13 @@ #include <string.h> #include "common.h" #include "common_newt.h" +#include "arch_defs.h" NODEKV *kv = NULL; // contains a list key=value pairs int flag_installer = 0; char selected_locale[STRING_SIZE]; +struct utsname utsbuf; char *ipcop_gettext(char *txt) @@ -79,6 +81,9 @@ fstderr = freopen("/dev/tty6", "w+", stderr); } + memset(&utsbuf, 0, sizeof(struct utsname)); + uname(&utsbuf); + newtInit(); newtCls(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |