hostname and large file support added

This commit is contained in:
Daniel Stenberg 2000-08-24 12:33:16 +00:00
parent 31b8eea041
commit 1b1f143cd6
9 changed files with 123 additions and 14 deletions

View file

@ -69,7 +69,7 @@
#include "urldata.h"
#include "sendf.h"
#ifndef HAVE_INET_NTOA_R_DECL
#if defined(HAVE_INET_NTOA_R) && !defined(HAVE_INET_NTOA_R_DECL)
#include "inet_ntoa_r.h"
#endif

View file

@ -38,12 +38,6 @@
* ------------------------------------------------------------
****************************************************************************/
#ifdef NEED_REENTRANT
#define _REENTRANT /* Necessary to use in Solaris, since the silly guys at Sun
made the localtime_r() prototype dependent on it (or
_POSIX_C_SOURCE or _POSIX_PTHREAD_SEMANTICS). */
#endif
/* -- WIN32 approved -- */
#include <stdio.h>
#include <string.h>
@ -57,6 +51,12 @@
#include "setup.h"
#ifdef NEED_REENTRANT
#define _REENTRANT /* Necessary to use in Solaris, since the silly guys at Sun
made the localtime_r() prototype dependent on it (or
_POSIX_C_SOURCE or _POSIX_PTHREAD_SEMANTICS). */
#endif
#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__)
#include <winsock.h>
#include <time.h>
@ -378,7 +378,7 @@ CURLcode http(struct connectdata *conn)
#ifdef HAVE_LOCALTIME_R
/* thread-safe version */
struct tm keeptime;
thistime = localtime_r(&data->timevalue, &keeptime);
thistime = (struct tm *)localtime_r(&data->timevalue, &keeptime);
#else
thistime = localtime(&data->timevalue);
#endif
@ -492,13 +492,19 @@ CURLcode http(struct connectdata *conn)
actually set your own */
sendf(data->firstsocket, data,
"Content-Length: %d\r\n",
strlen(data->postfields));
(data->postfieldsize?data->postfieldsize:
strlen(data->postfields)) );
if(!checkheaders(data, "Content-Type:"))
sendf(data->firstsocket, data,
"Content-Type: application/x-www-form-urlencoded\r\n");
/* and here comes the actual data */
if(data->postfieldsize) {
ssend(data->firstsocket, data, "\r\n", 2);
ssend(data->firstsocket, data, data->postfields, data->postfieldsize);
ssend(data->firstsocket, data, "\r\n", 2);
}
sendf(data->firstsocket, data,
"\r\n"
"%s\r\n",

View file

@ -82,7 +82,7 @@
#include <sys/sockio.h>
#endif
#ifndef HAVE_INET_NTOA_R_DECL
#if defined(HAVE_INET_NTOA_R) && !defined(HAVE_INET_NTOA_R_DECL)
#include "inet_ntoa_r.h"
#endif

View file

@ -84,7 +84,6 @@ void failf(struct UrlData *data, char *fmt, ...)
}
/* sendf() sends the formated data to the server */
int sendf(int fd, struct UrlData *data, char *fmt, ...)
{
size_t bytes_written;
@ -110,6 +109,25 @@ int sendf(int fd, struct UrlData *data, char *fmt, ...)
return(bytes_written);
}
/* ssend() sends plain (binary) data to the server */
size_t ssend(int fd, struct UrlData *data, void *mem, size_t len)
{
size_t bytes_written;
if(data->bits.verbose)
fprintf(data->err, "> [binary output]\n");
#ifndef USE_SSLEAY
bytes_written = swrite(fd, mem, len);
#else
if (data->use_ssl) {
bytes_written = SSL_write(data->ssl, mem, len);
} else {
bytes_written = swrite(fd, mem, len);
}
#endif /* USE_SSLEAY */
return bytes_written;
}

View file

@ -40,7 +40,8 @@
* ------------------------------------------------------------
****************************************************************************/
int sendf(int fd, struct UrlData *, char *fmt, ...);
size_t sendf(int fd, struct UrlData *, char *fmt, ...);
size_t ssend(int fd, struct UrlData *, void *fmt, size_t len);
void infof(struct UrlData *, char *fmt, ...);
void failf(struct UrlData *, char *fmt, ...);

View file

@ -421,6 +421,9 @@ CURLcode curl_setopt(CURL *curl, CURLoption option, ...)
case CURLOPT_POSTFIELDS:
data->postfields = va_arg(param, char *);
break;
case CURLOPT_POSTFIELDSIZE:
data->postfieldsize = va_arg(param, long);
break;
case CURLOPT_REFERER:
data->referer = va_arg(param, char *);
data->bits.http_set_referer = (data->referer && *data->referer)?1:0;

View file

@ -345,6 +345,9 @@ struct UrlData {
char *range; /* range, if used. See README for detailed specification on
this syntax. */
char *postfields; /* if POST, set the fields' values here */
long postfieldsize; /* if POST, this might have a size to use instead of
strlen(), and then the data *may* be binary (contain
zero bytes) */
bool free_referer; /* set TRUE if 'referer' points to a string we
allocated */