summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch61
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);
+ }