comgt: Use TCGETS and TCSETS ioctls for struct termios
[openwrt/openwrt.git] / package / network / utils / comgt / patches / 004-check_tty.patch
index b81b0514c8a6a90415fed1125d85404dc504bc3c..fb1d9af4bb1699d72a3ba1d535e00b797bcd6498 100644 (file)
@@ -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);
      }
        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");
    }
    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;