--- lxsys.c.orig 2007-11-05 15:40:27.000000000 -0500 +++ lxsys.c 2007-12-18 15:46:41.000000000 -0500 @@ -1,12 +1,14 @@ - -#include +#include +#include +#include +#include #include #include +#include #include #include #include #include -#include #include #include #include "thrdef.h" @@ -18,8 +20,9 @@ #include "hwaredef.h" struct termios old_options; -char serport_name[]="/dev/ttyS?"; +char serport_name[]="/dev/ttyd?"; +extern int saved_euid; void lir_mutex_init(void) { @@ -173,15 +176,13 @@ int lir_parport_permission(void) { -int i; +int i=0; // Get permission to write to the parallel port if(ui.parport < 0x400-4) { - i=ioperm(ui.parport,4,1); - } -else - { - i=iopl(3); + seteuid(saved_euid); + i=i386_set_ioperm(ui.parport,4,1); + seteuid(getuid()); } if(i != 0) { @@ -331,11 +332,9 @@ int i; if(ui.parport < 0x400-4) { - i=ioperm(ui.parport,4,1); - } -else - { - i=iopl(3); + seteuid(saved_euid); + i=i386_set_ioperm(ui.parport,4,1); + seteuid(getuid()); } if(i!=0)lirerr(764921); i=1000; @@ -348,11 +347,9 @@ int i; if(ui.parport < 0x400-4) { - i=ioperm(ui.parport,4,1); - } -else - { - i=iopl(3); + seteuid(saved_euid); + i=i386_set_ioperm(ui.parport,4,1); + seteuid(getuid()); } if(i!=0)lirerr(764921); return inb(port);