sendf: move Curl_sendf to dict.c and make it static

... as the only remaining user of that function. Also fix gopher.c to
instead use Curl_write()

Closes #6020
This commit is contained in:
Daniel Stenberg 2020-09-28 14:14:25 +02:00
parent 422b257fef
commit a87cca7b1c
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
4 changed files with 71 additions and 76 deletions

View file

@ -286,52 +286,6 @@ void Curl_failf(struct Curl_easy *data, const char *fmt, ...)
}
}
/* Curl_sendf() sends formatted data to the server */
CURLcode Curl_sendf(curl_socket_t sockfd, struct connectdata *conn,
const char *fmt, ...)
{
struct Curl_easy *data = conn->data;
ssize_t bytes_written;
size_t write_len;
CURLcode result = CURLE_OK;
char *s;
char *sptr;
va_list ap;
va_start(ap, fmt);
s = vaprintf(fmt, ap); /* returns an allocated string */
va_end(ap);
if(!s)
return CURLE_OUT_OF_MEMORY; /* failure */
bytes_written = 0;
write_len = strlen(s);
sptr = s;
for(;;) {
/* Write the buffer to the socket */
result = Curl_write(conn, sockfd, sptr, write_len, &bytes_written);
if(result)
break;
if(data->set.verbose)
Curl_debug(data, CURLINFO_DATA_OUT, sptr, (size_t)bytes_written);
if((size_t)bytes_written != write_len) {
/* if not all was written at once, we must advance the pointer, decrease
the size left and try again! */
write_len -= bytes_written;
sptr += bytes_written;
}
else
break;
}
free(s); /* free the output string */
return result;
}
/*
* Curl_write() is an internal write function that sends data to the
* server. Works with plain sockets, SCP, SSL or kerberos.