1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

uses Curl_read() and Curl_write()

unfolded telwrite() instead of being a separate single function
This commit is contained in:
Daniel Stenberg 2001-01-25 12:22:17 +00:00
parent 3fcc9677c4
commit 45fdb48189

View File

@ -73,8 +73,6 @@
#include <curl/curl.h> #include <curl/curl.h>
#include "transfer.h" #include "transfer.h"
#include "sendf.h" #include "sendf.h"
#include "formdata.h"
#include "progress.h"
#define _MPRINTF_REPLACE /* use our functions only */ #define _MPRINTF_REPLACE /* use our functions only */
#include <curl/mprintf.h> #include <curl/mprintf.h>
@ -97,11 +95,6 @@
#define SB_EOF() (subpointer >= subend) #define SB_EOF() (subpointer >= subend)
#define SB_LEN() (subend - subpointer) #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 static
void telrcv(struct UrlData *data, void telrcv(struct UrlData *data,
unsigned char *inbuf, /* Data received from socket */ unsigned char *inbuf, /* Data received from socket */
@ -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) CURLcode Curl_telnet_done(struct connectdata *conn)
{ {
return CURLE_OK; return CURLE_OK;
@ -870,7 +833,7 @@ CURLcode Curl_telnet(struct connectdata *conn)
bool keepon = TRUE; bool keepon = TRUE;
char *buf = data->buffer; char *buf = data->buffer;
int nread; size_t nread;
init_telnet(data); init_telnet(data);
@ -880,37 +843,37 @@ CURLcode Curl_telnet(struct connectdata *conn)
keepfd = readfd; keepfd = readfd;
while (keepon) while (keepon) {
{
readfd = keepfd; /* set this every lap in the loop */ readfd = keepfd; /* set this every lap in the loop */
switch (select (sockfd + 1, &readfd, NULL, NULL, NULL)) switch (select (sockfd + 1, &readfd, NULL, NULL, NULL)) {
{
case -1: /* error, stop reading */ case -1: /* error, stop reading */
keepon = FALSE; keepon = FALSE;
continue; continue;
case 0: /* timeout */ case 0: /* timeout */
break; break;
default: /* read! */ default: /* read! */
if(FD_ISSET(1, &readfd)) 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); nread = read(1, buf, 255);
telwrite(data, (unsigned char *)buf, nread);
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(FD_ISSET(sockfd, &readfd)) if(FD_ISSET(sockfd, &readfd))
{ Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
#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 */
}
/* if we receive 0 or less here, the server closed the connection and /* if we receive 0 or less here, the server closed the connection and
we bail out from this! */ we bail out from this! */