diff options
author | 2003-07-31 04:30:42 +0000 | |
---|---|---|
committer | 2003-07-31 04:30:42 +0000 | |
commit | 6ca7b93e1a2ec20d10058c5f90ad2a4959c8cef6 (patch) | |
tree | af196954d01528978fd9f72a96eb52c4c34e4715 /sys-apps/kbd/files | |
parent | new version + some fixes (diff) | |
download | gentoo-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.patch | 93 |
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 */ |