diff options
Diffstat (limited to 'sys-apps/hwsetup/files/hwsetup-1.1-dyn_blacklist.patch')
-rw-r--r-- | sys-apps/hwsetup/files/hwsetup-1.1-dyn_blacklist.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/sys-apps/hwsetup/files/hwsetup-1.1-dyn_blacklist.patch b/sys-apps/hwsetup/files/hwsetup-1.1-dyn_blacklist.patch new file mode 100644 index 000000000000..e97c091a6e8c --- /dev/null +++ b/sys-apps/hwsetup/files/hwsetup-1.1-dyn_blacklist.patch @@ -0,0 +1,61 @@ +diff -urN hwsetup-1.1.orig/hwsetup.c hwsetup-1.1/hwsetup.c +--- hwsetup-1.1.orig/hwsetup.c 2005-05-28 18:11:51.000000000 -0400 ++++ hwsetup-1.1/hwsetup.c 2005-11-17 14:08:03.000000000 -0500 +@@ -43,12 +43,38 @@ + /* Do not, under any circumstances, load these modules automatically, */ + /* even if in pcitable. (libkudzu may ignore this, and the KNOPPIX */ + /* autoconfig scripts may probe them, too) */ +-const char *blacklist[] = ++char blacklist[200][1024] = + { "apm","agpgart","yenta_socket","i82092","i82365","tcic", + "pcmcia_core","ds","ohci1394","hisax", + /* Winmodems, unusable, can block sound slot */ + "snd-atiixp-modem", "snd-intel8x0m","snd-via82xx-modem" + }; ++ ++int blacklistsize = 13; ++void gen_blacklist(){ ++ int n = 13; ++ int size = 0; ++ char *comment; ++ char module[1024]; ++ FILE *stream; ++ ++ if((stream = fopen ("/etc/hotplug/blacklist", "r")) != (FILE *)0) { ++ while((fgets(module, 1023, stream)) != (char *)0 ) { ++ ++ comment = strchr(module, '#'); ++ if (comment != 0) *comment = '\0'; ++ comment = strchr(module, '\n'); ++ if (comment != 0) *comment = '\0'; ++ size = strlen(module); ++ if (size < 2) continue; ++ strcat (module , " \0"); ++ strcpy(blacklist[n] , module); ++ n++; ++ //printf(module); ++ } ++ blacklistsize = n; ++ } ++} + #endif + + /* If a conflicting module in a row is already loaded, the new module will not be probed anymore */ +@@ -412,7 +438,7 @@ + pid_t mpid; + if((m==NULL)||(!strcmp("unknown",m))||(!strcmp("ignore",m))) return 0; + #ifdef BLACKLIST +- for(i=0;i<(sizeof(blacklist)/sizeof(char*));i++) ++ for(i=0;i < blacklistsize;i++) + { + if(!strcmp(blacklist[i],m)) + { +@@ -638,5 +664,8 @@ + /* Allow SIGTERM, SIGINT: rmmod depends on this. */ + signal(SIGTERM,SIG_DFL); signal(SIGINT,SIG_DFL); + signal(SIGALRM,alarm_handler); alarm(MAX_TIME); ++#ifdef BLACKLIST ++ gen_blacklist(); ++#endif + return hw_setup(dc,verbose,probeonly,skip); + } |