summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schlemmer <azarah@gentoo.org>2003-07-31 04:30:42 +0000
committerMartin Schlemmer <azarah@gentoo.org>2003-07-31 04:30:42 +0000
commit6ca7b93e1a2ec20d10058c5f90ad2a4959c8cef6 (patch)
treeaf196954d01528978fd9f72a96eb52c4c34e4715 /sys-apps/kbd/files
parentnew version + some fixes (diff)
downloadgentoo-2-6ca7b93e1a2ec20d10058c5f90ad2a4959c8cef6.tar.gz
gentoo-2-6ca7b93e1a2ec20d10058c5f90ad2a4959c8cef6.tar.bz2
gentoo-2-6ca7b93e1a2ec20d10058c5f90ad2a4959c8cef6.zip
Fix struct kbd_rate not being fixed for sparc to use 'period' and not 'rate' (bug #25517)
Diffstat (limited to 'sys-apps/kbd/files')
-rw-r--r--sys-apps/kbd/files/kbd-1.08-sparc-fixes.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/sys-apps/kbd/files/kbd-1.08-sparc-fixes.patch b/sys-apps/kbd/files/kbd-1.08-sparc-fixes.patch
new file mode 100644
index 000000000000..d12ed2012c0a
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.08-sparc-fixes.patch
@@ -0,0 +1,93 @@
+--- kbd-1.08/src/kbdrate.c.orig 2003-07-30 23:05:29.000000000 +0200
++++ kbd-1.08/src/kbdrate.c 2003-07-30 23:14:24.000000000 +0200
+@@ -109,7 +109,11 @@
+ struct kbd_repeat kbdrep_s;
+
+ /* don't change, just test */
++#ifdef __sparc__
++ kbdrep_s.rate = -1;
++#else
+ kbdrep_s.period = -1;
++#endif
+ kbdrep_s.delay = -1;
+ if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
+ if (errno == EINVAL)
+@@ -125,11 +129,27 @@
+
+ /* do the change */
+ if (rate == 0) /* switch repeat off */
++#ifdef __sparc__
++ kbdrep_s.rate = 0;
++#else
+ kbdrep_s.period = 0;
++#endif
+ else
++#ifdef __sparc__
++ kbdrep_s.rate = 1000.0 / rate; /* convert cps to msec */
++#else
+ kbdrep_s.period = 1000.0 / rate; /* convert cps to msec */
++#endif
++#ifdef __sparc__
++ if (kbdrep_s.rate < 1)
++#else
+ if (kbdrep_s.period < 1)
++#endif
++#ifdef __sparc__
++ kbdrep_s.rate = 1;
++#else
+ kbdrep_s.period = 1;
++#endif
+ kbdrep_s.delay = delay;
+ if (kbdrep_s.delay < 1)
+ kbdrep_s.delay = 1;
+@@ -140,10 +160,18 @@
+ }
+
+ /* report */
++#ifdef __sparc__
++ if (kbdrep_s.rate == 0)
++#else
+ if (kbdrep_s.period == 0)
++#endif
+ rate = 0;
+ else
++#ifdef __sparc__
++ rate = 1000.0 / (double) kbdrep_s.rate;
++#else
+ rate = 1000.0 / (double) kbdrep_s.period;
++#endif
+
+ if (!silent)
+ printf( _("Typematic Rate set to %.1f cps (delay = %d ms)\n"),
+@@ -164,10 +192,19 @@
+ exit( 1 );
+ }
+
++#ifdef __sparc__
++ kbdrate_s.rate = (int) (rate + 0.5); /* round up */
++#else
+ kbdrate_s.period = (int) (rate + 0.5); /* round up */
++#endif
+ kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */
++#ifdef __sparc__
++ if (kbdrate_s.rate > 50)
++ kbdrate_s.rate = 50;
++#else
+ if (kbdrate_s.period > 50)
+ kbdrate_s.period = 50;
++#endif
+
+ if (ioctl( fd, KIOCSRATE, &kbdrate_s )) {
+ perror( "ioctl(KIOCSRATE)" );
+@@ -177,7 +214,11 @@
+
+ if (!silent)
+ printf( "Typematic Rate set to %d cps (delay = %d ms)\n",
++#ifdef __sparc__
++ kbdrate_s.rate, kbdrate_s.delay * 1000 / HZ );
++#else
+ kbdrate_s.period, kbdrate_s.delay * 1000 / HZ );
++#endif
+
+ return 1;
+ #else /* no KIOCSRATE */