static int connect_to_unix_server (void);
#endif
#ifdef INTERNET_DOMAIN_SOCKETS
-static int connect_to_internet_server (char *serverhost, u_short port);
+static int connect_to_internet_server (char *serverhost, unsigned short port);
#endif
/* On some systems, e.g. DGUX, inet_addr returns a 'struct in_addr'. */
descriptor for server if successful.
*/
static int
-connect_to_internet_server (char *serverhost, u_short port)
+connect_to_internet_server (char *serverhost, unsigned short port)
{
int s; /* connected socket descriptor */
struct servent *sp; /* pointer to service information */
struct sockaddr_in peeraddr_in; /* for peer socket address */
char buf[512]; /* temporary buffer */
+ int t;
+
/* clear out address structures */
memset((char *)&peeraddr_in,0,sizeof(struct sockaddr_in));
peeraddr_in.sin_family = AF_INET;
/* look up the server host's internet address */
- if ((peeraddr_in.sin_addr.s_addr = internet_addr(serverhost)) == -1) {
+ if ((t = internet_addr(serverhost)) == -1) {
fprintf(stderr,"%s: unable to find %s in /etc/hosts or from YP\n",
progname,serverhost);
exit(1);
+ } else {
+ peeraddr_in.sin_addr.s_addr = t;
}; /* if */
if (port == 0) {
send_string(s,EOT_STR); /* make sure server gets string */
-#if !defined (linux) && !defined (_SCO_DS)
+#if !defined (_SCO_DS)
/*
- * shutdown is completely hozed under linux. If s is a unix domain socket,
- * you'll get EOPNOTSUPP back from it. If s is an internet socket, you get
- * a broken pipe when you try to read a bit later. The latter
- * problem is fixed for linux versions >= 1.1.46, but the problem
- * with unix sockets persists. Sigh.
+ * There used to be a comment here complaining about ancient Linux
+ * versions. It is no longer relevant. I don't know why _SCO_DS is
+ * verboten here, as the original comment did not say.
*/
if (shutdown(s,1) == -1) {
#else
while ((length = read(s,buffer,GSERV_BUFSZ)) > 0 ||
(length == -1 && errno == EINTR)) {
- if (length) {
+ if (length > 0) {
buffer[length] = '\0';
if (echo) {
fputs(buffer,stdout);