7.3 commit
diff --git a/CHANGES b/CHANGES
index e2d3e66..4ad41f6 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 (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 df5fab9..b908779 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 2318f97..3cf2b19 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 <crypto.h> header file.  */
 #undef HAVE_CRYPTO_H
 
+/* Define if you have the <des.h> header file.  */
+#undef HAVE_DES_H
+
 /* Define if you have the <dlfcn.h> header file.  */
 #undef HAVE_DLFCN_H
 
@@ -160,6 +172,9 @@
 /* Define if you have the <io.h> header file.  */
 #undef HAVE_IO_H
 
+/* Define if you have the <krb.h> header file.  */
+#undef HAVE_KRB_H
+
 /* Define if you have the <malloc.h> 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 66ff515..b3846b8 100644
--- a/configure.in
+++ b/configure.in
@@ -2,7 +2,7 @@
 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 7eb07f1..6b2a92f 100644
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -141,6 +141,7 @@
       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 daea907..4bc9d2b 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 @@
 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 e54ccac..a910dc4 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -442,7 +442,7 @@
 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 52b7417..88e36b3 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.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 a88678e..b793969 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -77,7 +77,7 @@
 VERSION = @VERSION@
 YACC = @YACC@
 
-AUTOMAKE_OPTIONS = foreign no-dependencies
+AUTOMAKE_OPTIONS = foreign
 
 lib_LTLIBRARIES = libcurl.la
 
@@ -86,7 +86,7 @@
 
 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 @@
 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 d4a3da1..4e3471b 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -295,7 +295,7 @@
        !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 f323143..4ddafc1 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -1392,7 +1392,8 @@
   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 c0ceebf..8b3de87 100644
--- a/src/hugehelp.c
+++ b/src/hugehelp.c
@@ -87,15 +87,15 @@
 "          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 <offset>\n"
 "          Continue/Resume a previous file transfer at  the  given\n"
@@ -214,20 +214,34 @@
 "          (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 <name>\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 <level>\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 <config file>\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 @@
 "          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 <address>\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 @@
 "\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 @@
 "\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 @@
 "     -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 <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 <user:password>\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 <user:password>\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 <format>\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 <proxyhost[:port]>\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 <command>\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 <time>\n"
 "          If a download is slower than speed-limit bytes per sec­\n"
-"          ond  during  a  speed-time  period,  the  download gets\n"
+"          ond during  a  speed-time  period,  the  download  gets\n"
 "          aborted. If speed-time is used, the default speed-limit\n"
 "          will be 1 unless set with -y.\n"
 "\n"
 "     -Y/--speed-limit <speed>\n"
 "          If a download is slower than this given speed, in bytes\n"
-"          per second, for speed-time  seconds  it  gets  aborted.\n"
+"          per  second,  for  speed-time  seconds it gets aborted.\n"
 "          speed-time is set with -Y and is 30 if not set.\n"
 "\n"
 "     -z/--time-cond <date expression>\n"
-"          (HTTP)  Request  to  get  a file that has been modified\n"
-"          later than the given time and date,  or  one  that  has\n"
+"          (HTTP) Request to get a file  that  has  been  modified\n"
+"          later  than  the  given  time and date, or one that has\n"
 "          been modified before that time. The date expression can\n"
 "          be all sorts of date strings or if it doesn't match any\n"
-"          internal  ones,  it  tries to get the time from a given\n"
-"          file name instead! See the  GNU  date(1)  or  curl_get­\n"
+"          internal ones, it tries to get the time  from  a  given\n"
+"          file  name  instead!  See  the GNU date(1) or curl_get­\n"
 "          date(3) man pages for date expression details.\n"
 "\n"
-"          Start  the  date  expression with a dash (-) to make it\n"
-"          request for a document that is  older  than  the  given\n"
+"          Start the date expression with a dash (-)  to  make  it\n"
+"          request  for  a  document  that is older than the given\n"
 "          date/time, default is a document that is newer than the\n"
 "          specified date/time.\n"
 "\n"
@@ -524,15 +549,15 @@
 "          ing with a remote SSL server.\n"
 "\n"
 "     -#/--progress-bar\n"
-"          Make curl display progress information  as  a  progress\n"
+"          Make  curl  display  progress information as a progress\n"
 "          bar instead of the default statistics.\n"
 "\n"
 "     --crlf\n"
-"          (FTP)  Convert  LF  to  CRLF  in upload. Useful for MVS\n"
+"          (FTP) Convert LF to CRLF  in  upload.  Useful  for  MVS\n"
 "          (OS/390).\n"
 "\n"
 "     --stderr <file>\n"
-"          Redirect all writes to stderr  to  the  specified  file\n"
+"          Redirect  all  writes  to  stderr to the specified file\n"
 "          instead. If the file name is a plain '-', it is instead\n"
 "          written to stdout. This option has no point when you're\n"
 "          using a shell with decent redirecting capabilities.\n"
@@ -555,7 +580,7 @@
 "          Sets proxy server to use for GOPHER.\n"
 "\n"
 "     ALL_PROXY [protocol://]<host>[:port]\n"
-"          Sets  proxy server to use if no protocol-specific proxy\n"
+"          Sets proxy server to use if no protocol-specific  proxy\n"
 "          is set.\n"
 "\n"
 "     NO_PROXY <comma-separated list of hosts>\n"
@@ -563,12 +588,12 @@
 "          If set to a asterisk '*' only, it matches all hosts.\n"
 "\n"
 "     COLUMNS <integer>\n"
-"          The  width of the terminal.  This variable only affects\n"
+"          The width of the terminal.  This variable only  affects\n"
 "          curl when the --progress-bar option is used.\n"
 "\n"
 "EXIT CODES\n"
 "     There exists a bunch of different error codes and their cor­\n"
-"     responding  error messages that may appear during bad condi­\n"
+"     responding error messages that may appear during bad  condi­\n"
 "     tions. At the time of this writing, the exit codes are:\n"
 "\n"
 "     1    Unsupported protocol. This build of curl has no support\n"
@@ -578,40 +603,40 @@
 "\n"
 "     3    URL malformat. The syntax was not correct.\n"
 "\n"
-"     4    URL  user malformatted. The user-part of the URL syntax\n"
+"     4    URL user malformatted. The user-part of the URL  syntax\n"
 "          was not correct.\n"
-"     5    Couldn't resolve proxy. The given proxy host could  not\n"
+"\n"
+"     5    Couldn't  resolve proxy. The given proxy host could not\n"
 "          be resolved.\n"
 "\n"
-"     6    Couldn't  resolve  host.  The given remote host was not\n"
+"     6    Couldn't resolve host. The given remote  host  was  not\n"
 "          resolved.\n"
 "\n"
 "     7    Failed to connect to host.\n"
 "\n"
-"     8    FTP weird server  reply.  The  server  sent  data  curl\n"
+"     8    FTP  weird  server  reply.  The  server  sent data curl\n"
 "          couldn't parse.\n"
 "\n"
 "     9    FTP access denied. The server denied login.\n"
 "\n"
-"     10   FTP  user/password  incorrect.  Either one or both were\n"
+"     10   FTP user/password incorrect. Either one  or  both  were\n"
 "          not accepted by the server.\n"
 "\n"
-"     11   FTP weird PASS reply. Curl  couldn't  parse  the  reply\n"
+"     11   FTP  weird  PASS  reply.  Curl couldn't parse the reply\n"
 "          sent to the PASS request.\n"
 "\n"
-"     12   FTP  weird  USER  reply.  Curl couldn't parse the reply\n"
+"     12   FTP weird USER reply. Curl  couldn't  parse  the  reply\n"
 "          sent to the USER request.\n"
 "\n"
-"     13   FTP weird PASV reply, Curl  couldn't  parse  the  reply\n"
+"     13   FTP  weird  PASV  reply,  Curl couldn't parse the reply\n"
 "          sent to the PASV request.\n"
 "\n"
-"     14   FTP  weird 227 formay. Curl couldn't parse the 227-line\n"
+"     14   FTP weird 227 formay. Curl couldn't parse the  227-line\n"
 "          the server sent.\n"
-"\n"
 "     15   FTP can't get host. Couldn't resolve the host IP we got\n"
 "          in the 227-line.\n"
 "\n"
-"     16   FTP  can't  reconnect.  Couldn't connect to the host we\n"
+"     16   FTP can't reconnect. Couldn't connect to  the  host  we\n"
 "          got in the 227-line.\n"
 "\n"
 "     17   FTP  couldn't  set  binary.  Couldn't  change  transfer\n"
@@ -621,51 +646,51 @@
 "\n"
 "     19   FTP couldn't RETR file. The RETR command failed.\n"
 "\n"
-"     20   FTP  write  error. The transfer was reported bad by the\n"
+"     20   FTP write error. The transfer was reported bad  by  the\n"
 "          server.\n"
 "\n"
-"     21   FTP quote error. A quote command  returned  error  from\n"
+"     21   FTP  quote  error.  A quote command returned error from\n"
 "          the server.\n"
 "\n"
-"     22   HTTP  not found. The requested page was not found. This\n"
+"     22   HTTP not found. The requested page was not found.  This\n"
 "          return code only appears if --fail is used.\n"
 "\n"
-"     23   Write error.  Curl  couldn't  write  data  to  a  local\n"
+"     23   Write  error.  Curl  couldn't  write  data  to  a local\n"
 "          filesystem or similar.\n"
+"\n"
 "     24   Malformat user. User name badly specified.\n"
 "\n"
-"     25   FTP  couldn't  STOR  file.  The  server denied the STOR\n"
+"     25   FTP couldn't STOR file.  The  server  denied  the  STOR\n"
 "          operation.\n"
 "\n"
 "     26   Read error. Various reading problems.\n"
 "\n"
 "     27   Out of memory. A memory allocation request failed.\n"
 "\n"
-"     28   Operation timeout. The specified  time-out  period  was\n"
+"     28   Operation  timeout.  The  specified time-out period was\n"
 "          reached according to the conditions.\n"
 "\n"
-"     29   FTP  couldn't set ASCII. The server returned an unknown\n"
+"     29   FTP couldn't set ASCII. The server returned an  unknown\n"
 "          reply.\n"
 "\n"
 "     30   FTP PORT failed. The PORT command failed.\n"
 "\n"
 "     31   FTP couldn't use REST. The REST command failed.\n"
 "\n"
-"     32   FTP couldn't use SIZE. The  SIZE  command  failed.  The\n"
-"          command  is  an  extension to the original FTP spec RFC\n"
+"     32   FTP  couldn't  use  SIZE.  The SIZE command failed. The\n"
+"          command is an extension to the original  FTP  spec  RFC\n"
 "          959.\n"
 "\n"
 "     33   HTTP range error. The range \"command\" didn't work.\n"
 "\n"
-"     34   HTTP  post  error.  Internal  post-request   generation\n"
+"     34   HTTP   post  error.  Internal  post-request  generation\n"
 "          error.\n"
-"\n"
 "     35   SSL connect error. The SSL handshaking failed.\n"
 "\n"
-"     36   FTP  bad  download resume. Couldn't continue an earlier\n"
+"     36   FTP bad download resume. Couldn't continue  an  earlier\n"
 "          aborted download.\n"
 "\n"
-"     37   FILE couldn't read file. Failed to open the file.  Per­\n"
+"     37   FILE  couldn't read file. Failed to open the file. Per­\n"
 "          missions?\n"
 "\n"
 "     38   LDAP cannot bind. LDAP bind operation failed.\n"
@@ -674,15 +699,16 @@
 "\n"
 "     40   Library not found. The LDAP library was not found.\n"
 "\n"
-"     41   Function  not  found.  A required LDAP function was not\n"
+"     41   Function not found. A required LDAP  function  was  not\n"
 "          found.\n"
 "\n"
-"     XX   There will appear  more  error  codes  here  in  future\n"
-"          releases.  The existing ones are meant to never change.\n"
+"     XX   There  will  appear  more  error  codes  here in future\n"
+"          releases. The existing ones are meant to never  change.\n"
 "\n"
 "BUGS\n"
-"     If you do find any (or have other suggestions), mail  Daniel\n"
+"     If  you do find any (or have other suggestions), mail Daniel\n"
 "     Stenberg <Daniel.Stenberg@haxx.se>.\n"
+"\n"
 "AUTHORS / CONTRIBUTORS\n"
 "      - Daniel Stenberg <Daniel.Stenberg@haxx.se>\n"
 "      - Rafael Sagula <sagula@inf.ufrgs.br>\n"
@@ -722,6 +748,8 @@
 "      - Paul Marquis <pmarquis@iname.com>\n"
 "      - Ellis Pritchard <ellis@citria.com>\n"
 "      - Damien Adant <dams@usa.net>\n"
+);
+ puts(
 "      - Chris <cbayliss@csc.come>\n"
 "      - Marco G. Salvagno <mgs@whiz.cjb.net>\n"
 "      - Paul Marquis <pmarquis@iname.com>\n"
@@ -733,6 +761,10 @@
 "      - Fred Noz <FNoz@siac.com>\n"
 "      - Caolan McNamara <caolan@csn.ul.ie>\n"
 "      - Albert Chin-A-Young <china@thewrittenword.com>\n"
+"      - Stephen Kick <skick@epicrealm.com>\n"
+"      - Martin Hedenfalk <mhe@stacken.kth.se>\n"
+"      - Richard Prescott\n"
+"\n"
 "WWW\n"
 "     http://curl.haxx.se\n"
 "\n"
@@ -762,8 +794,6 @@
 "  Get a gopher document from funet's gopher server:\n"
 "\n"
 "        curl gopher://gopher.funet.fi\n"
-);
- puts(
 "\n"
 "  Get a web page from a server using port 8000:\n"
 "\n"
@@ -885,9 +915,11 @@
 "\n"
 "        curl -T localfile -a ftp://ftp.upload.com/remotefile\n"
 "\n"
-"  NOTE: Curl does not support ftp upload through a proxy! The reason for this\n"
-"  is simply that proxies are seldomly configured to allow this and that no\n"
-"  author has supplied code that makes it possible!\n"
+"  Curl also supports ftp upload through a proxy, but only if the proxy is\n"
+"  configured to allow that kind of tunneling. If it does, you can run curl in\n"
+"  a fashion similar to:\n"
+"\n"
+"        curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n"
 "\n"
 " HTTP\n"
 "\n"
@@ -1031,6 +1063,8 @@
 "  A HTTP request has the option to include information about the browser\n"
 "  that generated the request. Curl allows it to be specified on the command\n"
 "  line. It is especially useful to fool or trick stupid servers or CGI\n"
+);
+ puts(
 "  scripts that only accept certain browsers.\n"
 "\n"
 "  Example:\n"
@@ -1058,8 +1092,6 @@
 "  headers that looks like 'Set-Cookie: <data>' where the data part then\n"
 "  typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n"
 "  like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n"
-);
- puts(
 "  path the \"cookie\" should be used for (by specifying \"path=value\"), when the\n"
 "  cookie should expire (\"expire=DATE\"), for what domain to use it\n"
 "  (\"domain=NAME\") and if it should be used on secure connections only\n"
@@ -1228,13 +1260,14 @@
 "  connect to the client on the given (as parameters to the PORT command) IP\n"
 "  number and port.\n"
 "\n"
-"  The -P flag to curl allows for different options. Your machine may have\n"
+"  The -P flag to curl supports a few different options. Your machine may have\n"
 "  several IP-addresses and/or network interfaces and curl allows you to select\n"
 "  which of them to use. Default address can also be used:\n"
 "\n"
 "        curl -P - ftp.download.com\n"
 "\n"
-"  Download with PORT but use the IP address of our 'le0' interface:\n"
+"  Download with PORT but use the IP address of our 'le0' interface (this does\n"
+"  not work on windows):\n"
 "\n"
 "        curl -P le0 ftp.download.com\n"
 "\n"
@@ -1242,6 +1275,16 @@
 "\n"
 "        curl -P 192.168.0.10 ftp.download.com\n"
 "\n"
+"NETWORK INTERFACE\n"
+"\n"
+"  Get a web page from a server using a specified port for the interface:\n"
+"\n"
+"	curl --interface eth0:1 http://www.netscape.com/\n"
+"\n"
+"  or\n"
+"\n"
+"	curl --interface 192.168.1.10 http://www.netscape.com/\n"
+"\n"
 "HTTPS\n"
 "\n"
 "  Secure HTTP requires SSL libraries to be installed and used when curl is\n"
@@ -1281,6 +1324,8 @@
 "        curl -2 https://secure.site.com/\n"
 "\n"
 "  Otherwise, curl will first attempt to use v3 and then v2.\n"
+);
+ puts(
 "\n"
 "  To use OpenSSL to convert your favourite browser's certificate into a PEM\n"
 "  formatted one that curl can use, do something like this (assuming netscape,\n"
@@ -1328,8 +1373,6 @@
 "TIME CONDITIONS\n"
 "\n"
 " HTTP allows a client to specify a time condition for the document it\n"
-);
- puts(
 " requests. It is If-Modified-Since or If-Unmodified-Since. Curl allow you to\n"
 " specify them with the -z/--time-cond flag.\n"
 "\n"
@@ -1439,13 +1482,26 @@
 "\n"
 "        curl -w 'We downloaded %{size_download} bytes\\n' www.download.com\n"
 "\n"
+"KERBEROS4 FTP TRANSFER\n"
+"\n"
+"  Curl supports kerberos4 for FTP transfers. You need the kerberos package\n"
+"  installed and used at curl build time for it to be used.\n"
+"\n"
+"  First, get the krb-ticket the normal way, like with the kauth tool. Then use\n"
+"  curl in way similar to:\n"
+"\n"
+"        curl --krb4 private ftp://krb4site.com -u username:fakepwd\n"
+"\n"
+"  There's no use for a password on the -u switch, but a blank one will make\n"
+"  curl ask for one and you already entered the real password to kauth.\n"
+"\n"
 "MAILING LIST\n"
 "\n"
 "  We have an open mailing list to discuss curl, its development and things\n"
 "  relevant to this.\n"
 "\n"
-"  To subscribe, mail curl-request@contactor.se with \"subscribe <your email\n"
-"  address>\" in the body.\n"
+"  To subscribe, mail curl-request@contactor.se with \"subscribe <fill in your\n"
+"  email address>\" in the body.\n"
 "\n"
 "  To post to the list, mail curl@contactor.se.\n"
 "\n"
diff --git a/src/version.h b/src/version.h
index 325a93e..5956fef 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,3 +1,3 @@
 #define CURL_NAME "curl"
-#define CURL_VERSION "7.2"
+#define CURL_VERSION "7.3"
 #define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "