diff options
Diffstat (limited to 'misc/cuecat/patches/patch-ab')
-rw-r--r-- | misc/cuecat/patches/patch-ab | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/misc/cuecat/patches/patch-ab b/misc/cuecat/patches/patch-ab new file mode 100644 index 00000000000..7fd7bc6c13b --- /dev/null +++ b/misc/cuecat/patches/patch-ab @@ -0,0 +1,161 @@ +$NetBSD: patch-ab,v 1.1.1.1 2001/02/13 13:55:42 wiz Exp $ + +--- read_cuecat.c.orig Wed Sep 20 22:13:46 2000 ++++ read_cuecat.c +@@ -4,8 +4,8 @@ + #include <unistd.h> + #include <fcntl.h> + #include <errno.h> +-#include <linux/kd.h> +-#include <linux/serial.h> ++#include <sys/time.h> ++#include <dev/wscons/wsconsio.h> + #include <sys/ioctl.h> + #include "cuecat_lib.h" + #include "cuecat_at2xt.h" +@@ -24,8 +24,6 @@ + int previous_kbd_mode; + struct termios old_term_settings; + struct termios new_term_settings; +-struct serial_struct old_serinfo; +-struct serial_struct new_serinfo; + char serial_dev_filename[FILENAME_MAX]=DEFAULT_SERIAL_DEV_FILE; + char serial; + char help; +@@ -55,6 +53,7 @@ + char barcode_type[CUECAT_BARCODE_TYPE_LEN+1]; + char barcode[256]; + int user_abort=0; ++ int ioctl_arg; + + /* Parse the command line parameters */ + if((invalid_parameter=parse_cmdline(argc,argv))) +@@ -83,7 +82,7 @@ + } + + /* Get a console or serial port descriptor */ +- fd=getfd(); ++ fd=0; + + /* Did the user want to use a serial pod ? */ + if(!serial) +@@ -92,9 +91,9 @@ + printf("Press ESC to end the program ...\n\n"); + + /* Get the current state of the keyboard */ +- if (ioctl(fd, KDGKBMODE, &previous_kbd_mode)) ++ if (ioctl(fd, WSKBDIO_GETMODE, &previous_kbd_mode)) + { +- perror("KDGKBMODE"); ++ perror("WSKBDIO_GETMODE"); + close(fd); + exit(1); + } +@@ -103,11 +102,9 @@ + printf("The keyboard was in "); + switch(previous_kbd_mode) + { +- case K_RAW: printf("raw") ;break; +- case K_XLATE: printf("xlate") ;break; +- case K_MEDIUMRAW: printf("mediumraw");break; +- case K_UNICODE: printf("unicode") ;break; +- default: printf("unknown") ;break; ++ case WSKBD_TRANSLATED: printf("translated"); break; ++ case WSKBD_RAW: printf("raw"); break; ++ default: printf("unknown(%d)",previous_kbd_mode); break; + } + printf(" state.\n\n"); + +@@ -139,9 +136,10 @@ + close(fd); + exit(1); + } +- if (ioctl(fd,KDSKBMODE,K_RAW)) ++ ioctl_arg = WSKBD_RAW; ++ if (ioctl(fd,WSKBDIO_SETMODE,&ioctl_arg)) + { +- perror("KDSKBMODE"); ++ perror("WSKBDIO_SETMODE"); + close(fd); + exit(1); + } +@@ -151,13 +149,6 @@ + /* Give a quick word of advise */ + printf("Press CTRL-C to end the program ...\n\n"); + +- /* Get the current state of the serial port */ +- if(ioctl(fd,TIOCGSERIAL,&old_serinfo)) +- { +- perror("TIOCGSERIAL"); +- close(fd); +- exit(1); +- } + if(tcgetattr(fd,&old_term_settings)==-1) + { + perror("tcgetattr"); +@@ -165,28 +156,12 @@ + exit(1); + } + +- new_serinfo=old_serinfo; + new_term_settings=old_term_settings; + + /* Setup the signal handler to trap any signal that might kill us before + we can restore the serial port as it was before */ + setup_signal_handlers(); + +- /* set SPD_CUST and divisor */ +- new_serinfo.flags&=~ASYNC_SPD_MASK; +- new_serinfo.flags|=ASYNC_SPD_CUST; +- +- /* we measured the cuecat's baudrate to be about 8000 the closest we can +- get to this with a basebaud of 115200 is to use a divisor of 14 */ +- new_serinfo.custom_divisor=14; +- +- if (ioctl(fd,TIOCSSERIAL,&new_serinfo)) +- { +- perror("TIOCSSERIAL"); +- close(fd); +- exit(1); +- } +- + cfmakeraw(&new_term_settings); + cfsetospeed(&new_term_settings, B38400); + +@@ -268,9 +243,9 @@ + /* Restore the keyboard and console as they where when we started */ + void restore_console() + { +- if(ioctl(fd,KDSKBMODE,previous_kbd_mode)) ++ if(ioctl(fd,WSKBDIO_SETMODE,&previous_kbd_mode)) + { +- perror("KDSKBMODE"); ++ perror("WSKBDIO_SETMODE"); + close(fd); + exit(1); + } +@@ -288,12 +263,6 @@ + /* Restore the keyboard and console as they where when we started */ + void restore_serial_port() + { +- if(ioctl(fd,TIOCSSERIAL,&old_serinfo)==-1) +- { +- perror("TIOCSSERIAL"); +- close(fd); +- exit(1); +- } + close(fd); + } + +@@ -361,8 +330,11 @@ + char arg; + + arg=0; ++ return 1; ++#if 0 + return(ioctl(fd,KDGKBTYPE,&arg)==0 + && ((arg==KB_101) || (arg==KB_84))); ++#endif + } + + |