/* Serial interface for raw TCP connections on Un*x like systems
- Copyright 1992, 1993 Free Software Foundation, Inc.
+ Copyright 1992, 1993, 1998 Free Software Foundation, Inc.
This file is part of GDB.
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/socket.h>
+
+#ifndef __CYGWIN32__
#include <netinet/tcp.h>
+#endif
+
#include "signals.h"
+#include "gdb_string.h"
struct tcp_ttystate
{
static void tcp_close PARAMS ((serial_t scb));
static serial_ttystate tcp_get_tty_state PARAMS ((serial_t scb));
static int tcp_set_tty_state PARAMS ((serial_t scb, serial_ttystate state));
+static int tcp_return_0 PARAMS ((serial_t));
+static int tcp_noflush_set_tty_state PARAMS ((serial_t, serial_ttystate,
+ serial_ttystate));
+static void tcp_print_tty_state PARAMS ((serial_t, serial_ttystate));
+
+void _initialize_ser_tcp PARAMS ((void));
/* Open up a raw tcp socket */
if (!port_str)
error ("tcp_open: No colon in host name!"); /* Shouldn't ever happen */
- tmp = min (port_str - name, sizeof hostname - 1);
+ tmp = min (port_str - name, (int) sizeof hostname - 1);
strncpy (hostname, name, tmp); /* Don't want colon */
hostname[tmp] = '\000'; /* Tie off host name */
port = atoi (port_str + 1);
*/
static int
-wait_for(scb, timeout)
+wait_for (scb, timeout)
serial_t scb;
int timeout;
{
numfds = select(scb->fd+1, &readfds, 0, &exceptfds, 0);
if (numfds <= 0)
- if (numfds == 0)
- return SERIAL_TIMEOUT;
- else if (errno == EINTR)
- continue;
- else
- return SERIAL_ERROR; /* Got an error from select or poll */
+ {
+ if (numfds == 0)
+ return SERIAL_TIMEOUT;
+ else if (errno == EINTR)
+ continue;
+ else
+ return SERIAL_ERROR; /* Got an error from select or poll */
+ }
return 0;
}
dead, or -3 for any other error (see errno in that case). */
static int
-tcp_readchar(scb, timeout)
+tcp_readchar (scb, timeout)
serial_t scb;
int timeout;
{
}
if (scb->bufcnt <= 0)
- if (scb->bufcnt == 0)
- return SERIAL_TIMEOUT; /* 0 chars means timeout [may need to
- distinguish between EOF & timeouts
- someday] */
- else
- return SERIAL_ERROR; /* Got an error from read */
+ {
+ if (scb->bufcnt == 0)
+ return SERIAL_TIMEOUT; /* 0 chars means timeout [may need to
+ distinguish between EOF & timeouts
+ someday] */
+ else
+ return SERIAL_ERROR; /* Got an error from read */
+ }
scb->bufcnt--;
scb->bufp = scb->buf;
tcp_noflush_set_tty_state,
tcp_setbaudrate,
tcp_setstopbits,
+ tcp_return_0, /* wait for output to drain */
};
void