diff options
-rw-r--r-- | package/network/utils/comgt/Makefile | 2 | ||||
-rw-r--r-- | package/network/utils/comgt/patches/002-termios.patch | 78 | ||||
-rw-r--r-- | package/network/utils/comgt/patches/004-check_tty.patch | 24 |
3 files changed, 90 insertions, 14 deletions
diff --git a/package/network/utils/comgt/Makefile b/package/network/utils/comgt/Makefile index 500365aaab..8fcf54e3a4 100644 --- a/package/network/utils/comgt/Makefile +++ b/package/network/utils/comgt/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=comgt PKG_VERSION:=0.32 -PKG_RELEASE:=24 +PKG_RELEASE:=25 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz PKG_SOURCE_URL:=@SF/comgt diff --git a/package/network/utils/comgt/patches/002-termios.patch b/package/network/utils/comgt/patches/002-termios.patch index 3649f3cf09..08f22d15d9 100644 --- a/package/network/utils/comgt/patches/002-termios.patch +++ b/package/network/utils/comgt/patches/002-termios.patch @@ -18,7 +18,23 @@ int comfd=0; /* Communication file descriptor. Defaults to stdin. */ char msg[STRINGL]; /* Massage messages here */ int preturn,returns[MAXGOSUBS]; -@@ -926,7 +926,7 @@ void setcom(void) { +@@ -172,7 +172,7 @@ void dotestkey(void) { + + /* Exit after resetting terminal settings */ + void ext(long xtc) { +- ioctl(1, TCSETA, &cons); ++ ioctl(1, TCSETS, &cons); + exit(xtc); + } + +@@ -920,24 +920,24 @@ BOOL getonoroff(void) { + void setcom(void) { + stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | CLOCAL | PARENB); + stbuf.c_cflag |= (speed | bits | CREAD | clocal | parity | stopbits ); +- if (ioctl(comfd, TCSETA, &stbuf) < 0) { ++ if (ioctl(comfd, TCSETS, &stbuf) < 0) { + serror("Can't ioctl set device",1); + } } void doset(void) { @@ -27,3 +43,63 @@ int a,b; gettoken(); if(strcmp(token,"echo")==0) { + a=0; + if(getonoroff()) a=ECHO|ECHOE; +- if(ioctl(0, TCGETA, &console)<0) { ++ if(ioctl(0, TCGETS, &console)<0) { + serror("Can't ioctl FD zero!\n",2); + } + console.c_lflag &= ~(ECHO | ECHOE); + console.c_lflag |= a; +- ioctl(0, TCSETA, &console); ++ ioctl(0, TCSETS, &console); + } + else if(strcmp(token,"senddelay")==0) { + senddelay=10000L*getdvalue(); +@@ -1224,7 +1224,7 @@ void doclose(void) { + if(strcmp(token,"hardcom")==0) { + if(comfd== -1) serror("Com device not open",1); + vmsg("Closing device"); +- if (ioctl(comfd, TCSETA, &svbuf) < 0) { ++ if (ioctl(comfd, TCSETS, &svbuf) < 0) { + sprintf(msg,"Can't ioctl set device %s.\n",device); + serror(msg,1); + } +@@ -1266,12 +1266,12 @@ void opengt(void) { + ext(1); + } + } +- if (ioctl (comfd, TCGETA, &svbuf) < 0) { ++ if (ioctl (comfd, TCGETS, &svbuf) < 0) { + sprintf(msg,"Can't control %s, please try again.\n",device); + serror(msg,1); + } + setenv("COMGTDEVICE",device,1); +- ioctl(comfd, TCGETA, &stbuf); ++ ioctl(comfd, TCGETS, &stbuf); + speed=stbuf.c_cflag & CBAUD; + if (high_speed == 0) strcpy(cspeed,"115200"); + else strcpy(cspeed,"57600"); +@@ -1303,11 +1303,11 @@ void opendevice(void) { + } + else comfd=0; + +- if (ioctl (comfd, TCGETA, &svbuf) < 0) { ++ if (ioctl (comfd, TCGETS, &svbuf) < 0) { + sprintf(msg,"Can't ioctl get device %s.\n",device); + serror(msg,1); + } +- ioctl(comfd, TCGETA, &stbuf); ++ ioctl(comfd, TCGETS, &stbuf); + speed=stbuf.c_cflag & CBAUD; + switch(speed) { + case B0: strcpy(cspeed,"0");break; +@@ -1553,7 +1553,7 @@ int main(int argc,char **argv) { + skip_default=0; + filep=NULL; + scriptspace=4096; +- ioctl(1, TCGETA, &cons); ++ ioctl(1, TCGETS, &cons); + if((script=( char *)malloc(scriptspace))==NULL) { + serror("Could not malloc()",3); + } diff --git a/package/network/utils/comgt/patches/004-check_tty.patch b/package/network/utils/comgt/patches/004-check_tty.patch index b81b0514c8..fb1d9af4bb 100644 --- a/package/network/utils/comgt/patches/004-check_tty.patch +++ b/package/network/utils/comgt/patches/004-check_tty.patch @@ -12,8 +12,8 @@ void setcom(void) { stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | CLOCAL | PARENB); stbuf.c_cflag |= (speed | bits | CREAD | clocal | parity | stopbits ); -- if (ioctl(comfd, TCSETA, &stbuf) < 0) { -+ if (tty && ioctl(comfd, TCSETA, &stbuf) < 0) { +- if (ioctl(comfd, TCSETS, &stbuf) < 0) { ++ if (tty && ioctl(comfd, TCSETS, &stbuf) < 0) { serror("Can't ioctl set device",1); } } @@ -21,8 +21,8 @@ if(strcmp(token,"hardcom")==0) { if(comfd== -1) serror("Com device not open",1); vmsg("Closing device"); -- if (ioctl(comfd, TCSETA, &svbuf) < 0) { -+ if (tty && ioctl(comfd, TCSETA, &svbuf) < 0) { +- if (ioctl(comfd, TCSETS, &svbuf) < 0) { ++ if (tty && ioctl(comfd, TCSETS, &svbuf) < 0) { sprintf(msg,"Can't ioctl set device %s.\n",device); serror(msg,1); } @@ -30,19 +30,19 @@ ext(1); } } -- if (ioctl (comfd, TCGETA, &svbuf) < 0) { +- if (ioctl (comfd, TCGETS, &svbuf) < 0) { + if (isatty (comfd)) + tty=1; + else + tty=0; -+ if (tty && ioctl (comfd, TCGETA, &svbuf) < 0) { ++ if (tty && ioctl (comfd, TCGETS, &svbuf) < 0) { sprintf(msg,"Can't control %s, please try again.\n",device); serror(msg,1); } setenv("COMGTDEVICE",device,1); -- ioctl(comfd, TCGETA, &stbuf); +- ioctl(comfd, TCGETS, &stbuf); + if (tty) -+ ioctl(comfd, TCGETA, &stbuf); ++ ioctl(comfd, TCGETS, &stbuf); speed=stbuf.c_cflag & CBAUD; if (high_speed == 0) strcpy(cspeed,"115200"); else strcpy(cspeed,"57600"); @@ -51,18 +51,18 @@ } else comfd=0; - -- if (ioctl (comfd, TCGETA, &svbuf) < 0) { +- if (ioctl (comfd, TCGETS, &svbuf) < 0) { + if (isatty (comfd)) + tty=1; + else + tty=0; -+ if (tty && ioctl (comfd, TCGETA, &svbuf) < 0) { ++ if (tty && ioctl (comfd, TCGETS, &svbuf) < 0) { sprintf(msg,"Can't ioctl get device %s.\n",device); serror(msg,1); } -- ioctl(comfd, TCGETA, &stbuf); +- ioctl(comfd, TCGETS, &stbuf); + if (tty) -+ ioctl(comfd, TCGETA, &stbuf); ++ ioctl(comfd, TCGETS, &stbuf); speed=stbuf.c_cflag & CBAUD; switch(speed) { case B0: strcpy(cspeed,"0");break; |