diff --git a/CHANGES b/CHANGES index e2d3e6619..4ad41f685 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,18 @@ Version 7.3 +Daniel (28 September 2000) +- Removed the base64_krb.[ch] files. They've now replaced the former + base64.[ch] files. + +Daniel (26 September 2000) +- Updated some docs. + +- I changed the OpenSSL fix to work with older versions as well. The posted + patch was only working with 0.9.6 and no older ones. + +Version 7.3-pre8 + Daniel (25 September 2000) - Erdmut Pfeifer informed us that curl didn't build with OpenSSL 0.9.6 and showed us what needed to get patched in order to make it build properly @@ -33,7 +45,7 @@ Daniel (21 September 2000) Daniel (20 September 2000) - Richard Prescott solved another name lookup buffer size problem. I took this opportunity to rewrite the GetHost() function. With these large buffer - sizes, I think keeping them as local arrays quickly turn ugly. I know use + sizes, I think keeping them as local arrays quickly turn ugly. I now use malloc() to get the buffer memory. Thanks to this, I now can realloc() to a large buffer in case of demand (errno == ERANGE) in case a solution like that would become necessary. I still want to avoid that kind of nastiness. diff --git a/acconfig.h b/acconfig.h index df5fab92d..b9087794e 100644 --- a/acconfig.h +++ b/acconfig.h @@ -33,3 +33,6 @@ /* Define if you need the _REENTRANT define for some functions */ #undef NEED_REENTRANT + +/* Define if you have the Kerberos4 libraries (including -ldes) */ +#undef KRB4 diff --git a/config.h.in b/config.h.in index 2318f9711..3cf2b193b 100644 --- a/config.h.in +++ b/config.h.in @@ -49,6 +49,9 @@ /* Define if you need the _REENTRANT define for some functions */ #undef NEED_REENTRANT +/* Define if you have the Kerberos4 libraries (including -ldes) */ +#undef KRB4 + /* The number of bytes in a long double. */ #undef SIZEOF_LONG_DOUBLE @@ -94,6 +97,9 @@ /* Define if you have the inet_ntoa_r function. */ #undef HAVE_INET_NTOA_R +/* Define if you have the krb_get_our_ip_for_realm function. */ +#undef HAVE_KRB_GET_OUR_IP_FOR_REALM + /* Define if you have the localtime_r function. */ #undef HAVE_LOCALTIME_R @@ -124,6 +130,9 @@ /* Define if you have the stricmp function. */ #undef HAVE_STRICMP +/* Define if you have the strlcpy function. */ +#undef HAVE_STRLCPY + /* Define if you have the strstr function. */ #undef HAVE_STRSTR @@ -145,6 +154,9 @@ /* Define if you have the header file. */ #undef HAVE_CRYPTO_H +/* Define if you have the header file. */ +#undef HAVE_DES_H + /* Define if you have the header file. */ #undef HAVE_DLFCN_H @@ -160,6 +172,9 @@ /* Define if you have the header file. */ #undef HAVE_IO_H +/* Define if you have the header file. */ +#undef HAVE_KRB_H + /* Define if you have the header file. */ #undef HAVE_MALLOC_H @@ -256,6 +271,9 @@ /* Define if you have the nsl library (-lnsl). */ #undef HAVE_LIBNSL +/* Define if you have the resolv library (-lresolv). */ +#undef HAVE_LIBRESOLV + /* Define if you have the resolve library (-lresolve). */ #undef HAVE_LIBRESOLVE diff --git a/configure.in b/configure.in index 66ff515ff..b3846b827 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ dnl $Id$ dnl Process this file with autoconf to produce a configure script. AC_INIT(lib/urldata.h) AM_CONFIG_HEADER(config.h src/config.h) -AM_INIT_AUTOMAKE(curl,"7.3-pre8") +AM_INIT_AUTOMAKE(curl,"7.3") AM_PROG_LIBTOOL dnl diff --git a/docs/FAQ b/docs/FAQ index 7eb07f128..6b2a92fec 100644 --- a/docs/FAQ +++ b/docs/FAQ @@ -141,6 +141,7 @@ FAQ Solaris (native cc compiler) HPUX (native cc compiler) SGI IRIX (native cc compiler) + SCO UNIX (native cc compiler) When configuring curl, I specify --with-ssl. OpenSSL is installed in /usr/local/ssl Configure reports SSL in /usr/local/ssl, but fails to find diff --git a/docs/curl_easy_init.3 b/docs/curl_easy_init.3 index daea907bd..4bc9d2b5a 100644 --- a/docs/curl_easy_init.3 +++ b/docs/curl_easy_init.3 @@ -2,7 +2,7 @@ .\" nroff -man [file] .\" Written by daniel@haxx.se .\" -.TH curl_easy_init 3 "22 May 2000" "Curl 7.0" "libcurl Manual" +.TH curl_easy_init 3 "26 September 2000" "Curl 7.0" "libcurl Manual" .SH NAME curl_easy_init - Start a libcurl "easy" session .SH SYNOPSIS @@ -16,6 +16,9 @@ that you shall use as input to the other easy-functions. The init calls intializes curl and this call MUST have a corresponding call to .I curl_easy_cleanup when the operation is complete. + +On win32 systems, you need to init the winsock stuff manually, libcurl will +not do that for you. WSAStartup() and WSACleanup() should be used accordingly. .SH RETURN VALUE If this function returns NULL, something went wrong and you cannot use the other curl functions. diff --git a/include/curl/curl.h b/include/curl/curl.h index e54ccac65..a910dc4b3 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -442,7 +442,7 @@ char *curl_getenv(char *variable); char *curl_version(void); /* This is the version number */ -#define LIBCURL_VERSION "7.3-pre6" +#define LIBCURL_VERSION "7.3" #define LIBCURL_VERSION_NUM 0x070300 /* linked-list structure for the CURLOPT_QUOTE option */ diff --git a/lib/Makefile.am b/lib/Makefile.am index 52b741771..88e36b356 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -2,7 +2,7 @@ # $Id$ # -AUTOMAKE_OPTIONS = foreign no-dependencies +AUTOMAKE_OPTIONS = foreign lib_LTLIBRARIES = libcurl.la @@ -23,7 +23,8 @@ download.c getdate.h ldap.c ssluse.c version.c \ download.h getenv.c ldap.h ssluse.h \ escape.c getenv.h mprintf.c telnet.c \ escape.h getpass.c netrc.c telnet.h \ -writeout.c writeout.h highlevel.c strequal.c strequal.h easy.c +writeout.c writeout.h highlevel.c strequal.c strequal.h easy.c \ +security.h security.c krb4.c # Say $(srcdir), so GNU make does not report an ambiguity with the .y.c rule. $(srcdir)/getdate.c: getdate.y diff --git a/lib/Makefile.in b/lib/Makefile.in index a88678ecb..b793969aa 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -77,7 +77,7 @@ RANLIB = @RANLIB@ VERSION = @VERSION@ YACC = @YACC@ -AUTOMAKE_OPTIONS = foreign no-dependencies +AUTOMAKE_OPTIONS = foreign lib_LTLIBRARIES = libcurl.la @@ -86,7 +86,7 @@ lib_LTLIBRARIES = libcurl.la INCLUDES = -I$(top_srcdir)/include -libcurl_la_SOURCES = arpa_telnet.h file.c getpass.h netrc.h timeval.c base64.c file.h hostip.c progress.c timeval.h base64.h formdata.c hostip.h progress.h cookie.c formdata.h http.c sendf.c cookie.h ftp.c http.h sendf.h url.c dict.c ftp.h if2ip.c speedcheck.c url.h dict.h getdate.c if2ip.h speedcheck.h urldata.h download.c getdate.h ldap.c ssluse.c version.c download.h getenv.c ldap.h ssluse.h escape.c getenv.h mprintf.c telnet.c escape.h getpass.c netrc.c telnet.h writeout.c writeout.h highlevel.c strequal.c strequal.h easy.c +libcurl_la_SOURCES = arpa_telnet.h file.c getpass.h netrc.h timeval.c base64.c file.h hostip.c progress.c timeval.h base64.h formdata.c hostip.h progress.h cookie.c formdata.h http.c sendf.c cookie.h ftp.c http.h sendf.h url.c dict.c ftp.h if2ip.c speedcheck.c url.h dict.h getdate.c if2ip.h speedcheck.h urldata.h download.c getdate.h ldap.c ssluse.c version.c download.h getenv.c ldap.h ssluse.h escape.c getenv.h mprintf.c telnet.c escape.h getpass.c netrc.c telnet.h writeout.c writeout.h highlevel.c strequal.c strequal.h easy.c security.h security.c krb4.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h ../src/config.h @@ -104,7 +104,7 @@ libcurl_la_OBJECTS = file.lo timeval.lo base64.lo hostip.lo progress.lo \ formdata.lo cookie.lo http.lo sendf.lo ftp.lo url.lo dict.lo if2ip.lo \ speedcheck.lo getdate.lo download.lo ldap.lo ssluse.lo version.lo \ getenv.lo escape.lo mprintf.lo telnet.lo getpass.lo netrc.lo \ -writeout.lo highlevel.lo strequal.lo easy.lo +writeout.lo highlevel.lo strequal.lo easy.lo security.lo krb4.lo CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) diff --git a/lib/http.c b/lib/http.c index d4a3da1c0..4e3471b36 100644 --- a/lib/http.c +++ b/lib/http.c @@ -295,7 +295,7 @@ CURLcode http(struct connectdata *conn) !data->auth_host || strequal(data->auth_host, data->hostname)) { sprintf(data->buffer, "%s:%s", data->user, data->passwd); - if(base64Encode(data->buffer, 0, /* size zero makes it do strlen() */ + if(base64_encode(data->buffer, strlen(data->buffer), &authorization) >= 0) { data->ptr_userpwd = maprintf( "Authorization: Basic %s\015\012", authorization); diff --git a/lib/url.c b/lib/url.c index f3231436a..4ddafc182 100644 --- a/lib/url.c +++ b/lib/url.c @@ -1392,7 +1392,8 @@ CURLcode curl_connect(CURL *curl, CURLconnect **in_connect) if(data->bits.proxy_user_passwd) { char *authorization; sprintf(data->buffer, "%s:%s", data->proxyuser, data->proxypasswd); - if(base64Encode(data->buffer, 0, &authorization) >= 0) { + if(base64_encode(data->buffer, strlen(data->buffer), + &authorization) >= 0) { data->ptr_proxyuserpwd = maprintf("Proxy-authorization: Basic %s\015\012", authorization); free(authorization); diff --git a/src/hugehelp.c b/src/hugehelp.c index c0ceebf6a..8b3de8780 100644 --- a/src/hugehelp.c +++ b/src/hugehelp.c @@ -87,15 +87,15 @@ puts ( " sent to stdout to be in text mode for win32 systems.\n" "\n" " -c/--continue\n" -" Continue/Resume a previous file transfer. This\n" -" instructs curl to continue appending data on the file\n" -" where it was previously left, possibly because of a\n" -" broken connection to the server. There must be a named\n" -" physical file to append to for this to work. Note:\n" -" Upload resume is depening on a command named SIZE not\n" -" always present in all ftp servers! Upload resume is for\n" -" FTP only. HTTP resume is only possible with HTTP/1.1\n" -" or later servers.\n" +" Deprecated. Use '-C -' instead. Continue/Resume a pre­\n" +" vious file transfer. This instructs curl to continue\n" +" appending data on the file where it was previously\n" +" left, possibly because of a broken connection to the\n" +" server. There must be a named physical file to append\n" +" to for this to work. Note: Upload resume is depening\n" +" on a command named SIZE not always present in all ftp\n" +" servers! Upload resume is for FTP only. HTTP resume is\n" +" only possible with HTTP/1.1 or later servers.\n" "\n" " -C/--continue-at \n" " Continue/Resume a previous file transfer at the given\n" @@ -214,20 +214,34 @@ puts ( " (HTTP) Include the HTTP-header in the output. The HTTP-\n" " header includes things like server-name, date of the\n" " document, HTTP-version and more...\n" +" --interface \n" +" Perform an operation using a specified interface. You\n" +" can enter interface name, IP address or host name. An\n" +" example could look like:\n" +"\n" +" curl --interface eth0:1 http://www.netscape.com/\n" +"\n" " -I/--head\n" " (HTTP/FTP) Fetch the HTTP-header only! HTTP-servers\n" " feature the command HEAD which this uses to get nothing\n" " but the header of a document. When used on a FTP file,\n" " curl displays the file size only.\n" "\n" +" --krb4 \n" +" (FTP) Enable kerberos4 authentication and use. The\n" +); + puts( +" level must be entered and should be one of 'clear',\n" +" 'safe', 'confidential' or 'private'. Should you use a\n" +" level that is not one of these, 'private' will instead\n" +" be used.\n" +"\n" " -K/--config \n" " Specify which config file to read curl arguments from.\n" " The config file is a text file in which command line\n" " arguments can be written which then will be used as if\n" " they were written on the actual command line. If the\n" " first column of a config line is a '#' character, the\n" -); - puts( " rest of the line will be treated as a comment.\n" "\n" " Specify the filename as '-' to make curl read the file\n" @@ -302,6 +316,15 @@ puts ( " we get. (Only the file part of the remote file is used,\n" " the path is cut off.)\n" "\n" +" -p/--proxytunnel\n" +" When an HTTP proxy is used, this option will cause non-\n" +" HTTP protocols to attempt to tunnel through the proxy\n" +" instead of merely using it to do HTTP-like operations.\n" +" The tunnel approach is made with the HTTP proxy CONNECT\n" +" request and requires that the proxy allows direct con­\n" +" nect to the remote port number curl wants to tunnel\n" +" through to.\n" +"\n" " -P/--ftpport
\n" " (FTP) Reverses the initiator/listener roles when con­\n" " necting with ftp. This switch makes Curl use the PORT\n" @@ -320,6 +343,7 @@ puts ( "\n" " - (any single-letter string) to make it pick\n" " the machine's default\n" +"\n" " -q If used as the first parameter on the command line, the\n" " $HOME/.curlrc file will not be read and used as a con­\n" " fig file.\n" @@ -347,8 +371,8 @@ puts ( "\n" " -500 specifies the last 500 bytes\n" "\n" -" 9500 specifies the bytes from offset 9500 and for­\n" -" ward\n" +" 9500 specifies the bytes from offset 9500 and\n" +" forward\n" "\n" " 0-0,-1 specifies the first and last byte only(*)(H)\n" "\n" @@ -372,146 +396,147 @@ puts ( " -s/--silent\n" " Silent mode. Don't show progress meter or error mes­\n" " sages. Makes Curl mute.\n" +"\n" " -S/--show-error\n" " When used with -s it makes curl show error message if\n" " it fails.\n" "\n" " -t/--upload\n" -" Transfer the stdin data to the specified file. Curl\n" -" will read everything from stdin until EOF and store\n" -" with the supplied name. If this is used on a http(s)\n" -" server, the PUT command will be used.\n" +" Deprecated. Use '-T -' instead. Transfer the stdin\n" +" data to the specified file. Curl will read everything\n" +" from stdin until EOF and store with the supplied name.\n" +" If this is used on a http(s) server, the PUT command\n" +" will be used.\n" "\n" " -T/--upload-file \n" -" Like -t, but this transfers the specified local file.\n" -" If there is no file part in the specified URL, Curl\n" +" Like -t, but this transfers the specified local file.\n" +" If there is no file part in the specified URL, Curl\n" " will append the local file name. NOTE that you must use\n" -" a trailing / on the last directory to really prove to\n" +" a trailing / on the last directory to really prove to\n" " Curl that there is no file name or curl will think that\n" -" your last directory name is the remote file name to\n" -" use. That will most likely cause the upload operation\n" -" to fail. If this is used on a http(s) server, the PUT\n" +" your last directory name is the remote file name to\n" +" use. That will most likely cause the upload operation\n" +" to fail. If this is used on a http(s) server, the PUT\n" " command will be used.\n" "\n" " -u/--user \n" -" Specify user and password to use when fetching. See\n" -" README.curl for detailed examples of how to use this.\n" -" If no password is specified, curl will ask for it\n" +" Specify user and password to use when fetching. See\n" +" README.curl for detailed examples of how to use this.\n" +" If no password is specified, curl will ask for it\n" " interactively.\n" -"\n" " -U/--proxy-user \n" -" Specify user and password to use for Proxy authentica­\n" +" Specify user and password to use for Proxy authentica­\n" " tion. If no password is specified, curl will ask for it\n" " interactively.\n" "\n" " -v/--verbose\n" -" Makes the fetching more verbose/talkative. Mostly\n" -" usable for debugging. Lines starting with '>' means\n" +" Makes the fetching more verbose/talkative. Mostly\n" +" usable for debugging. Lines starting with '>' means\n" " data sent by curl, '<' means data received by curl that\n" -" is hidden in normal cases and lines starting with '*'\n" +" is hidden in normal cases and lines starting with '*'\n" " means additional info provided by curl.\n" "\n" " -V/--version\n" -" Displays the full version of curl, libcurl and other\n" +" Displays the full version of curl, libcurl and other\n" " 3rd party libraries linked with the executable.\n" "\n" " -w/--write-out \n" -" Defines what to display after a completed and success­\n" -" ful operation. The format is a string that may contain\n" -" plain text mixed with any number of variables. The\n" +" Defines what to display after a completed and success­\n" +" ful operation. The format is a string that may contain\n" +" plain text mixed with any number of variables. The\n" " string can be specified as \"string\", to get read from a\n" -" particular file you specify it \"@filename\" and to tell\n" +" particular file you specify it \"@filename\" and to tell\n" " curl to read the format from stdin you write \"@-\".\n" "\n" -" The variables present in the output format will be\n" -" substituted by the value or text that curl thinks fit,\n" -" as described below. All variables are specified like\n" -" %{variable_name} and to output a normal % you just\n" -" write them like %%. You can output a newline by using\n" +" The variables present in the output format will be sub­\n" +" stituted by the value or text that curl thinks fit, as\n" +" described below. All variables are specified like\n" +" %{variable_name} and to output a normal % you just\n" +" write them like %%. You can output a newline by using\n" " \\n, a carrige return with \\r and a tab space with \\t.\n" "\n" -" NOTE: The %-letter is a special letter in the\n" -" win32-environment, where all occurrences of % must be\n" +" NOTE: The %-letter is a special letter in the\n" +" win32-environment, where all occurrences of % must be\n" " doubled when using this option.\n" "\n" " Available variables are at this point:\n" "\n" -" url_effective The URL that was fetched last. This is\n" +" url_effective The URL that was fetched last. This is\n" " mostly meaningful if you've told curl to\n" " follow location: headers.\n" "\n" " http_code The numerical code that was found in the\n" +); + puts( " last retrieved HTTP(S) page.\n" "\n" -" time_total The total time, in seconds, that the\n" -" full operation lasted. The time will be\n" +" time_total The total time, in seconds, that the\n" +" full operation lasted. The time will be\n" " displayed with millisecond resolution.\n" "\n" " time_namelookup\n" -" The time, in seconds, it took from the\n" -" start until the name resolving was com­\n" +" The time, in seconds, it took from the\n" +" start until the name resolving was com­\n" " pleted.\n" -"\n" -" time_connect The time, in seconds, it took from the\n" -" start until the connect to the remote\n" +" time_connect The time, in seconds, it took from the\n" +" start until the connect to the remote\n" " host (or proxy) was completed.\n" "\n" " time_pretransfer\n" -" The time, in seconds, it took from the\n" -" start until the file transfer is just\n" -" about to begin. This includes all pre-\n" -" transfer commands and negotiations that\n" -" are specific to the particular proto­\n" +" The time, in seconds, it took from the\n" +" start until the file transfer is just\n" +" about to begin. This includes all pre-\n" +" transfer commands and negotiations that\n" +" are specific to the particular proto­\n" " col(s) involved.\n" -); - puts( "\n" -" size_download The total amount of bytes that were\n" +" size_download The total amount of bytes that were\n" " downloaded.\n" "\n" -" size_upload The total amount of bytes that were\n" +" size_upload The total amount of bytes that were\n" " uploaded.\n" "\n" -" speed_download The average download speed that curl\n" +" speed_download The average download speed that curl\n" " measured for the complete download.\n" "\n" -" speed_upload The average upload speed that curl mea­\n" +" speed_upload The average upload speed that curl mea­\n" " sured for the complete download.\n" +"\n" " -x/--proxy \n" -" Use specified proxy. If the port number is not speci­\n" +" Use specified proxy. If the port number is not speci­\n" " fied, it is assumed at port 1080.\n" "\n" " -X/--request \n" -" (HTTP) Specifies a custom request to use when communi­\n" -" cating with the HTTP server. The specified request\n" +" (HTTP) Specifies a custom request to use when communi­\n" +" cating with the HTTP server. The specified request\n" " will be used instead of the standard GET. Read the HTTP\n" " 1.1 specification for details and explanations.\n" "\n" -" (FTP) Specifies a custom FTP command to use instead of\n" +" (FTP) Specifies a custom FTP command to use instead of\n" " LIST when doing file lists with ftp.\n" "\n" " -y/--speed-time