45 lines
843 B
Diff
45 lines
843 B
Diff
diff -Nur kbd-1.12-4/src/kbdrate.c kbd-1.12-5/src/kbdrate.c
|
|
--- kbd-1.12-4/src/kbdrate.c 2004-02-26 22:46:55.000000000 +0100
|
|
+++ kbd-1.12-5/src/kbdrate.c 2004-02-26 22:50:19.000000000 +0100
|
|
@@ -90,6 +90,8 @@
|
|
};
|
|
#endif
|
|
|
|
+#include <signal.h>
|
|
+
|
|
#include "nls.h"
|
|
#include "version.h"
|
|
|
|
@@ -185,6 +187,12 @@
|
|
#endif /* KIOCSRATE */
|
|
}
|
|
|
|
+void
|
|
+sigalrmhandler( int sig ) {
|
|
+ fprintf( stderr, "kbdrate: Failed waiting for kbd controller!\n" );
|
|
+ raise( SIGINT );
|
|
+}
|
|
+
|
|
int
|
|
main( int argc, char **argv ) {
|
|
#ifdef __sparc__
|
|
@@ -260,6 +268,9 @@
|
|
exit( 1 );
|
|
}
|
|
|
|
+ signal( SIGALRM, sigalrmhandler );
|
|
+ alarm( 3 );
|
|
+
|
|
do {
|
|
lseek( fd, 0x64, 0 );
|
|
read( fd, &data, 1 );
|
|
@@ -274,6 +285,8 @@
|
|
read( fd, &data, 1 );
|
|
} while ((data & 2) == 2 ); /* wait */
|
|
|
|
+ alarm( 0 );
|
|
+
|
|
lseek( fd, 0x60, 0 );
|
|
sleep( 1 );
|
|
write( fd, &value, 1 );
|