diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2001-01-25 12:22:17 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2001-01-25 12:22:17 +0000 | 
| commit | 45fdb4818972a94edb9e89ce8d2043a8f9a86abf (patch) | |
| tree | 0452972d609db6f8ebdbf3b74c00d4310ab16244 | |
| parent | 3fcc9677c43bd05b31079c7f13f63484883e4887 (diff) | |
uses Curl_read() and Curl_write()
unfolded telwrite() instead of being a separate single function
| -rw-r--r-- | lib/telnet.c | 117 | 
1 files changed, 40 insertions, 77 deletions
diff --git a/lib/telnet.c b/lib/telnet.c index 462e5956b..9deb13d75 100644 --- a/lib/telnet.c +++ b/lib/telnet.c @@ -73,8 +73,6 @@  #include <curl/curl.h>  #include "transfer.h"  #include "sendf.h" -#include "formdata.h" -#include "progress.h"  #define _MPRINTF_REPLACE /* use our functions only */  #include <curl/mprintf.h> @@ -98,11 +96,6 @@  #define  SB_LEN() (subend - subpointer)  static -void telwrite(struct UrlData *data, -	      unsigned char *buffer,	/* Data to write */ -	      int count);		/* Number of bytes to write */ - -static  void telrcv(struct UrlData *data,  	    unsigned char *inbuf,	/* Data received from socket */  	    int count);			/* Number of bytes received */ @@ -826,36 +819,6 @@ void telrcv(struct UrlData *data,     }  } -static -void telwrite(struct UrlData *data, -	      unsigned char *buffer,	/* Data to write */ -	      int count)		/* Number of bytes to write */ -{ -   unsigned char outbuf[2]; -   int out_count = 0; -   int bytes_written; - -   while(count--) -   { -      outbuf[0] = *buffer++; -      out_count = 1; -      if(outbuf[0] == IAC) -	 outbuf[out_count++] = IAC; -       -#ifndef USE_SSLEAY -      bytes_written = swrite(data->firstsocket, outbuf, out_count); -#else -      if (data->ssl.use) { -        bytes_written = SSL_write(data->ssl.handle, (char *)outbuf, -                                  out_count); -      } -      else { -        bytes_written = swrite(data->firstsocket, outbuf, out_count); -      } -#endif /* USE_SSLEAY */ -   } -} -  CURLcode Curl_telnet_done(struct connectdata *conn)  {    return CURLE_OK; @@ -870,7 +833,7 @@ CURLcode Curl_telnet(struct connectdata *conn)    bool keepon = TRUE;    char *buf = data->buffer; -  int nread; +  size_t nread;    init_telnet(data); @@ -880,49 +843,49 @@ CURLcode Curl_telnet(struct connectdata *conn)    keepfd = readfd; -   while (keepon) -   { -      readfd = keepfd;		/* set this every lap in the loop */ +  while (keepon) { +    readfd = keepfd;		/* set this every lap in the loop */ -      switch (select (sockfd + 1, &readfd, NULL, NULL, NULL)) -      { -      case -1:			/* error, stop reading */ -	 keepon = FALSE; -	 continue; -      case 0:			/* timeout */ -	 break; -      default:			/* read! */ -	 if(FD_ISSET(1, &readfd)) -	 { -	    nread = read(1, buf, 255); -	    telwrite(data, (unsigned char *)buf, nread); -	 } - -	 if(FD_ISSET(sockfd, &readfd)) -	 { -#ifndef USE_SSLEAY -	    nread = sread (sockfd, buf, BUFSIZE - 1); -#else -	    if (data->ssl.use) { -	       nread = SSL_read (data->ssl.handle, buf, BUFSIZE - 1); -	    } -	    else { -	       nread = sread (sockfd, buf, BUFSIZE - 1); -	    } -#endif /* USE_SSLEAY */ -	 } +    switch (select (sockfd + 1, &readfd, NULL, NULL, NULL)) { +    case -1:			/* error, stop reading */ +      keepon = FALSE; +      continue; +    case 0:			/* timeout */ +      break; +    default:			/* read! */ +      if(FD_ISSET(1, &readfd)) { /* read from stdin */ +        unsigned char outbuf[2]; +        int out_count = 0; +        size_t bytes_written; +        char *buffer = buf; +         +        nread = read(1, buf, 255); + +        while(nread--) { +          outbuf[0] = *buffer++; +          out_count = 1; +          if(outbuf[0] == IAC) +            outbuf[out_count++] = IAC; +       +          Curl_write(conn, data->firstsocket, outbuf, +                     out_count, &bytes_written); +        } +      } -	 /* if we receive 0 or less here, the server closed the connection and -	   we bail out from this! */ -	if (nread <= 0) { -	  keepon = FALSE; -	  break; -	} +      if(FD_ISSET(sockfd, &readfd)) +        Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread); -	 telrcv(data, (unsigned char *)buf, nread); +      /* if we receive 0 or less here, the server closed the connection and +         we bail out from this! */ +      if (nread <= 0) { +        keepon = FALSE; +        break;        } -   } -   return CURLE_OK; + +      telrcv(data, (unsigned char *)buf, nread); +    } +  } +  return CURLE_OK;  }  | 
