--- a/comgt.c +++ b/comgt.c @@ -91,6 +91,7 @@ unsigned long hstart,hset; char NullString[]={ "" }; BOOL lastcharnl=1; /* Indicate that last char printed from getonebyte was a nl, so no new one is needed */ +BOOL tty=1; //"open com \"/dev/modem\"\nset com 38400n81\nset senddelay 0.05\nsend \"ATi^m\"\nget 2 \" ^m\" $s\nprint \"Response : \",$s,\"\\n\"\nget 2 \" ^m\" $s\nprint \"Response :\",$s,\"\\n\"\nget 2 \" ^m\" $s\nprint \"Response : \",$s,\"\\n\"\n\n"; @@ -920,7 +921,7 @@ 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, TCSETS, &stbuf) < 0) { + if (tty && ioctl(comfd, TCSETS, &stbuf) < 0) { serror("Can't ioctl set device",1); } } @@ -1224,7 +1225,7 @@ void doclose(void) { if(strcmp(token,"hardcom")==0) { if(comfd== -1) serror("Com device not open",1); vmsg("Closing device"); - 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); } @@ -1266,12 +1267,17 @@ void opengt(void) { ext(1); } } - if (ioctl (comfd, TCGETS, &svbuf) < 0) { + if (isatty (comfd)) + tty=1; + else + tty=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, TCGETS, &stbuf); + if (tty) + ioctl(comfd, TCGETS, &stbuf); speed=stbuf.c_cflag & CBAUD; if (high_speed == 0) strcpy(cspeed,"115200"); else strcpy(cspeed,"57600"); @@ -1302,12 +1308,16 @@ void opendevice(void) { } } else comfd=0; - - if (ioctl (comfd, TCGETS, &svbuf) < 0) { + if (isatty (comfd)) + tty=1; + else + tty=0; + if (tty && ioctl (comfd, TCGETS, &svbuf) < 0) { sprintf(msg,"Can't ioctl get device %s.\n",device); serror(msg,1); } - ioctl(comfd, TCGETS, &stbuf); + if (tty) + ioctl(comfd, TCGETS, &stbuf); speed=stbuf.c_cflag & CBAUD; switch(speed) { case B0: strcpy(cspeed,"0");break;