From ae1912cb0d494b48d514d937826c9fe83ec96c4d Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 29 Dec 1999 14:20:26 +0000 Subject: [PATCH] Initial revision --- CHANGES | 1656 ++++++++++++++++++ CONTRIBUTE | 68 + FAQ | 31 + FEATURES | 72 + FILES | 47 + INSTALL | 195 +++ LEGAL | 21 + MPL-1.0.txt | 360 ++++ Makefile | 426 +++++ Makefile.am | 13 + Makefile.dist | 78 + Makefile.in | 426 +++++ README | 28 + README.curl | 611 +++++++ README.libcurl | 108 ++ RESOURCES | 62 + TODO | 87 + acconfig.h | 12 + aclocal.m4 | 127 ++ config-win32.h | 168 ++ config.cache | 86 + config.guess | 997 +++++++++++ config.guess-991124 | 900 ++++++++++ config.h | 220 +++ config.h.in | 219 +++ config.log | 90 + config.status | 492 ++++++ config.sub | 979 +++++++++++ config.sub-991124 | 952 +++++++++++ configure | 3091 ++++++++++++++++++++++++++++++++++ configure.in | 210 +++ curl-6.3.1.tar.gz | Bin 0 -> 242680 bytes curl-ssl.spec | 52 + curl.1 | 402 +++++ curl.beos-patch | 695 ++++++++ curl.spec | 52 + curl_631_general.patch | 1265 ++++++++++++++ curl_63_form.patch | 92 + curl_63_partialdl.patch | 106 ++ head | 7 + include/README | 15 + include/curl/curl.beos-patch | 46 + include/curl/curl.h | 434 +++++ include/curl/getdate.h | 0 include/curl/mprintf.h | 93 + include/curl/stdcheaders.h | 53 + install-sh | 250 +++ lib/Makefile | 282 ++++ lib/Makefile.am | 31 + lib/Makefile.in | 282 ++++ lib/Makefile.m32 | 67 + lib/Makefile.vc6 | 315 ++++ lib/arpa_telnet.h | 319 ++++ lib/base64.c | 94 ++ lib/base64.h | 44 + lib/cookie.c | 457 +++++ lib/cookie.h | 45 + lib/dict.c | 245 +++ lib/dict.h | 45 + lib/download.c | 484 ++++++ lib/download.h | 50 + lib/escape.c | 111 ++ lib/escape.h | 49 + lib/file.c | 175 ++ lib/file.h | 45 + lib/formdata | Bin 0 -> 23808 bytes lib/formdata.c | 617 +++++++ lib/formdata.h | 103 ++ lib/ftp.c | 1046 ++++++++++++ lib/ftp.h | 52 + lib/getdate.c | 2101 +++++++++++++++++++++++ lib/getdate.h | 46 + lib/getdate.y | 1051 ++++++++++++ lib/getenv.c | 95 ++ lib/getenv.h | 71 + lib/getpass.c | 185 ++ lib/getpass.h | 1 + lib/hostip.c | 111 ++ lib/hostip.h | 46 + lib/http.c | 381 +++++ lib/http.h | 45 + lib/if2ip.c | 110 ++ lib/if2ip.h | 50 + lib/ldap.c | 226 +++ lib/ldap.h | 45 + lib/mprintf.c | 1253 ++++++++++++++ lib/netrc.c | 182 ++ lib/netrc.h | 70 + lib/progress.c | 221 +++ lib/progress.h | 54 + lib/sendf.c | 115 ++ lib/sendf.h | 47 + lib/setup.h | 169 ++ lib/speedcheck.c | 81 + lib/speedcheck.h | 50 + lib/ssluse.c | 265 +++ lib/ssluse.h | 46 + lib/sta01005 | Bin 0 -> 1024 bytes lib/sta18057 | Bin 0 -> 461824 bytes lib/telnet.c | 937 +++++++++++ lib/telnet.h | 45 + lib/timeval.c | 93 + lib/timeval.h | 64 + lib/upload.c | 178 ++ lib/upload.h | 46 + lib/url.c | 1181 +++++++++++++ lib/url.h | 0 lib/urldata.h | 212 +++ lib/version.c | 86 + maketgz | 152 ++ missing | 188 +++ mkinstalldirs | 40 + perl/README | 33 + perl/checklinks.pl | 336 ++++ perl/checklinks.pl.in | 336 ++++ perl/formfind.pl | 273 +++ perl/formfind.pl.in | 273 +++ perl/getlinks.pl | 261 +++ perl/getlinks.pl.in | 261 +++ perl/recursiveftpget.pl | 67 + perl/recursiveftpget.pl.in | 67 + reconf | 16 + src/Makefile | 334 ++++ src/Makefile.am | 27 + src/Makefile.in | 334 ++++ src/Makefile.m32 | 65 + src/Makefile.vc6 | 68 + src/config-win32.h | 12 + src/config.h | 13 + src/config.h.in | 12 + src/curl | Bin 0 -> 1830293 bytes src/hugehelp.c | 1049 ++++++++++++ src/main.c | 1154 +++++++++++++ src/mkhelp.pl | 85 + src/setup.h | 91 + src/stamp-h2 | 1 + src/stamp-h2.in | 1 + src/urlglob.c | 332 ++++ src/urlglob.h | 74 + src/version.h | 3 + stamp-h | 1 + stamp-h.in | 1 + stamp-h1 | 1 + stamp-h1.in | 1 + 144 files changed, 37273 insertions(+) create mode 100644 CHANGES create mode 100644 CONTRIBUTE create mode 100644 FAQ create mode 100644 FEATURES create mode 100644 FILES create mode 100644 INSTALL create mode 100644 LEGAL create mode 100644 MPL-1.0.txt create mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 Makefile.dist create mode 100644 Makefile.in create mode 100644 README create mode 100644 README.curl create mode 100644 README.libcurl create mode 100644 RESOURCES create mode 100644 TODO create mode 100644 acconfig.h create mode 100644 aclocal.m4 create mode 100644 config-win32.h create mode 100644 config.cache create mode 100755 config.guess create mode 100755 config.guess-991124 create mode 100644 config.h create mode 100644 config.h.in create mode 100644 config.log create mode 100755 config.status create mode 100755 config.sub create mode 100755 config.sub-991124 create mode 100755 configure create mode 100644 configure.in create mode 100644 curl-6.3.1.tar.gz create mode 100644 curl-ssl.spec create mode 100644 curl.1 create mode 100644 curl.beos-patch create mode 100644 curl.spec create mode 100644 curl_631_general.patch create mode 100644 curl_63_form.patch create mode 100644 curl_63_partialdl.patch create mode 100644 head create mode 100644 include/README create mode 100644 include/curl/curl.beos-patch create mode 100644 include/curl/curl.h create mode 100644 include/curl/getdate.h create mode 100644 include/curl/mprintf.h create mode 100644 include/curl/stdcheaders.h create mode 100755 install-sh create mode 100644 lib/Makefile create mode 100644 lib/Makefile.am create mode 100644 lib/Makefile.in create mode 100644 lib/Makefile.m32 create mode 100644 lib/Makefile.vc6 create mode 100644 lib/arpa_telnet.h create mode 100644 lib/base64.c create mode 100644 lib/base64.h create mode 100644 lib/cookie.c create mode 100644 lib/cookie.h create mode 100644 lib/dict.c create mode 100644 lib/dict.h create mode 100644 lib/download.c create mode 100644 lib/download.h create mode 100644 lib/escape.c create mode 100644 lib/escape.h create mode 100644 lib/file.c create mode 100644 lib/file.h create mode 100755 lib/formdata create mode 100644 lib/formdata.c create mode 100644 lib/formdata.h create mode 100644 lib/ftp.c create mode 100644 lib/ftp.h create mode 100644 lib/getdate.c create mode 100644 lib/getdate.h create mode 100644 lib/getdate.y create mode 100644 lib/getenv.c create mode 100644 lib/getenv.h create mode 100644 lib/getpass.c create mode 100644 lib/getpass.h create mode 100644 lib/hostip.c create mode 100644 lib/hostip.h create mode 100644 lib/http.c create mode 100644 lib/http.h create mode 100644 lib/if2ip.c create mode 100644 lib/if2ip.h create mode 100644 lib/ldap.c create mode 100644 lib/ldap.h create mode 100644 lib/mprintf.c create mode 100644 lib/netrc.c create mode 100644 lib/netrc.h create mode 100644 lib/progress.c create mode 100644 lib/progress.h create mode 100644 lib/sendf.c create mode 100644 lib/sendf.h create mode 100644 lib/setup.h create mode 100644 lib/speedcheck.c create mode 100644 lib/speedcheck.h create mode 100644 lib/ssluse.c create mode 100644 lib/ssluse.h create mode 100644 lib/sta01005 create mode 100644 lib/sta18057 create mode 100644 lib/telnet.c create mode 100644 lib/telnet.h create mode 100644 lib/timeval.c create mode 100644 lib/timeval.h create mode 100644 lib/upload.c create mode 100644 lib/upload.h create mode 100644 lib/url.c create mode 100644 lib/url.h create mode 100644 lib/urldata.h create mode 100644 lib/version.c create mode 100755 maketgz create mode 100755 missing create mode 100755 mkinstalldirs create mode 100644 perl/README create mode 100644 perl/checklinks.pl create mode 100755 perl/checklinks.pl.in create mode 100644 perl/formfind.pl create mode 100755 perl/formfind.pl.in create mode 100644 perl/getlinks.pl create mode 100755 perl/getlinks.pl.in create mode 100644 perl/recursiveftpget.pl create mode 100755 perl/recursiveftpget.pl.in create mode 100755 reconf create mode 100644 src/Makefile create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in create mode 100644 src/Makefile.m32 create mode 100644 src/Makefile.vc6 create mode 100644 src/config-win32.h create mode 100644 src/config.h create mode 100644 src/config.h.in create mode 100755 src/curl create mode 100644 src/hugehelp.c create mode 100644 src/main.c create mode 100644 src/mkhelp.pl create mode 100644 src/setup.h create mode 100644 src/stamp-h2 create mode 100644 src/stamp-h2.in create mode 100644 src/urlglob.c create mode 100644 src/urlglob.h create mode 100644 src/version.h create mode 100644 stamp-h create mode 100644 stamp-h.in create mode 100644 stamp-h1 create mode 100644 stamp-h1.in diff --git a/CHANGES b/CHANGES new file mode 100644 index 000000000..34cc7bf83 --- /dev/null +++ b/CHANGES @@ -0,0 +1,1656 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + + History of Changes + + +Version 6.4 + +Daniel (28 December 1999): + - Tim Verhoeven correctly identified that curl + doesn't support URL formatted file names when getting ftp. Now, there's a + problem with getting very weird file names off FTP servers. RFC 959 defines + that the file name syntax to use should be the same as in the native OS of + the server. Since we don't know the peer server system we currently just + translate the URL syntax into plain letters. It is still better and with + the solaris 2.6-supplied ftp server it works with spaces in the file names. + +Daniel (27 December 1999): + - When curl parsed cookies straight off a remote site, it corrupted the input + data, which, if the downloaded headers were stored made very odd characters + in the saved data. Correctfully identified and reported by Paul Harrington + . + +Daniel (13 December 1999): + - General cleanups in the library interface. There had been some bad kludges + added during times of stress and I did my best to clean them off. It was + both regarding the lib API as well as include file confusions. + +Daniel (3 December 1999): + - A small --stderr bug was reported by Eetu Ojanen ... + + - who also brought the suggestion of extending the -X flag to ftp list as + well. So, now it is and the long option is now --request instead. It is + only for ftp list for now (and the former http stuff too of course). + +Lars J. Aas (24 November 1999): + - Patched curl to compile and build under BeOS. Doesn't work yet though! + + - Corrected the Makefile.am files to allow putting object files in + different directories than the sources. + +Version 6.3.1 + +Daniel (23 November 1999): + - I've had this major disk crash. My good old trust-worthy source disk died + along with the machine that hosted it. Thank goodness most of all the + things I've done are either backed up elsewhere or stored in this CVS + server! + + - Michael S. Steuer pointed out a bug in the -F handling + that made curl hang if you posted an empty variable such as '-F name='. It + was one of those old bugs that never have worked properly... + + - Jason Baietto pointed out a general flaw in the HTTP + download. Curl didn't complain if it was prematurely aborted before the + entire download was completed. It does now. + +Daniel (19 November 1999): + - Chris Maltby very accurately criticized the lack of + return code checks on the fwrite() calls. I did a thorough check for all + occurrences and corrected this. + +Daniel (17 November 1999): + - Paul Harrington pointed out that the -m/--max-time option + doesn't work for the slow system calls like gethostbyname()... I don't have + any good fix yet, just a slightly less bad one that makes curl exit hard + when the timeout is reached. + + - Bjorn Reese helped me point out a possible problem that might be the reason + why Thomas Hurst experience problems in his Amiga version. + + Daniel (12 November 1999): + - I found a crash in the new cookie file parser. It crashed when you gave + a plain http header file as input... + +Version 6.3 + + Daniel (10 November 1999): + - I kind of found out that the HTTP time-conditional GETs (-z) aren't always + respected by the web server and the document is therefore sent in whole + again, even though it doesn't match the requested condition. After reading + section 13.3.4 of RFC 2616, I think I'm doing the right thing now when I do + my own check as well. If curl thinks the condition isn't met, the transfer + is aborted prematurely (after all the headers have been received). + + - After comments from Robert Linden I + also rewrote some parts of the man page to better describe how the -F + works. + + - Michael Anti put up a new curl download mirror in + China: http://www.pshowing.com/curl/ + + - I added the list of download mirrors to the README file + + - I did add more explanations to the man page + + Daniel (8 November 1999): + - I made the -b/--cookie option capable of reading netscape formatted cookie + files as well as normal http-header files. It should be able to + transparantly figure out what kind of file it got as input. + + Daniel (29 October 1999): + - Another one of Sebastiaan van Erk's ideas (that has been requested before + but I seem to have forgotten who it was), is to add support for ranges in + FTP downloads. As usual, one request is just a request, when they're two + it is a demand. I've added simple support for X-Y style fetches. X has to + be the lower number, though you may omit one of the numbers. Use the -r/ + --range switch (previously HTTP-only). + + - Sebastiaan van Erk suggested that curl should be + able to show the file size of a specified file. I think this is a splendid + idea and the -I flag is now working for FTP. It displays the file size in + this manner: + Content-Length: XXXX + As it resembles normal headers, and leaves us the opportunity to add more + info in that display if we can come up with more in the future! It also + makes sense since if you access ftp through a HTTP proxy, you'd get the + file size the same way. + + I changed the order of the QUOTE command execusions. They're now executed + just after the login and before any other command. I made this to enable + quote commands to run before the -I stuff is done too. + + - I found out that -D/--dump-header and -V/--version weren't documented in + the man page. + + - Many HTTP/1.1 servers do not support ranges. Don't ask me why. I did add + some text about this in the man page for the range option. The thread in + the mailing list that started this was initiated by Michael Anti + . + + - I get reports about nroff crashes on solaris 2.6+ when displaying the curl + man page. Switch to gnroff instead, it is reported to work(!). Adam Barclay + reported and brought the suggestion. + + - In a dialogue with Johannes G. Kristinsson we came + up with the idea to let -H/--header specified headers replace the + internally generated headers, if you happened to select to add a header + that curl normally uses by itself. The advantage with this is not entirely + obvious, but in Johannes' case it means that he can use another Host: than + the one curl would set. + + Daniel (27 October 1999): + - Jongki Suwandi brought a nice patch for + (yet another) crash when following a location:. This time you had to + follow a https:// server's redirect to get the core. + +Version 6.2 + + Daniel (21 October 1999): + - I think I managed to remove the suspicious (nil) that has been seen just + before the "Host:" in HTTP requests when -v was used. + - I found out that if you followed a location: when using a proxy, without + having specified http:// in the URL, the protocol part was added once again + when moving to the next URL! (The protocol part has to be added to the + URL when going through a proxy since it has no protocol-guessing system + such as curl has.) + - Benjamin Ritcey reported a core dump under solaris 2.6 + with OpenSSL 0.9.4. It turned out this was due to a bad free() in main.c + that occurred after the download was done and completed. + - Benjamin found ftp downloads to show the first line of the download meter + to get written twice, and I removed that problem. It was introduced with + the multiple URL support. + - Dan Zitter correctly pointed out that curl 6.1 and + earlier versions didn't honor RFC 2616 chapter 4 section 2, "Message + Headers": "...Field names are case-insensitive..." + HTTP header parsing assumed a certain casing. Dan also provided me with + a patch that corrected this, which I took the liberty of editing slightly. + - Dan Zitter also provided a nice patch for config.guess to better recognize + the Mac OS X + - Dan also corrected a minor problem in the lib/Makefile that caused linking + to fail on OS X. + + Daniel (19 October 1999): + - Len Marinaccio came up with some problems with curl. + Since Windows has a crippled shell, it can't redirect stderr and that + causes trouble. I added --stderr today which allows the user to redirect + the stderr stream to a file or stdout. + + Daniel (18 October 1999): + - The configure script now understands the '--without-ssl' flag, which now + totally disable SSL/https support. Previously it wasn't possible to force + the configure script to leave SSL alone. The previous functionality has + been retained. Troy Engel helped test this new one. + +Version 6.1 + + Daniel (17 October 1999): + - I ifdef'ed or commented all the zlib stuff in the sources and configure + script. It turned out we needed to mock more with zlib than I initially + thought, to make it capable of downloading compressed HTTP documents and + uncompress them on the fly. I didn't mean the zlib parts of curl to become + more than minor so this means I halt the zlib expedition for now and wait + until someone either writes the code or zlib gets updated and better + adjusted for this kind of usage. I won't get into details here, but a + short a summary is suitable: + - zlib can't automatically detect whether to use zlib or gzip + decompression methods. + - zlib is very neat for reading gzipped files from a file descriptor, + although not as nice for reading buffer-based data such as we would + want it. + - there are still some problems with the win32 version when reading from + a file descriptor if that is a socket + + Daniel (14 October 1999): + - Moved the (external) include files for libcurl into a subdirectory named + curl and adjusted all #include lines to use to maintain a + better name space and control of the headers. This has been requested. + + Daniel (12 October 1999): + - I modified the 'maketgz' script to perform a 'make' too before a release + archive is put together in an attempt to make the time stamps better and + hopefully avoid the double configure-running that use to occur. + + Daniel (11 October 1999): + - Applied Jörn's patches that fixes zlib for mingw32 compiles as well as + some other missing zlib #ifdef and more text on the multiple URL docs in + the man page. + +Version 6.1beta + + Daniel (6 October 1999): + - Douglas E. Wegscheid sent me a patch that made the + exact same thing as I just made: the -d switch is now capable of reading + post data from a named file or stdin. Use it similarly to the -F. To read + the post data from a given file: + + curl -d @path/to/filename www.postsite.com + + or let curl read it out from stdin: + + curl -d @- www.postit.com + + Jörn Hartroth (3 October 1999): + - Brought some more patches for multiple URL functionality. The MIME + separation ideas are almost scrapped now, and a custom separator is being + used instead. This is still compile-time "flagged". + + Daniel + - Updated curl.1 with multiple URL info. + + Daniel (30 September 1999): + - Felix von Leitner brought openssl-check fixes + for configure.in to work out-of-the-box when the openssl files are + installed in the system default dirs. + + Daniel (28 September 1999) + - Added libz functionality. This should enable decompressing gzip, compress + or deflate encoding HTTP documents. It also makes curl send an accept that + it accepts that kind of encoding. Compressed contents usually shortens + download time. I *need* someone to tell me a site that uses compressed HTTP + documents so that I can test this out properly. + + - As a result of the adding of zlib awareness, I changed the version string + a little. I plan to add openldap version reporting in there too. + + Daniel (17 September 1999) + - Made the -F option allow stdin when specifying files. By using '-' instead + of file name, the data will be read from stdin. + +Version 6.0 + + Daniel (13 September 1999) + - Added -X/--http-request to enable any HTTP command to be sent. + Do not that your server has to support the exact string you enter. This + should possibly a string like DELETE or TRACE. + + - Applied Douglas' mingw32-fixes for the makefiles. + + Daniel (10 September 1999) + - Douglas E. Wegscheid pointed out a problem. Curl + didn't check the FTP servers return code properly after the --quote + commands were issued. It took anything non 200 as an error, when all 2XX + codes should be accepted as OK. + + - Sending cookies to the same site in multiple lines like curl used to do + turned out to be bad and breaking the cookie specs. Curl now sends all + cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I + doubt that many servers do use that syntax (yet). + + Daniel (8 September 1999) + - Jörn helped me make sure it still compiles nicely with mingw32 under win32. + + Daniel (7 September 1999) + - FTP upload through proxy is now turned into a HTTP PUT. Requested by + Stefan Kanthak . + + - Added the ldap files to the .m32 makefile. + + Daniel (3 September 1999) + - Made cookie matching work while using HTTP proxy. + + Bjorn Reese (31 August 1999) + - Passed his ldap:// patch. Note that this requires the openldap shared + library to be installed and that LD_LIBRARY_PATH points to the + directory where the lib will be found when curl is run with a + ldap:// URL. + + Jörn Hartroth (31 August 1999) + - Made the Mingw32 makefiles into single files. + - Made file:// work for Win32. The same code is now used for unix as well for + performance reasons. + + Douglas E. Wegscheid (30 August 1999) + - Patched the Mingw32 makefiles for SSL builds. + + Matthew Clarke (30 August 1999) + - Made a cool patch for configure.in to allow --with-ssl to specify the + root dir of the openssl installation, as in + + ./configure --with-ssl=/usr/ssl_here + + - Corrected the 'reconf' script to work better with some shells. + + Jörn Hartroth (26 August 1999) + - Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32 + compiles. + +Version 5.11 + + Daniel (25 August 1999) + - John Weismiller pointed out a bug in the header-line + realloc() system in download.c. + + - I added lib/file.[ch] to offer a first, simple, file:// support. It + probably won't do much good on win32 system at this point, but I see it + as a start. + + - Made the release archives get a Makefile in the root dir, which can be + used to start the compiling/building process easier. I haven't really + changed any INSTALL text yet, I wanted to get some feed-back on this + first. + + Daniel (17 August 1999) + - Another Location: bug. Curl didn't do proper relative locations if the + original URL had cgi-parameters that contained a slash. Nusu's page + again. + + - Corrected the NO_PROXY usage. It is a list of substrings that if one of + them matches the tail of the host name it should connect to, curl should + not use a proxy to connect there. Pointed out to me by Douglas E. Wegscheid + . I also changed the README text a little regarding + this. + + Daniel (16 August 1999) + - Fixed a memory bug with http-servers that sent Location: to a Location: + page. Nusu's page showed this too. + + - Made cookies work a lot better. Setting the same cookie name several times + used to add more cookies instead of replacing the former one which it + should've. Nusu brought me an URL that made this + painfully visible... + + Troy (15 August 1999) + - Brought new .spec files as well as a patch for configure.in that lets the + configure script find the openssl files better, even when the include + files are in /usr/include/openssl + +Version 5.10 + + Daniel (13 August 1999) + - SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of + OpenSSL. Now why couldn't they simply add a *new* function instead of + modifying the parameters of an already existing function? This way, we get + a compiler warning if compiling with 0.9.4 but not with earlier. So, I had + to come up with a #if contruction that deals with this... + + - Made curl output the SSL version number get displayed properly with 0.9.4. + + Troy (12 August 1999) + - Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also + a bit rearranged. + + Daniel (12 August 1999) + - I had to copy a good include file into the curl source + tree to enable the silly win32 systems to compile. The distribution rights + allows us to do that as long as the file remains unmodified. + + - I corrected a few minor things that made the compiler complain when + -Wall -pedantic was used. + + - I'm moving the official curl web page to http://curl.haxx.nu. I think it + will make it easier to remember as it is a lot shorter and less cryptic. + The old one still works and shows the same info. + + Daniel (11 August 1999) + - Albert Chin-A-Young mailed me another correction for NROFF in the + configure.in that is supposed to be better for IRIX users. + + Daniel (10 August 1999) + - Albert Chin-A-Young helped me with some stupid + Makefile things, as well as some fiddling with the getdate.c + stuff that he had problems with under HP-UX v10. getdate.y will now be + compiled into getdate.c if the appropriate yacc or bison is found by the + configure script. Since this is slightly new, we need to test the output + getdate.c with win32 systems to make sure it still compiles there. + + Daniel (5 August 1999) + - I've just setup a new mailing list with the intention to keep discussions + around libcurl development in it. I mainly expect it to be for thoughts and + brainstorming around a "next generation" library, rather than nitpicking + about the current implementation or details in the current libcurl. + + To join our happy bunch of future-looking geeks, enter 'subscribe +
' in the body of a mail and send it to + libcurl-request@listserv.fts.frontec.se. Curl bug reports, the usual curl + talk and everything else should still be kept in this mailing list. I've + started to archive this mailing list and have put the libcurl web page at + www.fts.frontec.se/~dast/libcurl/. + + - Stefan Kanthak contacted me regarding a + few problems in the configure script which he discovered when trying to + make curl compile and build under Siemens SINIX-Z V5.42B2004! + + - Marcus Klein very accurately informed me that + src/version.h was not present in the CVS repository. Oh, how silly... + + - Linus Nielsen rewrote the telnet:// part and + now curl offers limited telnet support. If you run curl like 'curl + telnet://host' you'll get all output on the screen and curl will read input + from stdin. You'll be able to login and run commands etc, but since the + output is buffered, expect to get a little weird output. + + This is still in its infancy and it might get changed. We need your + feed-back and input in how this is best done. + + WIN32 NOTE: I bet we'll get problems when trying to compile the current + lib/telnet.c on win32, but I think we can sort them out in time. + + - David Sanderson reported that FORCE_ALLOCA_H or + HAVE_ALLOCA_H must be defined for getdate.c to compile properly on HP-UX + 11.0. I updated the configure script to check for alloca.h which should + make it. + + Daniel (4 August 1999) + - I finally got to understand Marcus Klein's ftp download resume problem, + which turns out to be due to different outputs from different ftp + servers. It makes ftp download resuming a little trickier, but I've made + some modifications I really believe will work for most ftp servers and I do + hope you report if you have problems with this! + + - Added text about file transfer resuming to README.curl. + + Daniel (2 August 1999) + - Applied a progress-bar patch from Lars J. Aas . It offers + a new styled progress bar enabled with -#/--progress-bar. + + T. Yamada (30 July 1999) + - It breaks with segfault when 1) curl is using .netrc to obtain + username/password (option '-n'), and 2) is auto-matically redirected to + another location (option '-L'). + + There is a small bug in lib/url.c (block starting from line 641), which + tries to take out username/password from user- supplied command-line + argument ('-u' option). This block is never executed on first attempt since + CONF_USERPWD bit isn't set at first, but curl later turns it on when it + checks for CONF_NETRC bit. So when curl tries to redo everything due to + redirection, it segfaults trying to access *data->userpwd. + +Version 5.9.1 + + Daniel (30 July 1999) + - Steve Walch pointed out that there is a memory leak in + the formdata functions. I added a FormFree() function that is now used and + supposed to correct this flaw. + + - Mark Wotton reported: + 'curl -L https://www.cwa.com.au/' core dumps. I managed to cure this by + correcting the cleanup procedure. The bug seems to be gone with my OpenSSL + 0.9.2b, although still occurs when I run the ~100 years old SSLeay 0.8.0. I + don't know whether it is curl or SSLeay that is to blame for that. + + - Marcus Klein : + Reported an FTP upload resume bug that I really can't repeat nor understand. + I leave it here so that it won't be forgotten. + + Daniel (29 July 1999) + - Costya Shulyupin suggested support for longer URLs + when following Location: and I could only agree and fix it! + + - Leigh Purdie found a problem in the upload/POST + department. It turned out that http.c accidentaly cleared the pointer + instead of the byte counter when supposed to. + + - Costya Shulyupin pointed out a problem with port + numbers and Location:. If you had a server at a non-standard port that + redirected to an URL using a standard port number, curl still used that + first port number. + + - Ralph Beckmann pointed out a problem when using both + CONF_FOLLOWLOCATION and CONF_FAILONERROR simultaneously. Since the + CONF_FAILONERROR exits on the 302-code that the follow location header + outputs it will never show any html on location: pages. I have now made it + look for >=400 codes if CONF_FOLLOWLOCATION is set. + + - 'struct slist' is now renamed to 'struct curl_slist' (as suggested by Ralph + Beckmann). + + - Joshua Swink and Rick Welykochy + were the first to point out to me that the latest OpenSSL package now have + moved the standard include path. It is now in + /usr/local/ssl/include/openssl and I have now modified the --enable-ssl + option for the configure script to use that as the primary path, and I + leave the former path too to work with older packages of OpenSSL too. + + Daniel (9 June 1999) + - I finally understood the IRIX problem and now it seem to compile on it! + I am gonna remove those #define strcasecmp() things once and for all now. + + Daniel (4 June 1999) + - I adjusted the FTP reply 227 parser to make the PASV command work better + with more ftp servers. Appearantly the Roxen Challanger server replied + something curl 5.9 could deal with! :-( Reported by Ashley Reid-Montanaro + and Mark Butler brought a + solution for it. + + Daniel (26 May 1999) + - Rearranged. README is new, the old one is now README.curl and I added a + README.libcurl with text I got from Ralph Beckmann . + + - I also updated the INSTALL text. + + Daniel (25 May 1999) + - David Jonathan Lowsky correctly pointed out + that curl didn't properly deal with form posting where the variable + shouldn't have any content, as in curl -F "form=" www.site.com. It was + now fixed. + +Version 5.9 + + Daniel (22 May 1999) + - I've got a bug report from Aaron Scarisbrick in + which he states he has some problems with -L under FreeBSD 3.0. I have + previously got another bug report from Stefan Grether + which points at an error with similar sympthoms + when using win32. I made the allocation of the new url string a bit faster + and different, don't know if it actually improves anything though... + + Daniel (20 May 1999) + - Made the cookie parser deal with CRLF newlines too. + + Daniel (19 May 1999) + - Download() didn't properly deal with failing return codes from the + sread() function. Adam Coyne found the problem in the + win32 version, and Troy Engel helped me out isolating it. + + Daniel (16 May 1999) + - Richard Adams pointed out a bug I introduced in + 5.8. --dump-header doesn't work anymore! :-/ I fixed it now. + + - After a suggestion by Joshua Swink I added -S / + --show-error to force curl to display the error message in case of an + error, even if -s/--silent was used. + + Daniel (10 May 1999) + - I moved the stuff concerning HTTP, DICT and TELNET it their own source + files now. It is a beginning on my clean-up of the sources to make them + layer all those protocols better to enable more to be added easier in the + future! + + - Leon Breedt sent me some files I've not put into the main + curl archive. They're for creating the Debian package thingie. He also sent + me a debian package that I've made available for download at the web page + + Daniel (9 May 1999) + - Made it compile on cygwin too. + + Troy Engel (7 May 1999) + - Brought a series of patches to allow curl to compile smoothly on MSVC++ 6 + again! + + Daniel (6 May 1999) + - I changed the #ifdef HAVE_STRFTIME placement for the -z code so that it + will be easier to discover systems that don't have that function and thus + can't use -z successfully. Made the strftime() get used if WIN32 is defined + too. + +Version 5.8 + + Daniel (5 May 1999) + - I've had it with this autoconf/automake mess. It seems to work allright + for most people who don't have automake installed, but for those who have + there are problems all over. + + I've got like five different bug reports on this only the last + week... Claudio Neves and Federico Bianchi + and root are + some of them reporting this. + + Currently, I have no really good fix since I want to use automake myself to + generate the Makefile.in files. I've found out that the @SHELL@-problems + can often be fixed by manually invoking 'automake' in the archive root + before you run ./configure... I've hacked my maketgz script now to fiddle + a bit with this and my tests seem to work better than before at least! + + Daniel (4 May 1999) + - mkhelp.pl has been doing badly lately. I corrected a case problem in + the regexes. + + - I've now remade the -o option to not touch the file unless it needs to. + I had to do this to make -z option really fine, since now you can make a + curl fetch and use a local copy's time when downloading to that file, as + in: + + curl -z dump -o dump remote.site.com/file.html + + This will only get the file if the remote one is newer than the local. + I'm aware that this alters previous behaviour a little. Some scripts out + there may depend on that the file is always touched... + + - Corrected a bug in the SSLv2/v3 selection. + + - Felix von Leitner requested that curl should + be able to send "If-Modified-Since" headers, which indeed is a fair idea. + I implemented it right away! Try -z where expression is a full + GNU date expression or a file name to get the date from! + + Stephan Lagerholm (30 Apr 1999) + - Pointed out a problem with the src/Makefile for FreeBSD. The RM variable + isn't set and causes the make to fail. + + Daniel (26 April 1999) + - Am I silly or what? pointed out to me that the + curl version number was not set properly. Hasn't been since 5.6. This was + due to a bug in my maketgz script! + + David Eriksson (25 Apr 1999) + - Found a bug in cookies.c that made it crash at times. + +Version 5.7.1 + + Doug Kaufman (23 Apr 1999) + - Brought two sunos 4 fixes. One of them being the hostip.c fix mentioned + below and the other one a correction in include/stdcheaders.h + + - Added a paragraph about compiling with the US-version of openssl to the + INSTALL file. + + Daniel + - New mailing list address. Info updated on the web page as well as in the + README file + + Greg Onufer (20 Apr 1999) + - hostip.c didn't compile properly on SunOS 5.5.1. + It needs an #include + +Version 5.7 + + Daniel (Apr 20 1999) + - Decided to upload a non-beta version right now! + + - Made curl support any-length HTTP headers. The destination buffer is now + simply enlarged every time it turns out to be too small! + + - Added the FAQ file to the archive. Still a bit smallish, but it is a + start. + + Eric Thelin (15 Apr 1999) + - Made -D accept '-' instead of filename to write to stdout. + +Version 5.6.3beta + + Daniel (Apr 12 1999) + + - Changed two #ifdef WIN32 to better #ifdef when connect()ing + in url.c and ftp.c. Makes cygwin32 deal with them better too. We should + try to get some decent win32-replacement there. Anyone? + + - The old -3/--crlf option is now ONLY --crlf! + + - I changed the "SSL fix" to a more lame one, but that doesn't remove as + much functionality. Now I've enabled the lib to select what SSL version it + should try first. Appearantly some older SSL-servers don't like when you + talk v3 with them so you need to be able to force curl to talk v2 from the + start. The fix dated April 6 and posted on the mailing list forced curl to + use v2 at all times using a modern OpenSSL version, but we don't really + want such a crippled solution. + + - Marc Boucher sent me a patch that corrected a math error + for the "Curr.Speed" progress meter. + + - Eric Thelin sent me a patch that enables '-K -' + to read a config file from stdin. + + - I found out we didn't close the file properly before so I added it! + + Daniel (Apr 9 1999) + - Yu Xin pointed out a problem with ftp download resume. + It didn't work at all! ;-O + + Daniel (Apr 6 1999) + - Corrected the version string part generated for the SSL version. + + - I found a way to make some other SSL page work with openssl 0.9.1+ that + previously didn't (ssleay 0.8.0 works with it though!). Trying to get + some real info from the OpenSSL guys to see how I should do to behave the + best way. SSLeay 0.8.0 shouldn't be that much in use anyway these days! + +Version 5.6.2beta + + Daniel (Apr 4 1999) + - Finally have curl more cookie "aware". Now read carefully. This is how + it works. + To make curl read cookies from an already existing file, in plain header- + format (like from the headers of a previous fetch) invoke curl with the + -b flag like: + + curl -b file http://site/foo.html + + Curl will then use all cookies it finds matching. The old style that sets + a single cookie with -b is still supported and is used if the string + following -b includes a '=' letter, as in "-b name=daniel". + + To make curl read the cookies sent in combination with a location: (which + sites often do) point curl to read a non-existing file at first (i.e + to start with no existing cookies), like: + + curl -b nowhere http://site/setcookieandrelocate.html + + - Added a paragraph in the TODO file about the SSL problems recently + reported. Evidently, some kind of SSL-problem curl may need to address. + + - Better "Location:" following. + + Douglas E. Wegscheid (Tue, 30 Mar 1999) + - A subsecond display patch. + + Daniel (Mar 14 1999) + - I've separated the version number of libcurl and curl now. To make + things a little easier, I decided to start the curl numbering from + 5.6 and the former version number known as "curl" is now the one + set for libcurl. + + - Removed the 'enable-no-pass' from configure, I doubt anyone wanted + that. + + - Made lots of tiny adjustments to compile smoothly with cygwin under + win32. It's a killer for porting this to win32, bye bye VC++! ;-) + Compiles and builds out-of-the-box now. See the new wordings in + INSTALL for details. + + - Beginning experiments with downloading multiple document from a http + server while remaining connected. + +Version 5.6beta + + Daniel (Mar 13 1999) + - Since I've changed so much, I thought I'd just go ahead and implement + the suggestion from Douglas E. Wegscheid . -D or + --dump-header is now storing HTTP headers separately in the specified + file. + + - Added new text to INSTALL on what to do to build this on win32 now. + + - Aaargh. I had to take a step back and prefix the shared #include files + in the sources with "../include/" to please VC++... + + Daniel (Mar 12 1999) + - Split the url.c source into many tiny sources for better readability + and smaller size. + + Daniel (Mar 11 1999) + - Started to change stuff for a move to make libcurl and a more separate + curl application that uses the libcurl. Made the libcurl sources into + the new lib directory while the curl application will remain in src as + before. New makefiles, adjusted configure script and so. + + libcurl.a built quickly and easily. I better make a better interface to + the lib functions though. + + The new root dir include/ is supposed to contain the public information + about the new libcurl. It is a little ugly so far :-) + + + Daniel (Mar 1 1999) + - Todd Kaufmann sent me a good link to Netscape's + cookie spec as well as the info that RFC 2109 specifies how to use them. + The link is now in the README and the RFC in the RESOURCES. + + Daniel (Feb 23 1999) + - Finally made configure accept --with-ssl to look for SSL libs and includes + in the "standard" place /usr/local/ssl... + + Daniel (Feb 22 1999) + - Verified that curl linked fine with OpenSSL 0.9.1c which seems to be + the most recent. + + Henri Gomez (Fri Feb 5 1999) + - Sent in an updated curl-ssl.spec. I still miss the script that builds an + RPM automatically... + +Version 5.5.1 + + Mark Butler (27 Jan 1999) + - Corrected problems in Download(). + + Danitel Stenberg (25 Jan 1999) + - Jeremie Petit pointed out a few flaws in the + source that prevented it from compile warning free with the native + compiler under Digital Unix v4.0d. + +Version 5.5 + + Daniel Stenberg (15 Jan 1999) + - Added Bjorns small text to the README about the DICT protocol. + + Daniel Stenberg (11 Jan 1999) + - reported about the win32-versioin: "Doesn't use + ALL_PROXY environment variable". Turned out to be because of the static- + buffer nature of the win32 environment variable calls! + + Bjorn Reese (10 Jan 1999) + - I have attached a simple addition for the DICT protocol (RFC 2229). + It performs dictionary lookups. The output still needs to be better + formatted. + + To test it try (the exact format, and more examples are described in + the RFC) + + dict://dict.org/m:hello + dict://dict.org/m:hello::soundex + + + Vicente Garcia (10 Jan 1999) + - Corrected the progress meter for files larger than 20MB. + + Daniel Stenberg (7 Jan 1999) + - Corrected the -t and -T help texts. They claimed to be FTP only. + +Version 5.4 + + Daniel Stenberg + (7 Jan 1999) + - reported that curl -s didn't always supress the + progress reporting. It was the form post that autoamtically always switched + it on again. This is now corrected! + + (4 Jan 1999) + - Andreas Kostyrka suggested I'd add PUT and he helped me + out to test it. If you use -t or -T now on a http or https server, PUT will + be used for file upload. + + I removed the former use of -T with HTTP. I doubt anyone ever really used + that. + + (4 Jan 1999) + - Erik Jacobsen found a width bug in the mprintf() function. + I corrected it now. + + (4 Jan 1999) + - As John V. Chow pointed out to me, curl + accepted very limited URL sizes. It should now accept path parts that are + up to at least 4096 bytes. + + - Somehow I screwed up when applying the AIX fix from Gilbert Ramirez, so + I redid that now. + +Version 5.3a (win32 only) + + Troy Engel + - Corrected a win32 bug in the environment variable part. + +Version 5.3 + + Gilbert Ramirez Jr. (21 Dec 1998) + - I have implemented the "quote" function of FTP clients. It allows you to + send arbitrary commands to the remote FTP server. I chose the -Q/--quote + command-line arguments. + + You can have more than one quoted string, and curl will apply them in + order. This is what I use for my MVS upload: + + curl -B --crlf -Q "site lrecl=80" -Q "site blk=8000" -T file ftp://os390/test + + Curl will send the two quoted "site" commands in the proper order. + + - Made it compile smoothly on AIX. + + Gilbert Ramirez Jr. (18 Dec 1998) + - Brought an MVS patch: -3/--mvs, for ftp upload to the MVS ftp server. + + Troy Engel (17 Dec 1998) + - Brought a correction that fixes the win32 curl bug. + + Daniel Stenberg + - A bug, pointed out to me by Dr H. T. Leung , caused + curl to crash on the -A flag on certain systems. Actually, all systems + should've! + + - Added a few defines to make directories/file names get build nicer (with _ + instead of . and \ instead of / in win32). + + - steve reported a weird bug that occured if the + ftp server response line had a parenthesis on the line before the (size) + info. I hope it works better now! + +Version 5.2.1 + + Steven G. Johnson (Dec 14, 1998) + - Brought a fix that corrected a crash in 5.2 due to bad treatment of the + environment variables. + +Version 5.2 + + Daniel Stenberg (Dec 14, 1998) + - Rewrote the mkhelp script and now, the mkhelp.pl script generates the + hugehelp.c file from the README *and* the man page file curl.1. By using + both files, I no longer need to have double information in both the man + page and the README as well. So, win32-users will only have the hugehelp.c + file for all info, but then, they download the plain binary most times + anyway. + + - gcc2.8.1 with the -Wall flag complaints a lot on subscript has type `char' + if I don't explicitly typecast the argument to isdigit() or isspace() to + int. So I did to compile warning free with that too. + + - Added checks for 'long double' and 'long long' in the configure script. I + need those for the mprintf.c source to compile well on non long long + comforming systems! + +Version 5.1 (not publicly released) + + Daniel Stenberg (Dec 10, 1998) + - I got a request for a pre-compiled NT Alpha version. Anyone? + + - Added Lynx/CERN www lib proxy environment variable support. That means curl + now reads and understands the following environment variables: + + HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY + + They should be set for protocol-specific proxies. General proxy should be + set with + + ALL_PROXY + + And a comma-separated list of host names that shouldn't go through any + proxy is set in (only an asterisk, '*' matches all hosts). + + NO_PROXY + + The usage of the -x/--proxy flag overrides the environment variables. + + - Proxy can now be specified with a procotol:// prefix. + + - Wrote the curl.1 man page. + + - Introduced a whole new dynamic buffer system for all sprintf()s. It is + based on the *printf() package by yours truly and Bjorn Reese. Hopefully, + there aren't that many buffer overflow risks left now. + + - Ah, I should mention I've compiled and built curl successfully under + solaris 2.6 with gcc now, gcc 2.7.2 won't work but 2.8.1 did ok. + + Oren Tirosh (Dec 3, 1998) + - Brought two .spec files, to use when creating (Linux) Redhat style RPM + packages. They're named curl.spec and curl-ssl.spec. + + Troy Engel + - Supplied the src/Makefile.vc6 for easy compiling with VC++ under Win32. + +Version 5.0 + + Daniel Stenberg (Dec 1, 1998) + - Not a single bug report in ages. + - Corrected getpass.c and main.c to compile warning and error free with the + Win32 VC++ crap. + +Version 5.0 beta 24 + + Daniel Stenberg (Nov 20, 1998) + + HOW TO BUILD A RELEASE ARCHIVE: + + * Pre-requisite software: + What To build what Reads data from + ==== ============= =============== + GNU automake Makefile.in, aclocal.m4 configure.in + GNU make(1) - " - + GNU gcc(1) - " - + GNU autoconf configure configure.in + GNU autoheader(2) config.h.in configure.in, acconfig.h + + * Make sure all files that should be part of the archive are put in FILES. + + * Run './maketgz' and enter version number of the new to become archive. + + maketgz does: + + - Enters the newly created version number in url.h. + - (If you don't have automake, this script will warn about that, but unless + you have changed the Makefile.am files, that is nothing to care about.) + If you have it, it'll run it. + - If you have autoconf, the configure.in will be edited to get the newly + created version number and autoconf will be run. + - Creates a new directory named curl-. (Actually, it uses the base + name of the current directory up to the first '-'.) + - Copies all files mentioned in FILES to the new directory. Saving + permissions and directory structure. + - Uses tar to create an archive of it all, named curl-.tar.gz + - gzips the archive + - Removes the new directory and all its contents. + + * When done, you have an archive stored in your directory named + curl-.tar.gz. + + Done! + + (1) They're required to make automake run properly. + (2) It is distributed as a part of the GNU autoconf archive. + + Daniel Stenberg (Nov 18, 1998) + - I changed the TAG-system. If you ever used urlget() from this package in + another product, you need to recompile with the new headers. I did this + new stuff to better deal with different compilers and system with different + variable sizes. I think it makes it a little more portable. This proves + to compile warning free with the problematic IRIX compiler! + - Win32 compiled with a silly error. Corrected now. + - Brian Chaplin reported yet another problem in + multiline FTP responses. I've tried to correct it. I mailed him a new + version and I hope he gets back soon with positive feedback! + - Improved the 'maketgz' to create a temporary directory tree which it makes + an archive from instead of the previous renaming of the current one. + - Mailing list opened (see README). + - Made -v more verbose on the PASV section of ftp transfers. Now it tells + host name and IP of the new host (and port number). I also added a section + about PORT vs PASV in the README. + +Version 5.0 beta 21 + + Angus Mackay (Nov 15, 1998) + - Introduced automake stuff. + + Daniel Stenberg (Nov 13, 1998) + - Just made a successful GET of a document from an SSL-server using my own + private certificate for authentication! The certificate has to be in PEM + format. You do that the easiest way (although not *that* easy) by + downloading the SSLyeay PKCS#12-patch by Dr Stephen N. Henson from his site + at: http://www.drh-consultancy.demon.co.uk/. Using his tool, you can + convert any modern Netscape or (even) MSIE certificate to PEM-format. Use + it with 'curl -E https://site.com'. If this isn't a + cool feature, then I don't know what cool features look like! ;-) + - Working slowly on telnet connections. #define TRY_TELNET to try it out. + (curl -u user:passwd "telnet://host.com/cat .login" is one example) I do + have problem to define how it should work. The prime purpose for this must + be to get (8bit clean) files via telnet, and it really isn't that easy to + get files this way. Still having problems with \n being converted to \r\n. + + Angus Mackay (Nov 12, 1998) + - Corrected another bug in the long parameter name parser. + - Modified getpass.c (NOTE: see the special licensing in the top of that + source file). + + Daniel Stenberg (Nov 12, 1998) + - We may have removed the silly warnings from url.c when compiled under IRIX. + Thanks again to Bjorn Reese and Martin Staael + . + - Wrote formfind.pl which is a new perl script intended to help you find out + how a FORM submission should be done. This needs a little more work to get + really good. + + Daniel Stenberg (Nov 11, 1998) + - Made the HTTP header-checker accept white spaces before the HTTP/1.? line. + Appearantly some proxies/sites add such at times (my test proxy did when I + downloaded a gopher page with it)! + - Moved the former -h to -M and made -h show the short help text instead. I + had to enable a forced help text option. Now an even shorter help text will + be presented when an unknown option and similar, is used. + - stdcheaders.h didn't work with IRIX 6.4 native cc compiler. I hope my + changes don't make other versions go nuts instead. + + Daniel Stenberg (Nov 10, 1998) + - Added a weird check in the configure script to check for the silly AIX + warnings about my #define strcasecmp() stuff. I do that define to prevent + me and other contributors to accidentaly use that function name instead + of strequal()... + - I bugfixed Angus's getpass.c very little. + - Fixed the verbose flag names to getopt-style, i.e 'curl --loc' will be + sufficient instead of --location as "loc" is a unique prefix. Also, anything + after a '--' is treated as an URL. So if you do have a host with a weeeird + name you can do 'curl -- -host.com'. + - Another getopt-adjust; curl now accepts flags after the URL on the command + line. 'curl www.foo.com -O' is perfectly valid. + - Corrected the .curlrc parser so that strtok() is no longer used and I + believe it works better. Even URLs can be specified in it now. + + Angus Mackay (Nov 9, 1998) + - Replaced getpass.c with a newly written one, not under GPL license + - Changed OS to a #define in config.h instead of compiler flag + - Makefile now uses -DHAVE_CONFIG_H + + Daniel Stenberg (Nov 9, 1998) + - Ok, I expanded the tgz-target to update the version string on each occation + I build a release archive! + - I reacted on Angus Mackay's initiative and remade the parameter parser to + be more getopt compliant. Curl now supports "merged" flags as in + curl -lsv ftp.site.com + Do note that I had to move three short-names of the options. Parameters + that needs an additional string such as -x must be stand-alone or the + last in a merged sequence: + curl -lsx my-proxy ftp.site.com + is ok, but using the flags in a different order like '-lxs' would cause + unexpected results (as the 's' option would be skipped). + - I've changed the headers in all files that are subject to the MozPL + license, as they are supposed to look like when conforming. + - Made the configure script make the config.h. The former config.h is now + setup.h. + - The RESOURCES and TODO files have been added to the archive. + + Angus Mackay (Nov 5, 1998) + - Fixed getpass.c and various configure stuff + + Daniel Stenberg (Nov 3, 1998) + - Use -H/--header for custom HTTP-headers. Lets you pass on your own + specified headers to the remote server. I wouldn't recommend trying to use + a header with a defined usage according to standards. Use this flag once + for every custom header you want to add. + - Use -B/--ftp-ascii to force ftp to use ASCII mode when transfering files. + - Corrected the 'getlinks.pl' script, I accidentally left my silly proxy + usage in there! Since the introduction of the .curlrc file, it is easier to + write scripts that use curl since proxies and stuff should be in the + .curlrc file anyway. + - Introducing the new -F flag for HTTP POST. It supports multipart/form-data + which means it is gonna be possible to upload files etc through HTTP POST. + Shiraz Kanga asked for the feature and my brother, + Björn Stenberg helped me design the user + interface for this beast. This feature requires quite some docs, + since it has turned out not only quite capable, but also complicated! :-) + - A note here, since I've received mail about it. SSLeay versions prior to + 0.8 will *not* work with curl! + - Wil Langford reported a bug that occurred since curl + did not properly use CRLF when issuing ftp commands. I fixed it. + - Rearranged the order config files are read. .curlrc is now *always* read + first and before the command line flags. -K config files then act as + additional config items. + - Use -q AS THE FIRST OPTION specified to prevent .curlrc from being read. + - You can now disable a proxy by using -x "". Useful if the .curlrc file + specifies a proxy and you wanna fetch something without going through + that. + - I'm thinking of dropping the -p support. Its really not useful since ports + could (and should?) be specified as : appended on the host name + instead, both in URLs and to proxy host names. + - Martin Staael reports curl -L bugs under Windows NT + (test with URL http://come.to/scsde). This bug is not present in this + version anymore. + - Added support for the weird FTP URL type= thing. You can download a file + using ASCII transfer by appending ";type=A" to the right of it. Other + available types are type=D for dir-list (NLST) and type=I for binary + transfer. I can't say I've ever seen anyone use this kind of URL though! + :-) + - Troy Engel pointed out a bug in my getenv("HOME") + usage for win32 systems. I introduce getenv.c to better cope with + this. Mr Engel helps me with the details around that... + - A little note to myself and others, I should make the win32-binary built + with SSL support... + - r-y-a-n/n-e-l-s-o-n sent me comments about building curl + with SSL under FreeBSD. See the Makefile for details. Using the configure + script, it should work better and automatically now... + - Cleaned up in the port number mess in the source. No longer stores and uses + proxy port number separate from normal port number. + - 'configure' script working. Confirmed compiles on: + Host SSL Compiler + SunOS 5.5 no gcc + SunOS 5.5.1 yes gcc + SunOS 5.6 no cc (with gcc, it has the "gcc include files" problem) + SunOS 4.1.3 no gcc (without ANSI C headers) + SunOS 4.1.2 no gcc (native compiler failed) + Linux 2.0.18 no gcc + Linux 2.0.32 yes gcc + Linux 2.0.35 no gcc (with glibc) + IRIX 6.2 no gcc (cc compiles generate a few warnings) + IRIX 6.4 no cc (generated warnings though) + Win32 no Borland + OSF4.0 no ? + + - Ooops. The 5beta (and 4.10) under win32 failed if the HOME variable wasn't + set. + - When using a proxy, curl now guesses and uses the protocol part in cases + like: + curl -x proxy:80 www.site.com + Proxies normally go nuts unless http:// is prepended to the host name, so + if curl is used like this, it guesses protocol and appends the protocol + string before passing it to the proxy. It already did this when used + without proxy. + - Better port usage with SSL through proxy now. If you specified a different + https-port when accessing through a proxy, it didn't use that number + correctly. I also rewrote the code that parses the stuff read from the + proxy when you wanna connect through it with SSL. + - Bjorn Reese helped me work around one of the compiler + warnings on IRIX native cc compiles. + +Version 4.10 (Oct 26, 1998) + Daniel Stenberg + - John A. Bristor suggested a config file switch, + and since I've been having that idea kind of in the background for a long + time I rewrote the parameter parsing function a little and now I introduce + the -K/--config flag. I also made curl *always* (unless -K is used) try to + load the .curlrc file for command line parameters. The syntax for the + config file is the standard command line argument style. Details in 'curl + -h' or the README. + - I removed the -k option. Keep-alive isn't really anything anyone would + want to enable with curl anyway. + - Martin Staael helped me add the 'irix' target. Now + "make irix" should build curl successfully on non-gcc SGI machines. + - Single switches now toggle behaviours. I.e if you use -v -v the second + will switch off the verbose mode the first one enabled. This is so that + you can disable a default setting a .curlrc file enables etc. + +Version 4.9 (Oct 7, 1998) + Daniel Stenberg + - Martin Staael suggested curl would support cookies. + I added -b/--cookie to enable free-text cookie data to be passed. There's + also a little blurb about general cookie stuff in the README/help text. + - dmh suggested HTTP resume capabilities. Although you could + manually get curl to resume HTTP documents, I made the -c resume flag work + for HTTP too (unless -r is used too, which would be very odd anyway). + - Added checklinks.pl to the archive. It is a still experimental perl script + that checks all links of a web page by using curl. + - Rearranged the archive hierarchy a little. Build the executable in the + src/ dir from now on! + - Version 4.9 and hereafter, is no longer released under the GPL license. + I have now updated the LEGAL file etc and now this is released using the + Mozilla Public License to avoid the plague known as "the GPL virus". You + must make the source available if you decide to change and/or redistribute + curl, but if you decide to use curl within something else you do not need + to offer the world the source to that too. + - Curl did not like HTTP servers that sent no headers at all on a GET + request. It is a violation of RFC2068 but appearantly some servers do + that anyway. Thanks to Gordon Beaton for the + report! + - -L/--location was added after a suggestion from Martin Staael + . This makes curl ATTEMPT to follow the Location: + redirect if one is present in the HTTP headers. If -i or -I is used with + this flag, you will see headers from all sites the Location: points to. Do + note that the first server can point to a second that points to a third + etc. It seems the Location: parameter (said to be an AbsoluteURI in + RFC2068) isn't always absolute.. :-/ Anyway, I've made curl ATTEMPT to do + the best it can to deal with the reality. + - Added getlinks.pl to the archive. getlinks.pl selectively downloads + files that a web page links to. + +Version 4.8.4 + Daniel Stenberg + - As Julian Romero Nieto reported, curl reported wrong + version number. + - As Teemu Yli-Elsila pointed out, + the win32 version of 4.8 (and probably all other versions for win32) + didn't work with binary files since I'm too used to the UNIX style + fopen() where binary and text don't differ... + - Ralph Beckmann brought me some changes that lets + curl compile error and warning free with -Wall -pedantic with + g++. I also took the opportunity to clean off some unused variables + and similar. + - Ralph Beckmann made me aware of a really odd bug + now corrected. When curl read a set of headers from a HTTP server, divided + into more than one read and the first read showed a full line *exactly* + (i.e ending with a newline), curl did not behave well. + +Version 4.8.3 + Daniel Stenberg + - I was too quick to release 4.8.2 with too little testing. One of the + changes is now reverted slightly to the 4.8.1 way since 4.8.2 couldn't + upload files. I still think both problems corrected in 4.8.2 remain + corrected. Reported by Julian Romero Nieto . + +Version 4.8.2 + Daniel Stenberg + - Bernhard Iselborn reported two FTP protocol + errors curl did. They're now corrected. Both appeared when getting files + from a MS FTP server! :-) + +Version 4.8.1 + Daniel Stenberg + - Added a last update of the progress meter when the transfer is done. The + final output on the screen didn't have to be the final size transfered + which made it sometimes look odd. + - Thanks to David Long I got rid of a silly + bug that happened if a HTTP-page had nothing but header. Appearantly + Solaris deals with negative sizes in fwrite() calls a lot better than + Linux does... =B-] + +Version 4.8 + Daniel Stenberg + - Continue FTP file transfer. -c is the switch. Note that you need to + specify a file name if you wanna resume a download (you can't resume a + download sent to stdout). Resuming upload may be limited by the server + since curl is then using the non-RFC959 command SIZE to get the size of + the target file before upload begins (to figure out which offset to + use). Use -C to specify the offset yourself! -C is handy if you're doing + the output to something else but a plain file or when you just want to get + the end of a file. + - recursiveftpget.pl now features a maximum recursive level argument. + +Version 4.7 + Daniel Stenberg + - Added support to abort a download if the speed is below a certain amount + (speed-limit) bytes per second for a certain (speed-time) time. + - Wrote a perl script 'recursiveftpget.pl' to recursively use curl to get a + whole ftp directory tree. It is meant as an example of how curl can be + used. I agree it isn't the wisest thing to do to make a separate new + connection for each file and directory for this. + +Version 4.6 + Daniel Stenberg + - Added a first attempt to optionally parse the .netrc file for login user + and password. If used with http, it enables user authentication. -n is + the new switch. + - Removed the extra newlines on the default user-agent string. + - Corrected the missing ftp upload error messages when it failed without the + verbose flag set. Gary W. Swearingen found it. + - Now using alarm() to enable second-precision timeout even on the name + resolving/connecting phase. The timeout is although reset after that first + sequence. (This should be corrected.) Gary W. Swearingen + reported. + - Now spells "Unknown" properly, as in "Unknown option 'z'"... :-) + - Added bug report email address in the README. + - Added a "current speed" field to the progress meter. It shows the average + speed the last 5 seconds. The other speed field shows the average speed of + the entire transfer so far. + +Version 4.5.1 + Linas Vepstas + - SSL through proxy fix + - Added -A to allow User-Agent: changes + + Daniel Stenberg + - Made the -A work when SSL-through-proxy. + +Version 4.5 + Linas Vepstas + - More SSL corrections + - I've added a port to AIX. + - running SSL through a proxy causes a chunk of code to be executred twice. + one of those blocks needs to be deleted. + + Daniel Stenberg + - Made -i and -I work again + +Version 4.4 + Linas Vepstas + - -x can now also specify proxyport when used as in 'proxyhost:proxyport' + - SSL fixes + +Version 4.3 + Daniel Stenberg + - Adjusted to compile under win32 (VisualC++ 5). The -P switch does not + support network interface names in win32. I couldn't figure out how! + +Version 4.2 + Linas Vepstas / Sampo Kellomaki + - Added SSL / SSLeay support (https://) + - Added the -T usage for HTTP POST. + + Daniel Stenberg + - Bugfixed the SSL implementation. + - Made -P a lot better to use other IP addresses. It now accepts a following + parameter that can be either + interface - i.e "eth0" to specify which interface's IP address you + want to use + IP address - i.e "192.168.10.1" to specify exact IP number + host name - i.e "my.host.domain" to specify machine + "-" - (any single-letter string) to make it pick the machine's + default + - The Makefile is now ready to compile for solaris, sunos4 and linux right + out of the box. + - Better generated version string seen with 'curl -V' + +Version 4.1 + Daniel Stenberg + - The IP number returned by the ftp server as a reply to PASV does no longer + have to DNS resolve. In fact, no IP-number-only addresses have to anymore. + - Binds better to available port when -P is used. + - Now LISTs ./ instead of / when used as in ftp://ftp.funet.fi/. The reason + for this is that exactly that site, ftp.funet.fi, does not allow LIST / + while LIST ./ is fine. Any objections? + +Version 4 (1998-03-20) + Daniel Stenberg + - I took another huge step and changed both version number and project name! + The reason for the new name is that there are just one too many programs + named urlget already and this program already can a lot more than merely + getting URLs, and the reason for the version number is that I did add the + pretty big change in -P and since I changed name I wanted to start with + something fresh! + - The --style flags are working better now. + - Listing directories with FTP often reported that the file transfer was + incomplete. Wrong assumptions were too common for directories, why no + size will be attempted to get compared on them from now on. + - Implemented the -P flag that let's the ftp control issue a PORT command + instead of the standard PASV. + - -a for appending FTP uploads works. + +*************************************************************************** + +Version 3.12 + Daniel Stenberg + - End-of-header tracking still lacked support for \r\n or just \n at the + end of the last header line. + Sergio Barresi + - Added PROXY authentication. + Rafael Sagula + - Fixed some little bugs. + +Version 3.11 + Daniel Stenberg + - The header parsing was still not correct since the 3.2 modification... + +Version 3.10 + Daniel Stenberg + - 3.7 and 3.9 were simultaneously developed and merged into this version. + - FTP upload did not work correctly since 3.2. + +Version 3.9 + Rafael Sagula + - Added the "-e / --referer " option where we can specify + the referer page. Obviously, this is necessary only to fool the + server, but... + +Version 3.7 + Daniel Stenberg + - Now checks the last error code sent from the ftp server after a file has + been received or uploaded. Wasn't done previously. + - When 'urlget ' is used without a 'protocol://' first in the host part, + it now checks for host names starting with ftp or gopher and if it does, + it uses that protocol by default instead of http. + +Version 3.6 + Daniel Stenberg + - Silly mistake made the POST bug. This has now also been tested to work with + proxy. + +Version 3.5 + Daniel Stenberg + - Highly inspired by Rafael Sagula's changes to the 3.1 that added an almost + functional POST, I applied his changes into this version and made them work. + (It seems POST requires the Content-Type and Content-Length headers.) It is + now usable with the -d switch. + +Version 3.3 - 3.4 + Passed to avoid confusions + +Version 3.2 + Daniel Stenberg + - Major rewrite of two crucial parts of this code: upload and download. + They are both now using a select() switch, that allows much better + progress meter and time control. + - alarm() usage removed completely + - FTP get can now list directory contents if the path ends with a slash '/'. + Urlget on a ftp-path that doesn't end with a slash means urlget will + attempt getting it as a file name. + - FTP directory view supports -l for "list-only" which lists the file names + only. + - All operations support -m for max time usage in seconds allowed. + - FTP upload now allows the size of the uploaded file to be provided, and + thus it can better check it actually uploaded the whole file. It also + makes the progress meter for uploads much better! + - Made the parameter parsing fail in cases like 'urlget -r 900' which + previously tried to connect to the host named '900'. + +Version 3.1 + Kjell Ericson + - Pointed out how to correct the 3 warnings in win32-compiles. + + Daniel Stenberg + - Removed all calls to exit(). + - Made the short help text get written to stdout instead of stderr. + - Made this file instead of keeping these comments in the source. + - Made two callback hooks, that enable external programs to use urlget() + easier and to grab the output/offer the input easier. + - It is evident that Win32-compiles are painful. I watched the output from + the Borland C++ v5 and it was awful. Just ignore all those warnings. + +Version 3.0 + Daniel Stenberg + - Added FTP upload capabilities. The name urlget gets a bit silly now + when we can put too... =) + - Restructured the source quite a lot. + Changed the urlget() interface. This way, we will survive changes much + better. New features can come and old can be removed without us needing + to change the interface. I've written a small explanation in urlget.h + that explains it. + - New flags include -t, -T, -O and -h. The -h text is generated by the new + mkhelp script. + +Version 2.9 + Remco van Hooff + - Added a fix to make it compile smoothly on Amiga using the SAS/C + compiler. + + Daniel Stenberg + - Believe it or not, but the STUPID Novell web server seems to require + that the Host: keyword is used, so well I use it and I (re-introduce) the + urlget User-Agent:. I still have to check that this Host: usage works with + proxies... 'Host:' is required for HTTP/1.1 GET according to RFC2068. + +Version 2.8 + Rafael Sagula + - some little modifications + +Version 2.7 + Daniel Stenberg + - Removed the -l option and introduced the -f option instead. Now I'll + rewrite the former -l kludge in an external script that'll use urlget to + fetch multipart files like that. + - '-f' is introduced, it means Fail without output in case of HTTP server + errors (return code >=300). + - Added support for -r, ranges. Specify which part of a document you + want, and only that part is returned. Only with HTTP/1.1-servers. + - Split up the source in 3 parts. Now all pure URL functions are in + urlget.c and stuff that deals with the stand-alone program is in main.c. + - I took a few minutes and wrote an embryo of a README file to explain + a few things. + +Version 2.6 + Daniel Stenberg + - Made the -l (loop) thing use the new CONF_FAILONERROR which makes + urlget() return error code if non-successful. It also won't output anything + then. Now finally removed the HTTP 1.0 and error 404 dependencies. + - Added -I which uses the HEAD request to get the header only from a + http-server. + +Version 2.5 + Rafael Sagula + - Made the progress meter use HHH:MM:SS instead of only seconds. + +Version 2.4 + Daniel Stenberg + - Added progress meter. It appears when downloading > BUFFER SIZE and + mute is not selected. I found out that when downloading large files from + really really slow sites, it is desirable to know the status of the + download. Do note that some downloads are done unawaring of the size, which + makes the progress meter less thrilling ;) If the output is sent to a tty, + the progress meter is shut off. + - Increased buffer size used for reading. + - Added length checks in the user+passwd parsing. + - Made it grok user+passwd for HTTP fetches. The trick is to base64 + encode the user+passwd and send an extra header line. Read chapter 11.1 in + RFC2068 for details. I added it to be used just like the ftp one. To get a + http document from a place that requires user and password, use an URL + like: + + http://user:passwd@www.site.to.leach/doc.html + + I also added the -u flag, since WHEN USING A PROXY YOU CAN'T SPECIFY THE + USER AND PASSWORD WITH HTTP LIKE THAT. The -u flag works for ftp too, but + not if used with proxy. To do the same as the above one, you can invoke: + + urlget -u user:passwd http://www.site.to.leach/doc.html + +Version 2.3 + Rafael Sagula + - Added "-o" option (output file) + - Added URG_HTTP_NOT_FOUND return code. + (Daniel's note:) + Perhaps we should detect all kinds of errors and instead of writing that + custom string for the particular 404-error, use the error text we actually + get from the server. See further details in RFC2068 (HTTP 1.1 + definition). The current way also relies on a HTTP/1.0 reply, which newer + servers might not do. + - Looping mode ("-l" option). It's easier to get various split files. + (Daniel's note:) + Use it like 'urlget -l 1 http://from.this.site/file%d.html', which will + make urlget to attempt to fetch all files named file1.html, file2.html etc + until no more files are found. This is only a modification of the + STAND_ALONE part, nothing in the urlget() function was modfified for this. + Daniel Stenberg + - Changed the -h to be -i instead. -h should be preserved to help use. + - Bjorn Reese indicated that Borland _might_ use '_WIN32' instead of the + VC++ WIN32 define and therefore I added a little fix for that. + +Version 2.2 + Johan Andersson + - The urlget function didn't set the path to url when using proxy. + - Fixed bug with IMC proxy. Now using (almost) complete GET command. + + Daniel Stenberg + - Made it compile on Solaris. Had to reorganize the includes a bit. + (so Win32, Linux, SunOS 4 and Solaris 2 compile fine.) + - Made Johan's keepalive keyword optional with the -k flag (since it + makes a lot of urlgets take a lot longer time). + - Made a '-h' switch in case you want the HTTP-header in the output. + +Version 2.1 + Daniel Stenberg and Kjell Ericson + - Win32-compilable + - No more global variables + - Mute option (no output at all to stderr) + - Full range of return codes from urlget(), which is now written to be a + function for easy-to-use in [other] programs. + - Define STAND_ALONE to compile the stand alone urlget program + - Now compiles with gcc options -ansi -Wall -pedantic ;) + +Version 2.0 + - Introducing ftp GET support. The FTP URL type is recognized and used. + - Renamed the project to 'urlget'. + - Supports the user+passwd in the FTP URL (otherwise it tries anonymous + login with a weird email address as password). + +Version 1.5 + Daniel Stenberg + - The skip_header() crap messed it up big-time. By simply removing that + one we can all of a sudden download anything ;) + - No longer requires a trailing slash on the URLs. + - If the given URL isn't prefixed with 'http://', HTTP is assumed and + given a try! + - 'void main()' is history. + +Version 1.4 + Daniel Stenberg + - The gopher source used the ppath variable instead of path which could + lead to disaster. + +Version 1.3 + Daniel Stenberg + - Well, I added a lame text about the time it took to get the data. I also + fought against Johan to prevent his -f option (to specify a file name + that should be written instead of stdout)! =) + - Made it write 'connection refused' for that particular connect() + problem. + - Renumbered the version. Let's not make silly 1.0.X versions, this is + a plain 1.3 instead. + +Version 1.2 + Johan Andersson + - Discovered and fixed the problem with getting binary files. puts() is + now replaced with fwrite(). (Daniel's note: this also fixed the buffer + overwrite problem I found in the previous version.) + + Rafael Sagula + - Let "-p" before "-x". + + Daniel Stenberg + - Bugfixed the proxy usage. It should *NOT* use nor strip the port number + from the URL but simply pass that information to the proxy. This also + made the user/password fields possible to use in proxy [ftp-] URLs. + (like in ftp://user:password@ftp.my.site:8021/README) + + Johan Andersson + - Implemented HTTP proxy support. + - Receive byte counter added. + + Bjorn Reese + - Implemented URLs (and skipped the old syntax). + - Output is written to stdout, so to achieve the above example, do: + httpget http://143.54.10.6/info_logo.gif > test.gif + +Version 1.1 + Daniel Stenberg + - Adjusted it slightly to accept named hosts on the command line. We + wouldn't wanna use IP numbers for the rest of our lifes, would we? + +Version 1.0 + Rafael Sagula + - Wrote the initial httpget, which started all this! diff --git a/CONTRIBUTE b/CONTRIBUTE new file mode 100644 index 000000000..e268d4e21 --- /dev/null +++ b/CONTRIBUTE @@ -0,0 +1,68 @@ + Date: 1999-08-04 + +To Think About When Contributing Source Code + + This document is intended to offer some guidelines that can be useful to + keep in mind when you decide to write a contribution to the project. This + concerns new features as well as corrections to existing flaws or bugs. + +Naming + + Try using a non-confusing naming scheme for your new functions and variable + names. It doesn't necessarily have to mean that you should use the same as + in other places of the code, just that the names should be logical, + understandable and be named according to what they're used for. + +Indenting + + Please try using the same indenting levels and bracing method as all the + other code already does. It makes the source code a lot easier to follow if + all of it is written using the same style. I don't ask you to like it, I + just ask you to follow the tradition! ;-) + +Commenting + + Comment your source code extensively. I don't see myself as a very good + source commenter, but I try to become one. Commented code is quality code + and enables future modifications much more. Uncommented code much more risk + being completely replaced when someone wants to extend things, since other + persons' source code can get quite hard to read. + +General Style + + Keep your functions small. If they're small you avoid a lot of mistakes and + you don't accidentaly mix up variables. + +Non-clobbering All Over + + When you write new functionality or fix bugs, it is important that you + don't fiddle all over the source files and functions. Remember that it is + likely that other people have done changes in the same source files as you + have and possibly even in the same functions. If you bring completely new + functionality, try writing it in a new source file. If you fix bugs, try to + fix one bug at a time and send them as separate patches. + +Separate Patches Doing Different Things + + It is annoying when you get a huge patch from someone that is said to fix 511 + odd problems, but discussions and opinions don't agree with 510 of them - or + 509 of them were already fixed in a different way. Then the patcher needs to + extract the single interesting patch from somewhere within the huge pile of + source, and that gives a lot of extra work. Preferably, all fixes that + correct different problems should be in their own patch with an attached + description exactly what they correct so that all patches can be selectively + applied by the maintainer or other interested parties. + +Document + + Writing docs is dead boring and one of the big problems with many open + source projects. Someone's gotta do it. It makes it a lot easier if you + submit a small description of your fix or your new features with every + contribution so that it can be swiftly added to the package documentation. + +Write Access to CVS Repository + + If you are a frequent contributor, or have another good reason, you can of + course get write access to the CVS repository and then you'll be able to + check-in all your changes straight into the CVS tree instead of sending all + changes by mail as patches. Just ask if this is what you'd want. diff --git a/FAQ b/FAQ new file mode 100644 index 000000000..dea807e96 --- /dev/null +++ b/FAQ @@ -0,0 +1,31 @@ +Date: 19 November 1999 + + Frequently Asked Questions about Curl + +1. Problems connecting to SSL servers. + + It took a very long time before I could sort out why curl had problems + to connect to certain SSL servers when using SSLeay or OpenSSL v0.9+. + The error sometimes showed up similar to: + + 16570:error:1407D071:SSL routines:SSL2_READ:bad mac decode:s2_pkt.c:233: + + It turned out to be because many older SSL servers don't deal with SSLv3 + requests properly. To correct this problem, tell curl to select SSLv2 from + the command line (-2/--sslv2). + + I have also seen examples where the remote server didn't like the SSLv2 + request and instead you had to force curl to use SSLv3 with -3/--sslv3. + +2. Does curl support resume? + + Yes. Both ways on FTP, download ways on HTTP. + +3. Is libcurl thread safe? + + Yes, as far as curl's own code goes. It does use system calls that often + aren't thread safe in most environments, such as gethostbyname(). + + I am very interested in once and for all getting some kind of report or + README file from those who have used libcurl in a threaded environment, + since I haven't and I get this question more and more frequently! diff --git a/FEATURES b/FEATURES new file mode 100644 index 000000000..18d3d3d44 --- /dev/null +++ b/FEATURES @@ -0,0 +1,72 @@ +Misc + - full URL syntax + - custom maximum download time + - custom least download speed acceptable + - multiple URLs + - guesses protocol from host name unless specified + - uses .netrc + - progress bar/time specs while downloading + - PROXY environment variables support + - config file support + - compiles on win32 + +HTTP + - GET + - PUT + - HEAD + - POST + - multipart POST + - authentication + - resume + - follow redirects + - custom HTTP request + - cookie get/send + - custom headers (that can replace internally generated headers) + - custom user-agent string + - custom referer string + - range + - proxy authentication + - time conditions + - via http-proxy + +HTTPS (*1) + - (all the HTTP features) + - using certificates + - via http-proxy + +FTP + - download + - authentication + - PORT or PASV + - single file size information (compare to HTTP HEAD) + - 'type=' URL support + - dir listing + - dir listing names-only + - upload + - upload append + - upload via http-proxy as HTTP PUT + - download resume + - upload resume + - QUOT commands + - simple "range" support + - via http-proxy + +TELNET + - connection negotiation + - stdin/stdout I/O + +LDAP (*2) + - full LDAP URL support + +DICT + - extended DICT URL support + +GOPHER + - GET + - via http-proxy + +FILE + - URL support + + *1 = requires OpenSSL + *2 = requires OpenLDAP diff --git a/FILES b/FILES new file mode 100644 index 000000000..d26a3c01f --- /dev/null +++ b/FILES @@ -0,0 +1,47 @@ +CHANGES +CONTRIBUTE +FEATURES +FAQ +FILES +INSTALL +LEGAL +MPL-1.0.txt +README +README.curl +README.libcurl +curl.1 +*spec +RESOURCES +TODO +maketgz +Makefile.in +Makefile.am +acconfig.h +aclocal.m4 +config.guess +config.h.in +config.sub +configure +configure.in +install-sh +missing +mkinstalldirs +reconf +stamp-h.in +perl/README +perl/*.pl.in +src/*.[ch] +src/*in +src/*am +src/mkhelp.pl +src/Makefile.vc6 +src/*m32 +lib/getdate.y +lib/*.[ch] +lib/*in +lib/*am +lib/Makefile.vc6 +lib/*m32 +include/README +include/curl/*.h + diff --git a/INSTALL b/INSTALL new file mode 100644 index 000000000..a2e389433 --- /dev/null +++ b/INSTALL @@ -0,0 +1,195 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + + How To Compile + +UNIX +==== + + The configure script *always* tries to find a working SSL library unless + explicitely told not to. If you have SSLeay or OpenSSL installed in the + default search path for your compiler/linker, you don't need to do anything + special. + + If you have SSLeay or OpenSSL installed in /usr/local/ssl, you can + run configure like so: + + ./configure --with-ssl + + If you have SSLeay or OpenSSL installed somewhere else (for example, + /opt/OpenSSL,) you can run configure like this: + + ./configure --with-ssl=/opt/OpenSSL + + If you insist on forcing a build *without* SSL support, even though you may + have it installed in your system, you can run configure like this: + + ./configure --without-ssl + + If you have SSLeay or OpenSSL installed, but with the libraries in + one place and the header files somewhere else, you'll have to set the + LDFLAGS and CPPFLAGS environment variables prior to running configure. + Something like this should work: + + (with the Bourne shell and its clones): + + CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \ + ./configure + + (with csh, tcsh and their clones): + + env CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \ + ./configure + + If your SSL library was compiled with rsaref (usually for use in + the United States), you may also need to set: + + LIBS=-lRSAglue -lrsaref + (from Doug Kaufman ) + + Without SSL support, just run: + + ./configure + + Then run: + + make + + Use the executable `curl` in src/ directory. + + 'make install' copies the curl file to /usr/local/bin/ (or $prefix/bin + if you used the --prefix option to configure) and copies the curl.1 + man page to a suitable place too. + + KNOWN PROBLEMS + + If you happen to have autoconf installed, but a version older than + 2.12 you will get into trouble. Then you can still build curl by + issuing these commands: (from Ralph Beckmann ) + + ./configure [...] + cd lib; make; cd .. + cd src; make; cd .. + cp src/curl elsewhere/bin/ + + OPTIONS + + Remember, to force configure to use the standard cc compiler if both + cc and gcc are present, run configure like + + CC=cc ./configure + or + env Cc=cc ./configure + + +Win32 +===== + + Without SSL: + + MingW32 (GCC-2.95) style + ------------------------ + Run the 'mingw32.bat' file to get the proper environment variables + set, then run 'make -f Makefile.m32' in the lib/ dir and then + 'make -f Makefile.m32' in the src/ dir. + + If you have any problems linking libraries or finding header files, + be sure to look at the provided "Makefile.m32" files for the proper + paths, and adjust as necessary. + + Cygwin style + ------------ + Almost identical to the unix installation. Run the configure script + in the curl root with 'sh configure'. Make sure you have the sh + executable in /bin/ or you'll see the configure fail towards the + end. + + Run 'make' + + Microsoft command line style + ---------------------------- + Run the 'vcvars32.bat' file to get the proper environment variables + set, then run 'nmake -f Makefile.vc6' in the lib/ dir and then + 'nmake -f Makefile.vc6' in the src/ dir. + + IDE-style + ------------------------- + If you use VC++, Borland or similar compilers. Include all lib source + files in a static lib "project" (all .c and .h files that is). + (you should name it libcurl or similar) + + Make the sources in the src/ drawer be a "win32 console application" + project. Name it curl. + + With VC++, add 'wsock32.lib' to the link libs when you build curl! + Borland seems to do that itself magically. Of course you have to + make sure it links with the libcurl too! + + For VC++ 6, there's an included Makefile.vc6 that should be possible + to use out-of-the-box. + + Microsoft note: add /Zm200 to the compiler options, as the hugehelp.c + won't compile otherwise due to "too long puts string" or something + like that! + + + With SSL: + + MingW32 (GCC-2.95) style + ------------------------ + Run the 'mingw32.bat' file to get the proper environment variables + set, then run 'make -f Makefile.m32 SSL=1' in the lib/ dir and then + 'make -f Makefile.m32 SSL=1' in the src/ dir. + + If you have any problems linking libraries or finding header files, + be sure to look at the provided "Makefile.m32" files for the proper + paths, and adjust as necessary. + + Cygwin style + ------------ + + Haven't done, nor got any reports on how to do. It should although be + identical to the unix setup for the same purpose. See above. + + Microsoft command line style + ---------------------------- + Run the 'vcvars32.bat' file to get the proper environment variables + set, then run 'nmake -f Makefile.vc6 release-ssl' in the lib/ dir and + then 'nmake -f Makefile.vc6' in the src/ dir. + + Microsoft / Borland style + ------------------------- + If you have OpenSSL/SSLeay, and want curl to take advantage of it, + edit your project properties to use the SSL include path, link with + the SSL libs and define the USE_SSLEAY symbol. + + +OpenSSL/SSLeay +============== + + You'll find OpenSSL information at: + + http://www.openssl.org + + +MingW32/Cygwin +============== + + You'll find MingW32 and Cygwin information at: + + http://www.xraylith.wisc.edu/~khan/software/gnu-win32/index.html + +OpenLDAP +======== + + You'll find OpenLDAP information at: + + http://www.openldap.org + + You need to install it with shared libraries, which is enabled when running + the ldap configure script with "--enable-shared". With my linux 2.0.36 + kernel I also had to disable using threads (with --without-threads), + because the configure script couldn't figure out my system. diff --git a/LEGAL b/LEGAL new file mode 100644 index 000000000..cc1143c7d --- /dev/null +++ b/LEGAL @@ -0,0 +1,21 @@ +Part of this software is distributed under the Mozilla Public License +version 1.0, which is part of this distribution (MPL-1.0.txt) and +available on-line at http://www.mozilla.org/MPL/ + +The terminology used here is described in the Mozilla Public License. + +In accordance with section "4. Inability to Comply Due to Statute or +Regulation" the following exemptions apply to this software: + + * The Initial Developer has the right, regardless of the citizenship + of any involved party, to choose the location for settling disputes + as refered to under section "11. Miscellaneous" of the Mozilla Public + License. + +Initial Developers of this software are: + + Daniel Stenberg + Rafael Linden Sagula + +Curl is Copyright (C) 1996-1998 Daniel Stenberg and Rafael Linden Sagula + \ No newline at end of file diff --git a/MPL-1.0.txt b/MPL-1.0.txt new file mode 100644 index 000000000..f7f2ff185 --- /dev/null +++ b/MPL-1.0.txt @@ -0,0 +1,360 @@ + MOZILLA PUBLIC LICENSE + Version 1.0 + + ---------------- + +1. Definitions. + + 1.1. ``Contributor'' means each entity that creates or contributes to + the creation of Modifications. + + 1.2. ``Contributor Version'' means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. ``Covered Code'' means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. ``Electronic Distribution Mechanism'' means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. ``Executable'' means Covered Code in any form other than Source + Code. + + 1.6. ``Initial Developer'' means the individual or entity identified as + the Initial Developer in the Source Code notice required by Exhibit A. + + 1.7. ``Larger Work'' means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. ``License'' means this document. + + 1.9. ``Modifications'' means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. ``Original Code'' means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this License + is not already Covered Code governed by this License. + + 1.11. ``Source Code'' means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus any + associated interface definition files, scripts used to control + compilation and installation of an Executable, or a list of source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. ``You'' means an individual or a legal entity exercising rights + under, and complying with all of the terms of, this License or a future + version of this License issued under Section 6.1. For legal entities, + ``You'' includes any entity which controls, is controlled by, or is + under common control with You. For purposes of this definition, + ``control'' means (a) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (b) ownership of fifty percent (50%) or more of the + outstanding shares or beneficial ownership of such entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + + (a) to use, reproduce, modify, display, perform, sublicense and + distribute the Original Code (or portions thereof) with or without + Modifications, or as part of a Larger Work; and + + (b) under patents now or hereafter owned or controlled by Initial + Developer, to make, have made, use and sell (``Utilize'') the + Original Code (or portions thereof), but solely to the extent that + any such patent is reasonably necessary to enable You to Utilize + the Original Code (or portions thereof) and not to any greater + extent that may be necessary to Utilize further Modifications or + combinations. + + 2.2. Contributor Grant. + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + + (a) to use, reproduce, modify, display, perform, sublicense and + distribute the Modifications created by such Contributor (or + portions thereof) either on an unmodified basis, with other + Modifications, as Covered Code or as part of a Larger Work; and + + (b) under patents now or hereafter owned or controlled by + Contributor, to Utilize the Contributor Version (or portions + thereof), but solely to the extent that any such patent is + reasonably necessary to enable You to Utilize the Contributor + Version (or portions thereof), and not to any greater extent that + may be necessary to Utilize further Modifications or combinations. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be distributed + only under the terms of this License or a future version of this + License released under Section 6.1, and You must include a copy of this + License with every copy of the Source Code You distribute. You may not + offer or impose any terms on any Source Code version that alters or + restricts the applicable version of this License or the recipients' + rights hereunder. However, You may include an additional document + offering the additional rights described in Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which you contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that the + Modification is derived, directly or indirectly, from Original Code + provided by the Initial Developer and including the name of the Initial + Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + + (a) Third Party Claims. + If You have knowledge that a party claims an intellectual property + right in particular functionality or code (or its utilization + under this License), you must include a text file with the source + code distribution titled ``LEGAL'' which describes the claim and + the party making the claim in sufficient detail that a recipient + will know whom to contact. If you obtain such knowledge after You + make Your Modification available as described in Section 3.2, You + shall promptly modify the LEGAL file in all copies You make + available thereafter and shall take other steps (such as notifying + appropriate mailing lists or newsgroups) reasonably calculated to + inform those who received the Covered Code that new knowledge has + been obtained. + + (b) Contributor APIs. + If Your Modification is an application programming interface and + You own or control patents which are reasonably necessary to + implement that API, you must also include this information in the + LEGAL file. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code, and this License in any documentation for the Source Code, where + You describe recipients' rights relating to Covered Code. If You + created one or more Modification(s), You may add your name as a + Contributor to the notice described in Exhibit A. If it is not possible + to put such notice in a particular Source Code file due to its + structure, then you must include such notice in a location (such as a + relevant directory file) where a user would be likely to look for such + a notice. You may choose to offer, and to charge a fee for, warranty, + support, indemnity or liability obligations to one or more recipients + of Covered Code. However, You may do so only on Your own behalf, and + not on behalf of the Initial Developer or any Contributor. You must + make it absolutely clear than any such warranty, support, indemnity or + liability obligation is offered by You alone, and You hereby agree to + indemnify the Initial Developer and every Contributor for any liability + incurred by the Initial Developer or such Contributor as a result of + warranty, support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of the + Covered Code is available under the terms of this License, including a + description of how and where You have fulfilled the obligations of + Section 3.2. The notice must be conspicuously included in any notice in + an Executable version, related documentation or collateral in which You + describe recipients' rights relating to the Covered Code. You may + distribute the Executable version of Covered Code under a license of + Your choice, which may contain terms different from this License, + provided that You are in compliance with the terms of this License and + that the license for the Executable version does not attempt to limit + or alter the recipient's rights in the Source Code version from the + rights set forth in this License. If You distribute the Executable + version under a different license You must make it absolutely clear + that any terms which differ from this License are offered by You alone, + not by the Initial Developer or any Contributor. You hereby agree to + indemnify the Initial Developer and every Contributor for any liability + incurred by the Initial Developer or such Contributor as a result of + any such terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to statute + or regulation then You must: (a) comply with the terms of this License + to the maximum extent possible; and (b) describe the limitations and + the code they affect. Such description must be included in the LEGAL + file described in Section 3.4 and must be included with all + distributions of the Source Code. Except to the extent prohibited by + statute or regulation, such description must be sufficiently detailed + for a recipient of ordinary skill to be able to understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A, and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation (``Netscape'') may publish revised + and/or new versions of the License from time to time. Each version will + be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If you create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), you must (a) rename Your license so that the + phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or + any confusingly similar phrase do not appear anywhere in your license + and (b) otherwise make it clear that your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial Developer, + Original Code or Contributor in the notice described in Exhibit A shall + not of themselves be deemed to be modifications of this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER + PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF + GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND + ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE + BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT + EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a ``commercial item,'' as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer + software'' and ``commercial computer software documentation,'' as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if any, + provides otherwise), excluding its conflict-of-law provisions. With + respect to disputes in which at least one party is a citizen of, or an + entity chartered or registered to do business in, the United States of + America: (a) unless otherwise agreed in writing, all disputes relating + to this License (excepting any dispute relating to intellectual + property rights) shall be subject to final and binding arbitration, + with the losing party paying all costs of arbitration; (b) any + arbitration relating to this Agreement shall be held in Santa Clara + County, California, under the auspices of JAMS/EndDispute; and (c) any + litigation relating to this Agreement shall be subject to the + jurisdiction of the Federal Courts of the Northern District of + California, with venue lying in Santa Clara County, California, with + the losing party responsible for costs, including without limitation, + court costs and reasonable attorneys fees and expenses. The application + of the United Nations Convention on Contracts for the International + Sale of Goods is expressly excluded. Any law or regulation which + provides that the language of a contract shall be construed against the + drafter shall not apply to this License. + +12. RESPONSIBILITY FOR CLAIMS. + + Except in cases where another Contributor has failed to comply with + Section 3.4, You are responsible for damages arising, directly or + indirectly, out of Your utilization of rights under this License, based + on the number of copies of Covered Code you made available, the + revenues you received from utilizing such rights, and other relevant + factors. You agree to work with affected parties to distribute + responsibility on an equitable basis. + +EXHIBIT A. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________.'' diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..0eaf99620 --- /dev/null +++ b/Makefile @@ -0,0 +1,426 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# +# $Id$ +# + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = . +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/curl +pkglibdir = $(libdir)/curl +pkgincludedir = $(includedir)/curl + +top_builddir = . + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = ./install-sh -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = sparc-sun-solaris2.6 +host_triplet = sparc-sun-solaris2.6 +CC = gcc +MAKEINFO = makeinfo +NROFF = /bin/nroff +PACKAGE = curl +PERL = /usr/local/bin/perl +RANLIB = ranlib +VERSION = 6.3.1 +YACC = bison -y + +AUTOMAKE_OPTIONS = foreign no-dependencies + +man_MANS = curl.1 + +EXTRA_DIST = $(man_MANS) + +SUBDIRS = lib src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h ./src/config.h +CONFIG_CLEAN_FILES = +man1dir = $(mandir)/man1 +MANS = $(man_MANS) +DIST_COMMON = README ./stamp-h1.in INSTALL Makefile.am Makefile.in TODO \ +acconfig.h aclocal.m4 config.guess config.h.in config.sub configure \ +configure.in install-sh missing mkinstalldirs src/config.h.in \ +src/stamp-h2.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.in + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h \ + $(SHELL) ./config.status + @echo timestamp > stamp-h1 2> /dev/null +$(srcdir)/config.h.in: $(srcdir)/stamp-h1.in + @if test ! -f $@; then \ + rm -f $(srcdir)/stamp-h1.in; \ + $(MAKE) $(srcdir)/stamp-h1.in; \ + else :; fi +$(srcdir)/stamp-h1.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/stamp-h1.in 2> /dev/null + +src/config.h: src/stamp-h2 + @if test ! -f $@; then \ + rm -f src/stamp-h2; \ + $(MAKE) src/stamp-h2; \ + else :; fi +src/stamp-h2: $(srcdir)/src/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=src/config.h \ + $(SHELL) ./config.status + @echo timestamp > src/stamp-h2 2> /dev/null +$(srcdir)/src/config.h.in: $(srcdir)/src/stamp-h2.in + @if test ! -f $@; then \ + rm -f $(srcdir)/src/stamp-h2.in; \ + $(MAKE) $(srcdir)/src/stamp-h2.in; \ + else :; fi +$(srcdir)/src/stamp-h2.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/src/stamp-h2.in 2> /dev/null + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + -rm -f config.h src/config.h + +maintainer-clean-hdr: + +install-man1: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done + +uninstall-man1: + @list='$(man1_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +install-man: $(MANS) + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-man1 +uninstall-man: + @$(NORMAL_UNINSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-man1 + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + + + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" = "." && dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +all-recursive-am: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: install-man +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: uninstall-man +uninstall: uninstall-recursive +all-am: Makefile $(MANS) config.h +all-redirect: all-recursive-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-hdr clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-hdr distclean-tags distclean-generic clean-am + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ +install-man1 uninstall-man1 install-man uninstall-man \ +install-data-recursive uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ +install-exec-am install-exec install-data-am install-data install-am \ +install uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 000000000..b5b81a564 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,13 @@ +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign no-dependencies + +man_MANS = curl.1 + +EXTRA_DIST = $(man_MANS) + +SUBDIRS = lib src + + diff --git a/Makefile.dist b/Makefile.dist new file mode 100644 index 000000000..843091df0 --- /dev/null +++ b/Makefile.dist @@ -0,0 +1,78 @@ +############################################################################ +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# The contents of this file are subject to the Mozilla Public License +# Version 1.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +# License for the specific language governing rights and limitations +# under the License. +# +# The Original Code is Curl. +# +# The Initial Developer of the Original Code is Daniel Stenberg. +# +# Portions created by the Initial Developer are Copyright (C) 1999. +# All Rights Reserved. +# +# ------------------------------------------------------------ +# Main author: +# - Daniel Stenberg +# +# http://curl.haxx.nu +# +# $Source$ +# $Revision$ +# $Date$ +# $Author$ +# $State$ +# $Locker$ +# +# ------------------------------------------------------------ +# +# In a normal unix-setup, this file will become overwritten. +# +############################################################################ + +all: + ./configure + make + +ssl: + ./configure --with-ssl + make + +mingw32: + cd lib; make -f Makefile.m32 + cd src; make -f Makefile.m32 + +mingw32-ssl: + cd lib; make -f Makefile.m32 SSL=1 + cd src; make -f Makefile.m32 SSL=1 + +vc: + cd lib; nmake -f Makefile.vc6 + cd src; nmake -f Makefile.vc6 + +cygwin: + ./configure + make + +cygwin-ssl: + ./configure --with-ssl + make + +unix: all + +unix-ssl: ssl + +linux: all + +linux-ssl: ssl diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 000000000..18fa70152 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,426 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# +# $Id$ +# + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +CC = @CC@ +MAKEINFO = @MAKEINFO@ +NROFF = @NROFF@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +RANLIB = @RANLIB@ +VERSION = @VERSION@ +YACC = @YACC@ + +AUTOMAKE_OPTIONS = foreign no-dependencies + +man_MANS = curl.1 + +EXTRA_DIST = $(man_MANS) + +SUBDIRS = lib src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h ./src/config.h +CONFIG_CLEAN_FILES = +man1dir = $(mandir)/man1 +MANS = $(man_MANS) +DIST_COMMON = README ./stamp-h1.in INSTALL Makefile.am Makefile.in TODO \ +acconfig.h aclocal.m4 config.guess config.h.in config.sub configure \ +configure.in install-sh missing mkinstalldirs src/config.h.in \ +src/stamp-h2.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.in + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h \ + $(SHELL) ./config.status + @echo timestamp > stamp-h1 2> /dev/null +$(srcdir)/config.h.in: $(srcdir)/stamp-h1.in + @if test ! -f $@; then \ + rm -f $(srcdir)/stamp-h1.in; \ + $(MAKE) $(srcdir)/stamp-h1.in; \ + else :; fi +$(srcdir)/stamp-h1.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/stamp-h1.in 2> /dev/null + +src/config.h: src/stamp-h2 + @if test ! -f $@; then \ + rm -f src/stamp-h2; \ + $(MAKE) src/stamp-h2; \ + else :; fi +src/stamp-h2: $(srcdir)/src/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=src/config.h \ + $(SHELL) ./config.status + @echo timestamp > src/stamp-h2 2> /dev/null +$(srcdir)/src/config.h.in: $(srcdir)/src/stamp-h2.in + @if test ! -f $@; then \ + rm -f $(srcdir)/src/stamp-h2.in; \ + $(MAKE) $(srcdir)/src/stamp-h2.in; \ + else :; fi +$(srcdir)/src/stamp-h2.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/src/stamp-h2.in 2> /dev/null + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + -rm -f config.h src/config.h + +maintainer-clean-hdr: + +install-man1: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done + +uninstall-man1: + @list='$(man1_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +install-man: $(MANS) + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-man1 +uninstall-man: + @$(NORMAL_UNINSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-man1 + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" = "." && dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +all-recursive-am: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: install-man +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: uninstall-man +uninstall: uninstall-recursive +all-am: Makefile $(MANS) config.h +all-redirect: all-recursive-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-hdr clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-hdr distclean-tags distclean-generic clean-am + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ +install-man1 uninstall-man1 install-man uninstall-man \ +install-data-recursive uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ +install-exec-am install-exec install-data-am install-data install-am \ +install uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/README b/README new file mode 100644 index 000000000..e7754b592 --- /dev/null +++ b/README @@ -0,0 +1,28 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +README + + Curl is a command line tool for transfering data specified with URL + syntax. Find out how to use Curl by reading the curl.1 man page or the + README.curl document. Find out how to install Curl by reading the INSTALL + document. + + libcurl is a link-library that Curl is using to to its job. It is readily + available to be used by your software. Read the README.libcurl document to + find out how! + + You find answers to the most frequent questions we get in the FAQ document. + + Always try the Curl web site for the latest news: + + http://curl.haxx.nu + + The official download mirror sites are: + + Sweden -- ftp://ftp.sunet.se/pub/www/utilities/curl/ + Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/ + China -- http://www.pshowing.com/curl/ diff --git a/README.curl b/README.curl new file mode 100644 index 000000000..00f685e41 --- /dev/null +++ b/README.curl @@ -0,0 +1,611 @@ +LATEST VERSION + + You always find news about what's going on as well as the latest versions + from the curl web pages, located at: + + http://curl.haxx.nu + +SIMPLE USAGE + + Get the main page from netscape's web-server: + + curl http://www.netscape.com/ + + Get the root README file from funet's ftp-server: + + curl ftp://ftp.funet.fi/README + + Get a gopher document from funet's gopher server: + + curl gopher://gopher.funet.fi + + Get a web page from a server using port 8000: + + curl http://www.weirdserver.com:8000/ + + Get a list of the root directory of an FTP site: + + curl ftp://ftp.fts.frontec.se/ + + Get the definition of curl from a dictionary: + + curl dict://dict.org/m:curl + +DOWNLOAD TO A FILE + + Get a web page and store in a local file: + + curl -o thatpage.html http://www.netscape.com/ + + Get a web page and store in a local file, make the local file get the name + of the remote document (if no file name part is specified in the URL, this + will fail): + + curl -O http://www.netscape.com/index.html + +USING PASSWORDS + + FTP + + To ftp files using name+passwd, include them in the URL like: + + curl ftp://name:passwd@machine.domain:port/full/path/to/file + + or specify them with the -u flag like + + curl -u name:passwd ftp://machine.domain:port/full/path/to/file + + HTTP + + The HTTP URL doesn't support user and password in the URL string. Curl + does support that anyway to provide a ftp-style interface and thus you can + pick a file like: + + curl http://name:passwd@machine.domain/full/path/to/file + + or specify user and password separately like in + + curl -u name:passwd http://machine.domain/full/path/to/file + + NOTE! Since HTTP URLs don't support user and password, you can't use that + style when using Curl via a proxy. You _must_ use the -u style fetch + during such circumstances. + + HTTPS + + Probably most commonly used with private certificates, as explained below. + + GOPHER + + Curl features no password support for gopher. + +PROXY + + Get an ftp file using a proxy named my-proxy that uses port 888: + + curl -x my-proxy:888 ftp://ftp.leachsite.com/README + + Get a file from a HTTP server that requires user and password, using the + same proxy as above: + + curl -u user:passwd -x my-proxy:888 http://www.get.this/ + + Some proxies require special authentication. Specify by using -U as above: + + curl -U user:passwd -x my-proxy:888 http://www.get.this/ + + See also the environment variables Curl support that offer further proxy + control. + +RANGES + + With HTTP 1.1 byte-ranges were introduced. Using this, a client can request + to get only one or more subparts of a specified document. Curl supports + this with the -r flag. + + Get the first 100 bytes of a document: + + curl -r 0-99 http://www.get.this/ + + Get the last 500 bytes of a document: + + curl -r -500 http://www.get.this/ + + Curl also supports simple ranges for FTP files as well. Then you can only + specify start and stop position. + + Get the first 100 bytes of a document using FTP: + + curl -r 0-99 ftp://www.get.this/README + +UPLOADING + + FTP + + Upload all data on stdin to a specified ftp site: + + curl -t ftp://ftp.upload.com/myfile + + Upload data from a specified file, login with user and password: + + curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile + + Upload a local file to the remote site, and use the local file name remote + too: + + curl -T uploadfile -u user:passwd ftp://ftp.upload.com/ + + NOTE: Curl is not currently supporing ftp upload through a proxy! The reason + for this is simply that proxies are seldomly configured to allow this and + that no author has supplied code that makes it possible! + + HTTP + + Upload all data on stdin to a specified http site: + + curl -t http://www.upload.com/myfile + + Note that the http server must've been configured to accept PUT before this + can be done successfully. + + For other ways to do http data upload, see the POST section below. + +VERBOSE / DEBUG + + If curl fails where it isn't supposed to, if the servers don't let you + in, if you can't understand the responses: use the -v flag to get VERBOSE + fetching. Curl will output lots of info and all data it sends and + receives in order to let the user see all client-server interaction. + + curl -v ftp://ftp.upload.com/ + +DETAILED INFORMATION + + Different protocols provide different ways of getting detailed information + about specific files/documents. To get curl to show detailed information + about a single file, you should use -I/--head option. It displays all + available info on a single file for HTTP and FTP. The HTTP information is a + lot more extensive. + + For HTTP, you can get the header information (the same as -I would show) + shown before the data by using -i/--include. Curl understands the + -D/--dump-header option when getting files from both FTP and HTTP, and it + will then store the headers in the specified file. + + Store the HTTP headers in a separate file: + + curl --dump-header headers.txt curl.haxx.nu + + Note that headers stored in a separate file can be very useful at a later + time if you want curl to use cookies sent by the server. More about that in + the cookies section. + +POST (HTTP) + + It's easy to post data using curl. This is done using the -d + option. The post data must be urlencoded. + + Post a simple "name" and "phone" guestbook. + + curl -d "name=Rafael%20Sagula&phone=3320780" \ + http://www.where.com/guest.cgi + + While -d uses the application/x-www-form-urlencoded mime-type, generally + understood by CGI's and similar, curl also supports the more capable + multipart/form-data type. This latter type supports things like file upload. + + -F accepts parameters like -F "name=contents". If you want the contents to + be read from a file, use <@filename> as contents. When specifying a file, + you can also specify which content type the file is, by appending + ';type=' to the file name. You can also post contents of several + files in one field. So that the field name 'coolfiles' can be sent three + files with different content types in a manner similar to: + + curl -F "coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html" \ + http://www.post.com/postit.cgi + + If content-type is not specified, curl will try to guess from the extension + (it only knows a few), or use the previously specified type (from an earlier + file if several files are specified in a list) or finally using the default + type 'text/plain'. + + Emulate a fill-in form with -F. Let's say you fill in three fields in a + form. One field is a file name which to post, one field is your name and one + field is a file description. We want to post the file we have written named + "cooltext.txt". To let curl do the posting of this data instead of your + favourite browser, you have to check out the HTML of the form page to get to + know the names of the input fields. In our example, the input field names are + 'file', 'yourname' and 'filedescription'. + + curl -F "file=@cooltext.txt" -F "yourname=Daniel" \ + -F "filedescription=Cool text file with cool text inside" \ + http://www.post.com/postit.cgi + + So, to send two files in one post you can do it in two ways: + + 1. Send multiple files in a single "field" with a single field name: + + curl -F "pictures=@dog.gif,cat.gif" + + 2. Send two fields with two field names: + + curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif" + +REFERER + + A HTTP request has the option to include information about which address + that referred to actual page, and curl allows the user to specify that + referrer to get specified on the command line. It is especially useful to + fool or trick stupid servers or CGI scripts that rely on that information + being available or contain certain data. + + curl -e www.coolsite.com http://www.showme.com/ + +USER AGENT + + A HTTP request has the option to include information about the browser + that generated the request. Curl allows it to be specified on the command + line. It is especially useful to fool or trick stupid servers or CGI + scripts that only accept certain browsers. + + Example: + + curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/ + + Other common strings: + 'Mozilla/3.0 (Win95; I)' Netscape Version 3 for Windows 95 + 'Mozilla/3.04 (Win95; U)' Netscape Version 3 for Windows 95 + 'Mozilla/2.02 (OS/2; U)' Netscape Version 2 for OS/2 + 'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)' NS for AIX + 'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)' NS for Linux + + Note that Internet Explorer tries hard to be compatible in every way: + 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)' MSIE for W95 + + Mozilla is not the only possible User-Agent name: + 'Konqueror/1.0' KDE File Manager desktop client + 'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser + +COOKIES + + Cookies are generally used by web servers to keep state information at the + client's side. The server sets cookies by sending a response line in the + headers that looks like 'Set-Cookie: ' where the data part then + typically contains a set of NAME=VALUE pairs (separated by semicolons ';' + like "NAME1=VALUE1; NAME2=VALUE2;"). The server can also specify for what + path the "cookie" should be used for (by specifying "path=value"), when the + cookie should expire ("expire=DATE"), for what domain to use it + ("domain=NAME") and if it should be used on secure connections only + ("secure"). + + If you've received a page from a server that contains a header like: + Set-Cookie: sessionid=boo123; path="/foo"; + + it means the server wants that first pair passed on when we get anything in + a path beginning with "/foo". + + Example, get a page that wants my name passed in a cookie: + + curl -b "name=Daniel" www.sillypage.com + + Curl also has the ability to use previously received cookies in following + sessions. If you get cookies from a server and store them in a file in a + manner similar to: + + curl --dump-header headers www.example.com + + ... you can then in a second connect to that (or another) site, use the + cookies from the 'headers' file like: + + curl -b headers www.example.com + + Note that by specifying -b you enable the "cookie awareness" and with -L + you can make curl follow a location: (which often is used in combination + with cookies). So that if a site sends cookies and a location, you can + use a non-existing file to trig the cookie awareness like: + + curl -L -b empty-file www.example.com + + The file to read cookies from must be formatted using plain HTTP headers OR + as netscape's cookie file. Curl will determine what kind it is based on the + file contents. + +PROGRESS METER + + The progress meter was introduced to better show a user that something + actually is happening. The different fields in the output have the following + meaning: + + % Received Total Speed Time left Total Curr.Speed + 13 524140 3841536 4296 0:12:52 0:14:54 292 + + From left-to-right: + - The first column, is the percentage of the file currently transfered. + - Received means the total number of bytes that has been transfered. + - Total is the total number of bytes expected to transfer. + - Speed is average speed in bytes per second for the whole transfer so far. + - Time left is the estimated time left for this transfer to finnish if the + current average speed will remain steady. + - Total is the estimated total transfer time. + - Curr.Speed is the average transfer speed the last 5 seconds (the first + 5 seconds of a transfer is based on less time of course.) + + NOTE: Much of the output is based on the fact that the size of the transfer + is known before it takes place. If it isn't, a much less fancy display will + be used. + +SPEED LIMIT + + Curl offers the user to set conditions regarding transfer speed that must + be met to let the transfer keep going. By using the switch -y and -Y you + can make curl abort transfers if the transfer speed doesn't exceed your + given lowest limit for a specified time. + + To let curl abandon downloading this page if its slower than 3000 bytes per + second for 1 minute, run: + + curl -y 3000 -Y 60 www.far-away-site.com + + This can very well be used in combination with the overall time limit, so + that the above operatioin must be completed in whole within 30 minutes: + + curl -m 1800 -y 3000 -Y 60 www.far-away-site.com + +CONFIG FILE + + Curl automatically tries to read the .curlrc file (or _curlrc file on win32 + systems) from the user's home dir on startup. The config file should be + made up with normal command line switches. Comments can be used within the + file. If the first letter on a line is a '#'-letter the rest of the line + is treated as a comment. + + Example, set default time out and proxy in a config file: + + # We want a 30 minute timeout: + -m 1800 + # ... and we use a proxy for all accesses: + -x proxy.our.domain.com:8080 + + White spaces ARE significant at the end of lines, but all white spaces + leading up to the first characters of each line are ignored. + + Prevent curl from reading the default file by using -q as the first command + line parameter, like: + + curl -q www.thatsite.com + + Force curl to get and display a local help page in case it is invoked + without URL by making a config file similar to: + + # default url to get + http://help.with.curl.com/curlhelp.html + + You can specify another config file to be read by using the -K/--config + flag. If you set config file name to "-" it'll read the config from stdin, + which can be handy if you want to hide options from being visible in process + tables etc: + + echo "-u user:passwd" | curl -K - http://that.secret.site.com + +EXTRA HEADERS + + When using curl in your own very special programs, you may end up needing + to pass on your own custom headers when getting a web page. You can do + this by using the -H flag. + + Example, send the header "X-you-and-me: yes" to the server when getting a + page: + + curl -H "X-you-and-me: yes" www.love.com + + This can also be useful in case you want curl to send a different text in + a header than it normally does. The -H header you specify then replaces the + header curl would normally send. + +FTP and PATH NAMES + + Do note that when getting files with the ftp:// URL, the given path is + relative the directory you enter. To get the file 'README' from your home + directory at your ftp site, do: + + curl ftp://user:passwd@my.site.com/README + + But if you want the README file from the root directory of that very same + site, you need to specify the absolute file name: + + curl ftp://user:passwd@my.site.com//README + + (I.e with an extra slash in front of the file name.) + +FTP and firewalls + + The FTP protocol requires one of the involved parties to open a second + connction as soon as data is about to get transfered. There are two ways to + do this. + + The default way for curl is to issue the PASV command which causes the + server to open another port and await another connection performed by the + client. This is good if the client is behind a firewall that don't allow + incoming connections. + + curl ftp.download.com + + If the server for example, is behind a firewall that don't allow connections + on other ports than 21 (or if it just doesn't support the PASV command), the + other way to do it is to use the PORT command and instruct the server to + connect to the client on the given (as parameters to the PORT command) IP + number and port. + + The -P flag to curl allows for different options. Your machine may have + several IP-addresses and/or network interfaces and curl allows you to select + which of them to use. Default address can also be used: + + curl -P - ftp.download.com + + Download with PORT but use the IP address of our 'le0' interface: + + curl -P le0 ftp.download.com + + Download with PORT but use 192.168.0.10 as our IP address to use: + + curl -P 192.168.0.10 ftp.download.com + +HTTPS + + Secure HTTP requires SSLeay to be installed and used when curl is built. If + that is done, curl is capable of retrieving and posting documents using the + HTTPS procotol. + + Example: + + curl https://www.secure-site.com + + Curl is also capable of using your personal certificates to get/post files + from sites that require valid certificates. The only drawback is that the + certificate needs to be in PEM-format. PEM is a standard and open format to + store certificates with, but it is not used by the most commonly used + browsers (Netscape and MSEI both use the so called PKCS#12 format). If you + want curl to use the certificates you use with your (favourite) browser, you + may need to download/compile a converter that can convert your browser's + formatted certificates to PEM formatted ones. Dr Stephen N. Henson has + written a patch for SSLeay that adds this functionality. You can get his + patch (that requires an SSLeay installation) from his site at: + http://www.drh-consultancy.demon.co.uk/ + + Example on how to automatically retrieve a document using a certificate with + a personal password: + + curl -E /path/to/cert.pem:password https://secure.site.com/ + + If you neglect to specify the password on the command line, you will be + prompted for the correct password before any data can be received. + + Many older SSL-servers have problems with SSLv3 or TLS, that newer versions + of OpenSSL etc is using, therefore it is sometimes useful to specify what + SSL-version curl should use. Use -3 or -2 to specify that exact SSL version + to use: + + curl -2 https://secure.site.com/ + + Otherwise, curl will first attempt to use v3 and then v2. + +RESUMING FILE TRANSFERS + + To continue a file transfer where it was previously aborted, curl supports + resume on http(s) downloads as well as ftp uploads and downloads. + + Continue downloading a document: + + curl -c -o file ftp://ftp.server.com/path/file + + Continue uploading a document(*1): + + curl -c -T file ftp://ftp.server.com/path/file + + Continue downloading a document from a web server(*2): + + curl -c -o file http://www.server.com/ + + (*1) = This requires that the ftp server supports the non-standard command + SIZE. If it doesn't, curl will say so. + + (*2) = This requires that the wb server supports at least HTTP/1.1. If it + doesn't, curl will say so. + +TIME CONDITIONS + + HTTP allows a client to specify a time condition for the document it + requests. It is If-Modified-Since or If-Unmodified-Since. Curl allow you to + specify them with the -z/--time-cond flag. + + For example, you can easily make a download that only gets performed if the + remote file is newer than a local copy. It would be made like: + + curl -z local.html http://remote.server.com/remote.html + + Or you can download a file only if the local file is newer than the remote + one. Do this by prepending the date string with a '-', as in: + + curl -z -local.html http://remote.server.com/remote.html + + You can specify a "free text" date as condition. Tell curl to only download + the file if it was updated since yesterday: + + curl -z yesterday http://remote.server.com/remote.html + + Curl will then accept a wide range of date formats. You always make the date + check the other way around by prepending it with a dash '-'. + +DICT + + For fun try + + curl dict://dict.org/m:curl + curl dict://dict.org/d:heisenbug:jargon + curl dict://dict.org/d:daniel:web1913 + + Aliases for 'm' are 'match' and 'find', and aliases for 'd' are 'define' + and 'lookup'. For example, + + curl dict://dict.org/find:curl + + Commands that break the URL description of the RFC (but not the DICT + protocol) are + + curl dict://dict.org/show:db + curl dict://dict.org/show:strat + + Authentication is still missing (but this is not required by the RFC) + +LDAP + + If you have installed the OpenLDAP library, curl can take advantage of it + and offer ldap:// support. + + LDAP is a complex thing and writing an LDAP query is not an easy task. I do + advice you to dig up the syntax description for that elsewhere, RFC 1959 if + no other place is better. + + To show you an example, this is now I can get all people from my local LDAP + server that has a certain sub-domain in their email address: + + curl -B "ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se" + + If I want the same info in HTML format, I can get it by not using the -B + (enforce ASCII) flag. + +ENVIRONMENT VARIABLES + + Curl reads and understands the following environment variables: + + HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY + + They should be set for protocol-specific proxies. General proxy should be + set with + + ALL_PROXY + + A comma-separated list of host names that shouldn't go through any proxy is + set in (only an asterisk, '*' matches all hosts) + + NO_PROXY + + If a tail substring of the domain-path for a host matches one of these + strings, transactions with that node will not be proxied. + + + The usage of the -x/--proxy flag overrides the environment variables. + +MAILING LIST + + We have an open mailing list to discuss curl, its development and things + relevant to this. + + To subscribe, mail curl-request@contactor.se with "subscribe " in the body. + + To post to the list, mail curl@contactor.se. + + To unsubcribe, mail curl-request@contactor.se with "unsubscribe " in the body. + diff --git a/README.libcurl b/README.libcurl new file mode 100644 index 000000000..ccec76150 --- /dev/null +++ b/README.libcurl @@ -0,0 +1,108 @@ + _ _ _ _ + | (_) |__ ___ _ _ _ __| | + | | | '_ \ / __| | | | '__| | + | | | |_) | (__| |_| | | | | + |_|_|_.__/ \___|\__,_|_| |_| + + + How To Use Libcurl In Your Program: + (by Ralph Beckmann ) + +NOTE: If you plan to use libcurl.a in Threads under Linux, do not use the old +gcc-2.7.x because the function 'gethostbyname' seems not to be thread-safe, +that is to say an unavoidable SEGMENTATION FAULT might occur. + + +1. a) In a C-Program: + #include "curl.h" + + b) In a C++-Program: + extern "C" { + #include "curl.h" + } + +2. char *url="http://www.domain.com"; + curl_urlget (URGTAG_URL, url, + URGTAG_FLAGS, CONF_NOPROGRESS, + URGTAG_ERRORBUFFER, errorBuffer, + URGTAG_WRITEFUNCTION, (size_t (*)(void *, int, int, FILE +*))handle_data, + URGTAG_TIMEOUT, 30, /* or anything You want */ + ... + URGTAG_DONE); + +3. size_t handle_data (const void *ptr, size_t size, size_t nitems, + FILE *stream) + { + (void)stream; /* stop complaining using g++ -Wall */ + if ((int)nitems <= 0) { + return (size_t)0; + } + fprintf(stdout, (char *)ptr); /* or do anything else with it */ + return nitems; + } + +4. Compile Your Program with -I$(CURL_DIR)/include + +5. Link Your Program together with $(CURL_DIR)/lib/libcurl.a + + Small Example of How To Use libcurl + +---------------------------------------------------------------------- +/* Full example that uses libcurl.a to fetch web pages. */ +/* curlthreads.c */ +/* - Test-Program by Ralph Beckmann for using curl in POSIX-Threads */ +/* Change *url1 and *url2 to textual long and slow non-FRAMESET websites! */ +/* + 1. Compile with gcc or g++ as $(CC): + $(CC) -c -Wall -pedantic curlthreads.c -I$(CURL_DIR)/include + + 2. Link with: + - Linux: + $(CC) -o curlthreads curlthreads.o $(CURL_DIR)/lib/libcurl.a -lpthread +-lm + - Solaris: + $(CC) -o curlthreads curlthreads.o $(CURL_DIR)/lib/libcurl.a -lpthread +-lm -lsocket -lnsl +*/ + +#include +#include +#ifdef __cplusplus +extern "C" { +#include "curl.h" +} +#else +#include "curl.h" +#endif + +size_t storedata (const void *ptr, size_t size, size_t nitems, FILE *stream) { + (void)ptr; (void)stream; /* just to stop g++ -Wall complaining */ + fprintf(stdout, "Thread #%i reads %i Bytes.\n", + (int)pthread_self(), (int)(nitems*size)); + return (nitems); +} + +void *urlfetcher(void *url) { + curl_urlget (URGTAG_URL, url, + URGTAG_FLAGS, CONF_NOPROGRESS | CONF_FAILONERROR, + URGTAG_WRITEFUNCTION, (size_t (*)(void *, int, int, FILE +*))storedata, + URGTAG_DONE); + return NULL; +} + +int main(void) { + char *url1="www.sun.com"; + char *url2="www.microsoft.com"; + + pthread_t thread_id1, thread_id2; + pthread_create(&thread_id1, NULL, urlfetcher, (void *)url1); + pthread_create(&thread_id2, NULL, urlfetcher, (void *)url2); + pthread_join(thread_id1, NULL); + pthread_join(thread_id2, NULL); + + fprintf(stdout, "Ready.\n"); + + return 0; +} diff --git a/RESOURCES b/RESOURCES new file mode 100644 index 000000000..92b25ce45 --- /dev/null +++ b/RESOURCES @@ -0,0 +1,62 @@ + _ _ ____ _ + Project ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + + +This document has been introduced in order to let you find documents that +specify standards used by curl, software that extends curl and web pages with +"competing" utilities. + +Standards + + RFC 959 - Defines how FTP works + RFC 1738 - Uniform Resource Locators + RFC 1777 - defines the LDAP protocol + RFC 1808 - Relative Uniform Resource Locators + RFC 1867 - Form-based File Upload in HTML + + RFC 1950 - ZLIB Compressed Data Format Specification + RFC 1951 - DEFLATE Compressed Data Format Specification + RFC 1952 - gzip compression format + + RFC 1959 - LDAP URL syntax + RFC 2045-2049 - Everything you need to know about MIME! (needed for form + based upload) + RFC 2068 - HTTP 1.1 (obsoleted by RFC 2616) + RFC 2109 - HTTP State Management Mechanism (cookie stuff) + - Also, read Netscape's specification at + http://www.netscape.com/newsref/std/cookie_spec.html + RFC 2183 - "The Content-Disposition Header Field" + RFC 2229 - "A Dictionary Server Protocol" + RFC 2231 - "MIME Parameter Value and Encoded Word Extensions: + Character Sets, Languages, and Continuations" + RFC 2388 - "Returning Values from Forms: multipart/form-data" + Use this as an addition to the 1867 + RFC 2396 - "Uniform Resource Identifiers: Generic Syntax and Semantics" + This one obsoletes 1738, but since 1738 is often mentioned I've left it + in this list. + RFC 2428 - "FTP Extensions for IPv6 and NATs" + This should be considered when introducing IPv6 awareness. + RFC 2616 - HTTP 1.1 + RFC 2617 - HTTP Authentication + +Compilers + + MingW32 - http://www.xraylith.wisc.edu/~khan/software/gnu-win32/index.html + +Software + + OpenSSL - http://www.openssl.org + OpenLDAP - http://www.openldap.org + zlib - http://www.cdrom.com/pub/infozip/zlib/ + +Competitors + + wget - ftp://prep.ai.mit.edu/pub/gnu/ + snarf - http://www.xach.com/snarf/ + lynx - http://lynx.browser.org/ (well at least when -dump is used) + swebget - http://www.uni-hildesheim.de/~smol0075/swebget/ + fetch - ? + diff --git a/TODO b/TODO new file mode 100644 index 000000000..6ff69fc3f --- /dev/null +++ b/TODO @@ -0,0 +1,87 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +TODO + + Ok, this is what I wanna do with Curl. Please tell me what you think, and + please don't hesitate to contribute and send me patches that improve this + product! (Yes, you may add things not mentioned here, these are just a + few teasers...) + + * rtsp:// support -- "Real Time Streaming Protocol" + + RFC 2326 + + * "Content-Encoding: compress/gzip/zlib" + + HTTP 1.1 clearly defines how to get and decode compressed documents. There + is the zlib that is pretty good at decompressing stuff. This work was + started in October 1999 but halted again since it proved more work than we + thought. It is still a good idea to implement though. + + * HTTP Pipelining/persistant connections + + - I'm gonna introduce HTTP "pipelining". Curl should be able + to request for several HTTP documents in one connect. It is the beginning + for supporing more advanced functions in the future, like web site + mirroring. This will require that the urlget() function supports several + documents from a single HTTP server, which it doesn't today. + + - When curl supports fetching several documents from the same + server using pipelining, I'd like to offer that function to the command + line. Anyone has a good idea how? The current way of specifying one URL + with the output sent to the stdout or a file gets in the way. Imagine a + syntax that supports "additional documents from the same server" in a way + similar to: + + curl
--more-doc --more-doc + + where --more-doc specifies another document on the same server. Where are + the output files gonna be put and how should they be named? Should each + "--more-doc" parameter require a local file name to store the result in? + Like "--more-file" as in: + + curl --more-doc --more-file + + * RFC2617 compliance, "Digest Access Authentication" + A valid test page seem to exist at: + http://hopf.math.nwu.edu/testpage/digest/ + And some friendly person's server source code is available at + http://hopf.math.nwu.edu/digestauth/index.html + + Then there's the Apache mod_digest source code too of course. + It seems as if Netscape doesn't support this, and not many servers + do. Although this is a lot better authentication method than the more + common "Basic". Basic sends the password in cleartext over the network, + this "Digest" method uses a challange-response protocol which increases + security quite a lot. + + * Different FTP Upload Through Web Proxy + I don't know any web proxies that allow CONNECT through on port 21, but + that would be the best way to do ftp upload. All we would need to do would + be to 'CONNECT : HTTP/1.0\r\n\r\n' and then do business as + usual. I least I think so. It would be fun if someone tried this... + + * Multiple Proxies? + Is there anyone that actually uses serial-proxies? I mean, send CONNECT to + the first proxy to connect to the second proxy to which you send CONNECT to + connect to the remote host (or even more iterations). Is there anyone + wanting curl to support it? (Not that it would be hard, just confusing...) + + * Other proxies + Ftp-kind proxy, Socks5, whatever kind of proxies are there? + + * IPv6 Awareness + Where ever it would fit. I am not that into v6 yet to fully grasp what we + would need to do, but letting the autoconf search for v6-versions of a few + functions and then use them instead is of course the first thing to do... + RFC 2428 "FTP Extensions for IPv6 and NATs" will be interesting. PORT + should be replaced with EPRT for IPv6, and EPSV instead of PASV. + + * An automatic RPM package maker + Please, write me a script that makes it. It'd make my day. + + * SSL for more protocols, like SSL-FTP... diff --git a/acconfig.h b/acconfig.h new file mode 100644 index 000000000..616cc069a --- /dev/null +++ b/acconfig.h @@ -0,0 +1,12 @@ +/* Name of this package! */ +#undef PACKAGE + +/* Version number of this archive. */ +#undef VERSION + +/* Define if you have the getpass function. */ +#undef HAVE_GETPASS + +/* Define cpu-machine-OS */ +#undef OS + diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 000000000..bd4779c71 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,127 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +# Like AC_CONFIG_HEADER, but automatically create stamp file. + +AC_DEFUN(AM_CONFIG_HEADER, +[AC_PREREQ([2.12]) +AC_CONFIG_HEADER([$1]) +dnl When config.status generates a header, we must update the stamp-h file. +dnl This file resides in the same directory as the config header +dnl that is generated. We must strip everything past the first ":", +dnl and everything past the last "/". +AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl +ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, +<>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, +<>; do + case " <<$>>CONFIG_HEADERS " in + *" <<$>>am_file "*<<)>> + echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx + ;; + esac + am_indx=`expr "<<$>>am_indx" + 1` +done<<>>dnl>>) +changequote([,]))]) + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN(AM_INIT_AUTOMAKE, +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN(AM_MISSING_PROG, +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + diff --git a/config-win32.h b/config-win32.h new file mode 100644 index 000000000..8fe85e8aa --- /dev/null +++ b/config-win32.h @@ -0,0 +1,168 @@ +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* Define if you don't have vprintf but do have _doprnt. */ +/* #undef HAVE_DOPRNT */ + +/* Define if you have the vprintf function. */ +#define HAVE_VPRINTF 1 + +/* Define as the return type of signal handlers (int or void). */ +/*#define RETSIGTYPE void */ + +/* Define to `unsigned' if doesn't define. */ +/* #undef size_t */ + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if you can safely include both and . */ +/* #define TIME_WITH_SYS_TIME 1 */ + +/* Define cpu-machine-OS */ +#define OS "win32" + +/* The number of bytes in a long double. */ +#define SIZEOF_LONG_DOUBLE 16 + +/* The number of bytes in a long long. */ +#define SIZEOF_LONG_LONG 8 + +/* Define if you have the gethostbyaddr function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define if you have the gethostname function. */ +#define HAVE_GETHOSTNAME 1 + +/* Define if you have the getpass function. */ +/*#define HAVE_GETPASS 1*/ + +/* Define if you have the getservbyname function. */ +#define HAVE_GETSERVBYNAME 1 + +/* Define if you have the gettimeofday function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define if you have the inet_addr function. */ +#define HAVE_INET_ADDR 1 + +/* Define if you have the inet_ntoa function. */ +#define HAVE_INET_NTOA 1 + +/* Define if you have the perror function. */ +#define HAVE_PERROR 1 + +/* Define if you have the select function. */ +#define HAVE_SELECT 1 + +/* Define if you have the socket function. */ +#define HAVE_SOCKET 1 + +/* Define if you have the strcasecmp function. */ +/*#define HAVE_STRCASECMP 1*/ + +/* Define if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the strftime function. */ +#define HAVE_STRFTIME 1 + +/* Define if you have the strstr function. */ +#define HAVE_STRSTR 1 + +/* Define if you have the tcgetattr function. */ +/*#define HAVE_TCGETATTR 1*/ + +/* Define if you have the tcsetattr function. */ +/*#define HAVE_TCSETATTR 1*/ + +/* Define if you have the uname function. */ +#define HAVE_UNAME 1 + +/* Define if you have the header file. */ +/*#define HAVE_ALLOCA_H 1*/ + +/* Define if you have the header file. */ +#define HAVE_ARPA_INET_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_CRYPTO_H */ + +/* Define if you have the header file. */ +/*#define HAVE_DLFCN_H 1*/ + +/* Define if you have the header file. */ +/* #undef HAVE_ERR_H */ + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_GETOPT_H */ + +/* Define if you have the header file. */ +#define HAVE_NETDB_H 1 + +/* Define if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define if you have the header file. */ +/*#define HAVE_SGTTY_H 1*/ + +/* Define if you have the header file. */ +/* #undef HAVE_SSL_H */ + +/* Define if you have the header file. */ +/*#define HAVE_SYS_PARAM_H 1*/ + +/* Define if you have the header file. */ +#define HAVE_SYS_SELECT_H 1 + +/* Define if you have the header file. */ +/*#define HAVE_SYS_SOCKET_H 1*/ + +/* Define if you have the header file. */ +#define HAVE_SYS_SOCKIO_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +#define HAVE_TERMIO_H 1 + +/* Define if you have the header file. */ +#define HAVE_TERMIOS_H 1 + +/* Define if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Name of package */ +#define PACKAGE "curl" + +/* Version number of package */ +#define VERSION "6.3.1" + +/* Define if you have the header file. */ +#define HAVE_IO_H 1 + +/* Define if you have the header file. */ +#define HAVE_TIME_H 1 + +/* Define if you have the header file. */ +#define HAVE_WINSOCK_H 1 + +/* Define if you have the closesocket function. */ +#define HAVE_CLOSESOCKET 1 diff --git a/config.cache b/config.cache new file mode 100644 index 000000000..ba8353a0d --- /dev/null +++ b/config.cache @@ -0,0 +1,86 @@ +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +ac_cv_c_const=${ac_cv_c_const='yes'} +ac_cv_func_closesocket=${ac_cv_func_closesocket='no'} +ac_cv_func_connect=${ac_cv_func_connect='no'} +ac_cv_func_dlopen=${ac_cv_func_dlopen='no'} +ac_cv_func_gethostbyaddr=${ac_cv_func_gethostbyaddr='yes'} +ac_cv_func_gethostbyname=${ac_cv_func_gethostbyname='no'} +ac_cv_func_gethostname=${ac_cv_func_gethostname='yes'} +ac_cv_func_getpass=${ac_cv_func_getpass='yes'} +ac_cv_func_getservbyname=${ac_cv_func_getservbyname='yes'} +ac_cv_func_gettimeofday=${ac_cv_func_gettimeofday='yes'} +ac_cv_func_inet_addr=${ac_cv_func_inet_addr='yes'} +ac_cv_func_inet_ntoa=${ac_cv_func_inet_ntoa='yes'} +ac_cv_func_perror=${ac_cv_func_perror='yes'} +ac_cv_func_select=${ac_cv_func_select='yes'} +ac_cv_func_socket=${ac_cv_func_socket='yes'} +ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp='yes'} +ac_cv_func_strdup=${ac_cv_func_strdup='yes'} +ac_cv_func_strftime=${ac_cv_func_strftime='yes'} +ac_cv_func_strstr=${ac_cv_func_strstr='yes'} +ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr='yes'} +ac_cv_func_tcsetattr=${ac_cv_func_tcsetattr='yes'} +ac_cv_func_uname=${ac_cv_func_uname='yes'} +ac_cv_func_vprintf=${ac_cv_func_vprintf='yes'} +ac_cv_header_alloca_h=${ac_cv_header_alloca_h='yes'} +ac_cv_header_arpa_inet_h=${ac_cv_header_arpa_inet_h='yes'} +ac_cv_header_dlfcn_h=${ac_cv_header_dlfcn_h='yes'} +ac_cv_header_fcntl_h=${ac_cv_header_fcntl_h='yes'} +ac_cv_header_getopt_h=${ac_cv_header_getopt_h='no'} +ac_cv_header_io_h=${ac_cv_header_io_h='no'} +ac_cv_header_net_if_h=${ac_cv_header_net_if_h='yes'} +ac_cv_header_netdb_h=${ac_cv_header_netdb_h='yes'} +ac_cv_header_netinet_in_h=${ac_cv_header_netinet_in_h='yes'} +ac_cv_header_openssl_crypto_h=${ac_cv_header_openssl_crypto_h='yes'} +ac_cv_header_openssl_err_h=${ac_cv_header_openssl_err_h='yes'} +ac_cv_header_openssl_pem_h=${ac_cv_header_openssl_pem_h='yes'} +ac_cv_header_openssl_rsa_h=${ac_cv_header_openssl_rsa_h='yes'} +ac_cv_header_openssl_ssl_h=${ac_cv_header_openssl_ssl_h='yes'} +ac_cv_header_openssl_x509_h=${ac_cv_header_openssl_x509_h='yes'} +ac_cv_header_sgtty_h=${ac_cv_header_sgtty_h='yes'} +ac_cv_header_stdc=${ac_cv_header_stdc='yes'} +ac_cv_header_sys_param_h=${ac_cv_header_sys_param_h='yes'} +ac_cv_header_sys_select_h=${ac_cv_header_sys_select_h='yes'} +ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h='yes'} +ac_cv_header_sys_sockio_h=${ac_cv_header_sys_sockio_h='yes'} +ac_cv_header_sys_stat_h=${ac_cv_header_sys_stat_h='yes'} +ac_cv_header_sys_types_h=${ac_cv_header_sys_types_h='yes'} +ac_cv_header_termio_h=${ac_cv_header_termio_h='yes'} +ac_cv_header_termios_h=${ac_cv_header_termios_h='yes'} +ac_cv_header_time=${ac_cv_header_time='yes'} +ac_cv_header_time_h=${ac_cv_header_time_h='yes'} +ac_cv_header_unistd_h=${ac_cv_header_unistd_h='yes'} +ac_cv_header_winsock_h=${ac_cv_header_winsock_h='no'} +ac_cv_lib_crypto_CRYPTO_lock=${ac_cv_lib_crypto_CRYPTO_lock='yes'} +ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen='yes'} +ac_cv_lib_nsl_gethostbyname=${ac_cv_lib_nsl_gethostbyname='yes'} +ac_cv_lib_socket_connect=${ac_cv_lib_socket_connect='yes'} +ac_cv_lib_ssl_SSL_connect=${ac_cv_lib_ssl_SSL_connect='yes'} +ac_cv_path_NROFF=${ac_cv_path_NROFF='/bin/nroff'} +ac_cv_path_PERL=${ac_cv_path_PERL='/usr/local/bin/perl'} +ac_cv_prog_CC=${ac_cv_prog_CC='gcc'} +ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'} +ac_cv_prog_RANLIB=${ac_cv_prog_RANLIB='ranlib'} +ac_cv_prog_YACC=${ac_cv_prog_YACC='bison -y'} +ac_cv_prog_cc_cross=${ac_cv_prog_cc_cross='no'} +ac_cv_prog_cc_g=${ac_cv_prog_cc_g='yes'} +ac_cv_prog_cc_works=${ac_cv_prog_cc_works='yes'} +ac_cv_prog_gcc=${ac_cv_prog_gcc='yes'} +ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set='yes'} +ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double='16'} +ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long='8'} +ac_cv_type_signal=${ac_cv_type_signal='void'} +ac_cv_type_size_t=${ac_cv_type_size_t='yes'} diff --git a/config.guess b/config.guess new file mode 100755 index 000000000..1d27287d5 --- /dev/null +++ b/config.guess @@ -0,0 +1,997 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# Please send patches to the Autoconf mailing list . +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <$dummy.s + .globl main + .ent main +main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + ${CC-cc} $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + arc64:OpenBSD:*:*) + echo mips64el-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hkmips:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + arm32:NetBSD:*:*) + echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + macppc:NetBSD:*:*) + echo powerpc-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + ${CC-cc} $dummy.c -o $dummy \ + && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` + if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/6?? | 9000/7?? | 9000/80[024] | 9000/8?[136790] | 9000/892 ) + sed 's/^ //' << EOF >$dummy.c + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (${CC-cc} $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + rm -f $dummy.c $dummy + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE*:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + *9??*:MPE*:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*T3E:*:*:*) + echo t3e-cray-unicosmk${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | i?86:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + if test -x /usr/bin/objformat; then + if test "elf" = "`/usr/bin/objformat`"; then + echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` + exit 0 + fi + fi + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) +# # uname on the ARM produces all sorts of strangeness, and we need to +# # filter it out. +# case "$UNAME_MACHINE" in +# armv*) UNAME_MACHINE=$UNAME_MACHINE ;; +# arm* | sa110*) UNAME_MACHINE="arm" ;; +# esac + + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + ld_supported_emulations=`echo $ld_help_string \ + | sed -ne '/supported emulations:/!d + s/[ ][ ]*/ /g + s/.*supported emulations: *// + s/ .*// + p'` + case "$ld_supported_emulations" in + i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; + i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; + sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + elf32arm) echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 ;; + elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; + esac + + if test "${UNAME_MACHINE}" = "alpha" ; then + sed 's/^ //' <$dummy.s + .globl main + .ent main + main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + LIBC="" + ${CC-cc} $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + + objdump --private-headers $dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 + elif test "${UNAME_MACHINE}" = "mips" ; then + cat >$dummy.c </dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + else + # Either a pre-BFD a.out linker (linux-gnuoldld) + # or one that does not give us useful --help. + # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. + # If ld does not provide *any* "supported emulations:" + # that means it is gnuoldld. + echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" + test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + + case "${UNAME_MACHINE}" in + i?86) + VENDOR=pc; + ;; + *) + VENDOR=unknown; + ;; + esac + # Determine whether the default compiler is a.out or elf + cat >$dummy.c < +#ifdef __cplusplus + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif +#ifdef __ELF__ +# ifdef __GLIBC__ +# if __GLIBC__ >= 2 + printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +#else + printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + ${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i?86:UnixWare:*:*) + if /bin/uname -X 2>/dev/null >/dev/null ; then + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + fi + echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION} + exit 0 ;; + pc:*:*:*) + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:*:6*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/config.guess-991124 b/config.guess-991124 new file mode 100755 index 000000000..58670decb --- /dev/null +++ b/config.guess-991124 @@ -0,0 +1,900 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <dummy.s + .globl main + .ent main +main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + ${CC-cc} dummy.s -o dummy 2>/dev/null + if test "$?" = 0 ; then + ./dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + fi + rm -f dummy.s dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc64:OpenBSD:*:*) + echo mips64el-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hkmips:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + arm32:NetBSD:*:*) + echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >dummy.c + int main (argc, argv) int argc; char **argv; { + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + ${CC-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[3478]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; + 9000/8?? ) HP_ARCH=hppa1.0 ;; + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin32 + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin32 + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + # uname on the ARM produces all sorts of strangeness, and we need to + # filter it out. + case "$UNAME_MACHINE" in + arm* | sa110*) UNAME_MACHINE="arm" ;; + esac + + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + ld_supported_emulations=`echo $ld_help_string \ + | sed -ne '/supported emulations:/!d + s/[ ][ ]*/ /g + s/.*supported emulations: *// + s/ .*// + p'` + case "$ld_supported_emulations" in + i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; + i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; + sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; + esac + + if test "${UNAME_MACHINE}" = "alpha" ; then + sed 's/^ //' <dummy.s + .globl main + .ent main + main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + LIBC="" + ${CC-cc} dummy.s -o dummy 2>/dev/null + if test "$?" = 0 ; then + ./dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + + objdump --private-headers dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f dummy.s dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 + elif test "${UNAME_MACHINE}" = "mips" ; then + cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + else + # Either a pre-BFD a.out linker (linux-gnuoldld) + # or one that does not give us useful --help. + # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. + # If ld does not provide *any* "supported emulations:" + # that means it is gnuoldld. + echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" + test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + + case "${UNAME_MACHINE}" in + i?86) + VENDOR=pc; + ;; + *) + VENDOR=unknown; + ;; + esac + # Determine whether the default compiler is a.out or elf + cat >dummy.c < +main(argc, argv) + int argc; + char *argv[]; +{ +#ifdef __ELF__ +# ifdef __GLIBC__ +# if __GLIBC__ >= 2 + printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +#else + printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:*:6*) + echo mips-sony-newsos6 + exit 0 ;; + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined(__APPLE__) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*Kernel Release \([0-9]*\).*/\1/p') 2>/dev/null`; + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/config.h b/config.h new file mode 100644 index 000000000..195afa8ba --- /dev/null +++ b/config.h @@ -0,0 +1,220 @@ +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* Define if you don't have vprintf but do have _doprnt. */ +/* #undef HAVE_DOPRNT */ + +/* Define if you have the vprintf function. */ +#define HAVE_VPRINTF 1 + +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE void + +/* Define to `unsigned' if doesn't define. */ +/* #undef size_t */ + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define cpu-machine-OS */ +#define OS "sparc-sun-solaris2.6" + +/* The number of bytes in a long double. */ +#define SIZEOF_LONG_DOUBLE 16 + +/* The number of bytes in a long long. */ +#define SIZEOF_LONG_LONG 8 + +/* Define if you have the closesocket function. */ +/* #undef HAVE_CLOSESOCKET */ + +/* Define if you have the gethostbyaddr function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define if you have the gethostname function. */ +#define HAVE_GETHOSTNAME 1 + +/* Define if you have the getpass function. */ +#define HAVE_GETPASS 1 + +/* Define if you have the getservbyname function. */ +#define HAVE_GETSERVBYNAME 1 + +/* Define if you have the gettimeofday function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define if you have the inet_addr function. */ +#define HAVE_INET_ADDR 1 + +/* Define if you have the inet_ntoa function. */ +#define HAVE_INET_NTOA 1 + +/* Define if you have the perror function. */ +#define HAVE_PERROR 1 + +/* Define if you have the select function. */ +#define HAVE_SELECT 1 + +/* Define if you have the socket function. */ +#define HAVE_SOCKET 1 + +/* Define if you have the strcasecmp function. */ +#define HAVE_STRCASECMP 1 + +/* Define if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the strftime function. */ +#define HAVE_STRFTIME 1 + +/* Define if you have the strstr function. */ +#define HAVE_STRSTR 1 + +/* Define if you have the tcgetattr function. */ +#define HAVE_TCGETATTR 1 + +/* Define if you have the tcsetattr function. */ +#define HAVE_TCSETATTR 1 + +/* Define if you have the uname function. */ +#define HAVE_UNAME 1 + +/* Define if you have the header file. */ +#define HAVE_ALLOCA_H 1 + +/* Define if you have the header file. */ +#define HAVE_ARPA_INET_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_CRYPTO_H */ + +/* Define if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_ERR_H */ + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_GETOPT_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_IO_H */ + +/* Define if you have the header file. */ +#define HAVE_NET_IF_H 1 + +/* Define if you have the header file. */ +#define HAVE_NETDB_H 1 + +/* Define if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_CRYPTO_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_ERR_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_PEM_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_RSA_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_SSL_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_X509_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_PEM_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_RSA_H */ + +/* Define if you have the header file. */ +#define HAVE_SGTTY_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SSL_H */ + +/* Define if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_SELECT_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_SOCKIO_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +#define HAVE_TERMIO_H 1 + +/* Define if you have the header file. */ +#define HAVE_TERMIOS_H 1 + +/* Define if you have the header file. */ +#define HAVE_TIME_H 1 + +/* Define if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_WINSOCK_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_X509_H */ + +/* Define if you have the crypto library (-lcrypto). */ +#define HAVE_LIBCRYPTO 1 + +/* Define if you have the dl library (-ldl). */ +#define HAVE_LIBDL 1 + +/* Define if you have the nsl library (-lnsl). */ +#define HAVE_LIBNSL 1 + +/* Define if you have the resolve library (-lresolve). */ +/* #undef HAVE_LIBRESOLVE */ + +/* Define if you have the socket library (-lsocket). */ +#define HAVE_LIBSOCKET 1 + +/* Define if you have the ssl library (-lssl). */ +#define HAVE_LIBSSL 1 + +/* Define if you have the ucb library (-lucb). */ +/* #undef HAVE_LIBUCB */ + +/* Name of package */ +#define PACKAGE "curl" + +/* Version number of package */ +#define VERSION "6.3.1" + diff --git a/config.h.in b/config.h.in new file mode 100644 index 000000000..9c5e11013 --- /dev/null +++ b/config.h.in @@ -0,0 +1,219 @@ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +#undef _ALL_SOURCE +#endif + +/* Define to empty if the keyword does not work. */ +#undef const + +/* Define if you don't have vprintf but do have _doprnt. */ +#undef HAVE_DOPRNT + +/* Define if you have the vprintf function. */ +#undef HAVE_VPRINTF + +/* Define as the return type of signal handlers (int or void). */ +#undef RETSIGTYPE + +/* Define to `unsigned' if doesn't define. */ +#undef size_t + +/* Define if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define cpu-machine-OS */ +#undef OS + +/* The number of bytes in a long double. */ +#undef SIZEOF_LONG_DOUBLE + +/* The number of bytes in a long long. */ +#undef SIZEOF_LONG_LONG + +/* Define if you have the closesocket function. */ +#undef HAVE_CLOSESOCKET + +/* Define if you have the gethostbyaddr function. */ +#undef HAVE_GETHOSTBYADDR + +/* Define if you have the gethostname function. */ +#undef HAVE_GETHOSTNAME + +/* Define if you have the getpass function. */ +#undef HAVE_GETPASS + +/* Define if you have the getservbyname function. */ +#undef HAVE_GETSERVBYNAME + +/* Define if you have the gettimeofday function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define if you have the inet_addr function. */ +#undef HAVE_INET_ADDR + +/* Define if you have the inet_ntoa function. */ +#undef HAVE_INET_NTOA + +/* Define if you have the perror function. */ +#undef HAVE_PERROR + +/* Define if you have the select function. */ +#undef HAVE_SELECT + +/* Define if you have the socket function. */ +#undef HAVE_SOCKET + +/* Define if you have the strcasecmp function. */ +#undef HAVE_STRCASECMP + +/* Define if you have the strdup function. */ +#undef HAVE_STRDUP + +/* Define if you have the strftime function. */ +#undef HAVE_STRFTIME + +/* Define if you have the strstr function. */ +#undef HAVE_STRSTR + +/* Define if you have the tcgetattr function. */ +#undef HAVE_TCGETATTR + +/* Define if you have the tcsetattr function. */ +#undef HAVE_TCSETATTR + +/* Define if you have the uname function. */ +#undef HAVE_UNAME + +/* Define if you have the header file. */ +#undef HAVE_ALLOCA_H + +/* Define if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Define if you have the header file. */ +#undef HAVE_CRYPTO_H + +/* Define if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if you have the header file. */ +#undef HAVE_ERR_H + +/* Define if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define if you have the header file. */ +#undef HAVE_GETOPT_H + +/* Define if you have the header file. */ +#undef HAVE_IO_H + +/* Define if you have the header file. */ +#undef HAVE_NET_IF_H + +/* Define if you have the header file. */ +#undef HAVE_NETDB_H + +/* Define if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define if you have the header file. */ +#undef HAVE_OPENSSL_CRYPTO_H + +/* Define if you have the header file. */ +#undef HAVE_OPENSSL_ERR_H + +/* Define if you have the header file. */ +#undef HAVE_OPENSSL_PEM_H + +/* Define if you have the header file. */ +#undef HAVE_OPENSSL_RSA_H + +/* Define if you have the header file. */ +#undef HAVE_OPENSSL_SSL_H + +/* Define if you have the header file. */ +#undef HAVE_OPENSSL_X509_H + +/* Define if you have the header file. */ +#undef HAVE_PEM_H + +/* Define if you have the header file. */ +#undef HAVE_RSA_H + +/* Define if you have the header file. */ +#undef HAVE_SGTTY_H + +/* Define if you have the header file. */ +#undef HAVE_SSL_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SOCKIO_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define if you have the header file. */ +#undef HAVE_TERMIO_H + +/* Define if you have the header file. */ +#undef HAVE_TERMIOS_H + +/* Define if you have the header file. */ +#undef HAVE_TIME_H + +/* Define if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the header file. */ +#undef HAVE_WINSOCK_H + +/* Define if you have the header file. */ +#undef HAVE_X509_H + +/* Define if you have the crypto library (-lcrypto). */ +#undef HAVE_LIBCRYPTO + +/* Define if you have the dl library (-ldl). */ +#undef HAVE_LIBDL + +/* Define if you have the nsl library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define if you have the resolve library (-lresolve). */ +#undef HAVE_LIBRESOLVE + +/* Define if you have the socket library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define if you have the ssl library (-lssl). */ +#undef HAVE_LIBSSL + +/* Define if you have the ucb library (-lucb). */ +#undef HAVE_LIBUCB + +/* Name of package */ +#undef PACKAGE + +/* Version number of package */ +#undef VERSION + diff --git a/config.log b/config.log new file mode 100644 index 000000000..ac13614e4 --- /dev/null +++ b/config.log @@ -0,0 +1,90 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +configure:562: checking for a BSD compatible install +configure:615: checking whether build environment is sane +configure:672: checking whether make sets ${MAKE} +configure:718: checking for working aclocal +configure:731: checking for working autoconf +configure:744: checking for working automake +configure:757: checking for working autoheader +configure:770: checking for working makeinfo +configure:787: checking for gcc +configure:900: checking whether the C compiler (gcc ) works +configure:916: gcc -o conftest conftest.c 1>&5 +configure:942: checking whether the C compiler (gcc ) is a cross-compiler +configure:947: checking whether we are using GNU C +configure:975: checking whether gcc accepts -g +configure:1018: checking for a BSD compatible install +configure:1071: checking whether make sets ${MAKE} +configure:1099: checking how to run the C preprocessor +configure:1179: checking for AIX +configure:1205: checking for gethostbyname +configure:1251: checking for gethostbyname in -lnsl +configure:1301: checking for strcasecmp +configure:1397: checking for connect +configure:1443: checking for connect in -lsocket +configure:1493: checking for gethostname +configure:1589: checking for dlopen +configure:1635: checking for dlopen in -ldl +configure:1701: checking where to look for SSL +configure:1713: checking for CRYPTO_lock in -lcrypto +configure:1762: checking for SSL_connect in -lssl +configure:1813: checking for openssl/x509.h +configure:1813: checking for openssl/rsa.h +configure:1813: checking for openssl/crypto.h +configure:1813: checking for openssl/pem.h +configure:1813: checking for openssl/ssl.h +configure:1813: checking for openssl/err.h +configure:1903: checking for ANSI C header files +configure:2032: checking for unistd.h +configure:2032: checking for arpa/inet.h +configure:2032: checking for net/if.h +configure:2032: checking for netinet/in.h +configure:2032: checking for netdb.h +configure:2032: checking for sys/select.h +configure:2032: checking for sys/socket.h +configure:2032: checking for sys/sockio.h +configure:2032: checking for sys/stat.h +configure:2032: checking for sys/types.h +configure:2032: checking for getopt.h +configure:2032: checking for sys/param.h +configure:2032: checking for termios.h +configure:2032: checking for termio.h +configure:2032: checking for sgtty.h +configure:2032: checking for fcntl.h +configure:2032: checking for dlfcn.h +configure:2032: checking for alloca.h +configure:2032: checking for winsock.h +configure:2032: checking for time.h +configure:2032: checking for io.h +configure:2071: checking for working const +configure:2146: checking for size_t +configure:2179: checking whether time.h and sys/time.h may both be included +configure:2218: checking size of long double +configure:2258: checking size of long long +configure:2304: checking host system type +configure:2330: checking return type of signal handlers +configure:2371: checking for vprintf +configure:2496: checking for socket +configure:2496: checking for select +configure:2496: checking for strdup +configure:2496: checking for strstr +configure:2496: checking for strftime +configure:2496: checking for uname +configure:2496: checking for strcasecmp +configure:2496: checking for gethostname +configure:2496: checking for gethostbyaddr +configure:2496: checking for getservbyname +configure:2496: checking for gettimeofday +configure:2496: checking for inet_addr +configure:2496: checking for inet_ntoa +configure:2496: checking for tcsetattr +configure:2496: checking for tcgetattr +configure:2496: checking for perror +configure:2496: checking for getpass +configure:2496: checking for closesocket +configure:2554: checking for perl +configure:2593: checking for nroff +configure:2633: checking for ranlib +configure:2665: checking for bison diff --git a/config.status b/config.status new file mode 100755 index 000000000..8c3de4b68 --- /dev/null +++ b/config.status @@ -0,0 +1,492 @@ +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host pm1: +# +# ./configure --with-ssl=/home/dast +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" +for ac_option +do + case "$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running ${CONFIG_SHELL-/bin/sh} ./configure --with-ssl=/home/dast --no-create --no-recursion" + exec ${CONFIG_SHELL-/bin/sh} ./configure --with-ssl=/home/dast --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "./config.status generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "$ac_cs_usage"; exit 0 ;; + *) echo "$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=. +ac_given_INSTALL="./install-sh -c" + +trap 'rm -fr Makefile src/Makefile lib/Makefile perl/checklinks.pl perl/getlinks.pl perl/formfind.pl perl/recursiveftpget.pl config.h src/config.h conftest*; exit 1' 1 2 15 + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; + s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF +/^[ ]*VPATH[ ]*=[^:]*$/d + +s%@SHELL@%/bin/sh%g +s%@CFLAGS@%-g -O2%g +s%@CPPFLAGS@% -I/home/dast/include/openssl -I/home/dast/include%g +s%@CXXFLAGS@%%g +s%@FFLAGS@%%g +s%@DEFS@%-DHAVE_CONFIG_H%g +s%@LDFLAGS@%%g +s%@LIBS@%-lssl -lcrypto -ldl -lsocket -lnsl -L/home/dast/lib%g +s%@exec_prefix@%${prefix}%g +s%@prefix@%/usr/local%g +s%@program_transform_name@%s,x,x,%g +s%@bindir@%${exec_prefix}/bin%g +s%@sbindir@%${exec_prefix}/sbin%g +s%@libexecdir@%${exec_prefix}/libexec%g +s%@datadir@%${prefix}/share%g +s%@sysconfdir@%${prefix}/etc%g +s%@sharedstatedir@%${prefix}/com%g +s%@localstatedir@%${prefix}/var%g +s%@libdir@%${exec_prefix}/lib%g +s%@includedir@%${prefix}/include%g +s%@oldincludedir@%/usr/include%g +s%@infodir@%${prefix}/info%g +s%@mandir@%${prefix}/man%g +s%@INSTALL_PROGRAM@%${INSTALL}%g +s%@INSTALL_SCRIPT@%${INSTALL_PROGRAM}%g +s%@INSTALL_DATA@%${INSTALL} -m 644%g +s%@PACKAGE@%curl%g +s%@VERSION@%6.3.1%g +s%@ACLOCAL@%aclocal%g +s%@AUTOCONF@%autoconf%g +s%@AUTOMAKE@%automake%g +s%@AUTOHEADER@%autoheader%g +s%@MAKEINFO@%makeinfo%g +s%@SET_MAKE@%%g +s%@CC@%gcc%g +s%@CPP@%gcc -E%g +s%@host@%sparc-sun-solaris2.6%g +s%@host_alias@%sparc-sun-solaris2.6%g +s%@host_cpu@%sparc%g +s%@host_vendor@%sun%g +s%@host_os@%solaris2.6%g +s%@PERL@%/usr/local/bin/perl%g +s%@NROFF@%/bin/nroff%g +s%@RANLIB@%ranlib%g +s%@YACC@%bison -y%g + +CEOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi + +CONFIG_FILES=${CONFIG_FILES-"Makefile src/Makefile lib/Makefile perl/checklinks.pl perl/getlinks.pl perl/formfind.pl perl/recursiveftpget.pl "} +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then + CONFIG_HEADERS="config.h src/config.h" +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + + + +am_indx=1 +for am_file in config.h src/config.h; do + case " $CONFIG_HEADERS " in + *" $am_file "*) + echo timestamp > `echo $am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx + ;; + esac + am_indx=`expr "$am_indx" + 1` +done + +exit 0 diff --git a/config.sub b/config.sub new file mode 100755 index 000000000..ecf770cea --- /dev/null +++ b/config.sub @@ -0,0 +1,979 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ + | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ + | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \ + | hppa2.0w \ + | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \ + | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \ + | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ + | mipstx39 | mipstx39el | armv[34][lb] \ + | sparc | sparclet | sparclite | sparc64 | v850) + basic_machine=$basic_machine-unknown + ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[34567]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \ + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ + | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \ + | hppa2.0w-* \ + | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \ + | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \ + | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ + | sparc64-* | mips64-* | mipsel-* | armv[34][lb]-*\ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mipstx39-* | mipstx39el-* \ + | f301-* | armv*-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigaos | amigados) + basic_machine=m68k-cbm + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + os=-mpeix + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + os=-mpeix + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[34567]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[34567]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[34567]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[34567]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netwinder) + basic_machine=armv4l-corel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | nexen) + basic_machine=i586-pc + ;; + pentiumpro | p6 | k6 | 6x86) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | nexen-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | k6-* | 6x86-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -rhapsody* \ + | -openstep* | -mpeix* | -oskit*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-corel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/config.sub-991124 b/config.sub-991124 new file mode 100755 index 000000000..e24b85041 --- /dev/null +++ b/config.sub-991124 @@ -0,0 +1,952 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ + | arme[lb] | pyramid | mn10200 | mn10300 \ + | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ + | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \ + | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \ + | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ + | mipstx39 | mipstx39el \ + | sparc | sparclet | sparclite | sparc64 | v850) + basic_machine=$basic_machine-unknown + ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[34567]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \ + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ + | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \ + | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \ + | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \ + | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ + | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mipstx39-* | mipstx39el-* \ + | f301-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigaos | amigados) + basic_machine=m68k-cbm + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[34567]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[34567]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[34567]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[34567]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | nexen) + basic_machine=i586-pc + ;; + pentiumpro | p6 | k6 | 6x86) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | nexen-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | k6-* | 6x86-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/configure b/configure new file mode 100755 index 000000000..51b1b3dad --- /dev/null +++ b/configure @@ -0,0 +1,3091 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-ssl[=DIR] where to look for SSL [compiler/linker default paths] + DIR points to the SSL installation [/usr/local/ssl]" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=lib/urldata.h + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:562: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +echo "configure:615: checking whether build environment is sane" >&5 +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + + test "$2" = conftestfile + ) +then + # Ok. + : +else + { echo "configure: error: newly created file is older than distributed files! +Check your system clock" 1>&2; exit 1; } +fi +rm -f conftest* +echo "$ac_t""yes" 1>&6 +if test "$program_transform_name" = s,x,x,; then + program_transform_name= +else + # Double any \ or $. echo might interpret backslashes. + cat <<\EOF_SED > conftestsed +s,\\,\\\\,g; s,\$,$$,g +EOF_SED + program_transform_name="`echo $program_transform_name|sed -f conftestsed`" + rm -f conftestsed +fi +test "$program_prefix" != NONE && + program_transform_name="s,^,${program_prefix},; $program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" + +# sed with no file args requires a program. +test "$program_transform_name" = "" && program_transform_name="s,x,x," + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:672: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=curl + +VERSION="6.3.1" + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi +cat >> confdefs.h <> confdefs.h <&6 +echo "configure:718: checking for working aclocal" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (aclocal --version) < /dev/null > /dev/null 2>&1; then + ACLOCAL=aclocal + echo "$ac_t""found" 1>&6 +else + ACLOCAL="$missing_dir/missing aclocal" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +echo "configure:731: checking for working autoconf" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoconf --version) < /dev/null > /dev/null 2>&1; then + AUTOCONF=autoconf + echo "$ac_t""found" 1>&6 +else + AUTOCONF="$missing_dir/missing autoconf" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working automake""... $ac_c" 1>&6 +echo "configure:744: checking for working automake" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + echo "$ac_t""found" 1>&6 +else + AUTOMAKE="$missing_dir/missing automake" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +echo "configure:757: checking for working autoheader" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoheader --version) < /dev/null > /dev/null 2>&1; then + AUTOHEADER=autoheader + echo "$ac_t""found" 1>&6 +else + AUTOHEADER="$missing_dir/missing autoheader" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:770: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:787: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:817: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:868: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 911 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:947: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:975: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:1018: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:1071: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1099: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +echo $ac_n "checking for AIX""... $ac_c" 1>&6 +echo "configure:1179: checking for AIX" >&5 +cat > conftest.$ac_ext <&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF +#define _ALL_SOURCE 1 +EOF + +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + + + + +echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 +echo "configure:1205: checking for gethostbyname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +choke me +#else +gethostbyname(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gethostbyname=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_gethostbyname=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 +echo "configure:1251: checking for gethostbyname in -lnsl" >&5 +ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lnsl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi + + +echo $ac_n "checking for strcasecmp""... $ac_c" 1>&6 +echo "configure:1301: checking for strcasecmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strcasecmp'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strcasecmp(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strcasecmp) || defined (__stub___strcasecmp) +choke me +#else +strcasecmp(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strcasecmp=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strcasecmp=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'strcasecmp`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for strcasecmp in -lresolve""... $ac_c" 1>&6 +echo "configure:1347: checking for strcasecmp in -lresolve" >&5 +ac_lib_var=`echo resolve'_'strcasecmp | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lresolve $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo resolve | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi + + +echo $ac_n "checking for connect""... $ac_c" 1>&6 +echo "configure:1397: checking for connect" >&5 +if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_connect) || defined (__stub___connect) +choke me +#else +connect(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_connect=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_connect=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 +echo "configure:1443: checking for connect in -lsocket" >&5 +ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi + + +echo $ac_n "checking for gethostname""... $ac_c" 1>&6 +echo "configure:1493: checking for gethostname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostname(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostname) || defined (__stub___gethostname) +choke me +#else +gethostname(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gethostname=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_gethostname=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'gethostname`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for gethostname in -lucb""... $ac_c" 1>&6 +echo "configure:1539: checking for gethostname in -lucb" >&5 +ac_lib_var=`echo ucb'_'gethostname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lucb $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo ucb | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi + + +echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +echo "configure:1589: checking for dlopen" >&5 +if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +dlopen(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_dlopen=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "configure:1635: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo dl | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi + + + +OPT_SSL=off +# Check whether --with-ssl or --without-ssl was given. +if test "${with_ssl+set}" = set; then + withval="$with_ssl" + OPT_SSL=$withval + +fi + + +if test X"$OPT_SSL" = Xno +then + echo "configure: warning: SSL/https support disabled" 1>&2 +else + + + echo $ac_n "checking where to look for SSL""... $ac_c" 1>&6 +echo "configure:1701: checking where to look for SSL" >&5 + if test X"$OPT_SSL" = Xoff + then + echo "$ac_t""defaults (or given in environment)" 1>&6 + else + test X"$OPT_SSL" = Xyes && OPT_SSL=/usr/local/ssl + LIBS="$LIBS -L$OPT_SSL/lib" + CPPFLAGS="$CPPFLAGS -I$OPT_SSL/include/openssl -I$OPT_SSL/include" + echo "$ac_t""$OPT_SSL" 1>&6 + fi + + echo $ac_n "checking for CRYPTO_lock in -lcrypto""... $ac_c" 1>&6 +echo "configure:1713: checking for CRYPTO_lock in -lcrypto" >&5 +ac_lib_var=`echo crypto'_'CRYPTO_lock | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lcrypto $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo crypto | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + + + if test $ac_cv_lib_crypto_CRYPTO_lock = yes; then + echo $ac_n "checking for SSL_connect in -lssl""... $ac_c" 1>&6 +echo "configure:1762: checking for SSL_connect in -lssl" >&5 +ac_lib_var=`echo ssl'_'SSL_connect | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lssl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo ssl | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + + + for ac_hdr in openssl/x509.h openssl/rsa.h openssl/crypto.h openssl/pem.h openssl/ssl.h openssl/err.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1813: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + + if test $ac_cv_header_openssl_x509_h = no; then + for ac_hdr in x509.h rsa.h crypto.h pem.h ssl.h err.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1855: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1865: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + fi + + fi +fi + + + + + + + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:1903: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:1983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +for ac_hdr in \ + unistd.h \ + arpa/inet.h \ + net/if.h \ + netinet/in.h \ + netdb.h \ + sys/select.h \ + sys/socket.h \ + sys/sockio.h \ + sys/stat.h \ + sys/types.h \ + getopt.h \ + sys/param.h \ + termios.h \ + termio.h \ + sgtty.h \ + fcntl.h \ + dlfcn.h \ + alloca.h \ + winsock.h \ + time.h \ + io.h \ + +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:2032: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2042: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + + +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:2071: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } +EOF +if { (eval echo configure:2125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_const=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then + cat >> confdefs.h <<\EOF +#define const +EOF + +fi + +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:2146: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes +else + rm -rf conftest* + ac_cv_type_size_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF + +fi + +echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +echo "configure:2179: checking whether time.h and sys/time.h may both be included" >&5 +if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +int main() { +struct tm *tp; +; return 0; } +EOF +if { (eval echo configure:2193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_time=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_header_time" 1>&6 +if test $ac_cv_header_time = yes; then + cat >> confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + + +# mprintf() checks: + +# check for 'long double' +echo $ac_n "checking size of long double""... $ac_c" 1>&6 +echo "configure:2218: checking size of long double" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_sizeof_long_double=8 +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(long double)); + exit(0); +} +EOF +if { (eval echo configure:2237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_long_double=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_long_double=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_long_double" 1>&6 +cat >> confdefs.h <&6 +echo "configure:2258: checking size of long long" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_sizeof_long_long=4 +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(long long)); + exit(0); +} +EOF +if { (eval echo configure:2277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_long_long=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_long_long=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_long_long" 1>&6 +cat >> confdefs.h </dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:2304: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + +cat >> confdefs.h <&6 +echo "configure:2330: checking return type of signal handlers" >&5 +if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int main() { +int i; +; return 0; } +EOF +if { (eval echo configure:2352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_type_signal=void +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_type_signal=int +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_type_signal" 1>&6 +cat >> confdefs.h <&6 +echo "configure:2371: checking for vprintf" >&5 +if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char vprintf(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_vprintf) || defined (__stub___vprintf) +choke me +#else +vprintf(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_vprintf=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_vprintf=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_VPRINTF 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi + +if test "$ac_cv_func_vprintf" != yes; then +echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 +echo "configure:2423: checking for _doprnt" >&5 +if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char _doprnt(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub__doprnt) || defined (__stub____doprnt) +choke me +#else +_doprnt(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func__doprnt=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func__doprnt=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_DOPRNT 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi + +fi + +for ac_func in socket \ + select \ + strdup \ + strstr \ + strftime \ + uname \ + strcasecmp \ + gethostname \ + gethostbyaddr \ + getservbyname \ + gettimeofday \ + inet_addr \ + inet_ntoa \ + tcsetattr \ + tcgetattr \ + perror \ + getpass \ + closesocket + +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2496: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2554: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$PERL" in + /*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin " + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_PERL="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +PERL="$ac_cv_path_PERL" +if test -n "$PERL"; then + echo "$ac_t""$PERL" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + +for ac_prog in nroff gnroff +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2593: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_NROFF'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$NROFF" in + /*) + ac_cv_path_NROFF="$NROFF" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_NROFF="$NROFF" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH:/usr/bin/:/usr/local/bin " + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_NROFF="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +NROFF="$ac_cv_path_NROFF" +if test -n "$NROFF"; then + echo "$ac_t""$NROFF" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$NROFF" && break +done + + + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2633: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +for ac_prog in 'bison -y' byacc +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2665: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_YACC="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +YACC="$ac_cv_prog_YACC" +if test -n "$YACC"; then + echo "$ac_t""$YACC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + + + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +DEFS=-DHAVE_CONFIG_H + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "Makefile \ + src/Makefile \ + lib/Makefile \ + perl/checklinks.pl \ + perl/getlinks.pl \ + perl/formfind.pl \ + perl/recursiveftpget.pl config.h src/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@ACLOCAL@%$ACLOCAL%g +s%@AUTOCONF@%$AUTOCONF%g +s%@AUTOMAKE@%$AUTOMAKE%g +s%@AUTOHEADER@%$AUTOHEADER%g +s%@MAKEINFO@%$MAKEINFO%g +s%@SET_MAKE@%$SET_MAKE%g +s%@CC@%$CC%g +s%@CPP@%$CPP%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@PERL@%$PERL%g +s%@NROFF@%$NROFF%g +s%@RANLIB@%$RANLIB%g +s%@YACC@%$YACC%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + +EOF + +# Transform confdefs.h into a sed script conftest.vals that substitutes +# the proper values into config.h.in to produce config.h. And first: +# Protect against being on the right side of a sed subst in config.status. +# Protect against being in an unquoted here document in config.status. +rm -f conftest.vals +cat > conftest.hdr <<\EOF +s/[\\&%]/\\&/g +s%[\\$`]%\\&%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +s%ac_d%ac_u%gp +s%ac_u%ac_e%gp +EOF +sed -n -f conftest.hdr confdefs.h > conftest.vals +rm -f conftest.hdr + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >> conftest.vals <<\EOF +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +EOF + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +while : +do + ac_lines=`grep -c . conftest.vals` + # grep -c gives empty output for an empty file on some AIX systems. + if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi + # Write a limited-size here document to conftest.frag. + echo ' cat > conftest.frag <> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + echo 'CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in +' >> $CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +cat >> $CONFIG_STATUS <<\EOF + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +am_indx=1 +for am_file in config.h src/config.h; do + case " $CONFIG_HEADERS " in + *" $am_file "*) + echo timestamp > `echo $am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx + ;; + esac + am_indx=`expr "$am_indx" + 1` +done + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/configure.in b/configure.in new file mode 100644 index 000000000..17418fd64 --- /dev/null +++ b/configure.in @@ -0,0 +1,210 @@ +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,"6.3.1") + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_MAKE_SET + +dnl Check for AIX weirdos +AC_AIX + +dnl ********************************************************************** +dnl Checks for libraries. +dnl ********************************************************************** + +dnl nsl lib? +AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname)) + +dnl resolve lib? +AC_CHECK_FUNC(strcasecmp, , AC_CHECK_LIB(resolve, strcasecmp)) + +dnl socket lib? +AC_CHECK_FUNC(connect, , AC_CHECK_LIB(socket, connect)) + +dnl ucb lib? +AC_CHECK_FUNC(gethostname, , AC_CHECK_LIB(ucb, gethostname)) + +dnl dl lib? +AC_CHECK_FUNC(dlopen, , AC_CHECK_LIB(dl, dlopen)) + +dnl ********************************************************************** +dnl Check for the presence of SSL libraries and headers +dnl ********************************************************************** + +dnl Default to compiler & linker defaults for SSL files & libraries. +OPT_SSL=off +AC_ARG_WITH(ssl,dnl +[ --with-ssl[=DIR] where to look for SSL [compiler/linker default paths] + DIR points to the SSL installation [/usr/local/ssl]], + OPT_SSL=$withval +) + +if test X"$OPT_SSL" = Xno +then + AC_MSG_WARN(SSL/https support disabled) +else + + dnl Check for & handle argument to --with-ssl. + + AC_MSG_CHECKING(where to look for SSL) + if test X"$OPT_SSL" = Xoff + then + AC_MSG_RESULT([defaults (or given in environment)]) + else + test X"$OPT_SSL" = Xyes && OPT_SSL=/usr/local/ssl + LIBS="$LIBS -L$OPT_SSL/lib" + CPPFLAGS="$CPPFLAGS -I$OPT_SSL/include/openssl -I$OPT_SSL/include" + AC_MSG_RESULT([$OPT_SSL]) + fi + + dnl check for crypto libs (part of SSLeay) + AC_CHECK_LIB(crypto, CRYPTO_lock) + + if test $ac_cv_lib_crypto_CRYPTO_lock = yes; then + dnl This is only reasonable to do if crypto actually is there: check for + dnl SSL libs NOTE: it is important to do this AFTER the crypto lib + AC_CHECK_LIB(ssl, SSL_connect) + + dnl Check for SSLeay headers + AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h openssl/pem.h openssl/ssl.h openssl/err.h) + + if test $ac_cv_header_openssl_x509_h = no; then + AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h) + fi + + fi +fi + +dnl ********************************************************************** +dnl Check for the presence of ZLIB libraries and headers +dnl ********************************************************************** + +dnl Default to compiler & linker defaults for files & libraries. +dnl OPT_ZLIB=no +dnl AC_ARG_WITH(zlib,dnl +dnl [ --with-zlib[=DIR] where to look for ZLIB [compiler/linker default paths] +dnl DIR points to the ZLIB installation prefix [/usr/local]], +dnl OPT_ZLIB=$withval, +dnl ) + +dnl Check for & handle argument to --with-zlib. +dnl +dnl NOTE: We *always* look for ZLIB headers & libraries, all this option +dnl does is change where we look (by adjusting LIBS and CPPFLAGS.) +dnl + +dnl AC_MSG_CHECKING(where to look for ZLIB) +dnl if test X"$OPT_ZLIB" = Xno +dnl then +dnl AC_MSG_RESULT([defaults (or given in environment)]) +dnl else +dnl test X"$OPT_ZLIB" = Xyes && OPT_ZLIB=/usr/local +dnl LIBS="$LIBS -L$OPT_ZLIB/lib" +dnl CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include" +dnl AC_MSG_RESULT([$OPT_ZLIB]) +dnl fi + +dnl z lib? +dnl AC_CHECK_FUNC(gzread, , AC_CHECK_LIB(z, gzread)) + +dnl ********************************************************************** +dnl Back to "normal" configuring +dnl ********************************************************************** + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS( \ + unistd.h \ + arpa/inet.h \ + net/if.h \ + netinet/in.h \ + netdb.h \ + sys/select.h \ + sys/socket.h \ + sys/sockio.h \ + sys/stat.h \ + sys/types.h \ + getopt.h \ + sys/param.h \ + termios.h \ + termio.h \ + sgtty.h \ + fcntl.h \ + dlfcn.h \ + alloca.h \ + winsock.h \ + time.h \ + io.h \ +) + +dnl Check for libz header +dnl AC_CHECK_HEADERS(zlib.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_SIZE_T +AC_HEADER_TIME + +# mprintf() checks: + +# check for 'long double' +AC_CHECK_SIZEOF(long double, 8) +# check for 'long long' +AC_CHECK_SIZEOF(long long, 4) + +dnl Get system canonical name +AC_CANONICAL_HOST +AC_DEFINE_UNQUOTED(OS, "${host}") + +dnl Checks for library functions. +dnl AC_PROG_GCC_TRADITIONAL +AC_TYPE_SIGNAL +AC_FUNC_VPRINTF +AC_CHECK_FUNCS( socket \ + select \ + strdup \ + strstr \ + strftime \ + uname \ + strcasecmp \ + gethostname \ + gethostbyaddr \ + getservbyname \ + gettimeofday \ + inet_addr \ + inet_ntoa \ + tcsetattr \ + tcgetattr \ + perror \ + getpass \ + closesocket +) + + + +AC_PATH_PROG( PERL, perl, , + $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin ) +AC_SUBST(PERL) + +AC_PATH_PROGS( NROFF, nroff gnroff, , + $PATH:/usr/bin/:/usr/local/bin ) +AC_SUBST(NROFF) + +AC_PROG_RANLIB +AC_PROG_YACC + +dnl AC_PATH_PROG( RANLIB, ranlib, /usr/bin/ranlib, +dnl $PATH:/usr/bin/:/usr/local/bin ) +dnl AC_SUBST(RANLIB) + +AC_OUTPUT( Makefile \ + src/Makefile \ + lib/Makefile \ + perl/checklinks.pl \ + perl/getlinks.pl \ + perl/formfind.pl \ + perl/recursiveftpget.pl ) diff --git a/curl-6.3.1.tar.gz b/curl-6.3.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..38bba51aa8910f0d41d755f44a007753df656eb0 GIT binary patch literal 242680 zcmV(vKuG{MNc=LKi`P{DT<=aXIuR9`OZ`RssA?Ula0-t z=Q}%3H|h7yjptiC{}es@r+>h|Sy?4T6#dg6DXWh?H!RW*AO7k8x_^DY{|9gPPv0DN z|Neb!ZfxxAJhuN^o7${}gTfy8r*_|DsR+d(Z!SPygiiC~AD- zh4=6OJ(B;U7yiUQKlRdj66AMCKbKS$|^7BQ9g_gZj#A$S~eQrr$w3NlZfw6qwzYKWa%hc-P(>$^SgB1ON(gp z#fukfFB?%i>NM}t=q4FN)lF7LXGK4iX9rn2z(|u(KDmzWv+9PLOR2T~O*TpC_oRw$^0G)2PQe;VQlt$&Oe-kBT z)TFj1$vFMG8AqK8t=-e7m?*77MN5_Pf>YfgBGsy2JqdXbJ(E+A5 z$Oe;U6;UJ8Q9_T>EVGJ7JT203Qq78VG>?)V9Smx|mkwzsY$wx6l@+OLk>BEmQhFAX zr?1j7n&kJfKdPHAmL1iDn}Rm>BpFq`d9>TdUwg?6Bar#g3ehO~v>Qo<0riWl%KF*Q z>3}CUqH{ybi$N7Bjd?=jz~s86S{r14?$v|6+$MLxT}k;fyN zA&x8B%F$twPWm(pIvvy~{nf8hxl!Syo-do!c`_SCZ-w(oQQ)IEUT?R@$%l58jp?XNE4uHpacPOI!WrQ~;^A_X-$&(~j^tRT6^*jnlnww6 z8m%P`;_4cmBg{6(>o{k8pC@|zhuMc{o>r~sC!zqf9OWpxzNu)9N4UT}+SlCf`8c_y zmEbFpe#p>P!L)%csw^>vjLFbm7Aa8(ItF}zUlHkFmFhyNxWO=-?FH=e#8S-Mtb zhHFG;pMH$BLkxvZ9XC!bma-K0M58Wm@-dyax3hvqoqnMEl3}Cl{SxOM#A2V?NN|2Y zH!&KwXIo2YCN1r3f@8r%(r(Wry{FyJZ!}*8(eVSfObEh3^E)WA^~p>FUx4P z{qq{gEcQPc-6!)>Zb~_o(@b{`E!?L)C8~Vd@zEgf&&G7mv7?~Sa{o*IWI|KUM>5rG znrJH`LWbqy%am2_#1a|l-{=

nvsZ>BbmG`@@QQq}?4T^(|>sSdz_c;&M+h-HW4x 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%0DmitsUt2+PY4zmU5BF{Cc`$RC}~MH@d6k=tq$ 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

1JPD=YjN!!om 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 z z^G{6^4`O7;O`k4mo_0i3E=^evkx$K=caM*5J}#n?Hm>7ZG#;@vMW1iF2!PSYd~&{N zY^bDJRE_iV5vKK!0zwi%=`cdJfU7B~rfWYgZ98g_6`pUU#mEvv0WR3# z3_=GKkF%AJkXNq(9^si0aA$TAPbSu`t`~2>vp7`R-kwKa;O@n9)Ra?GgM!U3A$`-M zHR?CS9;iNQ=?YJ1-4qTY@B6!HDr0_T!+we(o5rmiz zUYyRdF_D6>C|m$$RC`o;o3}^juPY2>Y09P>(<;KcMeA%%Km~;E@~D28-KsQp&=FTj zt+~EgH06}h=|_KhC33-zbv}O=?Hnd-B%?&9=z!*F>@j|=tfC?#28J4HL!!O69{z+l z0UY(edwz@*xS(xr6vohJZyO&|5BpxqczDR8KOQPgbS&{vI4GYn@SBu2JXP|$6`*bT z95$kwVzJq0DtLO{xPL-=Fqn}9m_r>C!1jYk$3*CTA+!`k5-{h}=W=5$19tA!g0O6G zXt3cTg*umxVZK8~O8+aW<>C}J(@Wty+Kie=OQRzb@<}LgbfzFW7g1F-bBYkG*%od2wkFZ0GSOQZi5r5FcV)QcUKmgK-)N6wqBrsXI8D0|DTByJ z;JL(N0tyBy;!$Z-!_lpW;4xcCa3bIfBr+6hJjzkYletmNt=rvqD4J}j)Z};V56>Vt z!cd6a0jRi+YX1zxdG37>s?_=w-nq;(5InhWu8FQ`!2|?F)vPyxy5qcku@z{b(GAvkS8aU zaZPzE5pE6_@>AbF#QtW;8#7(1vrE_zAjMa@EV)pH^}N(FbrVYi@zF6>TuG=lApIa67`x_uNU3a%l-bE{sap;F{v@Ct0duv<>fu_|7pu6XwG z+A*I$`L+-StIspxN<|^Oc%L_@>19{`L@lGA1;KNzV7M9F-|>X@UEgQDSAqCwX*Hh% zvfA7f`O7oPmyAMkTHcx|01M(s_mKG5sjX{{p*65lBd=UWyjoSL-W3Oq{&*M zOOZU&F*lAG1bG<2!r~byWtlO+>f{uv{JDHJ)5B|>kmpKh-6D#O9JlY%!x*aHGhrm!Q+HwlCWT0})@QVe#X+-Y%>9xUH-ZZfgCm~+quwWePFwUjZJHf9P! zf62)Ae!k6Q@WDu3=bBCzVMjG6^kQ5JYByPwBFR?$4v#6Dt3ESP_*k@ladj3^=`1~m z&411uw)?35{idL*>&WT4eb+el4(Ma49W>DUL`QC(bkebGrj$?{3aM(4hWk+DRny6d zHnYRlvwgaR(|cf6l}i3ttG|^u8&y67{74oO*UHZj+s;Q@NFm8W+w&I=h&v`{3OlP%SLl`O39gDKYAZxjDs!hp5i>NA!6!zVI0+k zxCOkZIJ-2gpv@h%SwSrrZl+UBt+v*)u~x!IzUJGNBAaC`FKnx}D6#XGg0uH5-XF>H z4NE?8;od#EE#sIy4VD-HLv` z*XsJb`B8=lpSfQl9kNG4Mkh(`)1xe=9YDwy%LcP?ZT_*-kVAbW>9K25t70fi`3YdZ zv@=4R`cMgW!R1OY41wvDi4!;GSk&IYaxbE#|C8hoo;5a@HRv6&WJ1ytc~P-gQG)Gy zWUhs(pLv=eL0Bo5uuc^34K7`ws?pSG&WtJGzgOfy!s}SVv_ZHdCMVVODG&D#fZ4<@RkyfUhcB%PulT7l>aucqvb1%>%;tQ*TzOi zrx@6yw4+_8Dhc%dy8~S0S^&Nj{`wS}&cY{vHaMQYN}F2sbYFDrz1&Bf*{ZvJC>`(_ zIK(H)GI;x-GV-|vC+L5rQ*gw}p7r>>I7^-Ph)`zZeYV%A z+wW!cJ$l%<*x5BTe&NglN3(REPk~%Kz`mnde~T~UhhOK;@)}mLKBK?*=mgORxUD~% zyTmc&$^CVr!)N+Wh_rF2cjSDI4wY6I{W0g`zX0t^dDAnyDsJbQd4mb{$i#FRqq=kr z_()-bI=T)~PZZr)ZtVD&vjN?I`j`qGF`%Y9w4cmZfhh3a0s$mKpF zkY*y0zs&5CKzgyQEO1ngm#di;tfyE%{3^H?!Twcb@7nvZnwmO>G3BcKk&Q@zTs2r( z1ZL~uT^vA#(o&)m3?m%CMqD-nNr0R`!YEVOFoOzYIVEQX% z2gEe5EXA9Y_p1=Yo*9s@X=v-P7$f&ndUvWX!(q5B9pi**s_g)yCi#5LC;qb!6xuf9 z)mVSfXVPU;3PfV`Rbpj0NdB_sm1<Z=@xEEt>-zjK z#V%<>zay|awV6`##VMetx13j7Tg%!TG~kik@3{8D$IhzsTijnNToP82B=d##?gjSl ze>|1v2hM*C!t;Z|^W*<}?*G7VkKy^j?db#mKSMrA{C?5=eu@0OWN`S$8>Xtd^NQub)H?r2heXt1GZw6SQgsc2TYXt1SdoV93D zt!T8pXi_6+EHh|MD`>PkXpvqttSY85C=B9_5Ch6btPz;xYSD_YtdtSSBua_Guy;cd zNfdI~%(RU|5yqraK_pVn6yZjRWD?;NxEQF4ugWTl2xxg3iU{}`=GQx)=m4q zTT#ZBl|E~wfsDV_;^egl$>TMU>I0(hgebeKVGBliHg2c%N z57NwP7TRnWZ>UpFMAaN{4A!oxPfu}Ry=QVlwW>wl8GGcLpB33IPw7J9TUT>5Vx1zy z&{`|An9)}`vmcd9b=m*rnj`>ESZXF4Rwtcc6Ok#Ns8?rYMKo1e+{mYNGtGtdvrfRW zkfKbnA}P*Xq0=6fITa_VEN!-Hh2x$4snsHhZ&qbuDxp|i>Z;g^$4ei&Y#l1Gq&_(n zL!u`~%V?+Ost$I)Y)mI%Gp*SRifp4zZdp@$FAJd+l{~cKiT%w;-&D%c(aNioD_Y30 z(xMIT5*k{;QL*3JSTx0=WXquJy-|siaYD4%-$Bc=rb`LsTZLm=ixvEZ_Kg_+7b1oF zY{s!=L=Em0N8n705ZNVz%9Z?=d>4EScf_ zJgnep%I^T-11E4SXPe&vDsb3QNh`z7 z(xeWE0WbwIuma8)#lrtUp>CJpD6I(>c7ajC@yWVs9R6&8py{kiD6AI~2XLrk$n+O> z;W5DR>AGs{iyJ{kUrP_sqzX#_D9tg{=gw*+VvKQZzgI~ZLB?K-jVb*Ii@gqBQ(7A+ z>cSI?ORqNgny~WIZ=`760yA=^;gQh!Le-{5!1JRnoLvb+l%L8>;F|p!dpG-DA(g z5Td@4W^taRX(`hStz(VncfU5Q^_JM?*`cGi5o?g!mI0^jYi`-ZXBSiwJ%F&uJ(w?- zwQ5yVHMS-FCa9`UPNvc@HgpmEhgVTHD@=+QH9;!9^+{z!a|7&BjImLIP4>N6E02{K z!{sOH(dX8W2t=A-p21MX%}-h}L9+<#rqZa4Vc)R^24bByQM?E& zV%_TuJuD3skQP>h-CIcrrRo<$br(KELQ3EaE+hj4V2ju9nriiAbf0jaYtyzG{Qh)Z zMvKb*v&4_(UTIF_gz{&2-W>FIZdmiX18{foK|@0$4*^%ci08lhl(%dTJ;JuRoL|jy*dYsRQkoLzv zMSsgi-i9IxoR;<095tUd3!tA(B)8He-Hw7h zIpfS&pzah#EkzAy|9Q{&QkBVo1UhJZEh4-XK|V2$ecC%U$sC{b z@9keV*H;=%kHD%kpy|-lK8gu>_o7ny(yo?I{trP#EMl4{#kkdWRey*gtsz=9*8|+c`Zm9C2^#`gj{rD{ycoVkr6Zbdl%CyMxV`W z{XT3NCbfL>y&rFn@_`4Q&iOi#0^>;juH{Rb;s~1z^r_R4|LmhV1al@mb~Q-wnRP!c zIoA)M^5t&(d)1(I;(C&TKqdj|aJ)+ukx@2S0v9>mHjf>aDUtd!_KI6;aKz3{svc=@ z24m*;r~MoCk3obgijvFk1SqzSa2 zv??d?_7`-;MUdT1l0?KgRM$_W=YgOC5I*m+rw8iCL*eS5Id! zM8WbX9LN0a+Jfe0c$;~T(^kHPl(zIRi4xPFUbgRsnQ5ft_ya+-25Skx8j>;&uV zXWR3=VH8+vWqZH4iQtw;!KiCUE)2YXcCM?JTdv`;9uJQa>z;HKc%Mu7<1nIgk1H~i z?!z2ljQd29W0(oUA#-QETYO6)Vs5<(7dkBTfz4G8%r$k%DL$)3yLe0wQ}|;(Whsti zd9Hyb^;F*gv@C(%#B~M4WZ*ktHtRj#U@9eFVdLN$BJi69T^0Bz8-k0CbmSDBCdPiT zzQqs@oF$Rz%02&nA}uppkj5%KRy@cHC+nvI!?7JLHKpBQ`AL9RkG1p)M2EJ&Ww=D`)Ovq5}7|=FsR$h-E(3i?9AZ3$wso zF-w)IF3oRDwth^kbthiOheUmzJy>`vj4-RnYH7Y2RRQf{SApEKq5jwg$x>^M%@`5Y zs8vH*aEk82xU*rE)yliVD61+Px6DVFYE{qip=MVG&L2EbbF21Gcs#g(FAprJ>GiQ! z3yes8N`XA6JZ=xpFEDgJq_JNY3p|QFs5YBf21-f`CN6U?G)Fw=brtNsM=o&G3d1*& zR!AWUP{ljBF{X<4Av$JtI|H4-*o3%w4f4k{*EG_lJEWr9*j)9+z1XkRhCeY}d3&a^ z51|WwQU;E!ea0oDi92(yT-G#tLw8?EqvADIeUT$hYDI7bN%5>?qLDPR3 zZ1y{&uTv-gv;F*Cp36oJTGzls>pFKI%*$S|dumw$D$p}n5*DX$HjFVClO26NA8=yU zu4JWUCJ9676z(u465e1jUnt_oWQ2a=#E~v3t^3mvyk^CU8b%DoC4BgIkiMcyX3*Y7 zA&KcY&ruWlu?T9K>64kXV{EGR=}HzzJ6+-Ewl{*ruPPpfRi0vyI}>I--9-%ED`G@% z94M1A8X)ggXIb-EOJ@6pv13i_gjhEG_?5kPe$+GH;Gx$kO0dj2x|L17GhWZ4d=p>5 z@XnQ+pXF_5?~i*z1Xot%A%(W(x$$}*gjww?KNlFLz#Nn%f%9%Im%lMk;WBHU?wd8G z8G+k)e+~|FAKzZ&V)XkQ>~JTGH;?(PO{IuLBh5ThCI*-V&C^%Q2eFA-pc^v1|*SrvOzMeZ_xvslK>>I#?@vzFAs;XeonF4ax^@Ku~@@#)CjO< z*)1xPpFX8&2IDYg!A8ibyDLsicq2PfRSGbc+?K>``7l#tkFb_S;`qids~z`_&>`1# zX>Np)KQ+TH=mQ1~P~5<5NZzH)iyFgztAT_S8pnd>wd8uCYiom{Bf9>&MUHtbsyxr+ ze%*RfV9-Mc)-SPBgW5er7f6UxI()5|4ZE$uy)I7k*bmhyVSvAVq}zrLS^J#in^k1r zOS~J0>M$iAavuRmr5*1OV2uHA_>2<+cAOhXqtIszQxWDj)lqy>1Og;^=!A2y8 zQFS#S(-*>s!GL_h``9UohhW=Cg4DF%gx=s*)$A$M-GP=4SB)Z-tU(UpDBRQt{t6 zKck1T4ccFBMrI)-BSb;GZWnie{xzQrYgjNb^bBwEnoe08O+-@wp)R**6#x4CYWjU> zq39uNgc*v?SWk;6geDF*;0158yP)Rn;4Qlai?woOEv$uDT+`CsGk)|bO0#B64enxk zW&{fG*L$0vN{OjA=}Ki6wpuc5WEqY~{qlzQ^pNMr6AlHIgp6pe6$s3L5unP4)tT4| zwSG~PKs$UE(#xf6Re*J7U**+y-($fB;MArx^6#XA)f&pB0xqS&82Q61{rF~Mo1DRk zafEd0a9EYrVEk+}{RHDS4Wws@PM48NzdV`P8N@KakxlTIe?t=*7u(o?8|7$;S?sKS zGhNoBYPbZZZJNoD`U6a>NcT3_nt3=)SEyPP5?bwML)Li(_O+tA4ubxJA5&FVaP;bF|)37bfOsL{R9#QQd(!5w}W zp&~gIG5KQcRC&UZe7?tbyGO7>(i18ZPdSb~r<%ctFta4B`=9Y>dsJUBK$UC027J3F zG0%7JTBEgVi_j**lAB-04_mPj${2=JN>c5{_P5E z7Qn4NNQ1LmDYxWC@*5Bl#?9a^YinRx)5wqZ95r6b zWMMkZ83xIziYL77VEuk|zE4WF-Cn#t-y@_e`-?rYm|q38kEM~fN>56~sM7WO!?_J= zj)q*imWJ$6&w>AzqWG?9gpX~{o9R&ymw+@L@Iu~!JH)STailn_r2x!Fj60tBzRveh z`w*VD8~cuSLwCi7_({#8#xUG?P?SJ}EVh}$m&82zfGc=o7taW9c&|1MV<_Z+)CN&J zKeDIcgK*4GCRE!Qr0b5jq@jRL6IUc=Pt;$tOX8rBcc=1skMfP$>rG#Ks2U1%AsiXQ zM7t2}Eifn+f%J^XEokoHcwyihxl<=oR;W_!ZKIWwLOw5PtOvlx6N(o%r9_8wYyXfa zLX~yW1pCez7yw<3?#W0fR1RRr2)Z5PWkuhXG}cLR!wTKxzrS_K*wYDd!UlrwjR zr-g%5`0iBic``BLrf10Oqu;9DwAPgb=%s?4c7||+bH1#3%5!$s=LD=;GVA&H>}BKu zhKdHIFsXR4s^~O~7!IoL%82=ij{JJ{FBy8eV{8h!Gwp1IL{HwMoq^8PpuMP}RbBkj z%kYXttM7I0&imCkq9`G#6%OZ$Bjk@Xh`&iPsF|>_7&`5nle~+ygp&yhAy2*?ITDz$ubuNlI*9Zfp(%<}DM2&O z4?xTk7TOZ%)eqw}f!WMN*`A=v(yF7#{B;|rC)&V}7xAbb)fx_Bt3qwc*;lSmy}i%) zedtj@x|Budr-0dd!whR*#VmcdDxJXiTTxchmmZ9MNBx*H%~*CvJz9!F%;4fvmvRU5 zKm324mE$(cM6;WPuH%XER4f*qb^vIaaSX5Z*mSP_Y=S3mZ)TeyftTQ_a)7U)l} zBJuLj*5yCR=$|VF@;bCiN-0yeXBCF)mwg&=VG-1ii16y%@qTuDdcBQjKbE+Wx_TJt zfv(c;|JqkwH@Bf^mtu|52W*y!vwY-T^oeh>=&wDCXugHJPp_z$uVrzQ~1fAR7C*6LZ+Uh^E zQRW&78yG+=BUz3?ZVo~h;e&@_aVBD|uq52ZB;4}Vq(aT+Ra4Tuig~VgTRLkcQ{mg4 zB{ls3!|Icf=jGf%@nmwstPrIgbsI%ddk@yQgf~PMP9${zBbE9@2-1q(SOrk>RX&Ty z=i2+$V+8HbL-#g8OOBG5wIz`|5ewNCo3CqY{?0$4C`gA?DLYzw&!QgMXy8)AayCquSt)xJqlp%eEv--c3L(8r3Ye8x#3`>h_ncX zM^GjwuXE%_^DMQqW6G8zADB_x(4R-wG(5>-dj#N4YR+peD+>vcHOMHSJ(2 z#u8Rh9vd+n)JjhrEKK@Pgh=}*DibkwL!sIi{WgWSJ9GoH-8vzMv|Z4B{we-AqLdgR zor@+Qy$H?^0#4N!^{uR|X74VaWEfPGIZ7TNZiWTSRT2z`#{oHoviN=A^@UmqV<`=@MisXn(={PlNcT z9Y6G^zYg3U4nRTpGI=2w2*O7rbeY{`n|@NZxj-4!?IkSK4)nj z+uLh|-6zL?)om#}9sb-b)@OHd-mk1X{3B>3 zvoF2n9gHjq*dlzcTm?QJOY`8UF^AD9{!jfEM(MJnoSHPRGtbKxbh85?texMSHKHjS zg)L1dvO)0tVZt^f6immy)c0qx5jX~SCHl`0YP1~70@9oDls)6w7;kMpz!r)m5&7sd zPKpx2vCi;M zl<@%8_VLFPYoJUCqbZB}p8ku6hJ_hq!A1$#sjK;yV@X8|R-#?_jGkbF-AeG)R_#l< zj)P{mp<(_BM`QX!jsR%B;l98OZ5V(6T4s zC!3F;juDEG ztG`Ssbvv~+%KnmDaUy)M!i{qI44eOHCBfSPZS|&d&^)3Yb02seBwosi`iM_@kXreN zSGFB5>m7J%-h1zkC4UyQ@S-x#vkxL;BwTB7T?=OAhs<%igUZUiy_r63g8gt#X`W_@ zd)aXjW!C#++a>3bkN-?3jLxIt&s4m6(%%iW*xQ_oB1;hetxZoJAMAHc>Cq^K)T3UV zv~gnRhUlb~h8mx$-8M?Dw;Kg00dE|k_yS8hPIG~y-P(=e&EZb5XV>@ zB&h{jy4I}E<1kh9nKr9E0q2#t(2mo7HqYrEAY~$+3ye`F@i#LB6L}QeuqOxNx@4td zG)O{aMjb)5?R+_@&0}a>?dkZ3#to_Q!;BI@K%~{tFPXl|zk)y+ac0iWI9bGrZjRsM z{UJ(8Y`UPv@xtdIeWkX7ie5!Inp?1xL6$<}nJ;+I>vykJJUX=)XBpAZ>=l>M0L(co zZL1%?{L}z1XG2tcOarQRGkxhg=I%#4VbnFm)H=YiF8`>NnQSyyda_su?QnKM_b4!= zH#vsI$zMjO`p7Pg(X*lefOuE3oii|8Fw^^&D3sipvH;~!Mz&1 zClEWMh;Eef26HxwJlel(zdqsphu(a7TD6&aBnIw@b^;Z3X>>!+a`MkHdKpaDO>W`{ zIzXWMdp>0Kn|mi4%GM;kGq><@B3tGZN;)_tX!sOMgR*lW{(`wg%TawWe&cBL!u<^h z{lRpH_ql(>%5aU+S;6Fwj(<>xik%K5_e}YUf!S&|sblNt1{{KwfVa`&JSYr0CJmDU z0mh@aLAzr)P?6SbqKP5CUiqweV{ZP7T+Yz;tapvybfKeH*YjE}VCVDPiylWpm>z~N zt~WYU_Xu{O0a_ygSskjeY})?K zFn{|AEQNzTT9j_AgigPXj$+`J+4Su-0%?Kvl!)$ui@Hzvm+!bmy8oJ2onM4`=a1lo zz|a`Lqaglaul6d>w7bxR$Fx1yZuBeUQ^ zclWN;_|i6Kf1=k7{iXga?$_T1ulG={<9a_9^P!=h3O%gjb}AiJxVl8l zvbgGsmLnBQF)0sI3rMmQ8iiw%`5cZJ#-Kks4Eb$3{uae)G>%d`~|F|8^?qD896>R2K z9RYHqn#L359-ipRVl`XVgn3mxWNGLyEdw)gE_ZE!D%;!J3Twd2o6DQ;GK{)vAcwH8 zE+WC~So1&zC-)+h#m1h4CcbU0uX>K-dM!Fn&%Z zuy4at*%(d2^%I{f*MMhjy~zU;xp2Q4 z`$N}%EV=71RWkAL106a+ubRkMFrqv#mg#{-iduGa=%>fnEyQ9_OK=cdrJ)F3~`cH6)P#2fVt{^#A|> literal 0 HcmV?d00001 diff --git a/curl-ssl.spec b/curl-ssl.spec new file mode 100644 index 000000000..1d69342d3 --- /dev/null +++ b/curl-ssl.spec @@ -0,0 +1,52 @@ +%define name curl-ssl +%define tarball curl +%define version 6.0 +%define release 1 +%define prefix /usr/local + +%define builddir $RPM_BUILD_DIR/%{tarball}-%{version} + +Summary: get a file from a FTP, GOPHER or HTTP server. +Name: %{name} +Version: %{version} +Release: %{release} +Copyright: MPL +Vendor: Daniel Stenberg +Packager: Troy Engel +Group: Utilities/Console +Source: %{tarball}-%{version}.tar.gz +URL: http://curl.haxx.nu/ +BuildRoot: /tmp/%{tarball}-%{version}-root + +%description +curl is a client to get documents/files from servers, using any of the +supported protocols. The command is designed to work without user +interaction or any kind of interactivity. + +curl offers a busload of useful tricks like proxy support, user +authentication, ftp upload, HTTP post, file transfer resume and more. + +Note: this version is compiled with SSL (https:) support. + +%prep +rm -rf $RPM_BUILD_ROOT +rm -rf %{builddir} + +%setup -n %{tarball}-%{version} + +%build +CFLAGS=$RPM_OPT_FLAGS ./configure --prefix=$RPM_BUILD_ROOT%{prefix} --with-ssl +make CFLAGS="-DUSE_SSLEAY -I/usr/include/openssl" + +%install +make install-strip + +%clean +rm -rf $RPM_BUILD_ROOT +rm -rf %{builddir} + +%files +%defattr(-,root,root) +%attr(0755,root,root) %{prefix}/bin/curl +%doc curl.1 README* CHANGES CONTRIBUTE FAQ FILES INSTALL LEGAL MPL-1.0.txt RESOURCES TODO perl/ + diff --git a/curl.1 b/curl.1 new file mode 100644 index 000000000..f93bc0ea0 --- /dev/null +++ b/curl.1 @@ -0,0 +1,402 @@ +.\" You can view this file with: +.\" nroff -man curl.1 +.\" Written by Daniel Stenberg +.\" +.TH curl 1 "8 November 1999" "Curl 6.3" "Curl Manual" +.SH NAME +curl \- get a URL with FTP, TELNET, LDAP, GOPHER, DICT, FILE, HTTP or +HTTPS syntax. +.SH SYNOPSIS +.B curl [options] +.I url +.SH DESCRIPTION +.B curl +is a client to get documents/files from servers, using any of the +supported protocols. The command is designed to work without user +interaction or any kind of interactivity. + +curl offers a busload of useful tricks like proxy support, user +authentication, ftp upload, HTTP post, SSL (https:) connections, cookies, file +transfer resume and more. +.SH URL +The URL syntax is protocol dependent. You'll find a detailed description in +RFC 2396. + +You can specify multiple URLs or parts of URLs by writing part sets within +braces as in: + + http://site.{one,two,three}.com + +or you can get sequences of alphanumeric series by using [] as in: + + ftp://ftp.numericals.com/file[1-100].txt + ftp://ftp.numericals.com/file[001-100].txt (with leading zeros) + ftp://ftp.letters.com/file[a-z].txt + +It is possible to specify up to 9 sets or series for a URL, but no nesting is +supported at the moment: + + http://www.any.org/archive[1996-1999]/volume[1-4]part{a,b,c,index}.html +.SH OPTIONS +.IP "-a/--append" +(FTP) +When used in a ftp upload, this will tell curl to append to the target +file instead of overwriting it. If the file doesn't exist, it will +be created. +.IP "-A/--user-agent " +(HTTP) +Specify the User-Agent string to send to the HTTP server. Some badly done CGIs +fail if its not set to "Mozilla/4.0". To encode blanks in the string, +surround the string with single quote marks. This can also be set with the +-H/--header flag of course. +.IP "-b/--cookie " +(HTTP) +Pass the data to the HTTP server as a cookie. It is supposedly the +data previously received from the server in a "Set-Cookie:" line. +The data should be in the format "NAME1=VALUE1; NAME2=VALUE2". + +If no '=' letter is used in the line, it is treated as a filename to use to +read previously stored cookie lines from, which should be used in this session +if they match. Using this method also activates the "cookie parser" which +will make curl record incoming cookies too, which may be handy if you're using +this in combination with the -L/--location option. The file format of the file +to read cookies from should be plain HTTP headers or the netscape cookie file +format. +.IP "-B/--ftp-ascii" +(FTP/LDAP) +Use ASCII transfer when getting an FTP file or LDAP info. For FTP, this can +also be enforced by using an URL that ends with ";type=A". +.IP "-c/--continue" +Continue/Resume a previous file transfer. This instructs curl to +continue appending data on the file where it was previously left, +possibly because of a broken connection to the server. There must be +a named physical file to append to for this to work. +Note: Upload resume is depening on a command named SIZE not always +present in all ftp servers! Upload resume is for FTP only. +HTTP resume is only possible with HTTP/1.1 or later servers. +.IP "-C/--continue-at " +Continue/Resume a previous file transfer at the given offset. The +given offset is the exact number of bytes that will be skipped +counted from the beginning of the source file before it is transfered +to the destination. +If used with uploads, the ftp server command SIZE will not be used by +curl. Upload resume is for FTP only. +HTTP resume is only possible with HTTP/1.1 or later servers. +.IP "-d/--data " +(HTTP) +Sends the specified data in a POST request to the HTTP server. Note +that the data is sent exactly as specified with no extra processing. +The data is expected to be "url-encoded". This will cause curl to +pass the data to the server using the content-type +application/x-www-form-urlencoded. Compare to -F. + +If you start the data with the letter @, the rest should be a file name to +read the data from, or - if you want curl to read the data from stdin. +The contents of the file must already be url-encoded. +.IP "-D/--dump-header " +(HTTP/FTP) +Write the HTTP headers to this file. Write the FTP file info to this +file if -I/--head is used. +.IP "-e/--referer " +(HTTP) +Sends the "Referer Page" information to the HTTP server. Some badly +done CGIs fail if it's not set. This can also be set with the -H/--header +flag of course. +.IP "-E/--cert " +(HTTPS) +Tells curl to use the specified certificate file when getting a file +with HTTPS. The certificate must be in PEM format. +If the optional password isn't specified, it will be queried for on +the terminal. Note that this certificate is the private key and the private +certificate concatenated! +.IP "-f/--fail" +(HTTP) +Fail silently (no output at all) on server errors. This is mostly done +like this to better enable scripts etc to better deal with failed +attempts. In normal cases when a HTTP server fails to deliver a +document, it returns a HTML document stating so (which often also +describes why and more). This flag will prevent curl from +outputting that and fail silently instead. +.IP "-F/--form " +(HTTP) +This lets curl emulate a filled in form in which a user has pressed +the submit button. This causes curl to POST data using the +content-type multipart/form-data according to RFC1867. This enables +uploading of binary files etc. To force the 'content' part to be +read from a file, prefix the file name with an @ sign. Example, to +send your password file to the server, where 'password' is the +name of the form-field to which /etc/passwd will be the input: + +.B curl +-F password=@/etc/passwd www.mypasswords.com + +To read the file's content from stdin insted of a file, use - where the file +name should've been. +.IP "-h/--help" +Usage help. +.IP "-H/--header

" +(HTTP) +Extra header to use when getting a web page. You may specify any number of +extra headers. Note that if you should add a custom header that has the same +name as one of the internal ones curl would use, your externally set header +will be used instead of the internal one. This allows you to make even +trickier stuff than curl would normally do. You should not replace internally +set headers without knowing perfectly well what you're doing. +.IP "-i/--include" +(HTTP) +Include the HTTP-header in the output. The HTTP-header includes things +like server-name, date of the document, HTTP-version and more... +.IP "-I/--head" +(HTTP/FTP) +Fetch the HTTP-header only! HTTP-servers feature the command HEAD +which this uses to get nothing but the header of a document. When used +on a FTP file, curl displays the file size only. +.IP "-K/--config " +Specify which config file to read curl arguments from. The config +file is a text file in which command line arguments can be written +which then will be used as if they were written on the actual command +line. If the first column of a config line is a '#' character, the +rest of the line will be treated as a comment. + +Specify the filename as '-' to make curl read the file from stdin. +.IP "-l/--list-only" +(FTP) +When listing an FTP directory, this switch forces a name-only view. +Especially useful if you want to machine-parse the contents of an FTP +directory since the normal directory view doesn't use a standard look +or format. +.IP "-L/--location" +(HTTP/HTTPS) +If the server reports that the requested page has a different location +(indicated with the header line Location:) this flag will let curl +attempt to reattempt the get on the new place. If used together with +-i or -I, headers from all requested pages will be shown. +.IP "-m/--max-time " +Maximum time in seconds that you allow the whole operation to take. +This is useful for preventing your batch jobs from hanging for hours +due to slow networks or links going down. +This doesn't work properly in win32 systems. +.IP "-M/--manual" +Manual. Display the huge help text. +.IP "-n/--netrc" +Makes curl scan the +.I .netrc +file in the user's home directory for login name and password. This is +typically used for ftp on unix. If used with http, curl will enable user +authentication. See +.BR netrc(4) +for details on the file format. Curl will not complain if that file +hasn't the right permissions (it should not be world nor group +readable). The environment variable "HOME" is used to find the home +directory. + +A quick and very simple example of how to setup a +.I .netrc +to allow curl to ftp to the machine host.domain.com with user name +'myself' and password 'secret' should look similar to: + +.B "machine host.domain.com user myself password secret" +.IP "-o/--output " +Write output to instead of stdout. If you are using {} or [] to fetch +multiple documents, you can use # in the specifier. That variable +will be replaced with the current string for the URL being fetched. Like in: + + curl http://{one,two}.site.com -o "file_#1.txt" + +or use several variables like: + + curl http://{site,host}.host[1-5].com -o "#1_#2" +.IP "-O/--remote-name" +Write output to a local file named like the remote file we get. (Only +the file part of the remote file is used, the path is cut off.) +.IP "-P/--ftpport
" +(FTP) +Reverses the initiator/listenor roles when connecting with ftp. This +switch makes Curl use the PORT command instead of PASV. In +practice, PORT tells the server to connect to the client's specified +address and port, while PASV asks the server for an ip address and +port to connect to.
should be one of: + interface - i.e "eth0" to specify which interface's IP address you want to use (Unix only) + IP address - i.e "192.168.10.1" to specify exact IP number + host name - i.e "my.host.domain" to specify machine + "-" - (any single-letter string) to make it pick the machine's default +.IP "-q" +If used as the first parameter on the command line, the +.I $HOME/.curlrc +file will not be read and used as a config file. +.IP "-Q/--quote " +(FTP) Send an arbitrary command to the remote FTP server, by using the QUOTE +command of the server. Not all servers support this command, and the set of +QUOTE commands are server specific! +.IP "-r/--range " +(HTTP/FTP) +Retrieve a byte range (i.e a partial document) from a HTTP/1.1 or FTP +server. Ranges can be specified in a number of ways. + 0-499 - specifies the first 500 bytes + 500-999 - specifies the second 500 bytes + -500 - specifies the last 500 bytes + 9500- - specifies the bytes from offset 9500 and forward + 0-0,-1 - specifies the first and last byte only(*)(H) + 500-700,600-799 - specifies 300 bytes from offset 500(H) + 100-199,500-599 - specifies two separate 100 bytes ranges(*)(H) + +(*) = NOTE that this will cause the server to reply with a multipart +response! + +You should also be aware that many HTTP/1.1 servers do not have this feature +enabled, so that when you attempt to get a range, you'll instead get the whole +document. + +FTP range downloads only support the simple syntax 'start-stop' (optionally +with one of the numbers omitted). It depends on the non-RFC command SIZE. +.IP "-s/--silent" +Silent mode. Don't show progress meter or error messages. Makes +Curl mute. +.IP "-S/--show-error" +When used with -s it makes curl show error message if it fails. +.IP "-t/--upload" +Transfer the stdin data to the specified file. Curl will read +everything from stdin until EOF and store with the supplied name. If +this is used on a http(s) server, the PUT command will be used. +.IP "-T/--upload-file " +Like -t, but this transfers the specified local file. If there is no +file part in the specified URL, Curl will append the local file +name. NOTE that you must use a trailing / on the last directory to +really prove to Curl that there is no file name or curl will +think that your last directory name is the remote file name to +use. That will most likely cause the upload operation to fail. If +this is used on a http(s) server, the PUT command will be used. +.IP "-u/--user " +Specify user and password to use when fetching. See README.curl for detailed +examples of how to use this. If no password is specified, curl will +ask for it interactively. +.IP "-U/--proxy-user " +Specify user and password to use for Proxy authentication. If no +password is specified, curl will ask for it interactively. +.IP "-v/--verbose" +Makes the fetching more verbose/talkative. Mostly usable for +debugging. Lines starting with '>' means data sent by curl, '<' +means data received by curl that is hidden in normal cases and lines +starting with '*' means additional info provided by curl. +.IP "-V/--version" +Displays the full version of curl, libcurl and other 3rd party libraries +linked with the executable. +.IP "-x/--proxy " +Use specified proxy. If the port number is not specified, it is assumed at +port 1080. +.IP "-X/--request " +(HTTP) +Specifies a custom request to use when communicating with the HTTP server. +The specified request will be used instead of the standard GET. Read the +HTTP 1.1 specification for details and explanations. + +(FTP) +Specifies a custom FTP command to use instead of LIST when doing file lists +with ftp. +.IP "-y/--speed-time " +Speed Limit. If a download is slower than this given speed, in bytes +per second, for Speed Time seconds it gets aborted. Speed Time is set +with -Y and is 30 if not set. +.IP "-Y/--speed-limit d3c!)lX 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 P+rRw%+`JOFldAp;WK5oY literal 0 HcmV?d00001 diff --git a/lib/formdata.c b/lib/formdata.c new file mode 100644 index 000000000..eff0212e4 --- /dev/null +++ b/lib/formdata.c @@ -0,0 +1,617 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +/* + Debug the form generator stand-alone by compiling this source file with: + + gcc -DHAVE_CONFIG_H -I../ -g -D_FORM_DEBUG -o formdata -I../include formdata.c + + run the 'formdata' executable and make sure the output is ok! + + try './formdata "name=Daniel" "poo=noo" "foo=bar"' and similarly + + */ + +#include +#include +#include +#include + +#include + +#include "setup.h" +#include +#include "formdata.h" + +/* Length of the random boundary string. The risk of this being used + in binary data is very close to zero, 64^32 makes + 6277101735386680763835789423207666416102355444464034512896 + combinations... */ +#define BOUNDARY_LENGTH 32 + +/* What kind of Content-Type to use on un-specified files with unrecognized + extensions. */ +#define HTTPPOST_CONTENTTYPE_DEFAULT "text/plain" + +/* This is a silly duplicate of the function in main.c to enable this source + to compile stand-alone for better debugging */ +static void GetStr(char **string, + char *value) +{ + if(*string) + free(*string); + *string = strdup(value); +} + +/*************************************************************************** + * + * FormParse() + * + * Reads a 'name=value' paramter and builds the appropriate linked list. + * + * Specify files to upload with 'name=@filename'. Supports specified + * given Content-Type of the files. Such as ';type='. + * + * You may specify more than one file for a single name (field). Specify + * multiple files by writing it like: + * + * 'name=@filename,filename2,filename3' + * + * If you want content-types specified for each too, write them like: + * + * 'name=@filename;type=image/gif,filename2,filename3' + * + ***************************************************************************/ + +int curl_FormParse(char *input, + struct HttpPost **httppost, + struct HttpPost **last_post) +{ + return FormParse(input, httppost, last_post); +} + +#define FORM_FILE_SEPARATOR ',' +#define FORM_TYPE_SEPARATOR ';' + +int FormParse(char *input, + struct HttpPost **httppost, + struct HttpPost **last_post) +{ + /* nextarg MUST be a string in the format 'name=contents' and we'll + build a linked list with the info */ + char name[256]; + char contents[1024]=""; + char major[128]; + char minor[128]; + long flags = 0; + char *contp; + char *type = NULL; + char *prevtype = NULL; + char *sep; + char *sep2; + struct HttpPost *post; + struct HttpPost *subpost; /* a sub-node */ + unsigned int i; + + if(1 <= sscanf(input, "%255[^ =] = %1023[^\n]", name, contents)) { + /* the input was using the correct format */ + contp = contents; + + if('@' == contp[0]) { + /* we use the @-letter to indicate file name(s) */ + + flags = HTTPPOST_FILENAME; + contp++; + + post=NULL; + + do { + /* since this was a file, it may have a content-type specifier + at the end too */ + + sep=strchr(contp, FORM_TYPE_SEPARATOR); + sep2=strchr(contp, FORM_FILE_SEPARATOR); + + /* pick the closest */ + if(sep2 && (sep2 < sep)) { + sep = sep2; + + /* no type was specified! */ + } + if(sep) { + + /* if we got here on a comma, don't do much */ + if(FORM_FILE_SEPARATOR != *sep) + type = strstr(sep+1, "type="); + else + type=NULL; + + *sep=0; /* terminate file name at separator */ + + if(type) { + type += strlen("type="); + + if(2 != sscanf(type, "%127[^/]/%127[^,\n]", + major, minor)) { + fprintf(stderr, "Illegally formatted content-type field!\n"); + return 2; /* illegal content-type syntax! */ + } + /* now point beyond the content-type specifier */ + sep = type + strlen(major)+strlen(minor)+1; + + /* find the following comma */ + sep=strchr(sep, FORM_FILE_SEPARATOR); + } + } + else { + type=NULL; + sep=strchr(contp, FORM_FILE_SEPARATOR); + } + if(sep) { + /* the next file name starts here */ + *sep =0; + sep++; + } + if(!type) { + /* + * No type was specified, we scan through a few well-known + * extensions and pick the first we match! + */ + struct ContentType { + char *extension; + char *type; + }; + static struct ContentType ctts[]={ + {".gif", "image/gif"}, + {".jpg", "image/jpeg"}, + {".jpeg", "image/jpeg"}, + {".txt", "text/plain"}, + {".html", "text/plain"} + }; + + if(prevtype) + /* default to the previously set/used! */ + type = prevtype; + else + /* It seems RFC1867 defines no Content-Type to default to + text/plain so we don't actually need to set this: */ + type = HTTPPOST_CONTENTTYPE_DEFAULT; + + for(i=0; i= strlen(ctts[i].extension)) { + if(strequal(contp + + strlen(contp) - strlen(ctts[i].extension), + ctts[i].extension)) { + type = ctts[i].type; + break; + } + } + } + /* we have a type by now */ + } + + if(NULL == post) { + /* For the first file name, we allocate and initiate the main list + node */ + + post = (struct HttpPost *)malloc(sizeof(struct HttpPost)); + if(post) { + memset(post, 0, sizeof(struct HttpPost)); + GetStr(&post->name, name); /* get the name */ + GetStr(&post->contents, contp); /* get the contents */ + post->flags = flags; + if(type) { + GetStr(&post->contenttype, type); /* get type */ + prevtype=post->contenttype; /* point to the allocated string! */ + } + /* make the previous point to this */ + if(*last_post) + (*last_post)->next = post; + else + (*httppost) = post; + + (*last_post) = post; + } + + } + else { + /* we add a file name to the previously allocated node, known as + 'post' now */ + subpost =(struct HttpPost *)malloc(sizeof(struct HttpPost)); + if(subpost) { + memset(subpost, 0, sizeof(struct HttpPost)); + GetStr(&subpost->name, name); /* get the name */ + GetStr(&subpost->contents, contp); /* get the contents */ + subpost->flags = flags; + if(type) { + GetStr(&subpost->contenttype, type); /* get type */ + prevtype=subpost->contenttype; /* point to the allocated string! */ + } + /* now, point our 'more' to the original 'more' */ + subpost->more = post->more; + + /* then move the original 'more' to point to ourselves */ + post->more = subpost; + } + } + contp = sep; /* move the contents pointer to after the separator */ + } while(sep && *sep); /* loop if there's another file name */ + } + else { + post = (struct HttpPost *)malloc(sizeof(struct HttpPost)); + if(post) { + memset(post, 0, sizeof(struct HttpPost)); + GetStr(&post->name, name); /* get the name */ + GetStr(&post->contents, contp); /* get the contents */ + post->flags = 0; + + /* make the previous point to this */ + if(*last_post) + (*last_post)->next = post; + else + (*httppost) = post; + + (*last_post) = post; + } + + } + + } + else { + fprintf(stderr, "Illegally formatted input field!\n"); + return 1; + } + return 0; +} + +static int AddFormData(struct FormData **formp, + void *line, + long length) +{ + struct FormData *newform = (struct FormData *) + malloc(sizeof(struct FormData)); + newform->next = NULL; + + /* we make it easier for plain strings: */ + if(!length) + length = strlen((char *)line); + + newform->line = (char *)malloc(length+1); + memcpy(newform->line, line, length+1); + newform->length = length; + + if(*formp) { + (*formp)->next = newform; + *formp = newform; + } + else + *formp = newform; + + return length; +} + + +static int AddFormDataf(struct FormData **formp, + char *fmt, ...) +{ + char s[1024]; + va_list ap; + va_start(ap, fmt); + vsprintf(s, fmt, ap); + va_end(ap); + + return AddFormData(formp, s, 0); +} + + +char *MakeFormBoundary(void) +{ + char *retstring; + static int randomizer=0; /* this is just so that two boundaries within + the same form won't be identical */ + int i; + + static char table64[]= + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + retstring = (char *)malloc(BOUNDARY_LENGTH); + + if(!retstring) + return NULL; /* failed */ + + srand(time(NULL)+randomizer++); /* seed */ + + strcpy(retstring, "curl"); /* bonus commercials 8*) */ + + for(i=4; i<(BOUNDARY_LENGTH-1); i++) { + retstring[i] = table64[rand()%64]; + } + retstring[BOUNDARY_LENGTH-1]=0; /* zero terminate */ + + return retstring; +} + + +void FormFree(struct FormData *form) +{ + struct FormData *next; + do { + next=form->next; /* the following form line */ + free(form->line); /* free the line */ + free(form); /* free the struct */ + + } while(form=next); /* continue */ +} + +struct FormData *getFormData(struct HttpPost *post, + int *sizep) +{ + struct FormData *form = NULL; + struct FormData *firstform; + + struct HttpPost *file; + + int size =0; + char *boundary; + char *fileboundary=NULL; + + if(!post) + return NULL; /* no input => no output! */ + + boundary = MakeFormBoundary(); + + /* Make the first line of the output */ + AddFormDataf(&form, + "Content-Type: multipart/form-data;" + " boundary=%s\r\n", + boundary); + /* we DO NOT count that line since that'll be part of the header! */ + + firstform = form; + + do { + + /* boundary */ + size += AddFormDataf(&form, "\r\n--%s\r\n", boundary); + + size += AddFormDataf(&form, + "Content-Disposition: form-data; name=\"%s\"", + post->name); + + if(post->more) { + /* If used, this is a link to more file names, we must then do + the magic to include several files with the same field name */ + + fileboundary = MakeFormBoundary(); + + size += AddFormDataf(&form, + "\r\nContent-Type: multipart/mixed," + " boundary=%s\r\n", + fileboundary); + } + + file = post; + + do { + if(post->more) { + /* if multiple-file */ + size += AddFormDataf(&form, + "\r\n--%s\r\nContent-Disposition: attachment; filename=\"%s\"", + fileboundary, file->contents); + } + else if(post->flags & HTTPPOST_FILENAME) { + size += AddFormDataf(&form, + "; filename=\"%s\"", + post->contents); + } + + if(file->contenttype) { + /* we have a specified type */ + size += AddFormDataf(&form, + "\r\nContent-Type: %s", + file->contenttype); + } + if(file->contenttype && + !strnequal("text/", file->contenttype, 5)) { + /* this is not a text content, mention our binary encoding */ + size += AddFormDataf(&form, + "\r\nContent-Transfer-Encoding: binary"); + } + + + size += AddFormDataf(&form, + "\r\n\r\n"); + + if(post->flags & HTTPPOST_FILENAME) { + /* we should include the contents from the specified file */ + FILE *fileread; + char buffer[1024]; + int nread; + + fileread = strequal("-", file->contents)?stdin: + /* binary read for win32 crap */ + fopen(file->contents, "rb"); + if(fileread) { + while((nread = fread(buffer, 1, 1024, fileread))) { + size += AddFormData(&form, + buffer, + nread); + } + if(fileread != stdin) + fclose(fileread); + } + else { + size += AddFormDataf(&form, "[File wasn't found by client]"); + } + } + else { + /* include the contents we got */ + size += AddFormDataf(&form, + post->contents); + } + } while((file = file->more)); /* for each specified file for this field */ + + if(post->more) { + /* this was a multiple-file inclusion, make a termination file + boundary: */ + size += AddFormDataf(&form, + "\r\n--%s--", + fileboundary); + free(fileboundary); + } + + } while((post=post->next)); /* for each field */ + + /* end-boundary for everything */ + size += AddFormDataf(&form, + "\r\n--%s--\r\n", + boundary); + + *sizep = size; + + free(boundary); + + return firstform; +} + +int FormInit(struct Form *form, struct FormData *formdata ) +{ + form->data = formdata; + form->sent = 0; + + if(!formdata) + return 1; /* error */ + + return 0; +} + +/* fread() emulation */ +int FormReader(char *buffer, + size_t size, + size_t nitems, + FILE *mydata) +{ + struct Form *form; + int wantedsize; + int gotsize; + + form=(struct Form *)mydata; + + wantedsize = size * nitems; + + if(!form->data) + return 0; /* nothing, error, empty */ + + do { + + if( (form->data->length - form->sent ) > wantedsize ) { + + memcpy(buffer, form->data->line + form->sent, wantedsize); + + form->sent += wantedsize; + + return wantedsize; + } + + memcpy(buffer, + form->data->line + form->sent, + gotsize = (form->data->length - form->sent) ); + + form->sent = 0; + + form->data = form->data->next; /* advance */ + + } while(!gotsize && form->data); + /* If we got an empty line and we have more data, we proceed to the next + line immediately to avoid returning zero before we've reached the end. + This is the bug reported November 22 1999 on curl 6.3. (Daniel) */ + + return gotsize; +} + + +#ifdef _FORM_DEBUG + +int main(int argc, char **argv) +{ +#if 0 + char *testargs[]={ + "name1 = data in number one", + "name2 = number two data", + "test = @upload" + }; +#endif + int i; + char *nextarg; + struct HttpPost *httppost=NULL; + struct HttpPost *last_post=NULL; + struct HttpPost *post; + int size; + int nread; + char buffer[4096]; + + struct FormData *form; + struct Form formread; + + for(i=1; i + * Sampo Kellomaki + * Linas Vepstas + * Bjorn Reese + * Johan Anderson + * Kjell Ericson + * Troy Engel + * Ryan Nelson + * Bjorn Stenberg + * Angus Mackay + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + * $Log$ + * Revision 1.1 1999-12-29 14:21:22 bagder + * Initial revision + * + * Revision 1.4 1999/09/06 06:59:40 dast + * Changed email info + * + * Revision 1.3 1999/08/13 07:34:47 dast + * Changed the URL in the header + * + * Revision 1.2 1999/07/30 12:59:47 dast + * FormFree() was added to properly cleanup after a form was posted. + * + * Revision 1.1.1.1 1999/03/11 22:23:34 dast + * Imported sources + * + ****************************************************************************/ +/* plain and simple linked list with lines to send */ +struct FormData { + struct FormData *next; + char *line; + long length; +}; + +struct Form { + struct FormData *data; /* current form line to send */ + int sent; /* number of bytes of the current line that has already + been sent in a previous invoke */ +}; + +int FormParse(char *string, + struct HttpPost **httppost, + struct HttpPost **last_post); + +int FormInit(struct Form *form, struct FormData *formdata ); + +struct FormData *getFormData(struct HttpPost *post, + int *size); + +/* fread() emulation */ +int FormReader(char *buffer, + size_t size, + size_t nitems, + FILE *mydata); + +char *MakeFormBoundary(void); + +void FormFree(struct FormData *); + +#endif diff --git a/lib/ftp.c b/lib/ftp.c new file mode 100644 index 000000000..d62891298 --- /dev/null +++ b/lib/ftp.c @@ -0,0 +1,1046 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include +#include +#include +#include +#include + +#include "setup.h" + +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_SYS_SELECT_H +#include +#endif + +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +#include +#else /* some kind of unix */ +#include +#include +#ifdef HAVE_ARPA_INET_H +#include +#endif +#include +#include +#endif + +#if defined(WIN32) && defined(__GNUC__) || defined(__MINGW32__) +#include +#endif + + +#include +#include "urldata.h" +#include "sendf.h" + +#include "if2ip.h" +#include "hostip.h" +#include "progress.h" +#include "upload.h" +#include "download.h" + + +/* returns last node in linked list */ +static struct curl_slist *slist_get_last(struct curl_slist *list) +{ + struct curl_slist *item; + + /* if caller passed us a NULL, return now */ + if (!list) + return NULL; + + /* loop through to find the last item */ + item = list; + while (item->next) { + item = item->next; + } + return item; +} + +/* append a struct to the linked list. It always retunrs the address of the + * first record, so that you can sure this function as an initialization + * function as well as an append function. If you find this bothersome, + * then simply create a separate _init function and call it appropriately from + * within the proram. */ +struct curl_slist *curl_slist_append(struct curl_slist *list, char *data) +{ + struct curl_slist *last; + struct curl_slist *new_item; + + new_item = (struct curl_slist *) malloc(sizeof(struct curl_slist)); + if (new_item) { + new_item->next = NULL; + new_item->data = strdup(data); + } + else { + fprintf(stderr, "Cannot allocate memory for QUOTE list.\n"); + exit(-1); + } + + if (list) { + last = slist_get_last(list); + last->next = new_item; + return list; + } + + /* if this is the first item, then new_item *is* the list */ + return new_item; +} + +/* be nice and clean up resources */ +void curl_slist_free_all(struct curl_slist *list) +{ + struct curl_slist *next; + struct curl_slist *item; + + if (!list) + return; + + item = list; + do { + next = item->next; + + if (item->data) { + free(item->data); + } + free(item); + item = next; + } while (next); +} + + +static UrgError AllowServerConnect(struct UrlData *data, + int sock) +{ + fd_set rdset; + struct timeval dt; + + FD_ZERO(&rdset); + + FD_SET(sock, &rdset); + + /* we give the server 10 seconds to connect to us */ + dt.tv_sec = 10; + dt.tv_usec = 0; + + switch ( select(sock+1, &rdset, NULL, NULL, &dt)) { + case -1: /* error */ + /* let's die here */ + failf(data, "Error while waiting for server connect"); + return URG_FTP_PORT_FAILED; + case 0: /* timeout */ + /* let's die here */ + failf(data, "Timeout while waiting for server connect"); + return URG_FTP_PORT_FAILED; + default: + /* we have received data here */ + { + int s; + size_t size = sizeof(struct sockaddr_in); + struct sockaddr_in add; + + getsockname(sock, (struct sockaddr *) &add, (int *)&size); + s=accept(sock, (struct sockaddr *) &add, (int *)&size); + + if( -1 == s) { + /* DIE! */ + failf(data, "Error accept()ing server connect"); + return URG_FTP_PORT_FAILED; + } + infof(data, "Connection accepted from server\n"); + + data->secondarysocket = s; + } + break; + } + return URG_OK; +} + + +/* --- parse FTP server responses --- */ + +#define lastline(line) (isdigit((int)line[0]) && isdigit((int)line[1]) && \ + isdigit((int)line[2]) && (' ' == line[3])) + +static int GetLastResponse(int sockfd, char *buf, + struct UrlData *data) +{ + int nread; + int read_rc=1; + char *ptr; + do { + ptr=buf; + + /* get us a full line, terminated with a newline */ + for(nread=0; + (nreaduse_ssl) { + read_rc = SSL_read(data->ssl, ptr, 1); + } + else { +#endif + read_rc = sread(sockfd, ptr, 1); +#ifdef USE_SSLEAY + } +#endif /* USE_SSLEAY */ + if (*ptr == '\n') + break; + } + *ptr=0; /* zero terminate */ + + if(data->conf & CONF_VERBOSE) { + fputs("< ", data->err); + fwrite(buf, 1, nread, data->err); + fputs("\n", data->err); + } + } while(read_rc && + (nread<4 || !lastline(buf)) ); + return nread; +} + +/* -- who are we? -- */ +char *getmyhost(void) +{ + static char myhost[256]; +#if !defined(WIN32) && !defined(HAVE_UNAME) && !defined(HAVE_GETHOSTNAME) + /* We have no means of finding the local host name! */ + strcpy(myhost, "localhost"); +#endif +#if defined(WIN32) || !defined(HAVE_UNAME) + gethostname(myhost, 256); +#else + struct utsname ugnm; + + if (uname(&ugnm) < 0) + return "localhost"; + + (void) strncpy(myhost, ugnm.nodename, 255); + myhost[255] = '\0'; +#endif + return myhost; +} + +#if 0 +/* + * URLfix() + * + * This function returns a string converted FROM the input URL format to a + * format that is more likely usable for the remote server. That is, all + * special characters (found as %XX-codes) will be eascaped with \. + */ + +static char *URLfix(char *string) +{ + /* The length of the new string can't be longer than twice the original + string, if all letters are '+'... */ + int alloc = strlen(string)*2; + char *ns = malloc(alloc); + unsigned char in; + int index=0; + int hex; + + while(*string) { + in = *string; + switch(in) { + case '+': + ns[index++] = '\\'; + ns[index++] = ' '; + string++; + continue; + + case '%': + /* encoded part */ + if(sscanf(string+1, "%02X", &hex)) { + ns[index++] = '\\'; + ns[index++] = hex; + string+=3; + continue; + } + /* FALLTHROUGH */ + default: + ns[index++] = in; + string++; + } + } + ns[index]=0; /* terminate it */ + return ns; +} +#endif + +static +UrgError _ftp(struct UrlData *data, + long *bytecountp, + char *ftpuser, + char *ftppasswd, + char *ppath) +{ + /* this is FTP and no proxy */ + size_t nread; + UrgError result; + char *buf = data->buffer; /* this is our buffer */ + /* for the ftp PORT mode */ + int portsock=-1; + struct sockaddr_in serv_addr; + + struct curl_slist *qitem; /* QUOTE item */ + + /* The first thing we do is wait for the "220*" line: */ + nread = GetLastResponse(data->firstsocket, buf, data); + if(strncmp(buf, "220", 3)) { + failf(data, "This doesn't seem like a nice ftp-server response"); + return URG_FTP_WEIRD_SERVER_REPLY; + } + + /* send USER */ + sendf(data->firstsocket, data, "USER %s\r\n", ftpuser); + + /* wait for feedback */ + nread = GetLastResponse(data->firstsocket, buf, data); + + if(!strncmp(buf, "530", 3)) { + /* 530 User ... access denied + (the server denies to log the specified user) */ + failf(data, "Access denied: %s", &buf[4]); + return URG_FTP_ACCESS_DENIED; + } + else if(!strncmp(buf, "331", 3)) { + /* 331 Password required for ... + (the server requires to send the user's password too) */ + sendf(data->firstsocket, data, "PASS %s\r\n", ftppasswd); + nread = GetLastResponse(data->firstsocket, buf, data); + + if(!strncmp(buf, "530", 3)) { + /* 530 Login incorrect. + (the username and/or the password are incorrect) */ + failf(data, "the username and/or the password are incorrect"); + return URG_FTP_USER_PASSWORD_INCORRECT; + } + else if(!strncmp(buf, "230", 3)) { + /* 230 User ... logged in. + (user successfully logged in) */ + + infof(data, "We have successfully logged in\n"); + } + else { + failf(data, "Odd return code after PASS"); + return URG_FTP_WEIRD_PASS_REPLY; + } + } + else if(! strncmp(buf, "230", 3)) { + /* 230 User ... logged in. + (the user logged in without password) */ + infof(data, "We have successfully logged in\n"); + } + else { + failf(data, "Odd return code after USER"); + return URG_FTP_WEIRD_USER_REPLY; + } + + /* Send any QUOTE strings? */ + if(data->quote) { + qitem = data->quote; + /* Send all QUOTE strings in same order as on command-line */ + while (qitem) { + /* Send string */ + if (qitem->data) { + sendf(data->firstsocket, data, "%s\r\n", qitem->data); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if (buf[0] != '2') { + failf(data, "QUOT string not accepted: %s", + qitem->data); + return URG_FTP_QUOTE_ERROR; + } + } + qitem = qitem->next; + } + } + + /* If we have selected NOBODY, it means that we only want file information. + Which in FTP can't be much more than the file size! */ + if(data->conf & CONF_NOBODY) { + /* The SIZE command is _not_ RFC 959 specified, and therefor many servers + may not support it! It is however the only way we have to get a file's + size! */ + int filesize; + sendf(data->firstsocket, data, "SIZE %s\r\n", ppath); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "213", 3)) { + failf(data, "Couldn't get file size: %s", buf+4); + return URG_FTP_COULDNT_GET_SIZE; + } + /* get the size from the ascii string: */ + filesize = atoi(buf+4); + + sprintf(buf, "Content-Length: %d\n", filesize); + + if(strlen(buf) != data->fwrite(buf, 1, strlen(buf), data->out)) { + failf (data, "Failed writing output"); + return URG_WRITE_ERROR; + } + if(data->writeheader) { + /* the header is requested to be written to this file */ + if(strlen(buf) != fwrite (buf, 1, strlen(buf), data->writeheader)) { + failf (data, "Failed writing output"); + return URG_WRITE_ERROR; + } + } + return URG_OK; + } + + /* We have chosen to use the PORT command */ + if(data->conf & CONF_FTPPORT) { + struct sockaddr_in sa; + struct hostent *h=NULL; + size_t size; + unsigned short porttouse; + + char *myhost=NULL; + + if(data->ftpport) { + myhost = if2ip(data->ftpport); + if(myhost) { + h = GetHost(data, myhost); + } + else { + if(strlen(data->ftpport)>1) + h = GetHost(data, data->ftpport); + if(h) + myhost=data->ftpport; + } + } + if(!myhost) { + myhost = getmyhost(); + h=GetHost(data, myhost); + } + infof(data, "We connect from %s\n", myhost); + + if ( h ) { + if( (portsock = socket(AF_INET, SOCK_STREAM, 0)) >= 0 ) { + memset((char *)&sa, 0, sizeof(sa)); + memcpy((char *)&sa.sin_addr, + h->h_addr, + h->h_length); + sa.sin_family = AF_INET; + sa.sin_addr.s_addr = INADDR_ANY; + sa.sin_port = 0; + size = sizeof(sa); + + if(bind(portsock, (struct sockaddr *)&sa, size) >= 0) { + /* we succeeded to bind */ + struct sockaddr_in add; + size = sizeof(add); + + if(getsockname(portsock, (struct sockaddr *) &add, + (int *)&size)<0) { + failf(data, "getsockname() failed"); + return URG_FTP_PORT_FAILED; + } + porttouse = ntohs(add.sin_port); + + if ( listen(portsock, 1) < 0 ) { + failf(data, "listen(2) failed on socket"); + return URG_FTP_PORT_FAILED; + } + } + else { + failf(data, "bind(2) failed on socket"); + return URG_FTP_PORT_FAILED; + } + } + else { + failf(data, "socket(2) failed (%s)"); + return URG_FTP_PORT_FAILED; + } + } + else { + failf(data, "could't find my own IP address (%s)", myhost); + return URG_FTP_PORT_FAILED; + } + { + struct in_addr in; + unsigned short ip[5]; + (void) memcpy(&in.s_addr, *h->h_addr_list, sizeof (in.s_addr)); + sscanf( inet_ntoa(in), "%hu.%hu.%hu.%hu", + &ip[0], &ip[1], &ip[2], &ip[3]); + sendf(data->firstsocket, data, "PORT %d,%d,%d,%d,%d,%d\n", + ip[0], ip[1], ip[2], ip[3], + porttouse >> 8, + porttouse & 255); + } + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "200", 3)) { + failf(data, "Server does not grok PORT, try without it!"); + return URG_FTP_PORT_FAILED; + } + } + else { /* we use the PASV command */ + + sendf(data->firstsocket, data, "PASV\r\n"); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "227", 3)) { + failf(data, "Odd return code after PASV"); + return URG_FTP_WEIRD_PASV_REPLY; + } + else { + int ip[4]; + int port[2]; + unsigned short newport; + char newhost[32]; + struct hostent *he; + char *str=buf; + + /* + * New 227-parser June 3rd 1999. + * It now scans for a sequence of six comma-separated numbers and + * will take them as IP+port indicators. + * + * Found reply-strings include: + * "227 Entering Passive Mode (127,0,0,1,4,51)" + * "227 Data transfer will passively listen to 127,0,0,1,4,51" + * "227 Entering passive mode. 127,0,0,1,4,51" + */ + + while(*str) { + if (6 == sscanf(str, "%d,%d,%d,%d,%d,%d", + &ip[0], &ip[1], &ip[2], &ip[3], + &port[0], &port[1])) + break; + str++; + } + if(!*str) { + failf(data, "Couldn't interpret this 227-reply: %s", buf); + return URG_FTP_WEIRD_227_FORMAT; + } + sprintf(newhost, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]); + he = GetHost(data, newhost); + if(!he) { + failf(data, "Can't resolve new host %s", newhost); + return URG_FTP_CANT_GET_HOST; + } + + + newport = (port[0]<<8) + port[1]; + data->secondarysocket = socket(AF_INET, SOCK_STREAM, 0); + + memset((char *) &serv_addr, '\0', sizeof(serv_addr)); + memcpy((char *)&(serv_addr.sin_addr), he->h_addr, he->h_length); + serv_addr.sin_family = he->h_addrtype; + serv_addr.sin_port = htons(newport); + + if(data->conf & CONF_VERBOSE) { + struct in_addr in; +#if 1 + struct hostent * answer; + + unsigned long address; +#if defined(HAVE_INET_ADDR) || defined(WIN32) + address = inet_addr(newhost); + answer = gethostbyaddr((char *) &address, sizeof(address), + AF_INET); +#else + answer = NULL; +#endif + (void) memcpy(&in.s_addr, *he->h_addr_list, sizeof (in.s_addr)); + infof(data, "Connecting to %s (%s) port %u\n", + answer?answer->h_name:newhost, inet_ntoa(in), newport); +#else + (void) memcpy(&in.s_addr, *he->h_addr_list, sizeof (in.s_addr)); + infof(data, "Connecting to %s (%s) port %u\n", + he->h_name, inet_ntoa(in), newport); +#endif + } + + if (connect(data->secondarysocket, (struct sockaddr *) &serv_addr, + sizeof(serv_addr)) < 0) { + switch(errno) { +#ifdef ECONNREFUSED + /* this should be made nicer */ + case ECONNREFUSED: + failf(data, "Connection refused by ftp server"); + break; +#endif +#ifdef EINTR + case EINTR: + failf(data, "Connection timeouted to ftp server"); + break; +#endif + default: + failf(data, "Can't connect to ftp server"); + break; + } + return URG_FTP_CANT_RECONNECT; + } + } + + } + /* we have the (new) data connection ready */ + + if(data->conf & CONF_UPLOAD) { + + /* Set type to binary (unless specified ASCII) */ + sendf(data->firstsocket, data, "TYPE %s\r\n", + (data->conf&CONF_FTPASCII)?"A":"I"); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "200", 3)) { + failf(data, "Couldn't set %s mode", + (data->conf&CONF_FTPASCII)?"ASCII":"binary"); + return (data->conf&CONF_FTPASCII)? URG_FTP_COULDNT_SET_ASCII: + URG_FTP_COULDNT_SET_BINARY; + } + + if(data->resume_from) { + /* we're about to continue the uploading of a file */ + /* 1. get already existing file's size. We use the SIZE + command for this which may not exist in the server! + The SIZE command is not in RFC959. */ + + /* 2. This used to set REST. But since we can do append, we + don't another ftp command. We just skip the source file + offset and then we APPEND the rest on the file instead */ + + /* 3. pass file-size number of bytes in the source file */ + /* 4. lower the infilesize counter */ + /* => transfer as usual */ + + if(data->resume_from < 0 ) { + /* we could've got a specified offset from the command line, + but now we know we didn't */ + + sendf(data->firstsocket, data, "SIZE %s\r\n", ppath); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "213", 3)) { + failf(data, "Couldn't get file size: %s", buf+4); + return URG_FTP_COULDNT_GET_SIZE; + } + + /* get the size from the ascii string: */ + data->resume_from = atoi(buf+4); + } + + if(data->resume_from) { + /* do we still game? */ + int passed=0; +#if 0 + /* Set resume file transfer offset */ + infof(data, "Instructs server to resume from offset %d\n", + data->resume_from); + + sendf(data->firstsocket, data, "REST %d\r\n", data->resume_from); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "350", 3)) { + failf(data, "Couldn't use REST: %s", buf+4); + return URG_FTP_COULDNT_USE_REST; + } +#else + /* enable append instead */ + data->conf |= CONF_FTPAPPEND; +#endif + /* Now, let's read off the proper amount of bytes from the + input. If we knew it was a proper file we could've just + fseek()ed but we only have a stream here */ + do { + int readthisamountnow = (data->resume_from - passed); + int actuallyread; + + if(readthisamountnow > BUFSIZE) + readthisamountnow = BUFSIZE; + + actuallyread = + data->fread(data->buffer, 1, readthisamountnow, data->in); + + passed += actuallyread; + if(actuallyread != readthisamountnow) { + failf(data, "Could only read %d bytes from the input\n", + passed); + return URG_FTP_COULDNT_USE_REST; + } + } + while(passed != data->resume_from); + + /* now, decrease the size of the read */ + if(data->infilesize>0) { + data->infilesize -= data->resume_from; + + if(data->infilesize <= 0) { + infof(data, "File already completely uploaded\n"); + return URG_OK; + } + } + /* we've passed, proceed as normal */ + } + } + + /* Send everything on data->in to the socket */ + if(data->conf & CONF_FTPAPPEND) + /* we append onto the file instead of rewriting it */ + sendf(data->firstsocket, data, "APPE %s\r\n", ppath); + else + sendf(data->firstsocket, data, "STOR %s\r\n", ppath); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(atoi(buf)>=400) { + failf(data, "Failed FTP upload:%s", buf+3); + /* oops, we never close the sockets! */ + return URG_FTP_COULDNT_STOR_FILE; + } + + if(data->conf & CONF_FTPPORT) { + result = AllowServerConnect(data, portsock); + if( result ) + return result; + } + + *bytecountp=0; + + /* When we know we're uploading a specified file, we can get the file + size prior to the actual upload. */ + + ProgressInit(data, data->infilesize); + result = Upload(data, data->secondarysocket, bytecountp); + if(result) + return result; + + if((-1 != data->infilesize) && (data->infilesize != *bytecountp)) { + failf(data, "Wrote only partial file (%d out of %d bytes)", + *bytecountp, data->infilesize); + return URG_PARTIAL_FILE; + } + } + else { + /* Retrieve file or directory */ + bool dirlist=FALSE; + long downloadsize=-1; + + if(data->conf&CONF_RANGE && data->range) { + int from, to; + int totalsize=-1; + char *ptr; + char *ptr2; + + from=strtol(data->range, &ptr, 0); + while(ptr && *ptr && (isspace((int)*ptr) || (*ptr=='-'))) + ptr++; + to=strtol(ptr, &ptr2, 0); + if(ptr == ptr2) { + /* we didn't get any digit */ + to=-1; + } + if(-1 == to) { + /* X - */ + data->resume_from = from; + } + else if(from < 0) { + /* -Y */ + from = 0; + to = -from; + totalsize = to-from; + data->maxdownload = totalsize; + } + else { + /* X- */ + totalsize = to-from; + data->maxdownload = totalsize; + } + infof(data, "range-download from %d to %d, totally %d bytes\n", + from, to, totalsize); + } + + if(!ppath[0]) + /* make sure this becomes a valid name */ + ppath="./"; + + if((data->conf & CONF_FTPLISTONLY) || + ('/' == ppath[strlen(ppath)-1] )) { + /* The specified path ends with a slash, and therefore we think this + is a directory that is requested, use LIST. But before that we + need to set ASCII transfer mode. */ + dirlist = TRUE; + + /* Set type to ASCII */ + sendf(data->firstsocket, data, "TYPE A\r\n"); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "200", 3)) { + failf(data, "Couldn't set ascii mode"); + return URG_FTP_COULDNT_SET_ASCII; + } + + /* if this output is to be machine-parsed, the NLST command will be + better used since the LIST command output is not specified or + standard in any way */ + + sendf(data->firstsocket, data, "%s %s\r\n", + data->customrequest?data->customrequest: + (data->conf&CONF_FTPLISTONLY?"NLST":"LIST"), + ppath); + } + else { + /* Set type to binary (unless specified ASCII) */ + sendf(data->firstsocket, data, "TYPE %s\r\n", + (data->conf&CONF_FTPASCII)?"A":"I"); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "200", 3)) { + failf(data, "Couldn't set %s mode", + (data->conf&CONF_FTPASCII)?"ASCII":"binary"); + return (data->conf&CONF_FTPASCII)? URG_FTP_COULDNT_SET_ASCII: + URG_FTP_COULDNT_SET_BINARY; + } + + if(data->resume_from) { + + /* Daniel: (August 4, 1999) + * + * We start with trying to use the SIZE command to figure out the size + * of the file we're gonna get. If we can get the size, this is by far + * the best way to know if we're trying to resume beyond the EOF. */ + + sendf(data->firstsocket, data, "SIZE %s\r\n", ppath); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "213", 3)) { + infof(data, "server doesn't support SIZE: %s", buf+4); + /* We couldn't get the size and therefore we can't know if there + really is a part of the file left to get, although the server + will just close the connection when we start the connection so it + won't cause us any harm, just not make us exit as nicely. */ + } + else { + int foundsize=atoi(buf+4); + /* We got a file size report, so we check that there actually is a + part of the file left to get, or else we go home. */ + if(foundsize <= data->resume_from) { + failf(data, "Offset (%d) was beyond file size (%d)", + data->resume_from, foundsize); + return URG_FTP_BAD_DOWNLOAD_RESUME; + } + /* Now store the number of bytes we are expected to download */ + downloadsize = foundsize-data->resume_from; + } + + /* Set resume file transfer offset */ + infof(data, "Instructs server to resume from offset %d\n", + data->resume_from); + + sendf(data->firstsocket, data, "REST %d\r\n", data->resume_from); + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(strncmp(buf, "350", 3)) { + failf(data, "Couldn't use REST: %s", buf+4); + return URG_FTP_COULDNT_USE_REST; + } + } + + sendf(data->firstsocket, data, "RETR %s\r\n", ppath); + } + + nread = GetLastResponse(data->firstsocket, buf, data); + + if(!strncmp(buf, "150", 3) || !strncmp(buf, "125", 3)) { + + /* + A; + 150 Opening BINARY mode data connection for /etc/passwd (2241 + bytes). (ok, the file is being transfered) + + B: + 150 Opening ASCII mode data connection for /bin/ls + + C: + 150 ASCII data connection for /bin/ls (137.167.104.91,37445) (0 bytes). + + D: + 150 Opening ASCII mode data connection for /linux/fisk/kpanelrc (0.0.0.0,0) (545 bytes). + + E: + 125 Data connection already open; Transfer starting. */ + + int size=-1; /* default unknown size */ + + if(!dirlist && (-1 == downloadsize)) { + /* + * It seems directory listings either don't show the size or very + * often uses size 0 anyway. + * Example D above makes this parsing a little tricky + */ + char *bytes; + bytes=strstr(buf, " bytes"); + if(bytes--) { + int index=bytes-buf; + /* this is a hint there is size information in there! ;-) */ + while(--index) { + /* scan for the parenthesis and break there */ + if('(' == *bytes) + break; + /* if only skip digits, or else we're in deep trouble */ + if(!isdigit((int)*bytes)) { + bytes=NULL; + break; + } + /* one more estep backwards */ + bytes--; + } + /* only if we have nothing but digits: */ + if(bytes++) { + /* get the number! */ + size = atoi(bytes); + } + + } +#if 0 + if(2 != sscanf(buf, "%*[^(](%d bytes%c", &size, &paren)) + size=-1; +#endif + } + else if(downloadsize > -1) + size = downloadsize; + +#if 0 + if((size > -1) && (data->resume_from>0)) { + size -= data->resume_from; + if(size <= 0) { + failf(data, "Offset (%d) was beyond file size (%d)", + data->resume_from, data->resume_from+size); + return URG_PARTIAL_FILE; + } + } +#endif + + if(data->conf & CONF_FTPPORT) { + result = AllowServerConnect(data, portsock); + if( result ) + return result; + } + + infof(data, "Getting file with size: %d\n", size); + + /* FTP download: */ + result=Download(data, data->secondarysocket, size, FALSE, + bytecountp); + if(result) + return result; + + if((-1 != size) && (size != *bytecountp)) { + failf(data, "Received only partial file"); + return URG_PARTIAL_FILE; + } + else if(0 == *bytecountp) { + failf(data, "No data was received!"); + return URG_FTP_COULDNT_RETR_FILE; + } + } + else { + failf(data, "%s", buf+4); + return URG_FTP_COULDNT_RETR_FILE; + } + + } + /* end of transfer */ + ProgressEnd(data); + + /* shut down the socket to inform the server we're done */ + sclose(data->secondarysocket); + data->secondarysocket = -1; + + /* now let's see what the server says about the transfer we + just performed: */ + nread = GetLastResponse(data->firstsocket, buf, data); + + /* 226 Transfer complete */ + if(strncmp(buf, "226", 3)) { + failf(data, "%s", buf+4); + return URG_FTP_WRITE_ERROR; + } + + return URG_OK; +} + +/* -- deal with the ftp server! -- */ + +UrgError ftp(struct UrlData *data, + long *bytecountp, + char *ftpuser, + char *ftppasswd, + char *urlpath) +{ + char *realpath; + UrgError retcode; + +#if 0 + realpath = URLfix(urlpath); +#else + realpath = curl_unescape(urlpath); +#endif + if(realpath) { + retcode = _ftp(data, bytecountp, ftpuser, ftppasswd, realpath); + free(realpath); + } + else + /* then we try the original path */ + retcode = _ftp(data, bytecountp, ftpuser, ftppasswd, urlpath); + + return retcode; +} + diff --git a/lib/ftp.h b/lib/ftp.h new file mode 100644 index 000000000..b7d265927 --- /dev/null +++ b/lib/ftp.h @@ -0,0 +1,52 @@ +#ifndef __FTP_H +#define __FTP_H + +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ +UrgError ftp(struct UrlData *data, + long *bytecountp, + char *ftpuser, + char *ftppasswd, + char *ppath); + +struct curl_slist *curl_slist_append(struct curl_slist *list, char *data); +void curl_slist_free_all(struct curl_slist *list); + +#endif diff --git a/lib/getdate.c b/lib/getdate.c new file mode 100644 index 000000000..e3342ff3a --- /dev/null +++ b/lib/getdate.c @@ -0,0 +1,2101 @@ + +/* A Bison parser, made from getdate.y + by GNU Bison version 1.27 + */ + +#define YYBISON 1 /* Identify Bison output. */ + +#define tAGO 257 +#define tDAY 258 +#define tDAY_UNIT 259 +#define tDAYZONE 260 +#define tDST 261 +#define tHOUR_UNIT 262 +#define tID 263 +#define tMERIDIAN 264 +#define tMINUTE_UNIT 265 +#define tMONTH 266 +#define tMONTH_UNIT 267 +#define tSEC_UNIT 268 +#define tSNUMBER 269 +#define tUNUMBER 270 +#define tYEAR_UNIT 271 +#define tZONE 272 + +#line 1 "getdate.y" + +/* +** Originally written by Steven M. Bellovin while +** at the University of North Carolina at Chapel Hill. Later tweaked by +** a couple of people on Usenet. Completely overhauled by Rich $alz +** and Jim Berets in August, 1990. +** +** This code is in the public domain and has no copyright. +*/ + +#ifdef HAVE_CONFIG_H +# include +# ifdef HAVE_ALLOCA_H +# include +# endif +#endif + +/* Since the code of getdate.y is not included in the Emacs executable + itself, there is no need to #define static in this file. Even if + the code were included in the Emacs executable, it probably + wouldn't do any harm to #undef it here; this will only cause + problems if we try to write to a static variable, which I don't + think this code needs to do. */ +#ifdef emacs +# undef static +#endif + +#include +#include +#include +#include + +#if HAVE_STDLIB_H +# include /* for `free'; used by Bison 1.27 */ +#endif + +#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) +# define IN_CTYPE_DOMAIN(c) 1 +#else +# define IN_CTYPE_DOMAIN(c) isascii(c) +#endif + +#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) +#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) +#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) +#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) + +/* ISDIGIT differs from ISDIGIT_LOCALE, as follows: + - Its arg may be any int or unsigned int; it need not be an unsigned char. + - It's guaranteed to evaluate its argument exactly once. + - It's typically faster. + Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that + only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless + it's important to use the locale's definition of `digit' even when the + host does not conform to Posix. */ +#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) + +#if defined (STDC_HEADERS) || defined (USG) +# include +#endif + +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __attribute__(x) +#endif + +#ifndef ATTRIBUTE_UNUSED +# define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#endif + +/* Some old versions of bison generate parsers that use bcopy. + That loses on systems that don't provide the function, so we have + to redefine it here. */ +#if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy) +# define bcopy(from, to, len) memcpy ((to), (from), (len)) +#endif + +/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), + as well as gratuitiously global symbol names, so we can have multiple + yacc generated parsers in the same program. Note that these are only + the variables produced by yacc. If other parser generators (bison, + byacc, etc) produce additional global names that conflict at link time, + then those parser generators need to be fixed instead of adding those + names to this list. */ + +#define yymaxdepth gd_maxdepth +#define yyparse gd_parse +#define yylex gd_lex +#define yyerror gd_error +#define yylval gd_lval +#define yychar gd_char +#define yydebug gd_debug +#define yypact gd_pact +#define yyr1 gd_r1 +#define yyr2 gd_r2 +#define yydef gd_def +#define yychk gd_chk +#define yypgo gd_pgo +#define yyact gd_act +#define yyexca gd_exca +#define yyerrflag gd_errflag +#define yynerrs gd_nerrs +#define yyps gd_ps +#define yypv gd_pv +#define yys gd_s +#define yy_yys gd_yys +#define yystate gd_state +#define yytmp gd_tmp +#define yyv gd_v +#define yy_yyv gd_yyv +#define yyval gd_val +#define yylloc gd_lloc +#define yyreds gd_reds /* With YYDEBUG defined */ +#define yytoks gd_toks /* With YYDEBUG defined */ +#define yylhs gd_yylhs +#define yylen gd_yylen +#define yydefred gd_yydefred +#define yydgoto gd_yydgoto +#define yysindex gd_yysindex +#define yyrindex gd_yyrindex +#define yygindex gd_yygindex +#define yytable gd_yytable +#define yycheck gd_yycheck + +static int yylex (); +static int yyerror (); + +#define EPOCH 1970 +#define HOUR(x) ((x) * 60) + +#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */ + +/* +** An entry in the lexical lookup table. +*/ +typedef struct _TABLE { + const char *name; + int type; + int value; +} TABLE; + + +/* +** Meridian: am, pm, or 24-hour style. +*/ +typedef enum _MERIDIAN { + MERam, MERpm, MER24 +} MERIDIAN; + + +/* +** Global variables. We could get rid of most of these by using a good +** union as the yacc stack. (This routine was originally written before +** yacc had the %union construct.) Maybe someday; right now we only use +** the %union very rarely. +*/ +static const char *yyInput; +static int yyDayOrdinal; +static int yyDayNumber; +static int yyHaveDate; +static int yyHaveDay; +static int yyHaveRel; +static int yyHaveTime; +static int yyHaveZone; +static int yyTimezone; +static int yyDay; +static int yyHour; +static int yyMinutes; +static int yyMonth; +static int yySeconds; +static int yyYear; +static MERIDIAN yyMeridian; +static int yyRelDay; +static int yyRelHour; +static int yyRelMinutes; +static int yyRelMonth; +static int yyRelSeconds; +static int yyRelYear; + + +#line 184 "getdate.y" +typedef union { + int Number; + enum _MERIDIAN Meridian; +} YYSTYPE; +#include + +#ifndef __cplusplus +#ifndef __STDC__ +#ifndef const +#define const +#endif +#endif +#endif + + + +#define YYFINAL 61 +#define YYFLAG -32768 +#define YYNTBASE 22 + +#define YYTRANSLATE(x) ((unsigned)(x) <= 272 ? yytranslate[x] : 32) + +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 20, 2, 2, 21, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 19, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18 +}; + +#if YYDEBUG != 0 +static const short yyprhs[] = { 0, + 0, 1, 4, 6, 8, 10, 12, 14, 16, 19, + 24, 29, 36, 43, 45, 47, 50, 52, 55, 58, + 62, 68, 72, 76, 79, 84, 87, 91, 94, 96, + 99, 102, 104, 107, 110, 112, 115, 118, 120, 123, + 126, 128, 131, 134, 136, 139, 142, 144, 146, 147 +}; + +static const short yyrhs[] = { -1, + 22, 23, 0, 24, 0, 25, 0, 27, 0, 26, + 0, 28, 0, 30, 0, 16, 10, 0, 16, 19, + 16, 31, 0, 16, 19, 16, 15, 0, 16, 19, + 16, 19, 16, 31, 0, 16, 19, 16, 19, 16, + 15, 0, 18, 0, 6, 0, 18, 7, 0, 4, + 0, 4, 20, 0, 16, 4, 0, 16, 21, 16, + 0, 16, 21, 16, 21, 16, 0, 16, 15, 15, + 0, 16, 12, 15, 0, 12, 16, 0, 12, 16, + 20, 16, 0, 16, 12, 0, 16, 12, 16, 0, + 29, 3, 0, 29, 0, 16, 17, 0, 15, 17, + 0, 17, 0, 16, 13, 0, 15, 13, 0, 13, + 0, 16, 5, 0, 15, 5, 0, 5, 0, 16, + 8, 0, 15, 8, 0, 8, 0, 16, 11, 0, + 15, 11, 0, 11, 0, 16, 14, 0, 15, 14, + 0, 14, 0, 16, 0, 0, 10, 0 +}; + +#endif + +#if YYDEBUG != 0 +static const short yyrline[] = { 0, + 200, 201, 204, 207, 210, 213, 216, 219, 222, 228, + 234, 243, 249, 261, 264, 267, 273, 277, 281, 287, + 291, 309, 315, 321, 325, 330, 334, 341, 349, 352, + 355, 358, 361, 364, 367, 370, 373, 376, 379, 382, + 385, 388, 391, 394, 397, 400, 403, 408, 441, 445 +}; +#endif + + +#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) + +static const char * const yytname[] = { "$","error","$undefined.","tAGO","tDAY", +"tDAY_UNIT","tDAYZONE","tDST","tHOUR_UNIT","tID","tMERIDIAN","tMINUTE_UNIT", +"tMONTH","tMONTH_UNIT","tSEC_UNIT","tSNUMBER","tUNUMBER","tYEAR_UNIT","tZONE", +"':'","','","'/'","spec","item","time","zone","day","date","rel","relunit","number", +"o_merid", NULL +}; +#endif + +static const short yyr1[] = { 0, + 22, 22, 23, 23, 23, 23, 23, 23, 24, 24, + 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, + 27, 27, 27, 27, 27, 27, 27, 28, 28, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 30, 31, 31 +}; + +static const short yyr2[] = { 0, + 0, 2, 1, 1, 1, 1, 1, 1, 2, 4, + 4, 6, 6, 1, 1, 2, 1, 2, 2, 3, + 5, 3, 3, 2, 4, 2, 3, 2, 1, 2, + 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, + 1, 2, 2, 1, 2, 2, 1, 1, 0, 1 +}; + +static const short yydefact[] = { 1, + 0, 17, 38, 15, 41, 44, 0, 35, 47, 0, + 48, 32, 14, 2, 3, 4, 6, 5, 7, 29, + 8, 18, 24, 37, 40, 43, 34, 46, 31, 19, + 36, 39, 9, 42, 26, 33, 45, 0, 30, 0, + 0, 16, 28, 0, 23, 27, 22, 49, 20, 25, + 50, 11, 0, 10, 0, 49, 21, 13, 12, 0, + 0 +}; + +static const short yydefgoto[] = { 1, + 14, 15, 16, 17, 18, 19, 20, 21, 54 +}; + +static const short yypact[] = {-32768, + 0, -19,-32768,-32768,-32768,-32768, -13,-32768,-32768, 30, + 15,-32768, 14,-32768,-32768,-32768,-32768,-32768,-32768, 19, +-32768,-32768, 4,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, -6,-32768,-32768, 16,-32768, 17, + 23,-32768,-32768, 24,-32768,-32768,-32768, 27, 28,-32768, +-32768,-32768, 29,-32768, 32, -8,-32768,-32768,-32768, 50, +-32768 +}; + +static const short yypgoto[] = {-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -5 +}; + + +#define YYLAST 51 + + +static const short yytable[] = { 60, + 22, 51, 23, 2, 3, 4, 58, 5, 45, 46, + 6, 7, 8, 9, 10, 11, 12, 13, 30, 31, + 42, 43, 32, 44, 33, 34, 35, 36, 37, 38, + 47, 39, 48, 40, 24, 41, 51, 25, 49, 50, + 26, 52, 27, 28, 56, 53, 29, 57, 55, 61, + 59 +}; + +static const short yycheck[] = { 0, + 20, 10, 16, 4, 5, 6, 15, 8, 15, 16, + 11, 12, 13, 14, 15, 16, 17, 18, 4, 5, + 7, 3, 8, 20, 10, 11, 12, 13, 14, 15, + 15, 17, 16, 19, 5, 21, 10, 8, 16, 16, + 11, 15, 13, 14, 16, 19, 17, 16, 21, 0, + 56 +}; +/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +#line 3 "/boot/apps/GeekGadgets/share/bison.simple" +/* This file comes from bison-1.27. */ + +/* Skeleton output parser for bison, + Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +#ifndef YYSTACK_USE_ALLOCA +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ +#ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#else /* not GNU C. */ +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA +#include +#else /* not sparc */ +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ +#include +#endif +#else /* not MSDOS, or __TURBOC__ */ +#if defined(_AIX) +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include */ + #pragma alloca +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#endif /* __hpux */ +#endif +#endif /* not _AIX */ +#endif /* not MSDOS, or __TURBOC__ */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ + +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif + +/* Note: there must be only one dollar sign in this file. + It is replaced by the list of actions, each action + as one case of the switch. */ + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY -2 +#define YYEOF 0 +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 +/* Like YYERROR except do call yyerror. + This remains here temporarily to ease the + transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ +#define YYFAIL goto yyerrlab +#define YYRECOVERING() (!!yyerrstatus) +#define YYBACKUP(token, value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { yychar = (token), yylval = (value); \ + yychar1 = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { yyerror ("syntax error: cannot back up"); YYERROR; } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +#ifndef YYPURE +#define YYLEX yylex() +#endif + +#ifdef YYPURE +#ifdef YYLSP_NEEDED +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval, &yylloc) +#endif +#else /* not YYLSP_NEEDED */ +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval) +#endif +#endif /* not YYLSP_NEEDED */ +#endif + +/* If nonreentrant, generate the variables here */ + +#ifndef YYPURE + +int yychar; /* the lookahead symbol */ +YYSTYPE yylval; /* the semantic value of the */ + /* lookahead symbol */ + +#ifdef YYLSP_NEEDED +YYLTYPE yylloc; /* location data for the lookahead */ + /* symbol */ +#endif + +int yynerrs; /* number of parse errors so far */ +#endif /* not YYPURE */ + +#if YYDEBUG != 0 +int yydebug; /* nonzero means print parse trace */ +/* Since this is uninitialized, it does not stop multiple parsers + from coexisting. */ +#endif + +/* YYINITDEPTH indicates the initial size of the parser's stacks */ + +#ifndef YYINITDEPTH +#define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH is the maximum size the stacks can grow to + (effective only if the built-in stack extension method is used). */ + +#if YYMAXDEPTH == 0 +#undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +#define YYMAXDEPTH 10000 +#endif + +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + +#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ +#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) +#else /* not GNU C or C++ */ +#ifndef __cplusplus + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (to, from, count) + char *to; + char *from; + unsigned int count; +{ + register char *f = from; + register char *t = to; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#else /* __cplusplus */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (char *to, char *from, unsigned int count) +{ + register char *t = to; + register char *f = from; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#endif +#endif + +#line 216 "/boot/apps/GeekGadgets/share/bison.simple" + +/* The user can define YYPARSE_PARAM as the name of an argument to be passed + into yyparse. The argument should have type void *. + It should actually point to an object. + Grammar actions can access the variable by casting it + to the proper pointer type. */ + +#ifdef YYPARSE_PARAM +#ifdef __cplusplus +#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +#define YYPARSE_PARAM_DECL +#else /* not __cplusplus */ +#define YYPARSE_PARAM_ARG YYPARSE_PARAM +#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +#endif /* not __cplusplus */ +#else /* not YYPARSE_PARAM */ +#define YYPARSE_PARAM_ARG +#define YYPARSE_PARAM_DECL +#endif /* not YYPARSE_PARAM */ + +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + +int +yyparse(YYPARSE_PARAM_ARG) + YYPARSE_PARAM_DECL +{ + register int yystate; + register int yyn; + register short *yyssp; + register YYSTYPE *yyvsp; + int yyerrstatus; /* number of tokens to shift before error messages enabled */ + int yychar1 = 0; /* lookahead token as an internal (translated) token number */ + + short yyssa[YYINITDEPTH]; /* the state stack */ + YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + + short *yyss = yyssa; /* refer to the stacks thru separate pointers */ + YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + +#ifdef YYLSP_NEEDED + YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#else +#define YYPOPSTACK (yyvsp--, yyssp--) +#endif + + int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; + +#ifdef YYPURE + int yychar; + YYSTYPE yylval; + int yynerrs; +#ifdef YYLSP_NEEDED + YYLTYPE yylloc; +#endif +#endif + + YYSTYPE yyval; /* the variable used to return */ + /* semantic values from the action */ + /* routines */ + + int yylen; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Starting parse\n"); +#endif + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss - 1; + yyvsp = yyvs; +#ifdef YYLSP_NEEDED + yylsp = yyls; +#endif + +/* Push a new state, which is found in yystate . */ +/* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. */ +yynewstate: + + *++yyssp = yystate; + + if (yyssp >= yyss + yystacksize - 1) + { + /* Give user a chance to reallocate the stack */ + /* Use copies of these so that the &'s don't force the real ones into memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; +#ifdef YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; +#endif + + /* Get the current used size of the three stacks, in elements. */ + int size = yyssp - yyss + 1; + +#ifdef yyoverflow + /* Each stack pointer address is followed by the size of + the data in use in that stack, in bytes. */ +#ifdef YYLSP_NEEDED + /* This used to be a conditional around just the two extra args, + but that might be undefined if yyoverflow is a macro. */ + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yyls1, size * sizeof (*yylsp), + &yystacksize); +#else + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yystacksize); +#endif + + yyss = yyss1; yyvs = yyvs1; +#ifdef YYLSP_NEEDED + yyls = yyls1; +#endif +#else /* no yyoverflow */ + /* Extend the stack our own way. */ + if (yystacksize >= YYMAXDEPTH) + { + yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 2; + } + yystacksize *= 2; + if (yystacksize > YYMAXDEPTH) + yystacksize = YYMAXDEPTH; +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); +#ifdef YYLSP_NEEDED + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); +#endif +#endif /* no yyoverflow */ + + yyssp = yyss + size - 1; + yyvsp = yyvs + size - 1; +#ifdef YYLSP_NEEDED + yylsp = yyls + size - 1; +#endif + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Stack size increased to %d\n", yystacksize); +#endif + + if (yyssp >= yyss + yystacksize - 1) + YYABORT; + } + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Entering state %d\n", yystate); +#endif + + goto yybackup; + yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* yychar is either YYEMPTY or YYEOF + or a valid token in external form. */ + + if (yychar == YYEMPTY) + { +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Reading a token: "); +#endif + yychar = YYLEX; + } + + /* Convert token to internal form (in yychar1) for indexing tables with */ + + if (yychar <= 0) /* This means end of input. */ + { + yychar1 = 0; + yychar = YYEOF; /* Don't call YYLEX any more */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Now at end of input.\n"); +#endif + } + else + { + yychar1 = YYTRANSLATE(yychar); + +#if YYDEBUG != 0 + if (yydebug) + { + fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise meaning + of a token, for further debugging info. */ +#ifdef YYPRINT + YYPRINT (stderr, yychar, yylval); +#endif + fprintf (stderr, ")\n"); + } +#endif + } + + yyn += yychar1; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + goto yydefault; + + yyn = yytable[yyn]; + + /* yyn is what to do for this token type in this state. + Negative => reduce, -yyn is rule number. + Positive => shift, yyn is new state. + New state is final state => don't bother to shift, + just return success. + 0, or most negative number => error. */ + + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrlab; + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the lookahead token. */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); +#endif + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + /* count tokens shifted since error; after three, turn off error status. */ + if (yyerrstatus) yyerrstatus--; + + yystate = yyn; + goto yynewstate; + +/* Do the default action for the current state. */ +yydefault: + + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + +/* Do a reduction. yyn is the number of a rule to reduce with. */ +yyreduce: + yylen = yyr2[yyn]; + if (yylen > 0) + yyval = yyvsp[1-yylen]; /* implement default value of the action */ + +#if YYDEBUG != 0 + if (yydebug) + { + int i; + + fprintf (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); + + /* Print the symbols being reduced, and their result. */ + for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) + fprintf (stderr, "%s ", yytname[yyrhs[i]]); + fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + } +#endif + + + switch (yyn) { + +case 3: +#line 204 "getdate.y" +{ + yyHaveTime++; + ; + break;} +case 4: +#line 207 "getdate.y" +{ + yyHaveZone++; + ; + break;} +case 5: +#line 210 "getdate.y" +{ + yyHaveDate++; + ; + break;} +case 6: +#line 213 "getdate.y" +{ + yyHaveDay++; + ; + break;} +case 7: +#line 216 "getdate.y" +{ + yyHaveRel++; + ; + break;} +case 9: +#line 222 "getdate.y" +{ + yyHour = yyvsp[-1].Number; + yyMinutes = 0; + yySeconds = 0; + yyMeridian = yyvsp[0].Meridian; + ; + break;} +case 10: +#line 228 "getdate.y" +{ + yyHour = yyvsp[-3].Number; + yyMinutes = yyvsp[-1].Number; + yySeconds = 0; + yyMeridian = yyvsp[0].Meridian; + ; + break;} +case 11: +#line 234 "getdate.y" +{ + yyHour = yyvsp[-3].Number; + yyMinutes = yyvsp[-1].Number; + yyMeridian = MER24; + yyHaveZone++; + yyTimezone = (yyvsp[0].Number < 0 + ? -yyvsp[0].Number % 100 + (-yyvsp[0].Number / 100) * 60 + : - (yyvsp[0].Number % 100 + (yyvsp[0].Number / 100) * 60)); + ; + break;} +case 12: +#line 243 "getdate.y" +{ + yyHour = yyvsp[-5].Number; + yyMinutes = yyvsp[-3].Number; + yySeconds = yyvsp[-1].Number; + yyMeridian = yyvsp[0].Meridian; + ; + break;} +case 13: +#line 249 "getdate.y" +{ + yyHour = yyvsp[-5].Number; + yyMinutes = yyvsp[-3].Number; + yySeconds = yyvsp[-1].Number; + yyMeridian = MER24; + yyHaveZone++; + yyTimezone = (yyvsp[0].Number < 0 + ? -yyvsp[0].Number % 100 + (-yyvsp[0].Number / 100) * 60 + : - (yyvsp[0].Number % 100 + (yyvsp[0].Number / 100) * 60)); + ; + break;} +case 14: +#line 261 "getdate.y" +{ + yyTimezone = yyvsp[0].Number; + ; + break;} +case 15: +#line 264 "getdate.y" +{ + yyTimezone = yyvsp[0].Number - 60; + ; + break;} +case 16: +#line 268 "getdate.y" +{ + yyTimezone = yyvsp[-1].Number - 60; + ; + break;} +case 17: +#line 273 "getdate.y" +{ + yyDayOrdinal = 1; + yyDayNumber = yyvsp[0].Number; + ; + break;} +case 18: +#line 277 "getdate.y" +{ + yyDayOrdinal = 1; + yyDayNumber = yyvsp[-1].Number; + ; + break;} +case 19: +#line 281 "getdate.y" +{ + yyDayOrdinal = yyvsp[-1].Number; + yyDayNumber = yyvsp[0].Number; + ; + break;} +case 20: +#line 287 "getdate.y" +{ + yyMonth = yyvsp[-2].Number; + yyDay = yyvsp[0].Number; + ; + break;} +case 21: +#line 291 "getdate.y" +{ + /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY. + The goal in recognizing YYYY/MM/DD is solely to support legacy + machine-generated dates like those in an RCS log listing. If + you want portability, use the ISO 8601 format. */ + if (yyvsp[-4].Number >= 1000) + { + yyYear = yyvsp[-4].Number; + yyMonth = yyvsp[-2].Number; + yyDay = yyvsp[0].Number; + } + else + { + yyMonth = yyvsp[-4].Number; + yyDay = yyvsp[-2].Number; + yyYear = yyvsp[0].Number; + } + ; + break;} +case 22: +#line 309 "getdate.y" +{ + /* ISO 8601 format. yyyy-mm-dd. */ + yyYear = yyvsp[-2].Number; + yyMonth = -yyvsp[-1].Number; + yyDay = -yyvsp[0].Number; + ; + break;} +case 23: +#line 315 "getdate.y" +{ + /* e.g. 17-JUN-1992. */ + yyDay = yyvsp[-2].Number; + yyMonth = yyvsp[-1].Number; + yyYear = -yyvsp[0].Number; + ; + break;} +case 24: +#line 321 "getdate.y" +{ + yyMonth = yyvsp[-1].Number; + yyDay = yyvsp[0].Number; + ; + break;} +case 25: +#line 325 "getdate.y" +{ + yyMonth = yyvsp[-3].Number; + yyDay = yyvsp[-2].Number; + yyYear = yyvsp[0].Number; + ; + break;} +case 26: +#line 330 "getdate.y" +{ + yyMonth = yyvsp[0].Number; + yyDay = yyvsp[-1].Number; + ; + break;} +case 27: +#line 334 "getdate.y" +{ + yyMonth = yyvsp[-1].Number; + yyDay = yyvsp[-2].Number; + yyYear = yyvsp[0].Number; + ; + break;} +case 28: +#line 341 "getdate.y" +{ + yyRelSeconds = -yyRelSeconds; + yyRelMinutes = -yyRelMinutes; + yyRelHour = -yyRelHour; + yyRelDay = -yyRelDay; + yyRelMonth = -yyRelMonth; + yyRelYear = -yyRelYear; + ; + break;} +case 30: +#line 352 "getdate.y" +{ + yyRelYear += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 31: +#line 355 "getdate.y" +{ + yyRelYear += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 32: +#line 358 "getdate.y" +{ + yyRelYear += yyvsp[0].Number; + ; + break;} +case 33: +#line 361 "getdate.y" +{ + yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 34: +#line 364 "getdate.y" +{ + yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 35: +#line 367 "getdate.y" +{ + yyRelMonth += yyvsp[0].Number; + ; + break;} +case 36: +#line 370 "getdate.y" +{ + yyRelDay += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 37: +#line 373 "getdate.y" +{ + yyRelDay += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 38: +#line 376 "getdate.y" +{ + yyRelDay += yyvsp[0].Number; + ; + break;} +case 39: +#line 379 "getdate.y" +{ + yyRelHour += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 40: +#line 382 "getdate.y" +{ + yyRelHour += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 41: +#line 385 "getdate.y" +{ + yyRelHour += yyvsp[0].Number; + ; + break;} +case 42: +#line 388 "getdate.y" +{ + yyRelMinutes += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 43: +#line 391 "getdate.y" +{ + yyRelMinutes += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 44: +#line 394 "getdate.y" +{ + yyRelMinutes += yyvsp[0].Number; + ; + break;} +case 45: +#line 397 "getdate.y" +{ + yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 46: +#line 400 "getdate.y" +{ + yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number; + ; + break;} +case 47: +#line 403 "getdate.y" +{ + yyRelSeconds += yyvsp[0].Number; + ; + break;} +case 48: +#line 409 "getdate.y" +{ + if (yyHaveTime && yyHaveDate && !yyHaveRel) + yyYear = yyvsp[0].Number; + else + { + if (yyvsp[0].Number>10000) + { + yyHaveDate++; + yyDay= (yyvsp[0].Number)%100; + yyMonth= (yyvsp[0].Number/100)%100; + yyYear = yyvsp[0].Number/10000; + } + else + { + yyHaveTime++; + if (yyvsp[0].Number < 100) + { + yyHour = yyvsp[0].Number; + yyMinutes = 0; + } + else + { + yyHour = yyvsp[0].Number / 100; + yyMinutes = yyvsp[0].Number % 100; + } + yySeconds = 0; + yyMeridian = MER24; + } + } + ; + break;} +case 49: +#line 442 "getdate.y" +{ + yyval.Meridian = MER24; + ; + break;} +case 50: +#line 446 "getdate.y" +{ + yyval.Meridian = yyvsp[0].Meridian; + ; + break;} +} + /* the action file gets copied in in place of this dollarsign */ +#line 542 "/boot/apps/GeekGadgets/share/bison.simple" + + yyvsp -= yylen; + yyssp -= yylen; +#ifdef YYLSP_NEEDED + yylsp -= yylen; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + + *++yyvsp = yyval; + +#ifdef YYLSP_NEEDED + yylsp++; + if (yylen == 0) + { + yylsp->first_line = yylloc.first_line; + yylsp->first_column = yylloc.first_column; + yylsp->last_line = (yylsp-1)->last_line; + yylsp->last_column = (yylsp-1)->last_column; + yylsp->text = 0; + } + else + { + yylsp->last_line = (yylsp+yylen-1)->last_line; + yylsp->last_column = (yylsp+yylen-1)->last_column; + } +#endif + + /* Now "shift" the result of the reduction. + Determine what state that goes to, + based on the state we popped back to + and the rule number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTBASE] + *yyssp; + if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTBASE]; + + goto yynewstate; + +yyerrlab: /* here on detecting error */ + + if (! yyerrstatus) + /* If not already recovering from an error, report this error. */ + { + ++yynerrs; + +#ifdef YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (yyn > YYFLAG && yyn < YYLAST) + { + int size = 0; + char *msg; + int x, count; + + count = 0; + /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + size += strlen(yytname[x]) + 15, count++; + msg = (char *) malloc(size + 15); + if (msg != 0) + { + strcpy(msg, "parse error"); + + if (count < 5) + { + count = 0; + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + { + strcat(msg, count == 0 ? ", expecting `" : " or `"); + strcat(msg, yytname[x]); + strcat(msg, "'"); + count++; + } + } + yyerror(msg); + free(msg); + } + else + yyerror ("parse error; also virtual memory exceeded"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror("parse error"); + } + + goto yyerrlab1; +yyerrlab1: /* here on error raised explicitly by an action */ + + if (yyerrstatus == 3) + { + /* if just tried and failed to reuse lookahead token after an error, discard it. */ + + /* return failure if at end of input */ + if (yychar == YYEOF) + YYABORT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#endif + + yychar = YYEMPTY; + } + + /* Else will try to reuse lookahead token + after shifting the error token. */ + + yyerrstatus = 3; /* Each real token shifted decrements this */ + + goto yyerrhandle; + +yyerrdefault: /* current state does not do anything special for the error token. */ + +#if 0 + /* This is wrong; only states that explicitly want error tokens + should shift them. */ + yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ + if (yyn) goto yydefault; +#endif + +yyerrpop: /* pop the current state because it cannot handle the error token */ + + if (yyssp == yyss) YYABORT; + yyvsp--; + yystate = *--yyssp; +#ifdef YYLSP_NEEDED + yylsp--; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "Error: state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + +yyerrhandle: + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yyerrdefault; + + yyn += YYTERROR; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) + goto yyerrdefault; + + yyn = yytable[yyn]; + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrpop; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrpop; + + if (yyn == YYFINAL) + YYACCEPT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting error token, "); +#endif + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + yystate = yyn; + goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; +} +#line 451 "getdate.y" + + +/* Include this file down here because bison inserts code above which + may define-away `const'. We want the prototype for get_date to have + the same signature as the function definition does. */ +#include "getdate.h" + +extern struct tm *gmtime (); +extern struct tm *localtime (); +extern time_t mktime (); + +/* Month and day table. */ +static TABLE const MonthDayTable[] = { + { "january", tMONTH, 1 }, + { "february", tMONTH, 2 }, + { "march", tMONTH, 3 }, + { "april", tMONTH, 4 }, + { "may", tMONTH, 5 }, + { "june", tMONTH, 6 }, + { "july", tMONTH, 7 }, + { "august", tMONTH, 8 }, + { "september", tMONTH, 9 }, + { "sept", tMONTH, 9 }, + { "october", tMONTH, 10 }, + { "november", tMONTH, 11 }, + { "december", tMONTH, 12 }, + { "sunday", tDAY, 0 }, + { "monday", tDAY, 1 }, + { "tuesday", tDAY, 2 }, + { "tues", tDAY, 2 }, + { "wednesday", tDAY, 3 }, + { "wednes", tDAY, 3 }, + { "thursday", tDAY, 4 }, + { "thur", tDAY, 4 }, + { "thurs", tDAY, 4 }, + { "friday", tDAY, 5 }, + { "saturday", tDAY, 6 }, + { NULL, 0, 0 } +}; + +/* Time units table. */ +static TABLE const UnitsTable[] = { + { "year", tYEAR_UNIT, 1 }, + { "month", tMONTH_UNIT, 1 }, + { "fortnight", tDAY_UNIT, 14 }, + { "week", tDAY_UNIT, 7 }, + { "day", tDAY_UNIT, 1 }, + { "hour", tHOUR_UNIT, 1 }, + { "minute", tMINUTE_UNIT, 1 }, + { "min", tMINUTE_UNIT, 1 }, + { "second", tSEC_UNIT, 1 }, + { "sec", tSEC_UNIT, 1 }, + { NULL, 0, 0 } +}; + +/* Assorted relative-time words. */ +static TABLE const OtherTable[] = { + { "tomorrow", tMINUTE_UNIT, 1 * 24 * 60 }, + { "yesterday", tMINUTE_UNIT, -1 * 24 * 60 }, + { "today", tMINUTE_UNIT, 0 }, + { "now", tMINUTE_UNIT, 0 }, + { "last", tUNUMBER, -1 }, + { "this", tMINUTE_UNIT, 0 }, + { "next", tUNUMBER, 1 }, + { "first", tUNUMBER, 1 }, +/* { "second", tUNUMBER, 2 }, */ + { "third", tUNUMBER, 3 }, + { "fourth", tUNUMBER, 4 }, + { "fifth", tUNUMBER, 5 }, + { "sixth", tUNUMBER, 6 }, + { "seventh", tUNUMBER, 7 }, + { "eighth", tUNUMBER, 8 }, + { "ninth", tUNUMBER, 9 }, + { "tenth", tUNUMBER, 10 }, + { "eleventh", tUNUMBER, 11 }, + { "twelfth", tUNUMBER, 12 }, + { "ago", tAGO, 1 }, + { NULL, 0, 0 } +}; + +/* The timezone table. */ +static TABLE const TimezoneTable[] = { + { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */ + { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */ + { "utc", tZONE, HOUR ( 0) }, + { "wet", tZONE, HOUR ( 0) }, /* Western European */ + { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */ + { "wat", tZONE, HOUR ( 1) }, /* West Africa */ + { "at", tZONE, HOUR ( 2) }, /* Azores */ +#if 0 + /* For completeness. BST is also British Summer, and GST is + * also Guam Standard. */ + { "bst", tZONE, HOUR ( 3) }, /* Brazil Standard */ + { "gst", tZONE, HOUR ( 3) }, /* Greenland Standard */ +#endif +#if 0 + { "nft", tZONE, HOUR (3.5) }, /* Newfoundland */ + { "nst", tZONE, HOUR (3.5) }, /* Newfoundland Standard */ + { "ndt", tDAYZONE, HOUR (3.5) }, /* Newfoundland Daylight */ +#endif + { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */ + { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */ + { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */ + { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */ + { "cst", tZONE, HOUR ( 6) }, /* Central Standard */ + { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */ + { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */ + { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */ + { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */ + { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */ + { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */ + { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */ + { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */ + { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */ + { "cat", tZONE, HOUR (10) }, /* Central Alaska */ + { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */ + { "nt", tZONE, HOUR (11) }, /* Nome */ + { "idlw", tZONE, HOUR (12) }, /* International Date Line West */ + { "cet", tZONE, -HOUR (1) }, /* Central European */ + { "met", tZONE, -HOUR (1) }, /* Middle European */ + { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */ + { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ + { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ + { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */ + { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */ + { "fwt", tZONE, -HOUR (1) }, /* French Winter */ + { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */ + { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */ + { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */ +#if 0 + { "it", tZONE, -HOUR (3.5) },/* Iran */ +#endif + { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */ + { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */ +#if 0 + { "ist", tZONE, -HOUR (5.5) },/* Indian Standard */ +#endif + { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */ +#if 0 + /* For completeness. NST is also Newfoundland Standard, and SST is + * also Swedish Summer. */ + { "nst", tZONE, -HOUR (6.5) },/* North Sumatra */ + { "sst", tZONE, -HOUR (7) }, /* South Sumatra, USSR Zone 6 */ +#endif /* 0 */ + { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */ + { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */ +#if 0 + { "jt", tZONE, -HOUR (7.5) },/* Java (3pm in Cronusland!) */ +#endif + { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */ + { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */ +#if 0 + { "cast", tZONE, -HOUR (9.5) },/* Central Australian Standard */ + { "cadt", tDAYZONE, -HOUR (9.5) },/* Central Australian Daylight */ +#endif + { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */ + { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */ + { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */ + { "nzt", tZONE, -HOUR (12) }, /* New Zealand */ + { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */ + { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */ + { "idle", tZONE, -HOUR (12) }, /* International Date Line East */ + { NULL, 0, 0 } +}; + +/* Military timezone table. */ +static TABLE const MilitaryTable[] = { + { "a", tZONE, HOUR ( 1) }, + { "b", tZONE, HOUR ( 2) }, + { "c", tZONE, HOUR ( 3) }, + { "d", tZONE, HOUR ( 4) }, + { "e", tZONE, HOUR ( 5) }, + { "f", tZONE, HOUR ( 6) }, + { "g", tZONE, HOUR ( 7) }, + { "h", tZONE, HOUR ( 8) }, + { "i", tZONE, HOUR ( 9) }, + { "k", tZONE, HOUR ( 10) }, + { "l", tZONE, HOUR ( 11) }, + { "m", tZONE, HOUR ( 12) }, + { "n", tZONE, HOUR (- 1) }, + { "o", tZONE, HOUR (- 2) }, + { "p", tZONE, HOUR (- 3) }, + { "q", tZONE, HOUR (- 4) }, + { "r", tZONE, HOUR (- 5) }, + { "s", tZONE, HOUR (- 6) }, + { "t", tZONE, HOUR (- 7) }, + { "u", tZONE, HOUR (- 8) }, + { "v", tZONE, HOUR (- 9) }, + { "w", tZONE, HOUR (-10) }, + { "x", tZONE, HOUR (-11) }, + { "y", tZONE, HOUR (-12) }, + { "z", tZONE, HOUR ( 0) }, + { NULL, 0, 0 } +}; + + + + +/* ARGSUSED */ +static int +yyerror (s) + char *s ATTRIBUTE_UNUSED; +{ + return 0; +} + +static int +ToHour (Hours, Meridian) + int Hours; + MERIDIAN Meridian; +{ + switch (Meridian) + { + case MER24: + if (Hours < 0 || Hours > 23) + return -1; + return Hours; + case MERam: + if (Hours < 1 || Hours > 12) + return -1; + if (Hours == 12) + Hours = 0; + return Hours; + case MERpm: + if (Hours < 1 || Hours > 12) + return -1; + if (Hours == 12) + Hours = 0; + return Hours + 12; + default: + abort (); + } + /* NOTREACHED */ +} + +static int +ToYear (Year) + int Year; +{ + if (Year < 0) + Year = -Year; + + /* XPG4 suggests that years 00-68 map to 2000-2068, and + years 69-99 map to 1969-1999. */ + if (Year < 69) + Year += 2000; + else if (Year < 100) + Year += 1900; + + return Year; +} + +static int +LookupWord (buff) + char *buff; +{ + register char *p; + register char *q; + register const TABLE *tp; + int i; + int abbrev; + + /* Make it lowercase. */ + for (p = buff; *p; p++) + if (ISUPPER ((unsigned char) *p)) + *p = tolower (*p); + + if (strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0) + { + yylval.Meridian = MERam; + return tMERIDIAN; + } + if (strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0) + { + yylval.Meridian = MERpm; + return tMERIDIAN; + } + + /* See if we have an abbreviation for a month. */ + if (strlen (buff) == 3) + abbrev = 1; + else if (strlen (buff) == 4 && buff[3] == '.') + { + abbrev = 1; + buff[3] = '\0'; + } + else + abbrev = 0; + + for (tp = MonthDayTable; tp->name; tp++) + { + if (abbrev) + { + if (strncmp (buff, tp->name, 3) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + else if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + + for (tp = TimezoneTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + if (strcmp (buff, "dst") == 0) + return tDST; + + for (tp = UnitsTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + /* Strip off any plural and try the units table again. */ + i = strlen (buff) - 1; + if (buff[i] == 's') + { + buff[i] = '\0'; + for (tp = UnitsTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + buff[i] = 's'; /* Put back for "this" in OtherTable. */ + } + + for (tp = OtherTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + /* Military timezones. */ + if (buff[1] == '\0' && ISALPHA ((unsigned char) *buff)) + { + for (tp = MilitaryTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + + /* Drop out any periods and try the timezone table again. */ + for (i = 0, p = q = buff; *q; q++) + if (*q != '.') + *p++ = *q; + else + i++; + *p = '\0'; + if (i) + for (tp = TimezoneTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + return tID; +} + +static int +yylex () +{ + register unsigned char c; + register char *p; + char buff[20]; + int Count; + int sign; + + for (;;) + { + while (ISSPACE ((unsigned char) *yyInput)) + yyInput++; + + if (ISDIGIT (c = *yyInput) || c == '-' || c == '+') + { + if (c == '-' || c == '+') + { + sign = c == '-' ? -1 : 1; + if (!ISDIGIT (*++yyInput)) + /* skip the '-' sign */ + continue; + } + else + sign = 0; + for (yylval.Number = 0; ISDIGIT (c = *yyInput++);) + yylval.Number = 10 * yylval.Number + c - '0'; + yyInput--; + if (sign < 0) + yylval.Number = -yylval.Number; + return sign ? tSNUMBER : tUNUMBER; + } + if (ISALPHA (c)) + { + for (p = buff; (c = *yyInput++, ISALPHA (c)) || c == '.';) + if (p < &buff[sizeof buff - 1]) + *p++ = c; + *p = '\0'; + yyInput--; + return LookupWord (buff); + } + if (c != '(') + return *yyInput++; + Count = 0; + do + { + c = *yyInput++; + if (c == '\0') + return c; + if (c == '(') + Count++; + else if (c == ')') + Count--; + } + while (Count > 0); + } +} + +#define TM_YEAR_ORIGIN 1900 + +/* Yield A - B, measured in seconds. */ +static long +difftm (struct tm *a, struct tm *b) +{ + int ay = a->tm_year + (TM_YEAR_ORIGIN - 1); + int by = b->tm_year + (TM_YEAR_ORIGIN - 1); + long days = ( + /* difference in day of year */ + a->tm_yday - b->tm_yday + /* + intervening leap days */ + + ((ay >> 2) - (by >> 2)) + - (ay / 100 - by / 100) + + ((ay / 100 >> 2) - (by / 100 >> 2)) + /* + difference in years * 365 */ + + (long) (ay - by) * 365 + ); + return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) + + (a->tm_min - b->tm_min)) + + (a->tm_sec - b->tm_sec)); +} + +time_t +get_date (const char *p, const time_t *now) +{ + struct tm tm, tm0, *tmp; + time_t Start; + + yyInput = p; + Start = now ? *now : time ((time_t *) NULL); + tmp = localtime (&Start); + if (!tmp) + return -1; + yyYear = tmp->tm_year + TM_YEAR_ORIGIN; + yyMonth = tmp->tm_mon + 1; + yyDay = tmp->tm_mday; + yyHour = tmp->tm_hour; + yyMinutes = tmp->tm_min; + yySeconds = tmp->tm_sec; + tm.tm_isdst = tmp->tm_isdst; + yyMeridian = MER24; + yyRelSeconds = 0; + yyRelMinutes = 0; + yyRelHour = 0; + yyRelDay = 0; + yyRelMonth = 0; + yyRelYear = 0; + yyHaveDate = 0; + yyHaveDay = 0; + yyHaveRel = 0; + yyHaveTime = 0; + yyHaveZone = 0; + + if (yyparse () + || yyHaveTime > 1 || yyHaveZone > 1 || yyHaveDate > 1 || yyHaveDay > 1) + return -1; + + tm.tm_year = ToYear (yyYear) - TM_YEAR_ORIGIN + yyRelYear; + tm.tm_mon = yyMonth - 1 + yyRelMonth; + tm.tm_mday = yyDay + yyRelDay; + if (yyHaveTime || (yyHaveRel && !yyHaveDate && !yyHaveDay)) + { + tm.tm_hour = ToHour (yyHour, yyMeridian); + if (tm.tm_hour < 0) + return -1; + tm.tm_min = yyMinutes; + tm.tm_sec = yySeconds; + } + else + { + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + } + tm.tm_hour += yyRelHour; + tm.tm_min += yyRelMinutes; + tm.tm_sec += yyRelSeconds; + + /* Let mktime deduce tm_isdst if we have an absolute timestamp, + or if the relative timestamp mentions days, months, or years. */ + if (yyHaveDate | yyHaveDay | yyHaveTime | yyRelDay | yyRelMonth | yyRelYear) + tm.tm_isdst = -1; + + tm0 = tm; + + Start = mktime (&tm); + + if (Start == (time_t) -1) + { + + /* Guard against falsely reporting errors near the time_t boundaries + when parsing times in other time zones. For example, if the min + time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead + of UTC, then the min localtime value is 1970-01-01 08:00:00; if + we apply mktime to 1970-01-01 00:00:00 we will get an error, so + we apply mktime to 1970-01-02 08:00:00 instead and adjust the time + zone by 24 hours to compensate. This algorithm assumes that + there is no DST transition within a day of the time_t boundaries. */ + if (yyHaveZone) + { + tm = tm0; + if (tm.tm_year <= EPOCH - TM_YEAR_ORIGIN) + { + tm.tm_mday++; + yyTimezone -= 24 * 60; + } + else + { + tm.tm_mday--; + yyTimezone += 24 * 60; + } + Start = mktime (&tm); + } + + if (Start == (time_t) -1) + return Start; + } + + if (yyHaveDay && !yyHaveDate) + { + tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7 + + 7 * (yyDayOrdinal - (0 < yyDayOrdinal))); + Start = mktime (&tm); + if (Start == (time_t) -1) + return Start; + } + + if (yyHaveZone) + { + long delta; + struct tm *gmt = gmtime (&Start); + if (!gmt) + return -1; + delta = yyTimezone * 60L + difftm (&tm, gmt); + if ((Start + delta < Start) != (delta < 0)) + return -1; /* time_t overflow */ + Start += delta; + } + + return Start; +} + +#if defined (TEST) + +/* ARGSUSED */ +int +main (ac, av) + int ac; + char *av[]; +{ + char buff[MAX_BUFF_LEN + 1]; + time_t d; + + (void) printf ("Enter date, or blank line to exit.\n\t> "); + (void) fflush (stdout); + + buff[MAX_BUFF_LEN] = 0; + while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0]) + { + d = get_date (buff, (time_t *) NULL); + if (d == -1) + (void) printf ("Bad format - couldn't convert.\n"); + else + (void) printf ("%s", ctime (&d)); + (void) printf ("\t> "); + (void) fflush (stdout); + } + exit (0); + /* NOTREACHED */ +} +#endif /* defined (TEST) */ diff --git a/lib/getdate.h b/lib/getdate.h new file mode 100644 index 000000000..674c474f1 --- /dev/null +++ b/lib/getdate.h @@ -0,0 +1,46 @@ +/* Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +#ifdef vms +# include +# include +#else +# include +# if TIME_WITH_SYS_TIME +# include +# include +# else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif +#endif /* defined (vms) */ + +time_t get_date PARAMS ((const char *p, const time_t *now)); diff --git a/lib/getdate.y b/lib/getdate.y new file mode 100644 index 000000000..d60be3cf0 --- /dev/null +++ b/lib/getdate.y @@ -0,0 +1,1051 @@ +%{ +/* +** Originally written by Steven M. Bellovin while +** at the University of North Carolina at Chapel Hill. Later tweaked by +** a couple of people on Usenet. Completely overhauled by Rich $alz +** and Jim Berets in August, 1990. +** +** This code is in the public domain and has no copyright. +*/ + +#ifdef HAVE_CONFIG_H +# include +# ifdef HAVE_ALLOCA_H +# include +# endif +#endif + +/* Since the code of getdate.y is not included in the Emacs executable + itself, there is no need to #define static in this file. Even if + the code were included in the Emacs executable, it probably + wouldn't do any harm to #undef it here; this will only cause + problems if we try to write to a static variable, which I don't + think this code needs to do. */ +#ifdef emacs +# undef static +#endif + +#include +#include +#include +#include + +#if HAVE_STDLIB_H +# include /* for `free'; used by Bison 1.27 */ +#endif + +#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) +# define IN_CTYPE_DOMAIN(c) 1 +#else +# define IN_CTYPE_DOMAIN(c) isascii(c) +#endif + +#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) +#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) +#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) +#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) + +/* ISDIGIT differs from ISDIGIT_LOCALE, as follows: + - Its arg may be any int or unsigned int; it need not be an unsigned char. + - It's guaranteed to evaluate its argument exactly once. + - It's typically faster. + Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that + only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless + it's important to use the locale's definition of `digit' even when the + host does not conform to Posix. */ +#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) + +#if defined (STDC_HEADERS) || defined (USG) +# include +#endif + +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __attribute__(x) +#endif + +#ifndef ATTRIBUTE_UNUSED +# define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#endif + +/* Some old versions of bison generate parsers that use bcopy. + That loses on systems that don't provide the function, so we have + to redefine it here. */ +#if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy) +# define bcopy(from, to, len) memcpy ((to), (from), (len)) +#endif + +/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), + as well as gratuitiously global symbol names, so we can have multiple + yacc generated parsers in the same program. Note that these are only + the variables produced by yacc. If other parser generators (bison, + byacc, etc) produce additional global names that conflict at link time, + then those parser generators need to be fixed instead of adding those + names to this list. */ + +#define yymaxdepth gd_maxdepth +#define yyparse gd_parse +#define yylex gd_lex +#define yyerror gd_error +#define yylval gd_lval +#define yychar gd_char +#define yydebug gd_debug +#define yypact gd_pact +#define yyr1 gd_r1 +#define yyr2 gd_r2 +#define yydef gd_def +#define yychk gd_chk +#define yypgo gd_pgo +#define yyact gd_act +#define yyexca gd_exca +#define yyerrflag gd_errflag +#define yynerrs gd_nerrs +#define yyps gd_ps +#define yypv gd_pv +#define yys gd_s +#define yy_yys gd_yys +#define yystate gd_state +#define yytmp gd_tmp +#define yyv gd_v +#define yy_yyv gd_yyv +#define yyval gd_val +#define yylloc gd_lloc +#define yyreds gd_reds /* With YYDEBUG defined */ +#define yytoks gd_toks /* With YYDEBUG defined */ +#define yylhs gd_yylhs +#define yylen gd_yylen +#define yydefred gd_yydefred +#define yydgoto gd_yydgoto +#define yysindex gd_yysindex +#define yyrindex gd_yyrindex +#define yygindex gd_yygindex +#define yytable gd_yytable +#define yycheck gd_yycheck + +static int yylex (); +static int yyerror (); + +#define EPOCH 1970 +#define HOUR(x) ((x) * 60) + +#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */ + +/* +** An entry in the lexical lookup table. +*/ +typedef struct _TABLE { + const char *name; + int type; + int value; +} TABLE; + + +/* +** Meridian: am, pm, or 24-hour style. +*/ +typedef enum _MERIDIAN { + MERam, MERpm, MER24 +} MERIDIAN; + + +/* +** Global variables. We could get rid of most of these by using a good +** union as the yacc stack. (This routine was originally written before +** yacc had the %union construct.) Maybe someday; right now we only use +** the %union very rarely. +*/ +static const char *yyInput; +static int yyDayOrdinal; +static int yyDayNumber; +static int yyHaveDate; +static int yyHaveDay; +static int yyHaveRel; +static int yyHaveTime; +static int yyHaveZone; +static int yyTimezone; +static int yyDay; +static int yyHour; +static int yyMinutes; +static int yyMonth; +static int yySeconds; +static int yyYear; +static MERIDIAN yyMeridian; +static int yyRelDay; +static int yyRelHour; +static int yyRelMinutes; +static int yyRelMonth; +static int yyRelSeconds; +static int yyRelYear; + +%} + +/* This grammar has 13 shift/reduce conflicts. */ +%expect 13 + +%union { + int Number; + enum _MERIDIAN Meridian; +} + +%token tAGO tDAY tDAY_UNIT tDAYZONE tDST tHOUR_UNIT tID +%token tMERIDIAN tMINUTE_UNIT tMONTH tMONTH_UNIT +%token tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE + +%type tDAY tDAY_UNIT tDAYZONE tHOUR_UNIT tMINUTE_UNIT +%type tMONTH tMONTH_UNIT +%type tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE +%type tMERIDIAN o_merid + +%% + +spec : /* NULL */ + | spec item + ; + +item : time { + yyHaveTime++; + } + | zone { + yyHaveZone++; + } + | date { + yyHaveDate++; + } + | day { + yyHaveDay++; + } + | rel { + yyHaveRel++; + } + | number + ; + +time : tUNUMBER tMERIDIAN { + yyHour = $1; + yyMinutes = 0; + yySeconds = 0; + yyMeridian = $2; + } + | tUNUMBER ':' tUNUMBER o_merid { + yyHour = $1; + yyMinutes = $3; + yySeconds = 0; + yyMeridian = $4; + } + | tUNUMBER ':' tUNUMBER tSNUMBER { + yyHour = $1; + yyMinutes = $3; + yyMeridian = MER24; + yyHaveZone++; + yyTimezone = ($4 < 0 + ? -$4 % 100 + (-$4 / 100) * 60 + : - ($4 % 100 + ($4 / 100) * 60)); + } + | tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid { + yyHour = $1; + yyMinutes = $3; + yySeconds = $5; + yyMeridian = $6; + } + | tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER { + yyHour = $1; + yyMinutes = $3; + yySeconds = $5; + yyMeridian = MER24; + yyHaveZone++; + yyTimezone = ($6 < 0 + ? -$6 % 100 + (-$6 / 100) * 60 + : - ($6 % 100 + ($6 / 100) * 60)); + } + ; + +zone : tZONE { + yyTimezone = $1; + } + | tDAYZONE { + yyTimezone = $1 - 60; + } + | + tZONE tDST { + yyTimezone = $1 - 60; + } + ; + +day : tDAY { + yyDayOrdinal = 1; + yyDayNumber = $1; + } + | tDAY ',' { + yyDayOrdinal = 1; + yyDayNumber = $1; + } + | tUNUMBER tDAY { + yyDayOrdinal = $1; + yyDayNumber = $2; + } + ; + +date : tUNUMBER '/' tUNUMBER { + yyMonth = $1; + yyDay = $3; + } + | tUNUMBER '/' tUNUMBER '/' tUNUMBER { + /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY. + The goal in recognizing YYYY/MM/DD is solely to support legacy + machine-generated dates like those in an RCS log listing. If + you want portability, use the ISO 8601 format. */ + if ($1 >= 1000) + { + yyYear = $1; + yyMonth = $3; + yyDay = $5; + } + else + { + yyMonth = $1; + yyDay = $3; + yyYear = $5; + } + } + | tUNUMBER tSNUMBER tSNUMBER { + /* ISO 8601 format. yyyy-mm-dd. */ + yyYear = $1; + yyMonth = -$2; + yyDay = -$3; + } + | tUNUMBER tMONTH tSNUMBER { + /* e.g. 17-JUN-1992. */ + yyDay = $1; + yyMonth = $2; + yyYear = -$3; + } + | tMONTH tUNUMBER { + yyMonth = $1; + yyDay = $2; + } + | tMONTH tUNUMBER ',' tUNUMBER { + yyMonth = $1; + yyDay = $2; + yyYear = $4; + } + | tUNUMBER tMONTH { + yyMonth = $2; + yyDay = $1; + } + | tUNUMBER tMONTH tUNUMBER { + yyMonth = $2; + yyDay = $1; + yyYear = $3; + } + ; + +rel : relunit tAGO { + yyRelSeconds = -yyRelSeconds; + yyRelMinutes = -yyRelMinutes; + yyRelHour = -yyRelHour; + yyRelDay = -yyRelDay; + yyRelMonth = -yyRelMonth; + yyRelYear = -yyRelYear; + } + | relunit + ; + +relunit : tUNUMBER tYEAR_UNIT { + yyRelYear += $1 * $2; + } + | tSNUMBER tYEAR_UNIT { + yyRelYear += $1 * $2; + } + | tYEAR_UNIT { + yyRelYear += $1; + } + | tUNUMBER tMONTH_UNIT { + yyRelMonth += $1 * $2; + } + | tSNUMBER tMONTH_UNIT { + yyRelMonth += $1 * $2; + } + | tMONTH_UNIT { + yyRelMonth += $1; + } + | tUNUMBER tDAY_UNIT { + yyRelDay += $1 * $2; + } + | tSNUMBER tDAY_UNIT { + yyRelDay += $1 * $2; + } + | tDAY_UNIT { + yyRelDay += $1; + } + | tUNUMBER tHOUR_UNIT { + yyRelHour += $1 * $2; + } + | tSNUMBER tHOUR_UNIT { + yyRelHour += $1 * $2; + } + | tHOUR_UNIT { + yyRelHour += $1; + } + | tUNUMBER tMINUTE_UNIT { + yyRelMinutes += $1 * $2; + } + | tSNUMBER tMINUTE_UNIT { + yyRelMinutes += $1 * $2; + } + | tMINUTE_UNIT { + yyRelMinutes += $1; + } + | tUNUMBER tSEC_UNIT { + yyRelSeconds += $1 * $2; + } + | tSNUMBER tSEC_UNIT { + yyRelSeconds += $1 * $2; + } + | tSEC_UNIT { + yyRelSeconds += $1; + } + ; + +number : tUNUMBER + { + if (yyHaveTime && yyHaveDate && !yyHaveRel) + yyYear = $1; + else + { + if ($1>10000) + { + yyHaveDate++; + yyDay= ($1)%100; + yyMonth= ($1/100)%100; + yyYear = $1/10000; + } + else + { + yyHaveTime++; + if ($1 < 100) + { + yyHour = $1; + yyMinutes = 0; + } + else + { + yyHour = $1 / 100; + yyMinutes = $1 % 100; + } + yySeconds = 0; + yyMeridian = MER24; + } + } + } + ; + +o_merid : /* NULL */ + { + $$ = MER24; + } + | tMERIDIAN + { + $$ = $1; + } + ; + +%% + +/* Include this file down here because bison inserts code above which + may define-away `const'. We want the prototype for get_date to have + the same signature as the function definition does. */ +#include "getdate.h" + +extern struct tm *gmtime (); +extern struct tm *localtime (); +extern time_t mktime (); + +/* Month and day table. */ +static TABLE const MonthDayTable[] = { + { "january", tMONTH, 1 }, + { "february", tMONTH, 2 }, + { "march", tMONTH, 3 }, + { "april", tMONTH, 4 }, + { "may", tMONTH, 5 }, + { "june", tMONTH, 6 }, + { "july", tMONTH, 7 }, + { "august", tMONTH, 8 }, + { "september", tMONTH, 9 }, + { "sept", tMONTH, 9 }, + { "october", tMONTH, 10 }, + { "november", tMONTH, 11 }, + { "december", tMONTH, 12 }, + { "sunday", tDAY, 0 }, + { "monday", tDAY, 1 }, + { "tuesday", tDAY, 2 }, + { "tues", tDAY, 2 }, + { "wednesday", tDAY, 3 }, + { "wednes", tDAY, 3 }, + { "thursday", tDAY, 4 }, + { "thur", tDAY, 4 }, + { "thurs", tDAY, 4 }, + { "friday", tDAY, 5 }, + { "saturday", tDAY, 6 }, + { NULL, 0, 0 } +}; + +/* Time units table. */ +static TABLE const UnitsTable[] = { + { "year", tYEAR_UNIT, 1 }, + { "month", tMONTH_UNIT, 1 }, + { "fortnight", tDAY_UNIT, 14 }, + { "week", tDAY_UNIT, 7 }, + { "day", tDAY_UNIT, 1 }, + { "hour", tHOUR_UNIT, 1 }, + { "minute", tMINUTE_UNIT, 1 }, + { "min", tMINUTE_UNIT, 1 }, + { "second", tSEC_UNIT, 1 }, + { "sec", tSEC_UNIT, 1 }, + { NULL, 0, 0 } +}; + +/* Assorted relative-time words. */ +static TABLE const OtherTable[] = { + { "tomorrow", tMINUTE_UNIT, 1 * 24 * 60 }, + { "yesterday", tMINUTE_UNIT, -1 * 24 * 60 }, + { "today", tMINUTE_UNIT, 0 }, + { "now", tMINUTE_UNIT, 0 }, + { "last", tUNUMBER, -1 }, + { "this", tMINUTE_UNIT, 0 }, + { "next", tUNUMBER, 1 }, + { "first", tUNUMBER, 1 }, +/* { "second", tUNUMBER, 2 }, */ + { "third", tUNUMBER, 3 }, + { "fourth", tUNUMBER, 4 }, + { "fifth", tUNUMBER, 5 }, + { "sixth", tUNUMBER, 6 }, + { "seventh", tUNUMBER, 7 }, + { "eighth", tUNUMBER, 8 }, + { "ninth", tUNUMBER, 9 }, + { "tenth", tUNUMBER, 10 }, + { "eleventh", tUNUMBER, 11 }, + { "twelfth", tUNUMBER, 12 }, + { "ago", tAGO, 1 }, + { NULL, 0, 0 } +}; + +/* The timezone table. */ +static TABLE const TimezoneTable[] = { + { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */ + { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */ + { "utc", tZONE, HOUR ( 0) }, + { "wet", tZONE, HOUR ( 0) }, /* Western European */ + { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */ + { "wat", tZONE, HOUR ( 1) }, /* West Africa */ + { "at", tZONE, HOUR ( 2) }, /* Azores */ +#if 0 + /* For completeness. BST is also British Summer, and GST is + * also Guam Standard. */ + { "bst", tZONE, HOUR ( 3) }, /* Brazil Standard */ + { "gst", tZONE, HOUR ( 3) }, /* Greenland Standard */ +#endif +#if 0 + { "nft", tZONE, HOUR (3.5) }, /* Newfoundland */ + { "nst", tZONE, HOUR (3.5) }, /* Newfoundland Standard */ + { "ndt", tDAYZONE, HOUR (3.5) }, /* Newfoundland Daylight */ +#endif + { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */ + { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */ + { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */ + { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */ + { "cst", tZONE, HOUR ( 6) }, /* Central Standard */ + { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */ + { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */ + { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */ + { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */ + { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */ + { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */ + { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */ + { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */ + { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */ + { "cat", tZONE, HOUR (10) }, /* Central Alaska */ + { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */ + { "nt", tZONE, HOUR (11) }, /* Nome */ + { "idlw", tZONE, HOUR (12) }, /* International Date Line West */ + { "cet", tZONE, -HOUR (1) }, /* Central European */ + { "met", tZONE, -HOUR (1) }, /* Middle European */ + { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */ + { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ + { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ + { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */ + { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */ + { "fwt", tZONE, -HOUR (1) }, /* French Winter */ + { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */ + { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */ + { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */ +#if 0 + { "it", tZONE, -HOUR (3.5) },/* Iran */ +#endif + { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */ + { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */ +#if 0 + { "ist", tZONE, -HOUR (5.5) },/* Indian Standard */ +#endif + { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */ +#if 0 + /* For completeness. NST is also Newfoundland Standard, and SST is + * also Swedish Summer. */ + { "nst", tZONE, -HOUR (6.5) },/* North Sumatra */ + { "sst", tZONE, -HOUR (7) }, /* South Sumatra, USSR Zone 6 */ +#endif /* 0 */ + { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */ + { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */ +#if 0 + { "jt", tZONE, -HOUR (7.5) },/* Java (3pm in Cronusland!) */ +#endif + { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */ + { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */ +#if 0 + { "cast", tZONE, -HOUR (9.5) },/* Central Australian Standard */ + { "cadt", tDAYZONE, -HOUR (9.5) },/* Central Australian Daylight */ +#endif + { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */ + { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */ + { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */ + { "nzt", tZONE, -HOUR (12) }, /* New Zealand */ + { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */ + { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */ + { "idle", tZONE, -HOUR (12) }, /* International Date Line East */ + { NULL, 0, 0 } +}; + +/* Military timezone table. */ +static TABLE const MilitaryTable[] = { + { "a", tZONE, HOUR ( 1) }, + { "b", tZONE, HOUR ( 2) }, + { "c", tZONE, HOUR ( 3) }, + { "d", tZONE, HOUR ( 4) }, + { "e", tZONE, HOUR ( 5) }, + { "f", tZONE, HOUR ( 6) }, + { "g", tZONE, HOUR ( 7) }, + { "h", tZONE, HOUR ( 8) }, + { "i", tZONE, HOUR ( 9) }, + { "k", tZONE, HOUR ( 10) }, + { "l", tZONE, HOUR ( 11) }, + { "m", tZONE, HOUR ( 12) }, + { "n", tZONE, HOUR (- 1) }, + { "o", tZONE, HOUR (- 2) }, + { "p", tZONE, HOUR (- 3) }, + { "q", tZONE, HOUR (- 4) }, + { "r", tZONE, HOUR (- 5) }, + { "s", tZONE, HOUR (- 6) }, + { "t", tZONE, HOUR (- 7) }, + { "u", tZONE, HOUR (- 8) }, + { "v", tZONE, HOUR (- 9) }, + { "w", tZONE, HOUR (-10) }, + { "x", tZONE, HOUR (-11) }, + { "y", tZONE, HOUR (-12) }, + { "z", tZONE, HOUR ( 0) }, + { NULL, 0, 0 } +}; + + + + +/* ARGSUSED */ +static int +yyerror (s) + char *s ATTRIBUTE_UNUSED; +{ + return 0; +} + +static int +ToHour (Hours, Meridian) + int Hours; + MERIDIAN Meridian; +{ + switch (Meridian) + { + case MER24: + if (Hours < 0 || Hours > 23) + return -1; + return Hours; + case MERam: + if (Hours < 1 || Hours > 12) + return -1; + if (Hours == 12) + Hours = 0; + return Hours; + case MERpm: + if (Hours < 1 || Hours > 12) + return -1; + if (Hours == 12) + Hours = 0; + return Hours + 12; + default: + abort (); + } + /* NOTREACHED */ +} + +static int +ToYear (Year) + int Year; +{ + if (Year < 0) + Year = -Year; + + /* XPG4 suggests that years 00-68 map to 2000-2068, and + years 69-99 map to 1969-1999. */ + if (Year < 69) + Year += 2000; + else if (Year < 100) + Year += 1900; + + return Year; +} + +static int +LookupWord (buff) + char *buff; +{ + register char *p; + register char *q; + register const TABLE *tp; + int i; + int abbrev; + + /* Make it lowercase. */ + for (p = buff; *p; p++) + if (ISUPPER ((unsigned char) *p)) + *p = tolower (*p); + + if (strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0) + { + yylval.Meridian = MERam; + return tMERIDIAN; + } + if (strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0) + { + yylval.Meridian = MERpm; + return tMERIDIAN; + } + + /* See if we have an abbreviation for a month. */ + if (strlen (buff) == 3) + abbrev = 1; + else if (strlen (buff) == 4 && buff[3] == '.') + { + abbrev = 1; + buff[3] = '\0'; + } + else + abbrev = 0; + + for (tp = MonthDayTable; tp->name; tp++) + { + if (abbrev) + { + if (strncmp (buff, tp->name, 3) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + else if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + + for (tp = TimezoneTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + if (strcmp (buff, "dst") == 0) + return tDST; + + for (tp = UnitsTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + /* Strip off any plural and try the units table again. */ + i = strlen (buff) - 1; + if (buff[i] == 's') + { + buff[i] = '\0'; + for (tp = UnitsTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + buff[i] = 's'; /* Put back for "this" in OtherTable. */ + } + + for (tp = OtherTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + /* Military timezones. */ + if (buff[1] == '\0' && ISALPHA ((unsigned char) *buff)) + { + for (tp = MilitaryTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + + /* Drop out any periods and try the timezone table again. */ + for (i = 0, p = q = buff; *q; q++) + if (*q != '.') + *p++ = *q; + else + i++; + *p = '\0'; + if (i) + for (tp = TimezoneTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + return tID; +} + +static int +yylex () +{ + register unsigned char c; + register char *p; + char buff[20]; + int Count; + int sign; + + for (;;) + { + while (ISSPACE ((unsigned char) *yyInput)) + yyInput++; + + if (ISDIGIT (c = *yyInput) || c == '-' || c == '+') + { + if (c == '-' || c == '+') + { + sign = c == '-' ? -1 : 1; + if (!ISDIGIT (*++yyInput)) + /* skip the '-' sign */ + continue; + } + else + sign = 0; + for (yylval.Number = 0; ISDIGIT (c = *yyInput++);) + yylval.Number = 10 * yylval.Number + c - '0'; + yyInput--; + if (sign < 0) + yylval.Number = -yylval.Number; + return sign ? tSNUMBER : tUNUMBER; + } + if (ISALPHA (c)) + { + for (p = buff; (c = *yyInput++, ISALPHA (c)) || c == '.';) + if (p < &buff[sizeof buff - 1]) + *p++ = c; + *p = '\0'; + yyInput--; + return LookupWord (buff); + } + if (c != '(') + return *yyInput++; + Count = 0; + do + { + c = *yyInput++; + if (c == '\0') + return c; + if (c == '(') + Count++; + else if (c == ')') + Count--; + } + while (Count > 0); + } +} + +#define TM_YEAR_ORIGIN 1900 + +/* Yield A - B, measured in seconds. */ +static long +difftm (struct tm *a, struct tm *b) +{ + int ay = a->tm_year + (TM_YEAR_ORIGIN - 1); + int by = b->tm_year + (TM_YEAR_ORIGIN - 1); + long days = ( + /* difference in day of year */ + a->tm_yday - b->tm_yday + /* + intervening leap days */ + + ((ay >> 2) - (by >> 2)) + - (ay / 100 - by / 100) + + ((ay / 100 >> 2) - (by / 100 >> 2)) + /* + difference in years * 365 */ + + (long) (ay - by) * 365 + ); + return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) + + (a->tm_min - b->tm_min)) + + (a->tm_sec - b->tm_sec)); +} + +time_t +get_date (const char *p, const time_t *now) +{ + struct tm tm, tm0, *tmp; + time_t Start; + + yyInput = p; + Start = now ? *now : time ((time_t *) NULL); + tmp = localtime (&Start); + if (!tmp) + return -1; + yyYear = tmp->tm_year + TM_YEAR_ORIGIN; + yyMonth = tmp->tm_mon + 1; + yyDay = tmp->tm_mday; + yyHour = tmp->tm_hour; + yyMinutes = tmp->tm_min; + yySeconds = tmp->tm_sec; + tm.tm_isdst = tmp->tm_isdst; + yyMeridian = MER24; + yyRelSeconds = 0; + yyRelMinutes = 0; + yyRelHour = 0; + yyRelDay = 0; + yyRelMonth = 0; + yyRelYear = 0; + yyHaveDate = 0; + yyHaveDay = 0; + yyHaveRel = 0; + yyHaveTime = 0; + yyHaveZone = 0; + + if (yyparse () + || yyHaveTime > 1 || yyHaveZone > 1 || yyHaveDate > 1 || yyHaveDay > 1) + return -1; + + tm.tm_year = ToYear (yyYear) - TM_YEAR_ORIGIN + yyRelYear; + tm.tm_mon = yyMonth - 1 + yyRelMonth; + tm.tm_mday = yyDay + yyRelDay; + if (yyHaveTime || (yyHaveRel && !yyHaveDate && !yyHaveDay)) + { + tm.tm_hour = ToHour (yyHour, yyMeridian); + if (tm.tm_hour < 0) + return -1; + tm.tm_min = yyMinutes; + tm.tm_sec = yySeconds; + } + else + { + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + } + tm.tm_hour += yyRelHour; + tm.tm_min += yyRelMinutes; + tm.tm_sec += yyRelSeconds; + + /* Let mktime deduce tm_isdst if we have an absolute timestamp, + or if the relative timestamp mentions days, months, or years. */ + if (yyHaveDate | yyHaveDay | yyHaveTime | yyRelDay | yyRelMonth | yyRelYear) + tm.tm_isdst = -1; + + tm0 = tm; + + Start = mktime (&tm); + + if (Start == (time_t) -1) + { + + /* Guard against falsely reporting errors near the time_t boundaries + when parsing times in other time zones. For example, if the min + time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead + of UTC, then the min localtime value is 1970-01-01 08:00:00; if + we apply mktime to 1970-01-01 00:00:00 we will get an error, so + we apply mktime to 1970-01-02 08:00:00 instead and adjust the time + zone by 24 hours to compensate. This algorithm assumes that + there is no DST transition within a day of the time_t boundaries. */ + if (yyHaveZone) + { + tm = tm0; + if (tm.tm_year <= EPOCH - TM_YEAR_ORIGIN) + { + tm.tm_mday++; + yyTimezone -= 24 * 60; + } + else + { + tm.tm_mday--; + yyTimezone += 24 * 60; + } + Start = mktime (&tm); + } + + if (Start == (time_t) -1) + return Start; + } + + if (yyHaveDay && !yyHaveDate) + { + tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7 + + 7 * (yyDayOrdinal - (0 < yyDayOrdinal))); + Start = mktime (&tm); + if (Start == (time_t) -1) + return Start; + } + + if (yyHaveZone) + { + long delta; + struct tm *gmt = gmtime (&Start); + if (!gmt) + return -1; + delta = yyTimezone * 60L + difftm (&tm, gmt); + if ((Start + delta < Start) != (delta < 0)) + return -1; /* time_t overflow */ + Start += delta; + } + + return Start; +} + +#if defined (TEST) + +/* ARGSUSED */ +int +main (ac, av) + int ac; + char *av[]; +{ + char buff[MAX_BUFF_LEN + 1]; + time_t d; + + (void) printf ("Enter date, or blank line to exit.\n\t> "); + (void) fflush (stdout); + + buff[MAX_BUFF_LEN] = 0; + while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0]) + { + d = get_date (buff, (time_t *) NULL); + if (d == -1) + (void) printf ("Bad format - couldn't convert.\n"); + else + (void) printf ("%s", ctime (&d)); + (void) printf ("\t> "); + (void) fflush (stdout); + } + exit (0); + /* NOTREACHED */ +} +#endif /* defined (TEST) */ diff --git a/lib/getenv.c b/lib/getenv.c new file mode 100644 index 000000000..404f1c970 --- /dev/null +++ b/lib/getenv.c @@ -0,0 +1,95 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * Contributor(s): + * Rafael Sagula + * Sampo Kellomaki + * Linas Vepstas + * Bjorn Reese + * Johan Anderson + * Kjell Ericson + * Troy Engel + * Ryan Nelson + * Bjorn Stenberg + * Angus Mackay + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + * $Log$ + * Revision 1.1 1999-12-29 14:21:29 bagder + * Initial revision + * + * Revision 1.4 1999/09/06 06:59:40 dast + * Changed email info + * + * Revision 1.3 1999/08/13 07:34:48 dast + * Changed the URL in the header + * + * Revision 1.2 1999/03/13 00:56:09 dast + * Big changes done due to url.c being split up in X smaller files and that + * the lib is now more stand-alone. + * + * Revision 1.1.1.1 1999/03/11 22:23:34 dast + * Imported sources + * + ****************************************************************************/ + +#include +#include + +#ifdef WIN32 +#include +#endif + +char *GetEnv(char *variable) +{ +#ifdef WIN32 + /* This shit requires windows.h (HUGE) to be included */ + static char env[MAX_PATH]; /* MAX_PATH is from windef.h */ + char *temp = getenv(variable); + env[0] = '\0'; + ExpandEnvironmentStrings(temp, env, sizeof(env)); +#else + /* no length control */ + char *env = getenv(variable); +#endif + return env; +} + +char *curl_GetEnv(char *v) +{ + return GetEnv(v); +} diff --git a/lib/getenv.h b/lib/getenv.h new file mode 100644 index 000000000..83b9495e1 --- /dev/null +++ b/lib/getenv.h @@ -0,0 +1,71 @@ +#ifndef __GETENV_H +#define __GETENV_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * Contributor(s): + * Rafael Sagula + * Sampo Kellomaki + * Linas Vepstas + * Bjorn Reese + * Johan Anderson + * Kjell Ericson + * Troy Engel + * Ryan Nelson + * Bjorn Stenberg + * Angus Mackay + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + * $Log$ + * Revision 1.1 1999-12-29 14:21:30 bagder + * Initial revision + * + * Revision 1.3 1999/09/06 06:59:40 dast + * Changed email info + * + * Revision 1.2 1999/08/13 07:34:48 dast + * Changed the URL in the header + * + * Revision 1.1.1.1 1999/03/11 22:23:34 dast + * Imported sources + * + ****************************************************************************/ + +/* Unix and Win32 getenv function call */ +char *GetEnv(char *variable); + +#endif diff --git a/lib/getpass.c b/lib/getpass.c new file mode 100644 index 000000000..c0c7bf97b --- /dev/null +++ b/lib/getpass.c @@ -0,0 +1,185 @@ +/* ============================================================================ + * Copyright (C) 1998 Angus Mackay. All rights reserved; + * + * Redistribution and use are freely permitted provided that: + * + * 1) This header remain in tact. + * 2) The prototype for getpass is not changed from: + * char *getpass(const char *prompt) + * 3) This source code is not used outside of this(getpass.c) file. + * 3) Any changes to this(getpass.c) source code are made publicly available. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * ============================================================================ + * + * $Id$ + * + * The spirit of this license is to allow use of this source code in any + * project be it open or closed but still encourage the use of the open, + * library based equivilents. + * + * Author(s): + * Angus Mackay + * + * Contributor(s): + * Daniel Stenberg + */ + +#ifndef WIN32 +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_TERMIOS_H +# if !defined(HAVE_TCGETATTR) && !defined(HAVE_TCSETATTR) +# undef HAVE_TERMIOS_H +# endif +#endif + +#define INPUT_BUFFER 128 + +#ifndef RETSIGTYPE +# define RETSIGTYPE void +#endif + +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#ifdef HAVE_TERMIOS_H +# include +#else +# ifdef HAVE_TERMIO_H +# include +# else +# endif +#endif + +/* no perror? make an fprintf! */ +#ifndef HAVE_PERROR +# define perror(x) fprintf(stderr, "Error in: %s\n", x) +#endif + +char *getpass(const char *prompt) +{ + FILE *infp; + FILE *outfp; + static char buf[INPUT_BUFFER]; + RETSIGTYPE (*sigint)(); + RETSIGTYPE (*sigtstp)(); + size_t bytes_read; + int infd; + int outfd; +#ifdef HAVE_TERMIOS_H + struct termios orig; + struct termios noecho; +#else +# ifdef HAVE_TERMIO_H + struct termio orig; + struct termio noecho; +# else +# endif +#endif + + sigint = signal(SIGINT, SIG_IGN); + sigtstp = signal(SIGTSTP, SIG_IGN); + + if( (infp=fopen("/dev/tty", "r")) == NULL ) + { + infp = stdin; + } + if( (outfp=fopen("/dev/tty", "w")) == NULL ) + { + outfp = stderr; + } + infd = fileno(infp); + outfd = fileno(outfp); + + /* dissable echo */ +#ifdef HAVE_TERMIOS_H + if(tcgetattr(outfd, &orig) != 0) + { + perror("tcgetattr"); + } + noecho = orig; + noecho.c_lflag &= ~ECHO; + if(tcsetattr(outfd, TCSANOW, &noecho) != 0) + { + perror("tcgetattr"); + } +#else +# ifdef HAVE_TERMIO_H + if(ioctl(outfd, TCGETA, &orig) != 0) + { + perror("ioctl"); + } + noecho = orig; + noecho.c_lflag &= ~ECHO; + if(ioctl(outfd, TCSETA, &noecho) != 0) + { + perror("ioctl"); + } +# else +# endif +#endif + + fputs(prompt, outfp); + fflush(outfp); + + bytes_read=read(infd, buf, INPUT_BUFFER); + buf[bytes_read > 0 ? (bytes_read -1) : 0] = '\0'; + + /* print a new line if needed */ +#ifdef HAVE_TERMIOS_H + fputs("\n", outfp); +#else +# ifdef HAVE_TERMIO_H + fputs("\n", outfp); +# else +# endif +#endif + + /* + * reset term charectaristics, use TCSAFLUSH incase the + * user types more than INPUT_BUFFER + */ +#ifdef HAVE_TERMIOS_H + if(tcsetattr(outfd, TCSAFLUSH, &orig) != 0) + { + perror("tcgetattr"); + } +#else +# ifdef HAVE_TERMIO_H + if(ioctl(outfd, TCSETA, &orig) != 0) + { + perror("ioctl"); + } +# else +# endif +#endif + + signal(SIGINT, sigint); + signal(SIGTSTP, sigtstp); + + return(buf); +} +#else +#include +char *getpass(const char *prompt) +{ + static char password[80]; + printf(prompt); + gets(password); + return password; +} +#endif /* don't do anything if WIN32 */ diff --git a/lib/getpass.h b/lib/getpass.h new file mode 100644 index 000000000..33dfed668 --- /dev/null +++ b/lib/getpass.h @@ -0,0 +1 @@ +char *getpass(const char *prompt); diff --git a/lib/hostip.c b/lib/hostip.c new file mode 100644 index 000000000..453d8a387 --- /dev/null +++ b/lib/hostip.c @@ -0,0 +1,111 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include + +#include "setup.h" + +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +#include +#else +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_SOCKET_H +#include +#endif +#include +#include +#ifdef HAVE_ARPA_INET_H +#include +#endif +#endif + +#include "urldata.h" +#include "sendf.h" + +/* --- resolve name or IP-number --- */ + +char *MakeIP(unsigned long num) +{ +#ifdef HAVE_INET_NTOA + struct in_addr in; + + in.s_addr = htonl(num); + return (inet_ntoa(in)); +#else + static char addr[128]; + unsigned char *paddr; + + num = htonl(num); /* htonl() added to avoid endian probs */ + paddr = (unsigned char *)# + sprintf(addr, "%u.%u.%u.%u", paddr[0], paddr[1], paddr[2], paddr[3]); + return (addr); +#endif +} + +/* Stolen from Dancer source code, written by + Bjorn Reese */ +#ifndef INADDR_NONE +#define INADDR_NONE (unsigned long) ~0 +#endif +struct hostent *GetHost(struct UrlData *data, char *hostname) +{ + struct hostent *h = NULL; + unsigned long in; + static struct hostent he; + static char name[MAXHOSTNAMELEN]; + static char *addrlist[2]; + static struct in_addr addrentry; + + if ( (in=inet_addr(hostname)) != INADDR_NONE ) { + addrentry.s_addr = in; + addrlist[0] = (char *)&addrentry; + addrlist[1] = NULL; + he.h_name = strncpy(name, MakeIP(ntohl(in)), MAXHOSTNAMELEN); + he.h_addrtype = AF_INET; + he.h_length = sizeof(struct in_addr); + he.h_addr_list = addrlist; + h = &he; + } else if ( (h=gethostbyname(hostname)) == NULL ) { + infof(data, "gethostbyname(2) failed for %s\n", hostname); + } + return (h); +} diff --git a/lib/hostip.h b/lib/hostip.h new file mode 100644 index 000000000..8753e3975 --- /dev/null +++ b/lib/hostip.h @@ -0,0 +1,46 @@ +#ifndef __HOSTIP_H +#define __HOSTIP_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +struct hostent *GetHost(struct UrlData *data, char *hostname); +char *MakeIP(unsigned long num); + +#endif diff --git a/lib/http.c b/lib/http.c new file mode 100644 index 000000000..2dd380214 --- /dev/null +++ b/lib/http.c @@ -0,0 +1,381 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +/* -- WIN32 approved -- */ +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "setup.h" + +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +#include +#include +#include +#else +#ifdef HAVE_SYS_SOCKET_H +#include +#endif +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#ifdef HAVE_ARPA_INET_H +#include +#endif +#ifdef HAVE_NET_IF_H +#include +#endif +#include +#include + +#ifdef HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_SELECT_H +#include +#endif + + +#endif + +#include "urldata.h" +#include +#include "download.h" +#include "sendf.h" +#include "formdata.h" +#include "progress.h" +#include "base64.h" +#include "upload.h" +#include "cookie.h" + +#define _MPRINTF_REPLACE /* use our functions only */ +#include + +/* + * This function checks the linked list of custom HTTP headers for a particular + * header (prefix). + */ +bool static checkheaders(struct UrlData *data, char *thisheader) +{ + struct HttpHeader *head; + size_t thislen = strlen(thisheader); + + for(head = data->headers; head; head=head->next) { + if(strnequal(head->header, thisheader, thislen)) { + return TRUE; + } + } + return FALSE; +} + +UrgError http(struct UrlData *data, char *ppath, char *host, long *bytecount) +{ + /* Send the GET line to the HTTP server */ + + struct FormData *sendit=NULL; + int postsize=0; + UrgError result; + char *buf; + struct Cookie *co = NULL; + char *p_pragma = NULL; + char *p_accept = NULL; + + buf = data->buffer; /* this is our buffer */ + + if ( (data->conf&(CONF_HTTP|CONF_FTP)) && + (data->conf&CONF_UPLOAD)) { + data->conf |= CONF_PUT; + } +#if 0 /* old version */ + if((data->conf&(CONF_HTTP|CONF_UPLOAD)) == + (CONF_HTTP|CONF_UPLOAD)) { + /* enable PUT! */ + data->conf |= CONF_PUT; + } +#endif + + /* The User-Agent string has been built in url.c already, because it might + have been used in the proxy connect, but if we have got a header with + the user-agent string specified, we erase the previosly made string + here. */ + if(checkheaders(data, "User-Agent:") && data->ptr_uagent) { + free(data->ptr_uagent); + data->ptr_uagent=NULL; + } + + if((data->conf & CONF_USERPWD) && !checkheaders(data, "Authorization:")) { + char authorization[512]; + sprintf(data->buffer, "%s:%s", data->user, data->passwd); + base64Encode(data->buffer, authorization); + data->ptr_userpwd = maprintf( "Authorization: Basic %s\015\012", + authorization); + } + if((data->conf & CONF_RANGE) && !checkheaders(data, "Range:")) { + data->ptr_rangeline = maprintf("Range: bytes=%s\015\012", data->range); + } + if((data->conf & CONF_REFERER) && !checkheaders(data, "Referer:")) { + data->ptr_ref = maprintf("Referer: %s\015\012", data->referer); + } + if(data->cookie && !checkheaders(data, "Cookie:")) { + data->ptr_cookie = maprintf("Cookie: %s\015\012", data->cookie); + } + + if(data->cookies) { + co = cookie_getlist(data->cookies, + host, + ppath, + data->conf&CONF_HTTPS?TRUE:FALSE); + } + if ((data->conf & CONF_PROXY) && (!(data->conf & CONF_HTTPS))) { + /* The path sent to the proxy is in fact the entire URL */ + strncpy(ppath, data->url, URL_MAX_LENGTH-1); + } + if(data->conf & CONF_HTTPPOST) { + /* we must build the whole darned post sequence first, so that we have + a size of the whole shebang before we start to send it */ + sendit = getFormData(data->httppost, &postsize); + } + + if(!checkheaders(data, "Host:")) + data->ptr_host = maprintf("Host: %s\r\n", host); + + + if(!checkheaders(data, "Pragma:")) + p_pragma = "Pragma: no-cache\r\n"; + + if(!checkheaders(data, "Accept:")) + p_accept = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n"; + + do { + sendf(data->firstsocket, data, + "%s " /* GET/HEAD/POST/PUT */ + "%s HTTP/1.0\r\n" /* path */ + "%s" /* proxyuserpwd */ + "%s" /* userpwd */ + "%s" /* range */ + "%s" /* user agent */ + "%s" /* cookie */ + "%s" /* host */ + "%s" /* pragma */ + "%s" /* accept */ + "%s", /* referer */ + + data->customrequest?data->customrequest: + (data->conf&CONF_NOBODY?"HEAD": + (data->conf&(CONF_POST|CONF_HTTPPOST))?"POST": + (data->conf&CONF_PUT)?"PUT":"GET"), + ppath, + (data->conf&CONF_PROXYUSERPWD && data->ptr_proxyuserpwd)?data->ptr_proxyuserpwd:"", + (data->conf&CONF_USERPWD && data->ptr_userpwd)?data->ptr_userpwd:"", + (data->conf&CONF_RANGE && data->ptr_rangeline)?data->ptr_rangeline:"", + (data->useragent && *data->useragent && data->ptr_uagent)?data->ptr_uagent:"", + (data->ptr_cookie?data->ptr_cookie:""), /* Cookie: */ + (data->ptr_host?data->ptr_host:""), /* Host: host */ + p_pragma?p_pragma:"", + p_accept?p_accept:"", + (data->conf&CONF_REFERER && data->ptr_ref)?data->ptr_ref:"" /* Referer: */ + ); + + if(co) { + int count=0; + /* now loop through all cookies that matched */ + while(co) { + if(0 == count) { + sendf(data->firstsocket, data, + "Cookie: "); + } + count++; + sendf(data->firstsocket, data, + "%s=%s;", co->name, co->value); + co = co->next; /* next cookie please */ + } + if(count) { + sendf(data->firstsocket, data, + "\r\n"); + } + cookie_freelist(co); /* free the cookie list */ + co=NULL; + } + + if(data->timecondition) { + struct tm *thistime; + + thistime = localtime(&data->timevalue); + +#if defined(HAVE_STRFTIME) || defined(WIN32) + /* format: "Tue, 15 Nov 1994 12:45:26 GMT" */ + strftime(buf, BUFSIZE-1, "%a, %d %b %Y %H:%M:%S %Z", thistime); +#else + /* Right, we *could* write a replacement here */ + strcpy(buf, "no strftime() support"); +#endif + switch(data->timecondition) { + case TIMECOND_IFMODSINCE: + default: + sendf(data->firstsocket, data, + "If-Modified-Since: %s\r\n", buf); + break; + case TIMECOND_IFUNMODSINCE: + sendf(data->firstsocket, data, + "If-Unmodified-Since: %s\r\n", buf); + break; + case TIMECOND_LASTMOD: + sendf(data->firstsocket, data, + "Last-Modified: %s\r\n", buf); + break; + } + } + + while(data->headers) { + sendf(data->firstsocket, data, + "%s\015\012", + data->headers->header); + data->headers = data->headers->next; + } + + if(data->conf&(CONF_POST|CONF_HTTPPOST)) { + if(data->conf & CONF_POST) { + /* this is the simple x-www-form-urlencoded style */ + sendf(data->firstsocket, data, + "Content-Length: %d\015\012" + "Content-Type: application/x-www-form-urlencoded\r\n\r\n" + "%s\015\012", + strlen(data->postfields), + data->postfields ); + } + else { + struct Form form; + size_t (*storefread)(char *, size_t , size_t , FILE *); + FILE *in; + long conf; + + if(FormInit(&form, sendit)) { + failf(data, "Internal HTTP POST error!\n"); + return URG_HTTP_POST_ERROR; + } + + storefread = data->fread; /* backup */ + in = data->in; /* backup */ + + data->fread = + (size_t (*)(char *, size_t, size_t, FILE *)) + FormReader; /* set the read function to read from the + generated form data */ + data->in = (FILE *)&form; + + sendf(data->firstsocket, data, + "Content-Length: %d\r\n", + postsize-2); + + conf = data->conf; + data->conf &= ~CONF_NOPROGRESS; /* enable progress meter */ + ProgressInit(data, postsize); + + result = Upload(data, data->firstsocket, bytecount); + + FormFree(sendit); /* Now free that whole lot */ + + data->conf = conf; /* restore conf values for the download */ + + if(result) + return result; + + data->fread = storefread; /* restore */ + data->in = in; /* restore */ + + sendf(data->firstsocket, data, + "\r\n\r\n"); + } + } + else if(data->conf&CONF_PUT) { + /* Let's PUT the data to the server! */ + long conf; + + if(data->infilesize>0) { + sendf(data->firstsocket, data, + "Content-Length: %d\r\n\r\n", /* file size */ + data->infilesize ); + } + else + sendf(data->firstsocket, data, + "\015\012"); + + conf = data->conf; + data->conf &= ~CONF_NOPROGRESS; /* enable progress meter */ + + ProgressInit(data, data->infilesize); + + result = Upload(data, data->firstsocket, bytecount); + + data->conf = conf; + + if(result) + return result; + + /* reset the byte counter */ + *bytecount=0; + } + else { + sendf(data->firstsocket, data, "\r\n"); + } + /* HTTP GET/HEAD download: */ + result = Download(data, data->firstsocket, -1, TRUE, bytecount); + + if(result) + return result; + + ProgressEnd(data); + } while (0); /* this is just a left-over from the multiple document download + attempts */ + + return URG_OK; +} + diff --git a/lib/http.h b/lib/http.h new file mode 100644 index 000000000..be35842cf --- /dev/null +++ b/lib/http.h @@ -0,0 +1,45 @@ +#ifndef __HTTP_H +#define __HTTP_H + +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ +UrgError http(struct UrlData *data, char *path, char *host, long *bytecountp); + +#endif diff --git a/lib/if2ip.c b/lib/if2ip.c new file mode 100644 index 000000000..f8a37bb12 --- /dev/null +++ b/lib/if2ip.c @@ -0,0 +1,110 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include +#include +#include + +#include "setup.h" + +#ifdef HAVE_UNISTD_H +#include +#endif + +#if ! defined(WIN32) && ! defined(__BEOS__) + +#include +#include +#ifdef HAVE_ARPA_INET_H +#include +#endif +#include +#ifdef HAVE_NET_IF_H +#include +#endif +#include + +/* -- if2ip() -- */ +#ifdef HAVE_NETDB_H +#include +#endif + +#ifdef HAVE_SYS_SOCKIO_H +#include +#endif + +#define SYS_ERROR -1 + +char *if2ip(char *interface) +{ + int dummy; + char *ip=NULL; + + if(!interface) + return NULL; + + dummy = socket(AF_INET, SOCK_STREAM, 0); + if (SYS_ERROR == dummy) { + return NULL; + } + else { + struct ifreq req; + memset(&req, 0, sizeof(req)); + strcpy(req.ifr_name, interface); + req.ifr_addr.sa_family = AF_INET; + if (SYS_ERROR == ioctl(dummy, SIOCGIFADDR, &req, sizeof(req))) { + return NULL; + } + else { + struct in_addr in; + + struct sockaddr_in *s = (struct sockaddr_in *)&req.ifr_dstaddr; + memcpy(&in, &(s->sin_addr.s_addr), sizeof(in)); + ip = (char *)strdup(inet_ntoa(in)); + } + close(dummy); + } + return ip; +} + +/* -- end of if2ip() -- */ +#else +#define if2ip(x) NULL +#endif diff --git a/lib/if2ip.h b/lib/if2ip.h new file mode 100644 index 000000000..0b658f9d2 --- /dev/null +++ b/lib/if2ip.h @@ -0,0 +1,50 @@ +#ifndef __IF2IP_H +#define __IF2IP_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ +#include "setup.h" + +#if ! defined(WIN32) && ! defined(__BEOS__) +char *if2ip(char *interface); +#else +#define if2ip(x) NULL +#endif + +#endif diff --git a/lib/ldap.c b/lib/ldap.c new file mode 100644 index 000000000..7f0e0251f --- /dev/null +++ b/lib/ldap.c @@ -0,0 +1,226 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Contributor(s): + * Bjørn Reese + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +/* -- WIN32 approved -- */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "setup.h" + +#if defined(WIN32) && !defined(__GNUC__) +#else +# ifdef HAVE_UNISTD_H +# include +# endif +# ifdef HAVE_DLFCN_H +# include +# endif +#endif + +#include "urldata.h" +#include +#include "sendf.h" +#include "escape.h" + +#define _MPRINTF_REPLACE /* use our functions only */ +#include + + +#define DYNA_GET_FUNCTION(type, fnc) \ + (fnc) = (type)DynaGetFunction(#fnc); \ + if ((fnc) == NULL) { \ + return URG_FUNCTION_NOT_FOUND; \ + } \ + +/*********************************************************************** + */ +static void *libldap = NULL; +static void *liblber = NULL; + +static void DynaOpen(void) +{ +#if defined(HAVE_DLOPEN) || defined(HAVE_LIBDL) + if (libldap == NULL) { + /* + * libldap.so should be able to resolve its dependency on + * liblber.so automatically, but since it does not we will + * handle it here by opening liblber.so as global. + */ + dlopen("liblber.so", RTLD_LAZY | RTLD_GLOBAL); + libldap = dlopen("libldap.so", RTLD_LAZY); + } +#endif +} + +static void DynaClose(void) +{ +#if defined(HAVE_DLOPEN) || defined(HAVE_LIBDL) + if (libldap) { + dlclose(libldap); + } + if (liblber) { + dlclose(liblber); + } +#endif +} + +static void * DynaGetFunction(char *name) +{ + void *func = NULL; + +#if defined(HAVE_DLOPEN) || defined(HAVE_LIBDL) + if (libldap) { + func = dlsym(libldap, name); + } +#endif + + return func; +} + +static int WriteProc(void *param, char *text, int len) +{ + struct UrlData *data = (struct UrlData *)param; + + printf("%s\n", text); + return 0; +} + +/*********************************************************************** + */ +UrgError ldap(struct UrlData *data, char *path, long *bytecount) +{ + UrgError status = URG_OK; + int rc; + void *(*ldap_open)(char *, int); + int (*ldap_simple_bind_s)(void *, char *, char *); + int (*ldap_unbind_s)(void *); + int (*ldap_url_search_s)(void *, char *, int, void **); + void *(*ldap_first_entry)(void *, void *); + void *(*ldap_next_entry)(void *, void *); + char *(*ldap_err2string)(int); + int (*ldap_entry2text)(void *, char *, void *, void *, char **, char **, int (*)(void *, char *, int), void *, char *, int, unsigned long); + int (*ldap_entry2html)(void *, char *, void *, void *, char **, char **, int (*)(void *, char *, int), void *, char *, int, unsigned long, char *, char *); + void *server; + void *result; + void *entryIterator; +#if 0 + char *dn; + char **attrArray; + char *attrIterator; + char *attrString; + void *dummy; +#endif + int ldaptext; + + infof(data, "LDAP: %s %s\n", data->url); + + DynaOpen(); + if (libldap == NULL) { + failf(data, "The needed LDAP library/libraries couldn't be opened"); + return URG_LIBRARY_NOT_FOUND; + } + + ldaptext = data->conf & CONF_FTPASCII; /* This is a dirty hack */ + + /* The types are needed because ANSI C distinguishes between + * pointer-to-object (data) and pointer-to-function. + */ + DYNA_GET_FUNCTION(void *(*)(char *, int), ldap_open); + DYNA_GET_FUNCTION(int (*)(void *, char *, char *), ldap_simple_bind_s); + DYNA_GET_FUNCTION(int (*)(void *), ldap_unbind_s); + DYNA_GET_FUNCTION(int (*)(void *, char *, int, void **), ldap_url_search_s); + DYNA_GET_FUNCTION(void *(*)(void *, void *), ldap_first_entry); + DYNA_GET_FUNCTION(void *(*)(void *, void *), ldap_next_entry); + DYNA_GET_FUNCTION(char *(*)(int), ldap_err2string); + DYNA_GET_FUNCTION(int (*)(void *, char *, void *, void *, char **, char **, int (*)(void *, char *, int), void *, char *, int, unsigned long), ldap_entry2text); + DYNA_GET_FUNCTION(int (*)(void *, char *, void *, void *, char **, char **, int (*)(void *, char *, int), void *, char *, int, unsigned long, char *, char *), ldap_entry2html); + + server = ldap_open(data->hostname, data->port); + if (server == NULL) { + failf(data, "LDAP: Cannot connect to %s:%d", + data->hostname, data->port); + status = URG_COULDNT_CONNECT; + } else { + rc = ldap_simple_bind_s(server, data->user, data->passwd); + if (rc != 0) { + failf(data, "LDAP: %s", ldap_err2string(rc)); + status = URG_LDAP_CANNOT_BIND; + } else { + rc = ldap_url_search_s(server, data->url, 0, &result); + if (rc != 0) { + failf(data, "LDAP: %s", ldap_err2string(rc)); + status = URG_LDAP_SEARCH_FAILED; + } else { + for (entryIterator = ldap_first_entry(server, result); + entryIterator; + entryIterator = ldap_next_entry(server, entryIterator)) + { + if (ldaptext) { + rc = ldap_entry2text(server, NULL, entryIterator, NULL, + NULL, NULL, WriteProc, data, + "", 0, 0); + if (rc != 0) { + failf(data, "LDAP: %s", ldap_err2string(rc)); + status = URG_LDAP_SEARCH_FAILED; + } + } else { + rc = ldap_entry2html(server, NULL, entryIterator, NULL, + NULL, NULL, WriteProc, data, + "", 0, 0, NULL, NULL); + if (rc != 0) { + failf(data, "LDAP: %s", ldap_err2string(rc)); + status = URG_LDAP_SEARCH_FAILED; + } + } + } + } + ldap_unbind_s(server); + } + } + DynaClose(); + + return status; +} diff --git a/lib/ldap.h b/lib/ldap.h new file mode 100644 index 000000000..d88880ede --- /dev/null +++ b/lib/ldap.h @@ -0,0 +1,45 @@ +#ifndef __LDAP_H +#define __LDAP_H + +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://www.fts.frontec.se/~dast/curl/ + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ +UrgError ldap(struct UrlData *data, char *path, long *bytecount); + +#endif /* __LDAP_H */ diff --git a/lib/mprintf.c b/lib/mprintf.c new file mode 100644 index 000000000..237a21a9d --- /dev/null +++ b/lib/mprintf.c @@ -0,0 +1,1253 @@ +/**************************************************************************** + * + * $Id$ + * + ************************************************************************* + * + * Purpose: + * A merge of Bjorn Reese's format() function and Daniel's dsprintf() + * 1.0. A full blooded printf() clone with full support for $ + * everywhere (parameters, widths and precisions) including variabled + * sized parameters (like doubles, long longs, long doubles and even + * void * in 64-bit architectures). + * + * Current restrictions: + * - Max 128 parameters + * - No 'long double' support. + * + ************************************************************************* + * + * + * 1998/01/10 (v2.8) + * Daniel + * - Updated version number. + * - Corrected a static non-zero prefixed width problem. + * + * 1998/11/17 - Daniel + * Added daprintf() and dvaprintf() for allocated printf() and vprintf(). + * They return an allocated buffer with the result inside. The result must + * be free()ed! + * + * 1998/08/23 - breese + * + * Converted all non-printable (and non-whitespace) characters into + * their decimal ASCII value preceeded by a '\' character + * (this only applies to snprintf family so far) + * + * Added %S (which is the same as %#s) + * + * 1998/05/05 (v2.7) + * + * Fixed precision and width qualifiers (%.*s) + * + * Added support for snprintf() + * + * Quoting (%#s) is disabled for the (nil) pointer + * + * 1997/06/09 (v2.6) + * + * %#s means that the string will be quoted with " + * (I was getting tired of writing \"%s\" all the time) + * + * [ERR] for strings changed to (nil) + * + * v2.5 + * - Added C++ support + * - Prepended all internal functions with dprintf_ + * - Defined the booleans + * + * v2.4 + * - Added dvsprintf(), dvfprintf() and dvprintf(). + * - Made the formatting function available with the name _formatf() to enable + * other *printf()-inspired functions. (I considered adding a dmsprintf() + * that works like sprintf() but allocates the destination string and + * possibly enlarges it itself, but things like that should be done with the + * new _formatf() instead.) + * + * v2.3 + * - Small modifications to make it compile nicely at both Daniel's and + * Bjorn's place. + * + * v2.2 + * - Made it work with text to the right of the last %! + * - Introduced dprintf(), dsprintf() and dfprintf(). + * - Float/double support enabled. This system is currently using the ordinary + * sprintf() function. NOTE that positional parameters, widths and precisions + * will still work like it should since the d-system takes care of that and + * passes that information re-formatted to the old sprintf(). + * + * v2.1 + * - Fixed space padding (i.e %d was extra padded previously) + * - long long output is supported + * - alternate output is done correct like in %#08x + * + ****************************************************************************/ + +static const char rcsid[] = "@(#)$Id$"; + +/* + * To test: + * + * Use WIDTH, PRECISION and NUMBERED ARGUMENT combined. + */ + +#include +#include +#include +#include +#include +#include + + +#define BUFFSIZE 256 /* buffer for long-to-str and float-to-str calcs */ +#define MAX_PARAMETERS 128 /* lame static limit */ + +#undef TRUE +#undef FALSE +#undef BOOL +#ifdef __cplusplus +# define TRUE true +# define FALSE false +# define BOOL bool +#else +# define TRUE ((char)(1 == 1)) +# define FALSE ((char)(0 == 1)) +# define BOOL char +#endif + + +/* Lower-case digits. */ +static const char lower_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; + +/* Upper-case digits. */ +static const char upper_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + +#define OUTCHAR(x) done+=(stream(x, (FILE *)data)==-1?0:1) + +/* Data type to read from the arglist */ +typedef enum { + FORMAT_UNKNOWN = 0, + FORMAT_STRING, + FORMAT_PTR, + FORMAT_INT, + FORMAT_INTPTR, + FORMAT_LONG, + FORMAT_LONGLONG, + FORMAT_DOUBLE, + FORMAT_LONGDOUBLE, + FORMAT_WIDTH /* For internal use */ +} FormatType; + +/* convertion and display flags */ +enum { + FLAGS_NEW = 0, + FLAGS_SPACE = 1<<0, + FLAGS_SHOWSIGN = 1<<1, + FLAGS_LEFT = 1<<2, + FLAGS_ALT = 1<<3, + FLAGS_SHORT = 1<<4, + FLAGS_LONG = 1<<5, + FLAGS_LONGLONG = 1<<6, + FLAGS_LONGDOUBLE = 1<<7, + FLAGS_PAD_NIL = 1<<8, + FLAGS_UNSIGNED = 1<<9, + FLAGS_OCTAL = 1<<10, + FLAGS_HEX = 1<<11, + FLAGS_UPPER = 1<<12, + FLAGS_WIDTH = 1<<13, /* '*' or '*$' used */ + FLAGS_WIDTHPARAM = 1<<14, /* width PARAMETER was specified */ + FLAGS_PREC = 1<<15, /* precision was specified */ + FLAGS_PRECPARAM = 1<<16, /* precision PARAMETER was specified */ + FLAGS_CHAR = 1<<17, /* %c story */ + FLAGS_FLOATE = 1<<18, /* %e or %E */ + FLAGS_FLOATG = 1<<19 /* %g or %G */ +}; + +typedef struct { + FormatType type; + int flags; + int width; /* width OR width parameter number */ + int precision; /* precision OR precision parameter number */ + union { + char *str; + void *ptr; + long num; +#if SIZEOF_LONG_LONG /* if this is non-zero */ + long long lnum; +#endif + double dnum; +#if SIZEOF_LONG_DOUBLE + long double ldnum; +#endif + } data; +} va_stack_t; + +struct nsprintf { + char *buffer; + size_t length; + size_t max; +}; + +struct asprintf { + char *buffer; /* allocated buffer */ + size_t len; /* length of string */ + size_t alloc; /* length of alloc */ +}; + +int msprintf(char *buffer, const char *format, ...); + +static int dprintf_DollarString(char *input, char **end) +{ + int number=0; + while(isdigit((int)*input)) { + number *= 10; + number += *input-'0'; + input++; + } + if(number && ('$'==*input++)) { + *end = input; + return number; + } + return 0; +} + +static BOOL dprintf_IsQualifierNoDollar(char c) +{ + switch (c) { + case '-': case '+': case ' ': case '#': case '.': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case 'h': case 'l': case 'L': case 'Z': case 'q': + return TRUE; + default: + return FALSE; + } +} + +#ifdef DPRINTF_DEBUG2 +int dprintf_Pass1Report(va_stack_t *vto, int max) +{ + int i; + char buffer[128]; + int bit; + int flags; + + for(i=0; i max_param) + max_param = this_param; + + /* + * The parameter with number 'i' should be used. Next, we need + * to get SIZE and TYPE of the parameter. Add the information + * to our array. + */ + + width = 0; + precision = 0; + + /* Handle the flags */ + + while (dprintf_IsQualifierNoDollar(*fmt)) { + switch (*fmt++) { + case ' ': + flags |= FLAGS_SPACE; + break; + case '+': + flags |= FLAGS_SHOWSIGN; + break; + case '-': + flags |= FLAGS_LEFT; + flags &= ~FLAGS_PAD_NIL; + break; + case '#': + flags |= FLAGS_ALT; + break; + case '.': + flags |= FLAGS_PREC; + if ('*' == *fmt) { + /* The precision is picked from a specified parameter */ + + flags |= FLAGS_PRECPARAM; + fmt++; + param_num++; + + i = dprintf_DollarString(fmt, &fmt); + if (i) + precision = i; + else + precision = param_num; + + if (precision > max_param) + max_param = precision; + } + else { + flags |= FLAGS_PREC; + precision = strtol(fmt, &fmt, 10); + } + break; + case 'h': + flags |= FLAGS_SHORT; + break; + case 'l': + if (flags & FLAGS_LONG) + flags |= FLAGS_LONGLONG; + else + flags |= FLAGS_LONG; + break; + case 'L': + flags |= FLAGS_LONGDOUBLE; + break; + case 'q': + flags |= FLAGS_LONGLONG; + break; + case 'Z': + if (sizeof(size_t) > sizeof(unsigned long int)) + flags |= FLAGS_LONGLONG; + if (sizeof(size_t) > sizeof(unsigned int)) + flags |= FLAGS_LONG; + break; + case '0': + if (!(flags & FLAGS_LEFT)) + flags |= FLAGS_PAD_NIL; + /* FALLTHROUGH */ + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + flags |= FLAGS_WIDTH; + width = strtol(--fmt, &fmt, 10); + break; + case '*': /* Special case */ + flags |= FLAGS_WIDTHPARAM; + param_num++; + + i = dprintf_DollarString(fmt, &fmt); + if(i) + width = i; + else + width = param_num; + if(width > max_param) + max_param=width; + break; + default: + break; + } + } /* switch */ + + /* Handle the specifier */ + + i = this_param - 1; + + switch (*fmt) { + case 'S': + flags |= FLAGS_ALT; + /* FALLTHROUGH */ + case 's': + vto[i].type = FORMAT_STRING; + break; + case 'n': + vto[i].type = FORMAT_INTPTR; + break; + case 'p': + vto[i].type = FORMAT_PTR; + break; + case 'd': case 'i': + vto[i].type = FORMAT_INT; + break; + case 'u': + vto[i].type = FORMAT_INT; + flags |= FLAGS_UNSIGNED; + break; + case 'o': + vto[i].type = FORMAT_INT; + flags |= FLAGS_OCTAL; + break; + case 'x': + vto[i].type = FORMAT_INT; + flags |= FLAGS_HEX; + break; + case 'X': + vto[i].type = FORMAT_INT; + flags |= FLAGS_HEX|FLAGS_UPPER; + break; + case 'c': + vto[i].type = FORMAT_INT; + flags |= FLAGS_CHAR; + break; + case 'f': + vto[i].type = FORMAT_DOUBLE; + break; + case 'e': case 'E': + vto[i].type = FORMAT_DOUBLE; + flags |= FLAGS_FLOATE| (('E' == *fmt)?FLAGS_UPPER:0); + break; + case 'g': case 'G': + vto[i].type = FORMAT_DOUBLE; + flags |= FLAGS_FLOATG| (('G' == *fmt)?FLAGS_UPPER:0); + break; + default: + vto[i].type = FORMAT_UNKNOWN; + break; + } /* switch */ + + vto[i].flags = flags; + vto[i].width = width; + vto[i].precision = precision; + + if (flags & FLAGS_WIDTHPARAM) { + /* we have the width specified from a parameter, so we make that + parameter's info setup properly */ + vto[i].width = width - 1; + i = width - 1; + vto[i].type = FORMAT_WIDTH; + vto[i].flags = FLAGS_NEW; + vto[i].precision = vto[i].width = 0; /* can't use width or precision + of width! */ + } + if (flags & FLAGS_PRECPARAM) { + /* we have the precision specified from a parameter, so we make that + parameter's info setup properly */ + vto[i].precision = precision - 1; + i = precision - 1; + vto[i].type = FORMAT_WIDTH; + vto[i].flags = FLAGS_NEW; + vto[i].precision = vto[i].width = 0; /* can't use width or precision + of width! */ + } + *endpos++ = fmt + 1; /* end of this sequence */ + } + } + +#ifdef DPRINTF_DEBUG2 + dprintf_Pass1Report(vto, max_param); +#endif + + /* Read the arg list parameters into our data list */ + for (i=0; i$ sequence */ + param=dprintf_DollarString(f, &f); + + if(!param) + param = param_num; + else + --param; + + param_num++; /* increase this always to allow "%2$s %1$s %s" and then the + third %s will pick the 3rd argument */ + + p = &vto[param]; + + /* pick up the specified width */ + if(p->flags & FLAGS_WIDTHPARAM) + width = vto[p->width].data.num; + else + width = p->width; + + /* pick up the specified precision */ + if(p->flags & FLAGS_PRECPARAM) + prec = vto[p->precision].data.num; + else if(p->flags & FLAGS_PREC) + prec = p->precision; + else + prec = -1; + + alt = p->flags & FLAGS_ALT; + + switch (p->type) { + case FORMAT_INT: + num = p->data.num; + if(p->flags & FLAGS_CHAR) { + /* Character. */ + if (!(p->flags & FLAGS_LEFT)) + while (--width > 0) + OUTCHAR(' '); + OUTCHAR((char) num); + if (p->flags & FLAGS_LEFT) + while (--width > 0) + OUTCHAR(' '); + break; + } + if(p->flags & FLAGS_UNSIGNED) { + /* Decimal unsigned integer. */ + base = 10; + goto unsigned_number; + } + if(p->flags & FLAGS_OCTAL) { + /* Octal unsigned integer. */ + base = 8; + goto unsigned_number; + } + if(p->flags & FLAGS_HEX) { + /* Hexadecimal unsigned integer. */ + + digits = (p->flags & FLAGS_UPPER)? upper_digits : lower_digits; + base = 16; + goto unsigned_number; + } + + /* Decimal integer. */ + base = 10; + +#if SIZEOF_LONG_LONG + if(p->flags & FLAGS_LONGLONG) { + /* long long */ + num = p->data.lnum; + is_neg = num < 0; + num = is_neg ? (- num) : num; + } + else +#endif + { + signed_num = (long) num; + + is_neg = signed_num < 0; + num = is_neg ? (- signed_num) : signed_num; + } + goto number; + + unsigned_number:; + /* Unsigned number of base BASE. */ + is_neg = 0; + + number:; + /* Number of base BASE. */ + { + char *workend = &work[sizeof(work) - 1]; + register char *w; + + /* Supply a default precision if none was given. */ + if (prec == -1) + prec = 1; + + /* Put the number in WORK. */ + w = workend; + while (num > 0) { + *w-- = digits[num % base]; + num /= base; + } + width -= workend - w; + prec -= workend - w; + + if (alt && base == 8 && prec <= 0) { + *w-- = '0'; + --width; + } + + if (prec > 0) { + width -= prec; + while (prec-- > 0) + *w-- = '0'; + } + + if (alt && base == 16) + width -= 2; + + if (is_neg || (p->flags & FLAGS_SHOWSIGN) || (p->flags & FLAGS_SPACE)) + --width; + + if (!(p->flags & FLAGS_LEFT) && !(p->flags & FLAGS_PAD_NIL)) + while (width-- > 0) + OUTCHAR(' '); + + if (is_neg) + OUTCHAR('-'); + else if (p->flags & FLAGS_SHOWSIGN) + OUTCHAR('+'); + else if (p->flags & FLAGS_SPACE) + OUTCHAR(' '); + + if (alt && base == 16) { + OUTCHAR('0'); + if(p->flags & FLAGS_UPPER) + OUTCHAR('X'); + else + OUTCHAR('x'); + } + + if (!(p->flags & FLAGS_LEFT) && (p->flags & FLAGS_PAD_NIL)) + while (width-- > 0) + OUTCHAR('0'); + + /* Write the number. */ + while (++w <= workend) { + OUTCHAR(*w); + } + + if (p->flags & FLAGS_LEFT) + while (width-- > 0) + OUTCHAR(' '); + } + break; + + case FORMAT_STRING: + /* String. */ + { + static char null[] = "(nil)"; + char *str; + size_t len; + + str = (char *) p->data.str; + if ( str == NULL) { + /* Write null[] if there's space. */ + if (prec == -1 || prec >= (long) sizeof(null) - 1) { + str = null; + len = sizeof(null) - 1; + /* Disable quotes around (nil) */ + p->flags &= (~FLAGS_ALT); + } + else { + str = ""; + len = 0; + } + } + else + len = strlen(str); + + if (prec != -1 && (size_t) prec < len) + len = prec; + width -= len; + + if (p->flags & FLAGS_ALT) + OUTCHAR('"'); + + if (!(p->flags&FLAGS_LEFT)) + while (width-- > 0) + OUTCHAR(' '); + + while (len-- > 0) + OUTCHAR(*str++); + if (p->flags&FLAGS_LEFT) + while (width-- > 0) + OUTCHAR(' '); + + if (p->flags & FLAGS_ALT) + OUTCHAR('"'); + } + break; + + case FORMAT_PTR: + /* Generic pointer. */ + { + void *ptr; + ptr = (void *) p->data.ptr; + if (ptr != NULL) { + /* If the pointer is not NULL, write it as a %#x spec. */ + base = 16; + digits = (p->flags & FLAGS_UPPER)? upper_digits : lower_digits; + alt = 1; + num = (unsigned long) ptr; + is_neg = 0; + goto number; + } + else { + /* Write "(nil)" for a nil pointer. */ + static char nil[] = "(nil)"; + register char *point; + + width -= sizeof(nil) - 1; + if (p->flags & FLAGS_LEFT) + while (width-- > 0) + OUTCHAR(' '); + for (point = nil; *point != '\0'; ++point) + OUTCHAR(*point); + if (! (p->flags & FLAGS_LEFT)) + while (width-- > 0) + OUTCHAR(' '); + } + } + break; + + case FORMAT_DOUBLE: + { + char formatbuf[32]="%"; + char *fptr; + + width = -1; + if (p->flags & FLAGS_WIDTH) + width = p->width; + else if (p->flags & FLAGS_WIDTHPARAM) + width = vto[p->width].data.num; + + prec = -1; + if (p->flags & FLAGS_PREC) + prec = p->precision; + else if (p->flags & FLAGS_PRECPARAM) + prec = vto[p->precision].data.num; + + if (p->flags & FLAGS_LEFT) + strcat(formatbuf, "-"); + if (p->flags & FLAGS_SHOWSIGN) + strcat(formatbuf, "+"); + if (p->flags & FLAGS_SPACE) + strcat(formatbuf, " "); + if (p->flags & FLAGS_ALT) + strcat(formatbuf, "#"); + + fptr=&formatbuf[strlen(formatbuf)]; + + if(width >= 0) { + /* RECURSIVE USAGE */ + fptr += msprintf(fptr, "%d", width); + } + if(prec >= 0) { + /* RECURSIVE USAGE */ + fptr += msprintf(fptr, ".%d", prec); + } + if (p->flags & FLAGS_LONG) + strcat(fptr, "l"); + + if (p->flags & FLAGS_FLOATE) + strcat(fptr, p->flags&FLAGS_UPPER?"E":"e"); + else if (p->flags & FLAGS_FLOATG) + strcat(fptr, (p->flags & FLAGS_UPPER) ? "G" : "g"); + else + strcat(fptr, "f"); + + /* NOTE NOTE NOTE!! Not all sprintf() implementations returns number + of output characters */ +#if SIZEOF_LONG_DOUBLE + if (p->flags & FLAGS_LONG) + /* This is for support of the 'long double' type */ + (sprintf)(work, formatbuf, p->data.ldnum); + else +#endif + (sprintf)(work, formatbuf, p->data.dnum); + + for(fptr=work; *fptr; fptr++) + OUTCHAR(*fptr); + } + break; + + case FORMAT_INTPTR: + /* Answer the count of characters written. */ +#if SIZEOF_LONG_LONG + if (p->flags & FLAGS_LONGLONG) + *(long long int *) p->data.ptr = done; + else +#endif + if (p->flags & FLAGS_LONG) + *(long int *) p->data.ptr = done; + else if (!(p->flags & FLAGS_SHORT)) + *(int *) p->data.ptr = done; + else + *(short int *) p->data.ptr = done; + break; + + default: + break; + } + f = *end++; /* goto end of %-code */ + + } + return done; +} + +static int StoreNonPrintable(int output, struct nsprintf *infop) +{ + /* If the character isn't printable then we convert it */ + char work[64], *w; + int num = output; + + w = &work[sizeof(work)]; + *(--w) = (char)0; + for(; num > 0; num /= 10) { + *(--w) = lower_digits[num % 10]; + } + if (infop->length + strlen(w) + 1 < infop->max) + { + infop->buffer[0] = '\\'; + infop->buffer++; + infop->length++; + for (; *w; w++) + { + infop->buffer[0] = *w; + infop->buffer++; + infop->length++; + } + return output; + } + return -1; +} + +/* fputc() look-alike */ +static int addbyter(int output, FILE *data) +{ + struct nsprintf *infop=(struct nsprintf *)data; + + if(infop->length < infop->max) { + /* only do this if we haven't reached max length yet */ + if (isprint(output) || isspace(output)) + { + infop->buffer[0] = (char)output; /* store */ + infop->buffer++; /* increase pointer */ + infop->length++; /* we are now one byte larger */ + } + else + { + return StoreNonPrintable(output, infop); + } + return output; /* fputc() returns like this on success */ + } + return -1; +} + +int msnprintf(char *buffer, size_t maxlength, const char *format, ...) +{ + va_list ap_save; /* argument pointer */ + int retcode; + struct nsprintf info; + + info.buffer = buffer; + info.length = 0; + info.max = maxlength; + + va_start(ap_save, format); + retcode = dprintf_formatf(&info, addbyter, format, ap_save); + va_end(ap_save); + info.buffer[0] = 0; /* we terminate this with a zero byte */ + + /* we could even return things like */ + + return retcode; +} + +int mvsnprintf(char *buffer, size_t maxlength, const char *format, va_list ap_save) +{ + int retcode; + struct nsprintf info; + + info.buffer = buffer; + info.length = 0; + info.max = maxlength; + + retcode = dprintf_formatf(&info, addbyter, format, ap_save); + info.buffer[0] = 0; /* we terminate this with a zero byte */ + return retcode; +} + + +/* fputc() look-alike */ +static int alloc_addbyter(int output, FILE *data) +{ + struct asprintf *infop=(struct asprintf *)data; + + if(!infop->buffer) { + infop->buffer=(char *)malloc(32); + if(!infop->buffer) + return -1; /* fail */ + infop->alloc = 32; + infop->len =0; + } + else if(infop->len+1 >= infop->alloc) { + char *newptr; + + newptr = (char *)realloc(infop->buffer, infop->alloc*2); + + if(!newptr) { + return -1; + } + infop->buffer = newptr; + infop->alloc *= 2; + } + + infop->buffer[ infop->len ] = output; + + infop->len++; + + return output; /* fputc() returns like this on success */ + +} + +char *maprintf(const char *format, ...) +{ + va_list ap_save; /* argument pointer */ + int retcode; + struct asprintf info; + + info.buffer = NULL; + info.len = 0; + info.alloc = 0; + + va_start(ap_save, format); + retcode = dprintf_formatf(&info, alloc_addbyter, format, ap_save); + va_end(ap_save); + if(info.len) { + info.buffer[info.len] = 0; /* we terminate this with a zero byte */ + return info.buffer; + } + else + return NULL; +} + +char *mvaprintf(const char *format, va_list ap_save) +{ + int retcode; + struct asprintf info; + + info.buffer = NULL; + info.len = 0; + info.alloc = 0; + + retcode = dprintf_formatf(&info, alloc_addbyter, format, ap_save); + info.buffer[info.len] = 0; /* we terminate this with a zero byte */ + if(info.len) { + info.buffer[info.len] = 0; /* we terminate this with a zero byte */ + return info.buffer; + } + else + return NULL; +} + +static int storebuffer(int output, FILE *data) +{ + char **buffer = (char **)data; + **buffer = (char)output; + (*buffer)++; + return output; /* act like fputc() ! */ +} + +int msprintf(char *buffer, const char *format, ...) +{ + va_list ap_save; /* argument pointer */ + int retcode; + va_start(ap_save, format); + retcode = dprintf_formatf(&buffer, storebuffer, format, ap_save); + va_end(ap_save); + *buffer=0; /* we terminate this with a zero byte */ + return retcode; +} + +extern int fputc(int, FILE *); + +int mprintf(const char *format, ...) +{ + int retcode; + va_list ap_save; /* argument pointer */ + va_start(ap_save, format); + retcode = dprintf_formatf(stdout, fputc, format, ap_save); + va_end(ap_save); + return retcode; +} + +int mfprintf(FILE *whereto, const char *format, ...) +{ + int retcode; + va_list ap_save; /* argument pointer */ + va_start(ap_save, format); + retcode = dprintf_formatf(whereto, fputc, format, ap_save); + va_end(ap_save); + return retcode; +} + +int mvsprintf(char *buffer, const char *format, va_list ap_save) +{ + int retcode; + retcode = dprintf_formatf(&buffer, storebuffer, format, ap_save); + *buffer=0; /* we terminate this with a zero byte */ + return retcode; +} + +int mvprintf(const char *format, va_list ap_save) +{ + return dprintf_formatf(stdout, fputc, format, ap_save); +} + +int mvfprintf(FILE *whereto, const char *format, va_list ap_save) +{ + return dprintf_formatf(whereto, fputc, format, ap_save); +} + +#ifdef DPRINTF_DEBUG +int main() +{ + char buffer[129]; + char *ptr; +#ifdef SIZEOF_LONG_LONG + long long hullo; + dprintf("%3$12s %1$s %2$qd %4$d\n", "daniel", hullo, "stenberg", 65); +#endif + + mprintf("%3d %5d\n", 10, 1998); + + ptr=maprintf("test this then baby %s%s%s%s%s%s %d %d %d loser baby get a hit in yer face now!", "", "pretty long string pretty long string pretty long string pretty long string pretty long string", "/", "/", "/", "pretty long string", 1998, 1999, 2001); + + puts(ptr); + + memset(ptr, 55, strlen(ptr)+1); + + free(ptr); + +#if 1 + mprintf(buffer, "%s %s %d", "daniel", "stenberg", 19988); + puts(buffer); + + mfprintf(stderr, "%s %#08x\n", "dummy", 65); + + printf("%s %#08x\n", "dummy", 65); + { + double tryout = 3.14156592; + mprintf(buffer, "%.2g %G %f %e %E", tryout, tryout, tryout, tryout, tryout); + puts(buffer); + printf("%.2g %G %f %e %E\n", tryout, tryout, tryout, tryout, tryout); + } +#endif + + return 0; +} + +#endif diff --git a/lib/netrc.c b/lib/netrc.c new file mode 100644 index 000000000..f0e1382fe --- /dev/null +++ b/lib/netrc.c @@ -0,0 +1,182 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * Contributor(s): + * Rafael Sagula + * Sampo Kellomaki + * Linas Vepstas + * Bjorn Reese + * Johan Anderson + * Kjell Ericson + * Troy Engel + * Ryan Nelson + * Bjorn Stenberg + * Angus Mackay + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include +#include +#include + +#include "setup.h" +#include "getenv.h" + +/* Debug this single source file with: + 'make netrc' then run './netrc'! + + Oh, make sure you have a .netrc file too ;-) + */ + +/* Get user and password from .netrc when given a machine name */ + +enum { + NOTHING, + HOSTFOUND, /* the 'machine' keyword was found */ + HOSTCOMPLETE, /* the machine name following the keyword was found too */ + HOSTVALID, /* this is "our" machine! */ + + HOSTEND /* LAST enum */ +}; + +/* make sure we have room for at least this size: */ +#define LOGINSIZE 64 +#define PASSWORDSIZE 64 + +int ParseNetrc(char *host, + char *login, + char *password) +{ + FILE *file; + char netrcbuffer[256]; + int retcode=1; + + char *home = GetEnv("HOME"); /* portable environment reader */ + int state=NOTHING; + + char state_login=0; + char state_password=0; + +#define NETRC DOT_CHAR "netrc" + + if(!home || (strlen(home)>(sizeof(netrcbuffer)-strlen(NETRC)))) + return -1; + + sprintf(netrcbuffer, "%s%s%s", home, DIR_CHAR, NETRC); + + file = fopen(netrcbuffer, "r"); + if(file) { + char *tok; + while(fgets(netrcbuffer, sizeof(netrcbuffer), file)) { + tok=strtok(netrcbuffer, " \t\n"); + while(tok) { + switch(state) { + case NOTHING: + if(strequal("machine", tok)) { + /* the next tok is the machine name, this is in itself the + delimiter that starts the stuff entered for this machine, + after this we need to search for 'login' and + 'password'. */ + state=HOSTFOUND; + } + break; + case HOSTFOUND: + if(strequal(host, tok)) { + /* and yes, this is our host! */ + state=HOSTVALID; +#ifdef _NETRC_DEBUG + printf("HOST: %s\n", tok); +#endif + retcode=0; /* we did find our host */ + } + else + /* not our host */ + state=NOTHING; + break; + case HOSTVALID: + /* we are now parsing sub-keywords concerning "our" host */ + if(state_login) { + strncpy(login, tok, LOGINSIZE-1); +#ifdef _NETRC_DEBUG + printf("LOGIN: %s\n", login); +#endif + state_login=0; + } + else if(state_password) { + strncpy(password, tok, PASSWORDSIZE-1); +#if _NETRC_DEBUG + printf("PASSWORD: %s\n", password); +#endif + state_password=0; + } + else if(strequal("login", tok)) + state_login=1; + else if(strequal("password", tok)) + state_password=1; + else if(strequal("machine", tok)) { + /* ok, there's machine here go => */ + state = HOSTFOUND; + } + break; + } /* switch (state) */ + tok = strtok(NULL, " \t\n"); + } /* while (tok) */ + } /* while fgets() */ + + fclose(file); + } + + return retcode; +} + +#ifdef _NETRC_DEBUG +int main(int argc, char **argv) +{ + char login[64]=""; + char password[64]=""; + + if(argc<2) + return -1; + + if(0 == ParseNetrc(argv[1], login, password)) { + printf("HOST: %s LOGIN: %s PASSWORD: %s\n", + argv[1], login, password); + } +} + +#endif diff --git a/lib/netrc.h b/lib/netrc.h new file mode 100644 index 000000000..2875cbc53 --- /dev/null +++ b/lib/netrc.h @@ -0,0 +1,70 @@ +#ifndef __NETRC_H +#define __NETRC_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * Contributor(s): + * Rafael Sagula + * Sampo Kellomaki + * Linas Vepstas + * Bjorn Reese + * Johan Anderson + * Kjell Ericson + * Troy Engel + * Ryan Nelson + * Bjorn Stenberg + * Angus Mackay + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + * $Log$ + * Revision 1.1 1999-12-29 14:21:35 bagder + * Initial revision + * + * Revision 1.3 1999/09/06 06:59:41 dast + * Changed email info + * + * Revision 1.2 1999/08/13 07:34:48 dast + * Changed the URL in the header + * + * Revision 1.1.1.1 1999/03/11 22:23:34 dast + * Imported sources + * + ****************************************************************************/ +int ParseNetrc(char *host, + char *login, + char *password); +#endif diff --git a/lib/progress.c b/lib/progress.c new file mode 100644 index 000000000..6a083370b --- /dev/null +++ b/lib/progress.c @@ -0,0 +1,221 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include +#include "setup.h" + +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +#if defined(__MINGW32__) +#include +#endif +#include +#endif + +#include +#include "urldata.h" + +#include "progress.h" + +/* --- start of progress routines --- */ +int progressmax=-1; + +static int prev = 0; +static int width = 0; + +void ProgressInit(struct UrlData *data, int max) +{ + if(data->conf&(CONF_NOPROGRESS|CONF_MUTE)) + return; + + prev = 0; + +/* TODO: get terminal width through ansi escapes or something similar. + try to update width when xterm is resized... - 19990617 larsa */ + if (curl_GetEnv("COLUMNS") != NULL) + width = atoi(curl_GetEnv("COLUMNS")); + else + width = 80; + + progressmax = max; + if(-1 == max) + return; + if(progressmax <= LEAST_SIZE_PROGRESS) { + progressmax = -1; /* disable */ + return; + } + + if ( data->progressmode == CURL_PROGRESS_STATS ) + fprintf(data->err, + " %% Received Total Speed Time left Total Curr.Speed\n"); +} + +void time2str(char *r, int t) +{ + int h = (t/3600); + int m = (t-(h*3600))/60; + int s = (t-(h*3600)-(m*60)); + sprintf(r,"%3d:%02d:%02d",h,m,s); +} + +void ProgressShow(struct UrlData *data, + int point, struct timeval start, struct timeval now, bool force) +{ + switch ( data->progressmode ) { + case CURL_PROGRESS_STATS: + { + static long lastshow; + double percen; + + double spent; + double speed; + +#define CURR_TIME 5 + + static int speeder[ CURR_TIME ]; + static int speeder_c=0; + + int nowindex = speeder_c% CURR_TIME; + int checkindex; + int count; + + if(!force && (point != progressmax) && (lastshow == tvlong(now))) + return; /* never update this more than once a second if the end isn't + reached */ + + spent = tvdiff (now, start); + speed = point/(spent!=0.0?spent:1.0); + if(!speed) + speed=1; + + /* point is where we are right now */ + speeder[ nowindex ] = point; + speeder_c++; /* increase */ + count = ((speeder_c>=CURR_TIME)?CURR_TIME:speeder_c) - 1; + checkindex = (speeder_c>=CURR_TIME)?speeder_c%CURR_TIME:0; + + /* find out the average speed the last CURR_TIME seconds */ + data->current_speed = (speeder[nowindex]-speeder[checkindex])/(count?count:1); + +#if 0 + printf("NOW %d(%d) THEN %d(%d) DIFF %lf COUNT %d\n", + speeder[nowindex], nowindex, + speeder[checkindex], checkindex, + data->current_speed, count); +#endif + + if(data->conf&(CONF_NOPROGRESS|CONF_MUTE)) + return; + + if(-1 != progressmax) { + char left[20],estim[20]; + int estimate = progressmax/(int) speed; + + time2str(left,estimate-(int) spent); + time2str(estim,estimate); + + percen=(double)point/progressmax; + percen=percen*100; + + fprintf(data->err, "\r%3d %8d %8d %6.0lf %s %s %6.0lf ", + (int)percen, point, progressmax, + speed, left, estim, data->current_speed); + } + else + fprintf(data->err, + "\r%d bytes received in %.3lf seconds (%.0lf bytes/sec)", + point, spent, speed); + + lastshow = now.tv_sec; + break; + } + case CURL_PROGRESS_BAR: /* 19990617 larsa */ + { + if (point == prev) break; + if (progressmax == -1) { + int prevblock = prev / 1024; + int thisblock = point / 1024; + while ( thisblock > prevblock ) { + fprintf( data->err, "#" ); + prevblock++; + } + prev = point; + } else { + char line[256]; + char outline[256]; + char format[40]; + float frac = (float) point / (float) progressmax; + float percent = frac * 100.0f; + int barwidth = width - 7; + int num = (int) (((float)barwidth) * frac); + int i = 0; + for ( i = 0; i < num; i++ ) { + line[i] = '#'; + } + line[i] = '\0'; + sprintf( format, "%%-%ds %%5.1f%%%%", barwidth ); + sprintf( outline, format, line, percent ); + fprintf( data->err, "\r%s", outline ); + } + prev = point; + break; + } + default: /* 19990617 larsa */ + { + int prevblock = prev / 1024; + int thisblock = point / 1024; + if (prev == point) break; + while ( thisblock > prevblock ) { + fprintf( data->err, "#" ); + prevblock++; + } + prev = point; + break; + } + } +} + +void ProgressEnd(struct UrlData *data) +{ + if(data->conf&(CONF_NOPROGRESS|CONF_MUTE)) + return; + fputs("\n", data->err); +} + +/* --- end of progress routines --- */ diff --git a/lib/progress.h b/lib/progress.h new file mode 100644 index 000000000..6babd89ca --- /dev/null +++ b/lib/progress.h @@ -0,0 +1,54 @@ +#ifndef __PROGRESS_H +#define __PROGRESS_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include "timeval.h" + +void ProgressInit(struct UrlData *data, int max); +void ProgressShow(struct UrlData *data, + int point, struct timeval start, struct timeval now, bool force); +void ProgressEnd(struct UrlData *data); +void ProgressMode(int mode); + +/* Don't show progress for sizes smaller than: */ +#define LEAST_SIZE_PROGRESS BUFSIZE + +#endif /* __PROGRESS_H */ diff --git a/lib/sendf.c b/lib/sendf.c new file mode 100644 index 000000000..387984d9d --- /dev/null +++ b/lib/sendf.c @@ -0,0 +1,115 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include +#include +#include + +#include "setup.h" + +#ifdef HAVE_UNISTD_H +#include +#endif +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +#include +#endif + +#include +#include "urldata.h" + +#include + +/* infof() is for info message along the way */ + +void infof(struct UrlData *data, char *fmt, ...) +{ + va_list ap; + if(data->conf & CONF_VERBOSE) { + va_start(ap, fmt); + fputs("* ", data->err); + vfprintf(data->err, fmt, ap); + va_end(ap); + } +} + +/* failf() is for messages stating why we failed, the LAST one will be + returned for the user (if requested) */ + +void failf(struct UrlData *data, char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + if(data->errorbuffer) + vsprintf(data->errorbuffer, fmt, ap); + else /* no errorbuffer receives this, write to data->err instead */ + vfprintf(data->err, fmt, ap); + va_end(ap); +} + +/* sendf() sends the formated data to the server */ + +int sendf(int fd, struct UrlData *data, char *fmt, ...) +{ + size_t bytes_written; + char *s; + va_list ap; + va_start(ap, fmt); + s = mvaprintf(fmt, ap); + va_end(ap); + if(!s) + return 0; /* failure */ + if(data->conf & CONF_VERBOSE) + fprintf(data->err, "> %s", s); +#ifndef USE_SSLEAY + bytes_written = swrite(fd, s, strlen(s)); +#else + if (data->use_ssl) { + bytes_written = SSL_write(data->ssl, s, strlen(s)); + } else { + bytes_written = swrite(fd, s, strlen(s)); + } +#endif /* USE_SSLEAY */ + free(s); /* free the output string */ + return(bytes_written); +} + + + + diff --git a/lib/sendf.h b/lib/sendf.h new file mode 100644 index 000000000..de6571930 --- /dev/null +++ b/lib/sendf.h @@ -0,0 +1,47 @@ +#ifndef __SENDF_H +#define __SENDF_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +int sendf(int fd, struct UrlData *, char *fmt, ...); +void infof(struct UrlData *, char *fmt, ...); +void failf(struct UrlData *, char *fmt, ...); + +#endif diff --git a/lib/setup.h b/lib/setup.h new file mode 100644 index 000000000..6770ec6c4 --- /dev/null +++ b/lib/setup.h @@ -0,0 +1,169 @@ +#ifndef __SETUP_H +#define __SETUP_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include + +#if !defined(WIN32) && defined(_WIN32) +/* This _might_ be a good Borland fix. Please report whether this works or + not! */ +#define WIN32 +#endif + +#ifdef HAVE_CONFIG_H +#include "config.h" /* the configure script results */ +#else +#ifdef WIN32 +/* include the hand-modified win32 adjusted config.h! */ +#include "../config-win32.h" +#endif +#endif + + + +#ifndef OS +#ifdef WIN32 +#define OS "win32" +#else +#define OS "unknown" +#endif +#endif + +#if defined(HAVE_X509_H) && defined(HAVE_SSL_H) && defined(HAVE_RSA_H) && \ +defined(HAVE_PEM_H) && defined(HAVE_ERR_H) && defined(HAVE_CRYPTO_H) && \ +defined(HAVE_LIBSSL) && defined(HAVE_LIBCRYPTO) + /* the six important includes files all exist and so do both libs, + defined SSLeay usage */ +#define USE_SSLEAY 1 +#endif +#if defined(HAVE_OPENSSL_X509_H) && defined(HAVE_OPENSSL_SSL_H) && \ +defined(HAVE_OPENSSL_RSA_H) && defined(HAVE_OPENSSL_PEM_H) && \ +defined(HAVE_OPENSSL_ERR_H) && defined(HAVE_OPENSSL_CRYPTO_H) && \ +defined(HAVE_LIBSSL) && defined(HAVE_LIBCRYPTO) + /* the six important includes files all exist and so do both libs, + defined SSLeay usage */ +#define USE_SSLEAY 1 +#define USE_OPENSSL 1 +#endif + +#ifndef STDC_HEADERS /* no standard C headers! */ +#include "stdcheaders.h" +#else +#ifdef _AIX +#include "stdcheaders.h" +#endif +#endif + +#if 0 /* zlib experiments are halted 17th october, 1999 (Daniel) */ +#if defined(HAVE_ZLIB_H) && defined(HAVE_LIBZ) + /* Both lib and header file exist, we have libz! */ +#define USE_ZLIB +#endif +#endif + +#ifdef HAVE_STRCASECMP +#define strnequal(x,y,z) !(strncasecmp)(x,y,z) +#define strequal(x,y) !(strcasecmp)(x,y) + +#else +#define strnequal(x,y,z) !strnicmp(x,y,z) +#define strequal(x,y) !stricmp(x,y) +#endif + +/* Below we define four functions. They should + 1. close a socket + 2. read from a socket + 3. write to a socket + (Hopefully, only win32-crap do this weird name changing) + + 4. set the SIGALRM signal timeout + 5. set dir/file naming defines + */ + +#ifdef WIN32 +#if !defined(__GNUC__) || defined(__MINGW32__) +#define sclose(x) closesocket(x) +#define sread(x,y,z) recv(x,y,z,0) +#define swrite(x,y,z) (size_t)send(x,y,z,0) +#define myalarm(x) /* win32 is a silly system */ +#else + /* gcc-for-win is still good :) */ +#define sclose(x) close(x) +#define sread(x,y,z) read(x,y,z) +#define swrite(x,y,z) write(x,y,z) +#define myalarm(x) alarm(x) +#endif + +#define PATH_CHAR ";" +#define DIR_CHAR "\\" +#define DOT_CHAR "_" + +#else +#define sclose(x) close(x) +#define sread(x,y,z) read(x,y,z) +#define swrite(x,y,z) write(x,y,z) +#define myalarm(x) alarm(x) + +#define PATH_CHAR ":" +#define DIR_CHAR "/" +#define DOT_CHAR "." + +#ifdef HAVE_STRCASECMP +/* this is for "-ansi -Wall -pedantic" to stop complaining! */ +extern int (strcasecmp)(const char *s1, const char *s2); +extern int (strncasecmp)(const char *s1, const char *s2, size_t n); +#ifndef fileno /* sunos 4 have this as a macro! */ +int fileno( FILE *stream); +#endif +#endif + +#endif + +/* + * FIXME: code for getting a passwd in windows/non termcap/signal systems? + */ +#ifndef WIN32 +#define get_password(x) getpass(x) +#else +#define get_password(x) +#endif + +#endif /* __CONFIG_H */ diff --git a/lib/speedcheck.c b/lib/speedcheck.c new file mode 100644 index 000000000..5647b50e2 --- /dev/null +++ b/lib/speedcheck.c @@ -0,0 +1,81 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include +#if defined(__MINGW32__) +#include +#endif + +#include +#include "urldata.h" +#include "sendf.h" +#include "speedcheck.h" + +UrgError speedcheck(struct UrlData *data, + struct timeval now) +{ + static struct timeval keeps_speed; + + if((data->current_speed >= 0) && + data->low_speed_time && + (tvlong(keeps_speed) != 0) && + (data->current_speed < data->low_speed_limit)) { + + /* We are now below the "low speed limit". If we are below it + for "low speed time" seconds we consider that enough reason + to abort the download. */ + + if( tvdiff(now, keeps_speed) > data->low_speed_time) { + /* we have been this slow for long enough, now die */ + failf(data, + "Operation too slow. " + "Less than %d bytes/sec transfered the last %d seconds", + data->low_speed_limit, + data->low_speed_time); + return URG_OPERATION_TIMEOUTED; + } + } + else { + /* we keep up the required speed all right */ + keeps_speed = now; + } + return URG_OK; +} + diff --git a/lib/speedcheck.h b/lib/speedcheck.h new file mode 100644 index 000000000..27e7ba2f6 --- /dev/null +++ b/lib/speedcheck.h @@ -0,0 +1,50 @@ +#ifndef __SPEEDCHECK_H +#define __SPEEDCHECK_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include "setup.h" + +#include "timeval.h" + +UrgError speedcheck(struct UrlData *data, + struct timeval now); + +#endif diff --git a/lib/ssluse.c b/lib/ssluse.c new file mode 100644 index 000000000..bb78df009 --- /dev/null +++ b/lib/ssluse.c @@ -0,0 +1,265 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include +#include + +#include "urldata.h" +#include "sendf.h" + +#ifdef USE_SSLEAY + +static char global_passwd[64]; + +static int passwd_callback(char *buf, int num, int verify +#if OPENSSL_VERSION_NUMBER >= 0x00904100L + /* This was introduced in 0.9.4, we can set this + using SSL_CTX_set_default_passwd_cb_userdata() + */ + , void *userdata +#endif + ) +{ + if(verify) + fprintf(stderr, "%s\n", buf); + else { + if(num > strlen(global_passwd)) { + strcpy(buf, global_passwd); + return strlen(buf); + } + } + return 0; +} + +/* This function is *highly* inspired by (and parts are directly stolen + * from) source from the SSLeay package written by Eric Young + * (eay@cryptsoft.com). */ + +int SSL_cert_stuff(struct UrlData *data, + char *cert_file, + char *key_file) +{ + if (cert_file != NULL) { + SSL *ssl; + X509 *x509; + + if(data->cert_passwd) { + /* + * If password has been given, we store that in the global + * area (*shudder*) for a while: + */ + strcpy(global_passwd, data->cert_passwd); + /* Set passwd callback: */ + SSL_CTX_set_default_passwd_cb(data->ctx, passwd_callback); + } + + if (SSL_CTX_use_certificate_file(data->ctx, + cert_file, + SSL_FILETYPE_PEM) <= 0) { + failf(data, "unable to set certificate file (wrong password?)\n"); + return(0); + } + if (key_file == NULL) + key_file=cert_file; + + if (SSL_CTX_use_PrivateKey_file(data->ctx, + key_file, + SSL_FILETYPE_PEM) <= 0) { + failf(data, "unable to set public key file\n"); + return(0); + } + + ssl=SSL_new(data->ctx); + x509=SSL_get_certificate(ssl); + + if (x509 != NULL) + EVP_PKEY_copy_parameters(X509_get_pubkey(x509), + SSL_get_privatekey(ssl)); + SSL_free(ssl); + + /* If we are using DSA, we can copy the parameters from + * the private key */ + + + /* Now we know that a key and cert have been set against + * the SSL context */ + if (!SSL_CTX_check_private_key(data->ctx)) { + failf(data, "Private key does not match the certificate public key\n"); + return(0); + } + + /* erase it now */ + memset(global_passwd, 0, sizeof(global_passwd)); + } + return(1); +} + +#endif + +#if SSL_VERIFY_CERT +int cert_verify_callback(int ok, X509_STORE_CTX *ctx) +{ + X509 *err_cert; + char buf[256]; + + err_cert=X509_STORE_CTX_get_current_cert(ctx); + X509_NAME_oneline(X509_get_subject_name(err_cert),buf,256); + + return 1; +} + +#endif + +/* ====================================================== */ +int +UrgSSLConnect (struct UrlData *data) +{ +#ifdef USE_SSLEAY + int err; + char * str; + SSL_METHOD *req_method; + + /* mark this is being ssl enabled from here on out. */ + data->use_ssl = 1; + + /* Lets get nice error messages */ + SSL_load_error_strings(); + + /* Setup all the global SSL stuff */ + SSLeay_add_ssl_algorithms(); + + switch(data->ssl_version) { + default: + req_method = SSLv23_client_method(); + break; + case 2: + req_method = SSLv2_client_method(); + break; + case 3: + req_method = SSLv3_client_method(); + break; + } + + data->ctx = SSL_CTX_new(req_method); + + if(!data->ctx) { + failf(data, "SSL: couldn't create a context!"); + return 1; + } + + if(data->cert) { + if (!SSL_cert_stuff(data, data->cert, data->cert)) { + failf(data, "couldn't use certificate!\n"); + return 2; + } + } + +#if SSL_VERIFY_CERT + SSL_CTX_set_verify(data->ctx, + SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT| + SSL_VERIFY_CLIENT_ONCE, + cert_verify_callback); +#endif + + /* Lets make an SSL structure */ + data->ssl = SSL_new (data->ctx); + SSL_set_connect_state (data->ssl); + + data->server_cert = 0x0; + + /* pass the raw socket into the SSL layers */ + SSL_set_fd (data->ssl, data->firstsocket); + err = SSL_connect (data->ssl); + + if (-1 == err) { + err = ERR_get_error(); + failf(data, "SSL: %s", ERR_error_string(err, NULL)); + return 10; + } + + + infof (data, "SSL connection using %s\n", SSL_get_cipher (data->ssl)); + + /* Get server's certificate (note: beware of dynamic allocation) - opt */ + /* major serious hack alert -- we should check certificates + * to authenticate the server; otherwise we risk man-in-the-middle + * attack + */ + + data->server_cert = SSL_get_peer_certificate (data->ssl); + if(!data->server_cert) { + failf(data, "SSL: couldn't get peer certificate!"); + return 3; + } + infof (data, "Server certificate:\n"); + + str = X509_NAME_oneline (X509_get_subject_name (data->server_cert), NULL, 0); + if(!str) { + failf(data, "SSL: couldn't get X509-subject!"); + return 4; + } + infof (data, "\t subject: %s\n", str); + Free (str); + + str = X509_NAME_oneline (X509_get_issuer_name (data->server_cert), NULL, 0); + if(!str) { + failf(data, "SSL: couldn't get X509-issuer name!"); + return 5; + } + infof (data, "\t issuer: %s\n", str); + Free (str); + + /* We could do all sorts of certificate verification stuff here before + deallocating the certificate. */ + + +#if SSL_VERIFY_CERT + infof(data, "Verify result: %d\n", SSL_get_verify_result(data->ssl)); +#endif + + + + X509_free (data->server_cert); +#else /* USE_SSLEAY */ + /* this is for "-ansi -Wall -pedantic" to stop complaining! (rabe) */ + (void) data; +#endif + return 0; +} diff --git a/lib/ssluse.h b/lib/ssluse.h new file mode 100644 index 000000000..c1996b28e --- /dev/null +++ b/lib/ssluse.h @@ -0,0 +1,46 @@ +#ifndef __SSLUSE_H +#define __SSLUSE_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ +int SSL_cert_stuff(struct UrlData *data, + char *cert_file, + char *key_file); +int UrgSSLConnect (struct UrlData *data); +#endif diff --git a/lib/sta01005 b/lib/sta01005 new file mode 100644 index 0000000000000000000000000000000000000000..31cd282d149ab3f378076125caf84e6fb27a5a8a GIT binary patch literal 1024 zcma)3v2If_6upH&OVVx(3=H7|5N#TzRH_hyB(xHdBBDwRNDuRTooB_*wruAmW$M7n z$cDs(#K6!GU_oN+2cU|%0}>LSfc=v95>$|C>DcF-Yu|fq-`OK3P99Y6)&Cy5&F$@- zR-<{}+naf4d9K&DHg{UH6ECX(&;zJU0lu~uI6DUT^(M#4yC3i`Txq|D|KjZzxVl@p zh}SovvcI>$?_;Pe;oA8vC~*Df39Nozht;$1ur^t{i1UYV<6|GH&!;(Rl|IxyoX&7^ z8)^aHyuJk1@4kS`Vx#^EHoB*b3j~)*HSsg$jQK?ZgdtqN84kUNrc!~|{Oz931U!~a6krd*w5m8r}v`>shSg=qps7Gon zDKSTRsA~{mh%N-$#F5<0D+T8n5{d>6wNS)oR%*mCBDADDv^2MU62bjF=92lu%Q_ZF z{9QbeXp9X`oDdUMk&(PcM2SOatBK6-Ehy127(9() zG%m7k>_7C-488MMNr}Ep{^l7P%asft+L77JTjpqEqKj_jT%}eUE**o^%7SGJN=mO} Og~JMxl_|2)V)_p;sYQ7J literal 0 HcmV?d00001 diff --git a/lib/sta18057 b/lib/sta18057 new file mode 100644 index 0000000000000000000000000000000000000000..36d824b46d697ca60773dc560ca62b1740f454bf GIT binary patch literal 461824 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⪻a@x4wlfdA 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Î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 DUSsx_ literal 0 HcmV?d00001 diff --git a/lib/telnet.c b/lib/telnet.c new file mode 100644 index 000000000..8ca12450d --- /dev/null +++ b/lib/telnet.c @@ -0,0 +1,937 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + * + * This implementation of the TELNET protocol is written by + * Linus Nielsen , + * with some code snippets stolen from the BSD Telnet client. + * + * The negotiation is performed according to RFC 1143 (D. Bernstein, + * "The Q Method of Implementing TELNET Option Negotiation") + * + ****************************************************************************/ + +/* -- WIN32 approved -- */ +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "setup.h" + +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +#include +#include +#include +#else +#ifdef HAVE_SYS_SOCKET_H +#include +#endif +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#ifdef HAVE_ARPA_INET_H +#include +#endif +#ifdef HAVE_NET_IF_H +#include +#endif +#include +#include + +#ifdef HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_SELECT_H +#include +#endif + + +#endif + +#include "urldata.h" +#include +#include "download.h" +#include "sendf.h" +#include "formdata.h" +#include "progress.h" + +#define _MPRINTF_REPLACE /* use our functions only */ +#include + +#define TELOPTS +#define TELCMDS +#define SLC_NAMES + +#include "arpa_telnet.h" + +#define SUBBUFSIZE 512 + +#define SB_CLEAR() subpointer = subbuffer; +#define SB_TERM() { subend = subpointer; SB_CLEAR(); } +#define SB_ACCUM(c) if (subpointer < (subbuffer+sizeof subbuffer)) { \ + *subpointer++ = (c); \ + } + +#define SB_GET() ((*subpointer++)&0xff) +#define SB_PEEK() ((*subpointer)&0xff) +#define SB_EOF() (subpointer >= subend) +#define SB_LEN() (subend - subpointer) + +void telwrite(struct UrlData *data, + unsigned char *buffer, /* Data to write */ + int count); /* Number of bytes to write */ + +void telrcv(struct UrlData *data, + unsigned char *inbuf, /* Data received from socket */ + int count); /* Number of bytes received */ + +static void printoption(struct UrlData *data, + const char *direction, + int cmd, int option); + +static void negotiate(struct UrlData *data); +static void send_negotiation(struct UrlData *data, int cmd, int option); +static void set_local_option(struct UrlData *data, int cmd, int option); +static void set_remote_option(struct UrlData *data, int cmd, int option); + +static void printsub(struct UrlData *data, + int direction, unsigned char *pointer, int length); +static void suboption(struct UrlData *data); + +/* suboptions */ +static char subbuffer[SUBBUFSIZE]; +static char *subpointer, *subend; /* buffer for sub-options */ + +/* + * Telnet receiver states for fsm + */ +static enum +{ + TS_DATA = 0, + TS_IAC, + TS_WILL, + TS_WONT, + TS_DO, + TS_DONT, + TS_CR, + TS_SB, /* sub-option collection */ + TS_SE /* looking for sub-option end */ +} telrcv_state; + +/* For negotiation compliant to RFC 1143 */ +#define NO 0 +#define YES 1 +#define WANTYES 2 +#define WANTNO 3 + +#define EMPTY 0 +#define OPPOSITE 1 + +static int us[256]; +static int usq[256]; +static int us_preferred[256]; +static int him[256]; +static int himq[256]; +static int him_preferred[256]; + +void init_telnet(struct UrlData *data) +{ + telrcv_state = TS_DATA; + + /* Init suboptions */ + SB_CLEAR(); + + /* Set all options to NO */ + memset(us, NO, 256); + memset(usq, NO, 256); + memset(us_preferred, NO, 256); + memset(him, NO, 256); + memset(himq, NO, 256); + memset(him_preferred, NO, 256); + + /* Set the options we want */ + us_preferred[TELOPT_BINARY] = YES; + us_preferred[TELOPT_SGA] = YES; + him_preferred[TELOPT_BINARY] = YES; + him_preferred[TELOPT_SGA] = YES; + + /* Start negotiating */ + negotiate(data); +} + +static void negotiate(struct UrlData *data) +{ + int i; + + for(i = 0;i < NTELOPTS;i++) + { + if(us_preferred[i] == YES) + set_local_option(data, i, YES); + + if(him_preferred[i] == YES) + set_remote_option(data, i, YES); + } +} + +static void printoption(struct UrlData *data, + const char *direction, int cmd, int option) +{ + char *fmt; + char *opt; + + if (data->conf & CONF_VERBOSE) + { + if (cmd == IAC) + { + if (TELCMD_OK(option)) + printf("%s IAC %s\n", direction, TELCMD(option)); + else + printf("%s IAC %d\n", direction, option); + } + else + { + fmt = (cmd == WILL) ? "WILL" : (cmd == WONT) ? "WONT" : + (cmd == DO) ? "DO" : (cmd == DONT) ? "DONT" : 0; + if (fmt) + { + if (TELOPT_OK(option)) + opt = TELOPT(option); + else if (option == TELOPT_EXOPL) + opt = "EXOPL"; + else + opt = NULL; + + if(opt) + printf("%s %s %s\n", direction, fmt, opt); + else + printf("%s %s %d\n", direction, fmt, option); + } + else + printf("%s %d %d\n", direction, cmd, option); + } + } +} + +static void send_negotiation(struct UrlData *data, int cmd, int option) +{ + unsigned char buf[3]; + + buf[0] = IAC; + buf[1] = cmd; + buf[2] = option; + + swrite(data->firstsocket, buf, 3); + + printoption(data, "SENT", cmd, option); +} + +void set_remote_option(struct UrlData *data, int option, int newstate) +{ + if(newstate == YES) + { + switch(him[option]) + { + case NO: + him[option] = WANTYES; + send_negotiation(data, DO, option); + break; + + case YES: + /* Already enabled */ + break; + + case WANTNO: + switch(himq[option]) + { + case EMPTY: + /* Already negotiating for YES, queue the request */ + himq[option] = OPPOSITE; + break; + case OPPOSITE: + /* Error: already queued an enable request */ + break; + } + break; + + case WANTYES: + switch(himq[option]) + { + case EMPTY: + /* Error: already negotiating for enable */ + break; + case OPPOSITE: + himq[option] = EMPTY; + break; + } + break; + } + } + else /* NO */ + { + switch(him[option]) + { + case NO: + /* Already disabled */ + break; + + case YES: + him[option] = WANTNO; + send_negotiation(data, DONT, option); + break; + + case WANTNO: + switch(himq[option]) + { + case EMPTY: + /* Already negotiating for NO */ + break; + case OPPOSITE: + himq[option] = EMPTY; + break; + } + break; + + case WANTYES: + switch(himq[option]) + { + case EMPTY: + himq[option] = OPPOSITE; + break; + case OPPOSITE: + break; + } + break; + } + } +} + +void rec_will(struct UrlData *data, int option) +{ + switch(him[option]) + { + case NO: + if(him_preferred[option] == YES) + { + him[option] = YES; + send_negotiation(data, DO, option); + } + else + { + send_negotiation(data, DONT, option); + } + break; + + case YES: + /* Already enabled */ + break; + + case WANTNO: + switch(himq[option]) + { + case EMPTY: + /* Error: DONT answered by WILL */ + him[option] = NO; + break; + case OPPOSITE: + /* Error: DONT answered by WILL */ + him[option] = YES; + himq[option] = EMPTY; + break; + } + break; + + case WANTYES: + switch(himq[option]) + { + case EMPTY: + him[option] = YES; + break; + case OPPOSITE: + him[option] = WANTNO; + himq[option] = EMPTY; + send_negotiation(data, DONT, option); + break; + } + break; + } +} + +void rec_wont(struct UrlData *data, int option) +{ + switch(him[option]) + { + case NO: + /* Already disabled */ + break; + + case YES: + him[option] = NO; + send_negotiation(data, DONT, option); + break; + + case WANTNO: + switch(himq[option]) + { + case EMPTY: + him[option] = NO; + break; + + case OPPOSITE: + him[option] = WANTYES; + himq[option] = EMPTY; + send_negotiation(data, DO, option); + break; + } + break; + + case WANTYES: + switch(himq[option]) + { + case EMPTY: + him[option] = NO; + break; + case OPPOSITE: + him[option] = NO; + himq[option] = EMPTY; + break; + } + break; + } +} + +void set_local_option(struct UrlData *data, int option, int newstate) +{ + if(newstate == YES) + { + switch(us[option]) + { + case NO: + us[option] = WANTYES; + send_negotiation(data, WILL, option); + break; + + case YES: + /* Already enabled */ + break; + + case WANTNO: + switch(usq[option]) + { + case EMPTY: + /* Already negotiating for YES, queue the request */ + usq[option] = OPPOSITE; + break; + case OPPOSITE: + /* Error: already queued an enable request */ + break; + } + break; + + case WANTYES: + switch(usq[option]) + { + case EMPTY: + /* Error: already negotiating for enable */ + break; + case OPPOSITE: + usq[option] = EMPTY; + break; + } + break; + } + } + else /* NO */ + { + switch(us[option]) + { + case NO: + /* Already disabled */ + break; + + case YES: + us[option] = WANTNO; + send_negotiation(data, WONT, option); + break; + + case WANTNO: + switch(usq[option]) + { + case EMPTY: + /* Already negotiating for NO */ + break; + case OPPOSITE: + usq[option] = EMPTY; + break; + } + break; + + case WANTYES: + switch(usq[option]) + { + case EMPTY: + usq[option] = OPPOSITE; + break; + case OPPOSITE: + break; + } + break; + } + } +} + +void rec_do(struct UrlData *data, int option) +{ + switch(us[option]) + { + case NO: + if(us_preferred[option] == YES) + { + us[option] = YES; + send_negotiation(data, WILL, option); + } + else + { + send_negotiation(data, WONT, option); + } + break; + + case YES: + /* Already enabled */ + break; + + case WANTNO: + switch(usq[option]) + { + case EMPTY: + /* Error: DONT answered by WILL */ + us[option] = NO; + break; + case OPPOSITE: + /* Error: DONT answered by WILL */ + us[option] = YES; + usq[option] = EMPTY; + break; + } + break; + + case WANTYES: + switch(usq[option]) + { + case EMPTY: + us[option] = YES; + break; + case OPPOSITE: + us[option] = WANTNO; + himq[option] = EMPTY; + send_negotiation(data, WONT, option); + break; + } + break; + } +} + +void rec_dont(struct UrlData *data, int option) +{ + switch(us[option]) + { + case NO: + /* Already disabled */ + break; + + case YES: + us[option] = NO; + send_negotiation(data, WONT, option); + break; + + case WANTNO: + switch(usq[option]) + { + case EMPTY: + us[option] = NO; + break; + + case OPPOSITE: + us[option] = WANTYES; + usq[option] = EMPTY; + send_negotiation(data, WILL, option); + break; + } + break; + + case WANTYES: + switch(usq[option]) + { + case EMPTY: + us[option] = NO; + break; + case OPPOSITE: + us[option] = NO; + usq[option] = EMPTY; + break; + } + break; + } +} + + +static void printsub(struct UrlData *data, + int direction, /* '<' or '>' */ + unsigned char *pointer, /* where suboption data is */ + int length) /* length of suboption data */ + +{ + int i = 0; + + if (data->conf & CONF_VERBOSE) + { + if (direction) + { + printf("%s IAC SB ", (direction == '<')? "RCVD":"SENT"); + if (length >= 3) + { + int j; + + i = pointer[length-2]; + j = pointer[length-1]; + + if (i != IAC || j != SE) + { + printf("(terminated by "); + if (TELOPT_OK(i)) + printf("%s ", TELOPT(i)); + else if (TELCMD_OK(i)) + printf("%s ", TELCMD(i)); + else + printf("%d ", i); + if (TELOPT_OK(j)) + printf("%s", TELOPT(j)); + else if (TELCMD_OK(j)) + printf("%s", TELCMD(j)); + else + printf("%d", j); + printf(", not IAC SE!) "); + } + } + length -= 2; + } + if (length < 1) + { + printf("(Empty suboption?)"); + return; + } + + if (TELOPT_OK(pointer[0])) + printf("%s (unknown)", TELOPT(pointer[0])); + else + printf("%d (unknown)", pointer[i]); + for (i = 1; i < length; i++) + printf(" %d", pointer[i]); + + if (direction) + { + printf("\n"); + } + } +} + +/* + * suboption() + * + * Look at the sub-option buffer, and try to be helpful to the other + * side. + * No suboptions are supported yet. + */ + +static void suboption(struct UrlData *data) +{ + printsub(data, '<', (unsigned char *)subbuffer, SB_LEN()+2); + return; +} + +void telrcv(struct UrlData *data, + unsigned char *inbuf, /* Data received from socket */ + int count) /* Number of bytes received */ +{ + unsigned char c; + int index = 0; + + while(count--) + { + c = inbuf[index++]; + + switch (telrcv_state) + { + case TS_CR: + telrcv_state = TS_DATA; + if (c == '\0') + { + break; /* Ignore \0 after CR */ + } + + data->fwrite((char *)&c, 1, 1, data->out); + continue; + + case TS_DATA: + if (c == IAC) + { + telrcv_state = TS_IAC; + break; + } + else if(c == '\r') + { + telrcv_state = TS_CR; + } + + data->fwrite((char *)&c, 1, 1, data->out); + continue; + + case TS_IAC: + process_iac: + switch (c) + { + case WILL: + telrcv_state = TS_WILL; + continue; + case WONT: + telrcv_state = TS_WONT; + continue; + case DO: + telrcv_state = TS_DO; + continue; + case DONT: + telrcv_state = TS_DONT; + continue; + case SB: + SB_CLEAR(); + telrcv_state = TS_SB; + continue; + case IAC: + data->fwrite((char *)&c, 1, 1, data->out); + break; + case DM: + case NOP: + case GA: + default: + printoption(data, "RCVD", IAC, c); + break; + } + telrcv_state = TS_DATA; + continue; + + case TS_WILL: + printoption(data, "RCVD", WILL, c); + rec_will(data, c); + telrcv_state = TS_DATA; + continue; + + case TS_WONT: + printoption(data, "RCVD", WONT, c); + rec_wont(data, c); + telrcv_state = TS_DATA; + continue; + + case TS_DO: + printoption(data, "RCVD", DO, c); + rec_do(data, c); + telrcv_state = TS_DATA; + continue; + + case TS_DONT: + printoption(data, "RCVD", DONT, c); + rec_dont(data, c); + telrcv_state = TS_DATA; + continue; + + case TS_SB: + if (c == IAC) + { + telrcv_state = TS_SE; + } + else + { + SB_ACCUM(c); + } + continue; + + case TS_SE: + if (c != SE) + { + if (c != IAC) + { + /* + * This is an error. We only expect to get + * "IAC IAC" or "IAC SE". Several things may + * have happend. An IAC was not doubled, the + * IAC SE was left off, or another option got + * inserted into the suboption are all possibilities. + * If we assume that the IAC was not doubled, + * and really the IAC SE was left off, we could + * get into an infinate loop here. So, instead, + * we terminate the suboption, and process the + * partial suboption if we can. + */ + SB_ACCUM((unsigned char)IAC); + SB_ACCUM(c); + subpointer -= 2; + SB_TERM(); + + printoption(data, "In SUBOPTION processing, RCVD", IAC, c); + suboption(data); /* handle sub-option */ + telrcv_state = TS_IAC; + goto process_iac; + } + SB_ACCUM(c); + telrcv_state = TS_SB; + } + else + { + SB_ACCUM((unsigned char)IAC); + SB_ACCUM((unsigned char)SE); + subpointer -= 2; + SB_TERM(); + suboption(data); /* handle sub-option */ + telrcv_state = TS_DATA; + } + break; + } + } +} + +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->use_ssl) { + bytes_written = SSL_write(data->ssl, (char *)outbuf, out_count); + } + else { + bytes_written = swrite(data->firstsocket, outbuf, out_count); + } +#endif /* USE_SSLEAY */ + } +} + +UrgError telnet(struct UrlData *data) +{ + int sockfd = data->firstsocket; + fd_set readfd; + fd_set keepfd; + + bool keepon = TRUE; + char *buf = data->buffer; + int nread; + + init_telnet(data); + + FD_ZERO (&readfd); /* clear it */ + FD_SET (sockfd, &readfd); + FD_SET (1, &readfd); + + keepfd = readfd; + + while (keepon) + { + readfd = keepfd; /* set this every lap in the loop */ + + switch (select (sockfd + 1, &readfd, NULL, NULL, NULL)) + { + case -1: /* error, stop reading */ + keepon = FALSE; + continue; + case 0: /* timeout */ + break; + default: /* read! */ + if(FD_ISSET(1, &readfd)) + { + nread = read(1, buf, 255); + telwrite(data, (unsigned char *)buf, nread); + } + + if(FD_ISSET(sockfd, &readfd)) + { +#ifndef USE_SSLEAY + nread = sread (sockfd, buf, BUFSIZE - 1); +#else + if (data->use_ssl) { + nread = SSL_read (data->ssl, 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 + we bail out from this! */ + if (nread <= 0) { + keepon = FALSE; + break; + } + + telrcv(data, (unsigned char *)buf, nread); + } + } + return URG_OK; +} + + diff --git a/lib/telnet.h b/lib/telnet.h new file mode 100644 index 000000000..25b7f2d29 --- /dev/null +++ b/lib/telnet.h @@ -0,0 +1,45 @@ +#ifndef __TELNET_H +#define __TELNET_H + +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ +UrgError telnet(struct UrlData *data); + +#endif diff --git a/lib/timeval.c b/lib/timeval.c new file mode 100644 index 000000000..8ad25325f --- /dev/null +++ b/lib/timeval.c @@ -0,0 +1,93 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#ifdef WIN32 +#include +#endif +#include "timeval.h" + +#ifndef HAVE_GETTIMEOFDAY + +#ifdef WIN32 +int +gettimeofday (struct timeval *tp, void *nothing) +{ + SYSTEMTIME st; + time_t tt; + struct tm tmtm; + /* mktime converts local to UTC */ + GetLocalTime (&st); + tmtm.tm_sec = st.wSecond; + tmtm.tm_min = st.wMinute; + tmtm.tm_hour = st.wHour; + tmtm.tm_mday = st.wDay; + tmtm.tm_mon = st.wMonth - 1; + tmtm.tm_year = st.wYear - 1900; + tmtm.tm_isdst = -1; + tt = mktime (&tmtm); + tp->tv_sec = tt; + tp->tv_usec = st.wMilliseconds * 1000; + return 1; +} +#define HAVE_GETTIMEOFDAY +#endif +#endif + +struct timeval tvnow () +{ + struct timeval now; +#ifdef HAVE_GETTIMEOFDAY + gettimeofday (&now, NULL); +#else + now.tv_sec = (long) time(NULL); + now.tv_usec = 0; +#endif + return now; +} + +double tvdiff (struct timeval t1, struct timeval t2) +{ + return (double)(t1.tv_sec - t2.tv_sec) + ((t1.tv_usec-t2.tv_usec)/1000000.0); +} + +long tvlong (struct timeval t1) +{ + return t1.tv_sec; +} diff --git a/lib/timeval.h b/lib/timeval.h new file mode 100644 index 000000000..fe99e2896 --- /dev/null +++ b/lib/timeval.h @@ -0,0 +1,64 @@ +#ifndef __TIMEVAL_H +#define __TIMEVAL_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +#include +#else +#include +#endif + +#include "setup.h" + +#ifndef HAVE_GETTIMEOFDAY +#if !defined(_WINSOCKAPI_) && !defined(__MINGW32__) +struct timeval { + long tv_sec; + long tv_usec; +}; +#endif +#endif + +struct timeval tvnow (); +double tvdiff (struct timeval t1, struct timeval t2); +long tvlong (struct timeval t1); + +#endif diff --git a/lib/upload.c b/lib/upload.c new file mode 100644 index 000000000..0673382e9 --- /dev/null +++ b/lib/upload.c @@ -0,0 +1,178 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include "setup.h" +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_SYS_SELECT_H +#include +#endif +#ifdef WIN32 +#if !defined(__GNUC__) || defined(__MINGW32__) +#include +#endif +#include /* for the time_t typedef! */ + +#if defined(__GNUC__) && defined(TIME_WITH_SYS_TIME) +#include +#endif + +#endif + +#include + +#ifdef __BEOS__ +#include +#endif + +#include "urldata.h" +#include "speedcheck.h" +#include "sendf.h" +#include "progress.h" + +/* --- upload a stream to a socket --- */ + +UrgError Upload(struct UrlData *data, + int sockfd, + long *bytecountp) +{ + fd_set writefd; + fd_set keepfd; + struct timeval interval; + bool keepon=TRUE; + char *buf = data->buffer; + size_t nread; + long bytecount=0; + struct timeval start; + struct timeval now; + UrgError urg; + char scratch[BUFSIZE * 2]; + int i, si; + + /* timeout every X second + - makes a better progressmeter (i.e even when no data is sent, the + meter can be updated and reflect reality) + - allows removal of the alarm() crap + - variable timeout is easier + */ + + myalarm(0); /* switch off the alarm-style timeout */ + + start = tvnow(); + now = start; + + FD_ZERO(&writefd); /* clear it */ + FD_SET(sockfd, &writefd); + + keepfd = writefd; + + while(keepon) { + size_t bytes_written = 0; + + writefd = keepfd; /* set this every lap in the loop */ + interval.tv_sec = 2; + interval.tv_usec = 0; + + switch(select(sockfd+1, NULL, &writefd, NULL, &interval)) { + case -1: /* error, stop writing */ + keepon=FALSE; + continue; + case 0: /* timeout */ + break; + default: /* write! */ + if(data->crlf) + buf = data->buffer; /* put it back on the buffer */ + + nread = data->fread(buf, 1, BUFSIZE, data->in); + bytecount += nread; + + if (nread==0) { + /* done */ + keepon = FALSE; + break; + } + + /* convert LF to CRLF if so asked */ + if (data->crlf) { + for(i = 0, si = 0; i < (int)nread; i++, si++) { + if (buf[i] == 0x0a) { + scratch[si++] = 0x0d; + scratch[si] = 0x0a; + } + else { + scratch[si] = buf[i]; + } + } + nread = si; + buf = scratch; /* point to the new buffer */ + } + + /* write to socket */ +#ifndef USE_SSLEAY + bytes_written = swrite(sockfd, buf, nread); +#else + if (data->use_ssl) { + bytes_written = SSL_write(data->ssl, buf, nread); + } else { + bytes_written = swrite(sockfd, buf, nread); + } +#endif /* USE_SSLEAY */ + if(nread != bytes_written) { + failf(data, "Failed uploading file"); + return URG_FTP_WRITE_ERROR; + } + } + now = tvnow(); + ProgressShow(data, bytecount, start, now, FALSE); + urg=speedcheck(data, now); + if(urg) + return urg; + if(data->timeout && (tvdiff(now,start)>data->timeout)) { + failf(data, "Upload timed out with %d bytes sent", bytecount); + return URG_OPERATION_TIMEOUTED; + } + + } + ProgressShow(data, bytecount, start, now, TRUE); + *bytecountp = bytecount; + + return URG_OK; +} diff --git a/lib/upload.h b/lib/upload.h new file mode 100644 index 000000000..dbb6600c8 --- /dev/null +++ b/lib/upload.h @@ -0,0 +1,46 @@ +#ifndef __UPLOAD_H +#define __UPLOAD_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ +UrgError Upload(struct UrlData *data, + int sockfd, + long *bytecountp); + +#endif diff --git a/lib/url.c b/lib/url.c new file mode 100644 index 000000000..b520898dc --- /dev/null +++ b/lib/url.c @@ -0,0 +1,1181 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +/* + * SSL code intially written by + * Linas Vepstas and Sampo Kellomaki + */ + +/* -- WIN32 approved -- */ +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "setup.h" + +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +#include +#include +#include +#else +#ifdef HAVE_SYS_SOCKET_H +#include +#endif +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#ifdef HAVE_ARPA_INET_H +#include +#endif +#ifdef HAVE_NET_IF_H +#include +#endif +#include +#include + +#ifdef HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_SELECT_H +#include +#endif + +#ifndef HAVE_VPRINTF +#error "We can't compile without vprintf() support!" +#endif +#ifndef HAVE_SELECT +#error "We can't compile without select() support!" +#endif +#ifndef HAVE_SOCKET +#error "We can't compile without socket() support!" +#endif + +#endif + +#include "urldata.h" +#include +#include "netrc.h" + +#include "formdata.h" +#include "getenv.h" +#include "base64.h" +#include "ssluse.h" +#include "hostip.h" +#include "if2ip.h" +#include "upload.h" +#include "download.h" +#include "sendf.h" +#include "speedcheck.h" +#include "getpass.h" +#include "progress.h" +#include "cookie.h" + +/* And now for the protocols */ +#include "ftp.h" +#include "dict.h" +#include "telnet.h" +#include "http.h" +#include "file.h" +#include "ldap.h" + +#define _MPRINTF_REPLACE /* use our functions only */ +#include + +/* -- -- */ + +/*********************************************************************** + * Start with some silly functions to make win32-systems survive + ***********************************************************************/ +#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) +static void cleanup(void) +{ + WSACleanup(); +} + +static int init(void) +{ + WORD wVersionRequested; + WSADATA wsaData; + int err; + wVersionRequested = MAKEWORD(1, 1); + + err = WSAStartup(wVersionRequested, &wsaData); + + if (err != 0) + /* Tell the user that we couldn't find a useable */ + /* winsock.dll. */ + return 1; + + /* Confirm that the Windows Sockets DLL supports 1.1.*/ + /* Note that if the DLL supports versions greater */ + /* than 1.1 in addition to 1.1, it will still return */ + /* 1.1 in wVersion since that is the version we */ + /* requested. */ + + if ( LOBYTE( wsaData.wVersion ) != 1 || + HIBYTE( wsaData.wVersion ) != 1 ) { + /* Tell the user that we couldn't find a useable */ + + /* winsock.dll. */ + WSACleanup(); + return 1; + } + return 0; +} +/* The Windows Sockets DLL is acceptable. Proceed. */ +#else +static int init(void) { return 0; } +static void cleanup(void) {} +#endif + +static UrgError _urlget(struct UrlData *data); + + +void urlfree(struct UrlData *data, bool totally) +{ +#ifdef USE_SSLEAY + if (data->use_ssl) { + if(data->ssl) { + SSL_shutdown(data->ssl); + SSL_set_connect_state(data->ssl); + + SSL_free (data->ssl); + data->ssl = NULL; + } + if(data->ctx) { + SSL_CTX_free (data->ctx); + data->ctx = NULL; + } + data->use_ssl = FALSE; /* get back to ordinary socket usage */ + } +#endif /* USE_SSLEAY */ + + /* close possibly still open sockets */ + if(-1 != data->secondarysocket) { + sclose(data->secondarysocket); + data->secondarysocket = -1; + } + if(-1 != data->firstsocket) { + sclose(data->firstsocket); + data->firstsocket=-1; + } + + + if(data->ptr_proxyuserpwd) { + free(data->ptr_proxyuserpwd); + data->ptr_proxyuserpwd=NULL; + } + if(data->ptr_uagent) { + free(data->ptr_uagent); + data->ptr_uagent=NULL; + } + if(data->ptr_userpwd) { + free(data->ptr_userpwd); + data->ptr_userpwd=NULL; + } + if(data->ptr_rangeline) { + free(data->ptr_rangeline); + data->ptr_rangeline=NULL; + } + if(data->ptr_ref) { + free(data->ptr_ref); + data->ptr_ref=NULL; + } + if(data->ptr_cookie) { + free(data->ptr_cookie); + data->ptr_cookie=NULL; + } + if(data->ptr_host) { + free(data->ptr_host); + data->ptr_host=NULL; + } + + if(totally) { + /* we let the switch decide whether we're doing a part or total + cleanup */ + + /* check for allocated [URL] memory to free: */ + if(data->freethis) + free(data->freethis); + + if(data->headerbuff) + free(data->headerbuff); + + cookie_cleanup(data->cookies); + + free(data); + + /* winsock crap cleanup */ + cleanup(); + } +} + +typedef int (*func_T)(void); + +UrgError curl_urlget(UrgTag tag, ...) +{ + va_list arg; + func_T param_func = (func_T)0; + long param_long = 0; + void *param_obj = NULL; + UrgError res; + char *cookiefile; + + struct UrlData *data; + + /* this is for the lame win32 socket crap */ + if(init()) + return URG_FAILED_INIT; + + data = (struct UrlData *)malloc(sizeof(struct UrlData)); + if(data) { + + memset(data, 0, sizeof(struct UrlData)); + + /* Let's set some default values: */ + data->out = stdout; /* default output to stdout */ + data->in = stdin; /* default input from stdin */ + data->err = stderr; /* default stderr to stderr */ + data->firstsocket = -1; /* no file descriptor */ + data->secondarysocket = -1; /* no file descriptor */ + + /* use fwrite as default function to store output */ + data->fwrite = (size_t (*)(char *, size_t, size_t, FILE *))fwrite; + + /* use fread as default function to read input */ + data->fread = (size_t (*)(char *, size_t, size_t, FILE *))fread; + + data->infilesize = -1; /* we don't know any size */ + + data->current_speed = -1; /* init to negative == impossible */ + + va_start(arg, tag); + + while(tag != URGTAG_DONE) { + /* PORTING NOTE: + Ojbect pointers can't necessarily be casted to function pointers and + therefore we need to know what type it is and read the correct type + at once. This should also correct problems with different sizes of + the types. + */ + + if(tag < URGTYPE_OBJECTPOINT) { + /* This is a LONG type */ + param_long = va_arg(arg, long); + } + else if(tag < URGTYPE_FUNCTIONPOINT) { + /* This is a object pointer type */ + param_obj = va_arg(arg, void *); + } + else + param_func = va_arg(arg, func_T ); + + /* printf("tag: %d\n", tag); */ + + + switch(tag) { +#ifdef MULTIDOC + case URGTAG_MOREDOCS: + data->moredoc = (struct MoreDoc *)param_obj; + break; +#endif + case URGTAG_TIMECONDITION: + data->timecondition = (long)param_long; + break; + + case URGTAG_TIMEVALUE: + data->timevalue = (long)param_long; + break; + + case URGTAG_SSLVERSION: + data->ssl_version = (int)param_long; + break; + + case URGTAG_COOKIEFILE: + cookiefile = (char *)param_obj; + if(cookiefile) { + data->cookies = cookie_init(cookiefile); + } + break; + case URGTAG_WRITEHEADER: + data->writeheader = (FILE *)param_obj; + break; + case URGTAG_COOKIE: + data->cookie = (char *)param_obj; + break; + case URGTAG_ERRORBUFFER: + data->errorbuffer = (char *)param_obj; + break; + case URGTAG_FILE: + data->out = (FILE *)param_obj; + break; + case URGTAG_FTPPORT: + data->ftpport = (char *)param_obj; + break; + case URGTAG_HTTPHEADER: + data->headers = (struct HttpHeader *)param_obj; + break; + case URGTAG_CUSTOMREQUEST: + data->customrequest = (char *)param_obj; + break; + case URGTAG_HTTPPOST: + data->httppost = (struct HttpPost *)param_obj; + break; + case URGTAG_INFILE: + data->in = (FILE *)param_obj; + break; + case URGTAG_INFILESIZE: + data->infilesize = (long)param_long; + break; + case URGTAG_LOW_SPEED_LIMIT: + data->low_speed_limit=(long)param_long; + break; + case URGTAG_LOW_SPEED_TIME: + data->low_speed_time=(long)param_long; + break; + case URGTAG_URL: + data->url = (char *)param_obj; + break; + case URGTAG_PORT: + /* this typecast is used to fool the compiler to NOT warn for a + "cast from pointer to integer of different size" */ + data->port = (unsigned short)((long)param_long); + break; + case URGTAG_POSTFIELDS: + data->postfields = (char *)param_obj; + break; + case URGTAG_PROGRESSMODE: + data->progressmode = (long)param_long; + break; + case URGTAG_REFERER: + data->referer = (char *)param_obj; + break; + case URGTAG_PROXY: + data->proxy = (char *)param_obj; + break; + case URGTAG_FLAGS: + data->conf = (long)param_long; + break; + case URGTAG_TIMEOUT: + data->timeout = (long)param_long; + break; + case URGTAG_USERAGENT: + data->useragent = (char *)param_obj; + break; + case URGTAG_USERPWD: + data->userpwd = (char *)param_obj; + break; + case URGTAG_PROXYUSERPWD: + data->proxyuserpwd = (char *)param_obj; + break; + case URGTAG_RANGE: + data->range = (char *)param_obj; + break; + case URGTAG_RESUME_FROM: + data->resume_from = (long)param_long; + break; + case URGTAG_STDERR: + data->err = (FILE *)param_obj; + break; + case URGTAG_WRITEFUNCTION: + data->fwrite = (size_t (*)(char *, size_t, size_t, FILE *))param_func; + break; + case URGTAG_READFUNCTION: + data->fread = (size_t (*)(char *, size_t, size_t, FILE *))param_func; + break; + case URGTAG_SSLCERT: + data->cert = (char *)param_obj; + break; + case URGTAG_SSLCERTPASSWD: + data->cert_passwd = (char *)param_obj; + break; + case URGTAG_CRLF: + data->crlf = (long)param_long; + break; + case URGTAG_QUOTE: + data->quote = (struct curl_slist *)param_obj; + break; + case URGTAG_DONE: /* done with the parsing, fall through */ + continue; + default: + /* unknown tag and its companion, just ignore: */ + break; + } + tag = va_arg(arg, UrgTag); + } + + va_end(arg); + + data-> headerbuff=(char*)malloc(HEADERSIZE); + if(!data->headerbuff) + return URG_FAILED_INIT; + + data-> headersize=HEADERSIZE; + + res = _urlget(data); /* fetch the URL please */ + + while((res == URG_OK) && data->newurl) { + /* Location: redirect */ + char prot[16]; + char path[URL_MAX_LENGTH]; + + if(2 != sscanf(data->newurl, "%15[^:]://%" URL_MAX_LENGTH_TXT + "s", prot, path)) { + /*** + *DANG* this is an RFC 2068 violation. The URL is supposed + to be absolute and this doesn't seem to be that! + At least the Zeus HTTP server seem to do this. + *** + Instead, we have to TRY to append this new path to the old URL + to the right of the host part. Oh crap, this is doomed to cause + problems in the future... + */ + char *protsep; + char *pathsep; + char *newest; + + /* protsep points to the start of the host name */ + protsep=strstr(data->url, "//"); + if(!protsep) + protsep=data->url; + else { + data->port=0; /* we got a full URL and then we should reset the + port number here to re-initiate it later */ + protsep+=2; /* pass the // */ + } + + if('/' != data->newurl[0]) { + /* First we need to find out if there's a ?-letter in the URL, and + cut it and the right-side of that off */ + pathsep = strrchr(protsep, '?'); + if(pathsep) + *pathsep=0; + + /* we have a relative path to append to the last slash if + there's one available */ + pathsep = strrchr(protsep, '/'); + if(pathsep) + *pathsep=0; + } + else { + /* We got a new absolute path for this server, cut off from the + first slash */ + pathsep = strchr(protsep, '/'); + if(pathsep) + *pathsep=0; + } + + newest=(char *)malloc( strlen(data->url) + + 1 + /* possible slash */ + strlen(data->newurl) + 1/* zero byte */); + + if(!newest) + return URG_OUT_OF_MEMORY; + sprintf(newest, "%s%s%s", data->url, ('/' == data->newurl[0])?"":"/", + data->newurl); + free(data->newurl); + data->newurl = newest; + } + + data->url = data->newurl; + data->newurl = NULL; /* don't show! */ + + infof(data, "Follows Location: to new URL: '%s'\n", data->url); + + /* clean up the sockets and SSL stuff from the previous "round" */ + urlfree(data, FALSE); + + res = _urlget(data); + } + if(data->newurl) + free(data->newurl); + + } + else + res = URG_FAILED_INIT; /* failed */ + + /* total cleanup */ + urlfree(data, TRUE); + + return res; +} + + +/* + * Read everything until a newline. + */ + +static int GetLine(int sockfd, char *buf, + struct UrlData *data) +{ + int nread; + int read_rc=1; + char *ptr; + ptr=buf; + + /* get us a full line, terminated with a newline */ + for(nread=0; + (nreaduse_ssl) { + read_rc = SSL_read(data->ssl, ptr, 1); + } + else { +#endif + read_rc = sread(sockfd, ptr, 1); +#ifdef USE_SSLEAY + } +#endif /* USE_SSLEAY */ + if (*ptr == '\n') + break; + } + *ptr=0; /* zero terminate */ + + if(data->conf & CONF_VERBOSE) { + fputs("< ", data->err); + fwrite(buf, 1, nread, data->err); + fputs("\n", data->err); + } + return nread; +} + + + +#ifndef WIN32 +#ifndef RETSIGTYPE +#define RETSIGTYPE void +#endif +RETSIGTYPE alarmfunc(int signal) +{ + /* this is for "-ansi -Wall -pedantic" to stop complaining! (rabe) */ + (void)signal; + return; +} +#endif + +/* ====================================================== */ +/* + * urlget + * (result put on stdout) + * + * ::= "://" [ ":" ] "/" + * + * = "HTTP" | "HTTPS" | "GOPHER" | "FTP" + * + * When FTP: + * + * ::= [ ":" "@" ] + */ + +static UrgError _urlget(struct UrlData *data) +{ + struct hostent *hp=NULL; + struct sockaddr_in serv_addr; + char *buf; + char proto[64]; + char gname[256]="default.com"; + char *name; + char path[URL_MAX_LENGTH]="/"; + char *ppath, *tmp; + long bytecount; + struct timeval now; + + UrgError result; + char resumerange[12]=""; + + buf = data->buffer; /* this is our buffer */ + +#if 0 + signal(SIGALRM, alarmfunc); +#endif + + /* Parse */ + /* We need to parse the url, even when using the proxy, because + * we will need the hostname and port in case we are trying + * to SSL connect through the proxy -- and we don't know if we + * will need to use SSL until we parse the url ... + */ + if((1 == sscanf(data->url, "file://%" URL_MAX_LENGTH_TXT "[^\n]", + path))) { + /* we deal with file:/// differently since it + supports no hostname other than "localhost" and "127.0.0.1", + which ist unique among the protocols specified in RFC 1738 */ + if (strstr(path, "localhost/") || strstr(path, "127.0.0.1/")) + strcpy(path, &path[10]); /* ... since coincidentally + both host strings are of + equal length */ + /* otherwise, / is quietly ommitted */ + + + /* that's it, no more fiddling with proxies, redirections, + or SSL for files, go directly to the file reading function */ + result = file(data, path, &bytecount); + if(result) + return result; + + return URG_OK; + } + else if (2 > sscanf(data->url, "%64[^\n:]://%256[^\n/]%" URL_MAX_LENGTH_TXT "[^\n]", + proto, gname, path)) { + + + /* badly formatted, let's try the browser-style _without_ 'http://' */ + if((1 > sscanf(data->url, "%256[^\n/]%" URL_MAX_LENGTH_TXT "[^\n]", gname, + path)) ) { + failf(data, " malformed"); + return URG_URL_MALFORMAT; + } + if(strnequal(gname, "FTP", 3)) { + strcpy(proto, "ftp"); + } + else if(strnequal(gname, "GOPHER", 6)) + strcpy(proto, "gopher"); +#ifdef USE_SSLEAY + else if(strnequal(gname, "HTTPS", 5)) + strcpy(proto, "https"); +#endif /* USE_SSLEAY */ + else if(strnequal(gname, "TELNET", 6)) + strcpy(proto, "telnet"); + else if (strnequal(gname, "DICT", sizeof("DICT")-1)) + strcpy(proto, "DICT"); + else if (strnequal(gname, "LDAP", sizeof("LDAP")-1)) + strcpy(proto, "LDAP"); + else + strcpy(proto, "http"); + + data->conf |= CONF_NOPROT; + } + + + if((data->conf & CONF_USERPWD) && ! (data->conf & CONF_NETRC)) { + if(':' != *data->userpwd) { + if((1 <= sscanf(data->userpwd, "%127[^:]:%127s", + data->user, data->passwd))) { + /* check for password, if no ask for one */ + if( !data->passwd[0] ) + { + strncpy(data->passwd, getpass("password: "), sizeof(data->passwd)); + } + } + } + if(!data->user[0]) { + failf(data, "USER malformat: user name can't be zero length"); + return URG_MALFORMAT_USER; + } + } + + if(data->conf & CONF_PROXYUSERPWD) { + if(':' != *data->proxyuserpwd) { + if((1 <= sscanf(data->proxyuserpwd, "%127[^:]:%127s", + data->proxyuser, data->proxypasswd))) { + /* check for password, if no ask for one */ + if( !data->proxypasswd[0] ) + { + strncpy(data->proxypasswd, getpass("proxy password: "), sizeof(data->proxypasswd)); + } + } + } + if(!data->proxyuser[0]) { + failf(data, " Proxy USER malformat: user name can't be zero length"); + return URG_MALFORMAT_USER; + } + } + + name = gname; + ppath = path; + data->hostname = name; + + + if(!(data->conf & CONF_PROXY)) { + /* If proxy was not specified, we check for default proxy environment + variables, to enable i.e Lynx compliance: + + HTTP_PROXY http://some.server.dom:port/ + HTTPS_PROXY http://some.server.dom:port/ + FTP_PROXY http://some.server.dom:port/ + GOPHER_PROXY http://some.server.dom:port/ + NO_PROXY host.domain.dom (a comma-separated list of hosts which should + not be proxied, or an asterisk to override all proxy variables) + ALL_PROXY seems to exist for the CERN www lib. Probably the first to + check for. + + */ + char *no_proxy=GetEnv("NO_PROXY"); + char *proxy=NULL; + char proxy_env[128]; + + if(!no_proxy || !strequal("*", no_proxy)) { + /* NO_PROXY wasn't specified or it wasn't just an asterisk */ + char *nope; + + nope=no_proxy?strtok(no_proxy, ", "):NULL; + while(nope) { + if(strlen(nope) <= strlen(name)) { + char *checkn= + name + strlen(name) - strlen(nope); + if(strnequal(nope, checkn, strlen(nope))) { + /* no proxy for this host! */ + break; + } + } + nope=strtok(NULL, ", "); + } + if(!nope) { + /* It was not listed as without proxy */ + char *protop = proto; + char *envp = proxy_env; + char *prox; + + /* Now, build _PROXY and check for such a one to use */ + while(*protop) { + *envp++ = toupper(*protop++); + } + /* append _PROXY */ + strcpy(envp, "_PROXY"); +#if 0 + infof(data, "DEBUG: checks the environment variable %s\n", proxy_env); +#endif + /* read the protocol proxy: */ + prox=GetEnv(proxy_env); + + if(prox && *prox) { /* don't count "" strings */ + proxy = prox; /* use this */ + } + else + proxy = GetEnv("ALL_PROXY"); /* default proxy to use */ + + if(proxy && *proxy) { + /* we have a proxy here to set */ + data->proxy = proxy; + data->conf |= CONF_PROXY; + } + } /* if (!nope) - it wasn't specfied non-proxy */ + } /* NO_PROXY wasn't specified or '*' */ + } /* if not using proxy */ + + if((data->conf & (CONF_PROXY|CONF_NOPROT)) == (CONF_PROXY|CONF_NOPROT) ) { + /* We're guessing prefixes here and since we're told to use a proxy, we + need to add the protocol prefix to the URL string before we continue! + */ + char *reurl; + + reurl = maprintf("%s://%s", proto, data->url); + + if(!reurl) + return URG_OUT_OF_MEMORY; + + data->url = reurl; + if(data->freethis) + free(data->freethis); + data->freethis = reurl; + + data->conf &= ~CONF_NOPROT; /* switch that one off again */ + } + + /* RESUME on a HTTP page is a tricky business. First, let's just check that + 'range' isn't used, then set the range parameter and leave the resume as + it is to inform about this situation for later use. We will then + "attempt" to resume, and if we're talking to a HTTP/1.1 (or later) + server, we will get the document resumed. If we talk to a HTTP/1.0 + server, we just fail since we can't rewind the file writing from within + this function. */ + if(data->resume_from) { + if(!(data->conf & CONF_RANGE)) { + /* if it already was in use, we just skip this */ + sprintf(resumerange, "%d-", data->resume_from); + data->range=resumerange; /* tell ourselves to fetch this range */ + data->conf |= CONF_RANGE; /* switch on range usage */ + } + } + + + if(data->timeout) { + /* We set the timeout on the connection/resolving phase first, separately + from the download/upload part to allow a maximum time on everything */ + myalarm(data->timeout); /* this sends a signal when the timeout fires + off, and that will abort system calls */ + } + + /* + * Hmm, if we are using a proxy, then we can skip the GOPHER and the + * FTP steps, although we cannot skip the HTTPS step (since the proxy + * works differently, depending on whether its SSL or not). + */ + + if (strequal(proto, "HTTP")) { + if(!data->port) + data->port = PORT_HTTP; + data->remote_port = PORT_HTTP; + data->conf |= CONF_HTTP; + } + else if (strequal(proto, "HTTPS")) { +#ifdef USE_SSLEAY + if(!data->port) + data->port = PORT_HTTPS; + data->remote_port = PORT_HTTPS; + data->conf |= CONF_HTTP; + data->conf |= CONF_HTTPS; +#else /* USE_SSLEAY */ + failf(data, "SSL is disabled, https: not supported!"); + return URG_UNSUPPORTED_PROTOCOL; +#endif /* !USE_SSLEAY */ + } + else if (strequal(proto, "GOPHER")) { + if(!data->port) + data->port = PORT_GOPHER; + data->remote_port = PORT_GOPHER; + /* Skip // in path if present */ + if (isdigit((int)path[1])) { + ppath = strchr(&path[1], '/'); + if (ppath == NULL) + ppath = path; + } + data->conf |= CONF_GOPHER; + } + else if(strequal(proto, "FTP")) { + char *type; + if(!data->port) + data->port = PORT_FTP; + data->remote_port = PORT_FTP; + data->conf |= CONF_FTP; + + ppath++; /* don't include the initial slash */ + + /* FTP URLs support an extension like ";type=" that + we'll try to get now! */ + type=strstr(ppath, ";type="); + if(!type) { + type=strstr(gname, ";type="); + } + if(type) { + char command; + *type=0; + command = toupper(type[6]); + switch(command) { + case 'A': /* ASCII mode */ + data->conf |= CONF_FTPASCII; + break; + case 'D': /* directory mode */ + data->conf |= CONF_FTPLISTONLY; + break; + case 'I': /* binary mode */ + default: + /* switch off ASCII */ + data->conf &= ~CONF_FTPASCII; + break; + } + } + } + else if(strequal(proto, "TELNET")) { + /* telnet testing factory */ + data->conf |= CONF_TELNET; + if(!data->port) + data->port = PORT_TELNET; + data->remote_port = PORT_TELNET; + } + else if (strequal(proto, "DICT")) { + data->conf |= CONF_DICT; + if(!data->port) + data->port = PORT_DICT; + data->remote_port = PORT_DICT; + } + else if (strequal(proto, "LDAP")) { + data->conf |= CONF_LDAP; + if(!data->port) + data->port = PORT_LDAP; + data->remote_port = PORT_LDAP; + } + /* file:// is handled above */ + /* else if (strequal(proto, "FILE")) { + data->conf |= CONF_FILE; + + result = file(data, path, &bytecount); + if(result) + return result; + + return URG_OK; + }*/ + else { + failf(data, "Unsupported protocol: %s", proto); + return URG_UNSUPPORTED_PROTOCOL; + } + + if(data->conf & CONF_NETRC) { + if(ParseNetrc(data->hostname, data->user, data->passwd)) { + infof(data, "Couldn't find host %s in the .netrc file, using defaults", + data->hostname); + } + /* weather we failed or not, we don't know which fields that were filled + in anyway */ + if(!data->user[0]) + strcpy(data->user, CURL_DEFAULT_USER); + if(!data->passwd[0]) + strcpy(data->passwd, CURL_DEFAULT_PASSWORD); + if(data->conf & CONF_HTTP) { + data->conf |= CONF_USERPWD; + } + } + else if(!(data->conf & CONF_USERPWD) && + (data->conf & (CONF_FTP|CONF_HTTP)) ) { + /* This is a FTP or HTTP URL, and we haven't got the user+password in + the extra parameter, we will now try to extract the possible + user+password pair in a string like: + ftp://user:password@ftp.my.site:8021/README */ + char *ptr=NULL; /* assign to remove possible warnings */ + if(':' == *name) { + failf(data, "URL malformat: user can't be zero length"); + return URG_URL_MALFORMAT_USER; + } + if((1 <= sscanf(name, "%127[^:]:%127[^@]", + data->user, data->passwd)) && (ptr=strchr(name, '@'))) { + name = ++ptr; + data->conf |= CONF_USERPWD; + } + else { + strcpy(data->user, CURL_DEFAULT_USER); + strcpy(data->passwd, CURL_DEFAULT_PASSWORD); + } + } + + if(!(data->conf & CONF_PROXY)) { + /* If not connecting via a proxy, extract the port from the URL, if it is + * there, thus overriding any defaults that might have been set above. */ + tmp = strchr(name, ':'); + if (tmp) { + *tmp++ = '\0'; + data->port = atoi(tmp); + } + + /* Connect to target host right on */ + if(!(hp = GetHost(data, name))) { + failf(data, "Couldn't resolv host '%s'", name); + return URG_COULDNT_RESOLVE_HOST; + } + } + else { + char *prox_portno; + char *endofprot; + + /* we use proxy all right, but we wanna know the remote port for SSL + reasons */ + tmp = strchr(name, ':'); + if (tmp) { + *tmp++ = '\0'; /* cut off the name there */ + data->remote_port = atoi(tmp); + } + + /* Daniel Dec 10, 1998: + We do the proxy host string parsing here. We want the host name and the + port name. Accept a protocol:// prefix, even though it should just be + ignored. */ + + /* 1. skip the protocol part if present */ + endofprot=strstr(data->proxy, "://"); + if(endofprot) { + data->proxy = endofprot+3; + } + + /* allow user to specify proxy.server.com:1080 if desired */ + prox_portno = strchr (data->proxy, ':'); + if (prox_portno) { + *prox_portno = 0x0; /* cut off number from host name */ + prox_portno ++; + /* now set the local port number */ + data->port = atoi(prox_portno); + } + + /* connect to proxy */ + if(!(hp = GetHost(data, data->proxy))) { + failf(data, "Couldn't resolv proxy '%s'", data->proxy); + return URG_COULDNT_RESOLVE_PROXY; + } + } + + data->firstsocket = socket(AF_INET, SOCK_STREAM, 0); + + memset((char *) &serv_addr, '\0', sizeof(serv_addr)); + memcpy((char *)&(serv_addr.sin_addr), hp->h_addr, hp->h_length); + serv_addr.sin_family = hp->h_addrtype; + + serv_addr.sin_port = htons(data->port); + + if (connect(data->firstsocket, (struct sockaddr *) &serv_addr, + sizeof(serv_addr)) < 0) { + switch(errno) { +#ifdef ECONNREFUSED + /* this should be made nicer */ + case ECONNREFUSED: + failf(data, "Connection refused"); + break; +#endif +#ifdef EINTR + case EINTR: + failf(data, "Connection timeouted"); + break; +#endif + default: + failf(data, "Can't connect to server: %d", errno); + break; + } + return URG_COULDNT_CONNECT; + } + + if(data->conf & CONF_PROXYUSERPWD) { + char authorization[512]; + sprintf(data->buffer, "%s:%s", data->proxyuser, data->proxypasswd); + base64Encode(data->buffer, authorization); + + data->ptr_proxyuserpwd = maprintf("Proxy-authorization: Basic %s\015\012", + authorization); + } + if(data->conf & (CONF_HTTPS|CONF_HTTP)) { + if(data->useragent) { + data->ptr_uagent = maprintf("User-Agent: %s\015\012", data->useragent); + } + } + + + /* If we are not using a proxy and we want a secure connection, + * perform SSL initialization & connection now. + * If using a proxy with https, then we must tell the proxy to CONNECT + * us to the host we want to talk to. Only after the connect + * has occured, can we start talking SSL + */ + if (data->conf & CONF_HTTPS) { + if (data->conf & CONF_PROXY) { + + /* OK, now send the connect statment */ + sendf(data->firstsocket, data, + "CONNECT %s:%d HTTP/1.0\015\012" + "%s" + "%s" + "\r\n", + data->hostname, data->remote_port, + (data->conf&CONF_PROXYUSERPWD)?data->ptr_proxyuserpwd:"", + (data->useragent?data->ptr_uagent:"") + ); + + /* wait for the proxy to send us a HTTP/1.0 200 OK header */ + /* Daniel rewrote this part Nov 5 1998 to make it more obvious */ + { + int httperror=0; + int subversion=0; + while(GetLine(data->firstsocket, data->buffer, data)) { + if('\r' == data->buffer[0]) + break; /* end of headers */ + if(2 == sscanf(data->buffer, "HTTP/1.%d %d", + &subversion, + &httperror)) { + ; + } + } + if(200 != httperror) { + if(407 == httperror) + /* Added Nov 6 1998 */ + failf(data, "Proxy requires authorization!"); + else + failf(data, "Received error code %d from proxy", httperror); + return URG_READ_ERROR; + } + } + infof (data, "Proxy has replied to CONNECT request\n"); + } + + /* now, perform the SSL initialization for this socket */ + if(UrgSSLConnect (data)) { + return URG_SSL_CONNECT_ERROR; + } + } + + now = tvnow(); /* time this *after* the connect is done */ + bytecount = 0; + + /* Figure out the ip-number and the first host name it shows: */ + { + struct in_addr in; + (void) memcpy(&in.s_addr, *hp->h_addr_list, sizeof (in.s_addr)); + infof(data, "Connected to %s (%s)\n", hp->h_name, inet_ntoa(in)); + } + + if((data->conf&(CONF_FTP|CONF_PROXY)) == CONF_FTP) { + result = ftp(data, &bytecount, data->user, data->passwd, ppath); + if(result) + return result; + } + else if(data->conf & CONF_TELNET) { + result=telnet(data); + if(result) + return result; + } + else if (data->conf & CONF_LDAP) { + result = ldap(data, path, &bytecount); + if (result) + return result; + } + else if (data->conf & CONF_DICT) { + result = dict(data, path, &bytecount); + if(result) + return result; + } + else { + result = http(data, ppath, name, &bytecount); + if(result) + return result; + } + if(bytecount) { + double ittook = tvdiff (tvnow(), now); + infof(data, "%i bytes transfered in %.3lf seconds (%.0lf bytes/sec).\n", + bytecount, ittook, (double)bytecount/(ittook!=0.0?ittook:1)); + } + return URG_OK; +} + diff --git a/lib/url.h b/lib/url.h new file mode 100644 index 000000000..e69de29bb diff --git a/lib/urldata.h b/lib/urldata.h new file mode 100644 index 000000000..f171cd096 --- /dev/null +++ b/lib/urldata.h @@ -0,0 +1,212 @@ +#ifndef __URLDATA_H +#define __URLDATA_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +/* This file is for lib internal stuff */ + +#include "setup.h" + +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 256 +#endif + +#define PORT_FTP 21 +#define PORT_TELNET 23 +#define PORT_GOPHER 70 +#define PORT_HTTP 80 +#define PORT_HTTPS 443 +#define PORT_DICT 2628 +#define PORT_LDAP 389 + +#define DICT_MATCH "/MATCH:" +#define DICT_MATCH2 "/M:" +#define DICT_MATCH3 "/FIND:" +#define DICT_DEFINE "/DEFINE:" +#define DICT_DEFINE2 "/D:" +#define DICT_DEFINE3 "/LOOKUP:" + +#define CURL_DEFAULT_USER "anonymous" +#define CURL_DEFAULT_PASSWORD "curl_by_Daniel.Stenberg@haxx.nu" + +#include "cookie.h" + +#ifdef USE_SSLEAY +/* SSLeay stuff usually in /usr/local/ssl/include */ +#ifdef USE_OPENSSL +#include "openssl/rsa.h" +#include "openssl/crypto.h" +#include "openssl/x509.h" +#include "openssl/pem.h" +#include "openssl/ssl.h" +#include "openssl/err.h" +#else +#include "rsa.h" +#include "crypto.h" +#include "x509.h" +#include "pem.h" +#include "ssl.h" +#include "err.h" +#endif +#endif + + +/* Download buffer size, keep it fairly big for speed reasons */ +#define BUFSIZE (1024*50) + +/* Initial size of the buffer to store headers in, it'll be enlarged in case + of need. */ +#define HEADERSIZE 256 + +struct UrlData { + FILE *out; /* the fetched file goes here */ + FILE *in; /* the uploaded file is read from here */ + FILE *err; /* the stderr writes goes here */ + FILE *writeheader; /* write the header to this is non-NULL */ + char *url; /* what to get */ + char *freethis; /* if non-NULL, an allocated string for the URL */ + char *hostname; /* hostname to contect, as parsed from url */ + unsigned short port; /* which port to use (if non-protocol bind) set + CONF_PORT to use this */ + unsigned short remote_port; /* what remote port to connect to, not the proxy + port! */ + char *proxy; /* if proxy, set it here, set CONF_PROXY to use this */ + long conf; /* configure flags */ + char *userpwd; /* , if used */ + char *proxyuserpwd; /* Proxy , if used */ + char *range; /* range, if used. See README for detailed specification on + this syntax. */ + char *postfields; /* if POST, set the fields' values here */ + char *referer; + char *errorbuffer; /* store failure messages in here */ + char *useragent; /* User-Agent string */ + + char *ftpport; /* port to send with the PORT command */ + + /* function that stores the output:*/ + size_t (*fwrite)(char *buffer, + size_t size, + size_t nitems, + FILE *outstream); + + /* function that reads the input:*/ + size_t (*fread)(char *buffer, + size_t size, + size_t nitems, + FILE *outstream); + + long timeout; /* in seconds, 0 means no timeout */ + long infilesize; /* size of file to upload, -1 means unknown */ + + long maxdownload; /* in bytes, the maximum amount of data to fetch, 0 + means unlimited */ + + /* fields only set and used within _urlget() */ + int firstsocket; /* the main socket to use */ + int secondarysocket; /* for i.e ftp transfers */ + + char buffer[BUFSIZE+1]; /* buffer with size BUFSIZE */ + + double current_speed; /* the ProgressShow() funcion sets this */ + + long low_speed_limit; /* bytes/second */ + long low_speed_time; /* number of seconds */ + + int resume_from; /* continue [ftp] transfer from here */ + + char *cookie; /* HTTP cookie string to send */ + + short use_ssl; /* use ssl encrypted communications */ + + char *newurl; /* This can only be set if a Location: was in the + document headers */ + +#ifdef MULTIDOC + struct MoreDoc *moredoc; /* linked list of more docs to get */ +#endif + struct HttpHeader *headers; /* linked list of extra headers */ + struct HttpPost *httppost; /* linked list of POST data */ + + char *cert; /* PEM-formatted certificate */ + char *cert_passwd; /* plain text certificate password */ + + struct CookieInfo *cookies; + + long ssl_version; /* what version the client wants to use */ +#ifdef USE_SSLEAY + SSL_CTX* ctx; + SSL* ssl; + X509* server_cert; +#endif /* USE_SSLEAY */ + long crlf; + struct curl_slist *quote; + + TimeCond timecondition; + time_t timevalue; + + char *customrequest; /* http/ftp request to use */ + + char *headerbuff; /* allocated buffer to store headers in */ + int headersize; /* size of the allocation */ + int progressmode; /* what kind of progress meter to display */ + +#define MAX_CURL_USER_LENGTH 128 +#define MAX_CURL_PASSWORD_LENGTH 128 + + char user[MAX_CURL_USER_LENGTH]; + char passwd[MAX_CURL_PASSWORD_LENGTH]; + char proxyuser[MAX_CURL_USER_LENGTH]; + char proxypasswd[MAX_CURL_PASSWORD_LENGTH]; + + /**** Dynamicly allocated strings, may need to be freed on return ****/ + char *ptr_proxyuserpwd; /* free later if not NULL! */ + char *ptr_uagent; /* free later if not NULL! */ + char *ptr_userpwd; /* free later if not NULL! */ + char *ptr_rangeline; /* free later if not NULL! */ + char *ptr_ref; /* free later if not NULL! */ + char *ptr_cookie; /* free later if not NULL! */ + char *ptr_host; /* free later if not NULL */ +}; + +#define LIBCURL_NAME "libcurl" +#define LIBCURL_ID LIBCURL_NAME " " LIBCURL_VERSION " " SSL_ID + + +#endif diff --git a/lib/version.c b/lib/version.c new file mode 100644 index 000000000..73be0d7f9 --- /dev/null +++ b/lib/version.c @@ -0,0 +1,86 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#include +#include + +#include "setup.h" +#include +#include "urldata.h" + +char *curl_version(void) +{ + static char version[200]; + char *ptr; +#if defined(USE_SSLEAY) + static char sub[2]; +#endif + strcpy(version, LIBCURL_NAME " " LIBCURL_VERSION ); + ptr=strchr(version, '\0'); + +#ifdef USE_SSLEAY + +#if (SSLEAY_VERSION_NUMBER >= 0x900000) + sprintf(ptr, " (SSL %x.%x.%x)", + (SSLEAY_VERSION_NUMBER>>28)&0xff, + (SSLEAY_VERSION_NUMBER>>20)&0xff, + (SSLEAY_VERSION_NUMBER>>12)&0xf); +#else + if(SSLEAY_VERSION_NUMBER&0x0f) { + sub[0]=(SSLEAY_VERSION_NUMBER&0x0f) + 'a' -1; + } + else + sub[0]=0; + + sprintf(ptr, " (SSL %x.%x.%x%s)", + (SSLEAY_VERSION_NUMBER>>12)&0xff, + (SSLEAY_VERSION_NUMBER>>8)&0xf, + (SSLEAY_VERSION_NUMBER>>4)&0xf, sub); + +#endif + ptr=strchr(ptr, '\0'); +#endif + +#ifdef USE_ZLIB + sprintf(ptr, " (zlib %s)", zlibVersion()); +#endif + + return version; +} diff --git a/maketgz b/maketgz new file mode 100755 index 000000000..6ad429b5d --- /dev/null +++ b/maketgz @@ -0,0 +1,152 @@ +#! /bin/sh +# Script to build release-archives with +# + +echo "LIB version number?" +read version + +libversion="$version" + +echo "CURL version number?" +read curlversion + +HEADER=include/curl/curl.h +CHEADER=src/version.h + + +# Replace version number in header file: +sed 's/#define LIBCURL_VERSION.*/#define LIBCURL_VERSION "'$libversion'"/g' $HEADER >$HEADER.new + +# Save old header file +cp -p $HEADER $HEADER.old + +# Make new header: +mv $HEADER.new $HEADER + +# Replace version number in header file: +sed 's/#define CURL_VERSION.*/#define CURL_VERSION "'$curlversion'"/g' $CHEADER >$CHEADER.new + +# Save old header file +cp -p $CHEADER $CHEADER.old + +# Make new header: +mv $CHEADER.new $CHEADER + +findprog() +{ + file="$1" + for part in `echo $PATH| tr ':' ' '`; do + path="$part/$file" + if [ -x "$path" ]; then + # there it is! + return 1 + fi + done + + # no such executable + return 0 +} + +############################################################################ +# +# If we have autoconf we can just as well update configure.in to contain our +# brand new version number: +# + +if { findprog autoconf >/dev/null 2>/dev/null; } then + echo "- No autoconf found, we leave configure as it is" +else + # Replace version number in configure.in file: + + CONF="configure.in" + + sed 's/^AM_INIT_AUTOMAKE.*/AM_INIT_AUTOMAKE(curl,"'$version'")/g' $CONF >$CONF.new + + # Save old file + cp -p $CONF $CONF.old + + # Make new configure.in + mv $CONF.new $CONF + + # Update the configure script + echo "Runs autoconf" + autoconf +fi + +############################################################################ +# +# automake is needed to run to make a non-GNU Makefile.in if Makefile.am has +# been modified. +# + +if { findprog automake >/dev/null 2>/dev/null; } then + echo "- Could not find or run automake, I hope you know what you're doing!" +else + echo "Runs automake --include-deps" + automake --include-deps +fi + +############################################################################ +# +# Now run make first to make the file dates decent and make sure that it +# compiles just before release! +# + +make + +# get current dir +dir=`pwd` + +# Get basename +orig=`basename $dir` + +# Get the left part of the dash (-) +new=`echo $orig | cut -d- -f1` + +# Build new directory name +n=$new-$version; + +# Tell the world what we're doing +echo "Copying files into distribution archive"; + +if [ -r $n ]; then + echo "Directory already exists!" + exit +fi + +# Create the new dir +mkdir $n + +# Copy all relevant files, with path and permissions! +tar -cf - `cat FILES` | (cd $n; tar -xBpf -) + +# Create the distribution root Makefile from Makefile.dist +cp -p Makefile.dist $n/Makefile + +############################################################################ +# +# Replace @SHELL@ with /bin/sh in the Makefile.in files! +# +echo "Replace @SHELL@ with /bin/sh in the Makefile.in files" +temp=/tmp/curl$$ +for file in Makefile.in lib/Makefile.in src/Makefile.in; do + in="$n/$file" + sed "s:@SHELL@:/bin/sh:g" $in >$temp + cp $temp $in +done +rm -rf $temp + +# Tell the world what we're doing +echo "creates $n.tar.gz"; + +# Make a tar archive of it all +tar -cvf $n.tar $n + +# gzip the archive +gzip $n.tar + +# Make it world readable +chmod a+r $n.tar.gz ; + +# Delete the temp dir +rm -rf $n diff --git a/missing b/missing new file mode 100755 index 000000000..cbe2b0ef0 --- /dev/null +++ b/missing @@ -0,0 +1,188 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER([^):]*:\([^)]*\)).*/\1/p' configure.in` + if test -z "$files"; then + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in` + test -z "$files" || files="$files.in" + else + files=`echo "$files" | sed -e 's/:/ /g'` + fi + test -z "$files" && files="config.h.in" + touch $files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print \ + | sed 's/^\(.*\).am$/touch \1.in/' \ + | sh + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 000000000..d0fd194fd --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id$ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" 1>&2 + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/perl/README b/perl/README new file mode 100644 index 000000000..bb8757aea --- /dev/null +++ b/perl/README @@ -0,0 +1,33 @@ +This is just a small collection of perl scripts that use curl to do +their jobs. + +If you need a proxy configuration in order to get HTTP or FTP +documents, do edit your .curlrc file in your HOME dir to contain: +-x : + +These scripts are all written by Daniel Stenberg. + +checklinks.pl +============= + This script fetches an HTML page, extracts all links and references to + other documents and then goes through them to check that they work. + Reports progress in a format intended for machine-parsing. + +getlinks.pl +=========== + You ever wanted to download a bunch of programs a certain HTML page has + links to? This program extracts all links and references from a web page + and then compares them to the regex you supply. All matches will be + downloaded in the target directory of your choice. + +recursiveftpget.pl +================== + This script recursively downloads all files from a directory on an ftp site + and all subdirectories it has. Optional depth-level. + +formfind.pl +=========== + Downloads an HTML page (or reads stdin) and reports a human readable report + about the FORM(s) present. What method, what URL, which input or select + field, what default values they have and what submit buttons there are. It + is useful if you intend to use curl to properly fake a form submission. diff --git a/perl/checklinks.pl b/perl/checklinks.pl new file mode 100644 index 000000000..347416ac9 --- /dev/null +++ b/perl/checklinks.pl @@ -0,0 +1,336 @@ +#!/usr/local/bin/perl +# +# checklinks.pl +# +# This script extracts all links from a HTML page and checks their validity. +# Written to use 'curl' for URL checking. +# +# Author: Daniel Stenberg +# Version: 0.7 Sept 30, 1998 +# +# HISTORY +# +# 0.5 - Cuts off the #-part from links before checking. +# +# 0.6 - Now deals with error codes 3XX better and follows the Location: +# properly. +# - Added the -x flag that only checks http:// -links +# +# 0.7 - Ok, http://www.viunga.se/main.html didn't realize this had no path +# but a document. Now it does. +# +# + +$in=""; + + argv: +if($ARGV[0] eq "-v" ) { + $verbose = 1; + shift @ARGV; + goto argv; +} +elsif($ARGV[0] eq "-i" ) { + $usestdin = 1; + shift @ARGV; + goto argv; +} +elsif($ARGV[0] eq "-l" ) { + $linenumber = 1; + shift @ARGV; + goto argv; +} +elsif($ARGV[0] eq "-h" ) { + $help = 1; + shift @ARGV; + goto argv; +} +elsif($ARGV[0] eq "-x" ) { + $external = 1; + shift @ARGV; + goto argv; +} + +$geturl = $ARGV[0]; + +if(($geturl eq "") || $help) { + print "Usage: $0 [-hilvx] \n", + " Use a traling slash for directory URLs!\n", + " -h This help text\n", + " -i Read the initial page from stdin\n", + " -l Line number report for BAD links\n", + " -v Verbose mode\n", + " -x Check non-local (external?) links only\n"; + exit; +} + +if($ARGV[1] eq "-") { + print "We use stdin!\n"; + $usestdin = 1; +} + +# This is necessary from where I tried this: +#$proxy =" -x 194.237.142.41:80"; + +# linkchecker, URL will be appended to the right of this command line +# this is the one using HEAD: +$linkcheck = "curl -s -m 20 -I$proxy"; + +# as a second attempt, this will be used. This is not using HEAD but will +# get the whole frigging document! +$linkcheckfull = "curl -s -m 20 -i$proxy"; + +# htmlget, URL will be appended to the right of this command line +$htmlget = "curl -s$proxy"; + +# Parse the input URL and split it into the relevant parts: + +sub SplitURL { + my $inurl = $_[0]; + + if($inurl=~ /^([^:]+):\/\/([^\/]*)\/(.*)\/(.*)/ ) { + $getprotocol = $1; + $getserver = $2; + $getpath = $3; + $getdocument = $4; + } + elsif ($inurl=~ /^([^:]+):\/\/([^\/]*)\/(.*)/ ) { + $getprotocol = $1; + $getserver = $2; + $getpath = $3; + $getdocument = ""; + + if($getpath !~ /\//) { + $getpath =""; + $getdocument = $3; + } + + } + elsif ($inurl=~ /^([^:]+):\/\/(.*)/ ) { + $getprotocol = $1; + $getserver = $2; + $getpath = ""; + $getdocument = ""; + } + else { + print "Couldn't parse the specified URL, retry please!\n"; + exit; + } +} + +&SplitURL($geturl); + +#print "protocol = $getprotocol\n"; +#print "server = $getserver\n"; +#print "path = $getpath\n"; +#print "document = $getdocument\n"; +#exit; + +if(!$usestdin) { + open(HEADGET, "$linkcheck $geturl|") || + die "Couldn't get web page for some reason"; + headget: + while() { +# print $_; + if($_ =~ /HTTP\/.*3\d\d /) { + $pagemoved=1; + } + elsif($pagemoved && + ($_ =~ /^Location: (.*)/)) { + $geturl = $1; + + &SplitURL($geturl); + + $pagemoved++; + last headget; + } + } + close(HEADGET); + + if($pagemoved == 1) { + print "Page is moved but we don't know where. Did you forget the ", + "traling slash?\n"; + exit; + } + + open(WEBGET, "$htmlget $geturl|") || + die "Couldn't get web page for some reason"; + + while() { + $line = $_; + push @indoc, $line; + $line=~ s/\n//g; + $line=~ s/\r//g; +# print $line."\n"; + $in=$in.$line; + } + + close(WEBGET); +} +else { + while() { + $line = $_; + push @indoc, $line; + $line=~ s/\n//g; + $line=~ s/\r//g; + $in=$in.$line; + } +} + +#print length($in)."\n"; + +sub LinkWorks { + my $check = $_[0]; + +# URL encode: +# $check =~s/([^a-zA-Z0-9_:\/.-])/uc sprintf("%%%02x",ord($1))/eg; + + @doc = `$linkcheck \"$check\"`; + + $head = 1; + +# print "COMMAND: $linkcheck \"$check\"\n"; +# print $doc[0]."\n"; + + boo: + if( $doc[0] =~ /^HTTP[^ ]+ (\d+)/ ) { + $error = $1; + + if($error < 400 ) { + return "GOOD"; + } + else { + + if($head && ($error >= 500)) { + # This server doesn't like HEAD! + @doc = `$linkcheckfull \"$check\"`; + $head = 0; + goto boo; + } + return "BAD"; + } + } + return "BAD"; +} + + +sub GetLinks { + my $in = $_[0]; + my @result; + + getlinkloop: + while($in =~ /[^<]*(<[^>]+>)/g ) { + # we have a tag in $1 + $tag = $1; + + if($tag =~ /^*@8jJ||$6I{wwd7{hUC7c@YG4$B< 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Ξ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�#m)%nuWOjkX-zNePG8p+B)M@WXH5z{AvnC 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�>9kJWP!@L(zJg3D=*5M{(m8gQpIg#p#yTp!< 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 w_VL)I%|%jKk}SFE)X|%eV_B%+9*y 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 nYd literal 0 HcmV?d00001 diff --git a/src/hugehelp.c b/src/hugehelp.c new file mode 100644 index 000000000..390221935 --- /dev/null +++ b/src/hugehelp.c @@ -0,0 +1,1049 @@ +/* NEVER EVER edit this manually, fix the mkhelp script instead! */ +#include +void hugehelp(void) +{ +puts ( +" _ _ ____ _ \n" +" Project ___| | | | _ \\| | \n" +" / __| | | | |_) | | \n" +" | (__| |_| | _ <| |___ \n" +" \\___|\\___/|_| \\_\\_____|\n" +"NAME\n" +" curl - get a URL with FTP, TELNET, LDAP, GOPHER, DICT, FILE,\n" +" HTTP or HTTPS syntax.\n" +"\n" +"SYNOPSIS\n" +" curl [options] url\n" +"\n" +"DESCRIPTION\n" +" curl is a client to get documents/files from servers, using\n" +" any of the supported protocols. The command is designed to\n" +" work without user interaction or any kind of interactivity.\n" +"\n" +" curl offers a busload of useful tricks like proxy support,\n" +" user authentication, ftp upload, HTTP post, SSL (https:)\n" +" connections, cookies, file transfer resume and more.\n" +"\n" +"URL\n" +" The URL syntax is protocol dependent. You'll find a detailed\n" +" description in RFC 2396.\n" +"\n" +" You can specify multiple URLs or parts of URLs by writing\n" +" part sets within braces as in:\n" +"\n" +" http://site.{one,two,three}.com\n" +"\n" +" or you can get sequences of alphanumeric series by using []\n" +" as in:\n" +"\n" +" ftp://ftp.numericals.com/file[1-100].txt\n" +" ftp://ftp.numericals.com/file[001-100].txt (with leading\n" +" zeros)\n" +" ftp://ftp.letters.com/file[a-z].txt\n" +"\n" +" It is possible to specify up to 9 sets or series for a URL,\n" +" but no nesting is supported at the moment:\n" +"\n" +" http://www.any.org/archive[1996-1999]/volume[1-\n" +" 4]part{a,b,c,index}.html\n" +"\n" +"OPTIONS\n" +" -a/--append\n" +" (FTP) When used in a ftp upload, this will tell curl to\n" +" append to the target file instead of overwriting it. If\n" +" the file doesn't exist, it will be created.\n" +"\n" +" -A/--user-agent \n" +" (HTTP) Specify the User-Agent string to send to the\n" +" HTTP server. Some badly done CGIs fail if its not set\n" +" to \"Mozilla/4.0\". To encode blanks in the string, sur-\n" +" round the string with single quote marks. This can\n" +" also be set with the -H/--header flag of course.\n" +" -b/--cookie \n" +" (HTTP) Pass the data to the HTTP server as a cookie. It\n" +" is supposedly the data previously received from the\n" +" server in a \"Set-Cookie:\" line. The data should be in\n" +" the format \"NAME1=VALUE1; NAME2=VALUE2\".\n" +"\n" +" If no '=' letter is used in the line, it is treated as\n" +" a filename to use to read previously stored cookie\n" +" lines from, which should be used in this session if\n" +" they match. Using this method also activates the\n" +" \"cookie parser\" which will make curl record incoming\n" +" cookies too, which may be handy if you're using this in\n" +" combination with the -L/--location option. The file\n" +" format of the file to read cookies from should be plain\n" +" HTTP headers or the netscape cookie file format.\n" +"\n" +" -B/--ftp-ascii\n" +" (FTP/LDAP) Use ASCII transfer when getting an FTP file\n" +" or LDAP info. For FTP, this can also be enforced by\n" +" using an URL that ends with \";type=A\".\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" +"\n" +" -C/--continue-at \n" +" Continue/Resume a previous file transfer at the given\n" +" offset. The given offset is the exact number of bytes\n" +" that will be skipped counted from the beginning of the\n" +" source file before it is transfered to the destination.\n" +" If used with uploads, the ftp server command SIZE will\n" +" not be used by curl. Upload resume is for FTP only.\n" +" HTTP resume is only possible with HTTP/1.1 or later\n" +" servers.\n" +"\n" +" -d/--data \n" +" (HTTP) Sends the specified data in a POST request to\n" +" the HTTP server. Note that the data is sent exactly as\n" +" specified with no extra processing. The data is\n" +" expected to be \"url-encoded\". This will cause curl to\n" +" pass the data to the server using the content-type\n" +" application/x-www-form-urlencoded. Compare to -F.\n" +"\n" +" If you start the data with the letter @, the rest\n" +" should be a file name to read the data from, or - if\n" +" you want curl to read the data from stdin. The con-\n" +" tents of the file must already be url-encoded.\n" +"\n" +" -D/--dump-header \n" +" (HTTP/FTP) Write the HTTP headers to this file. Write\n" +" the FTP file info to this file if -I/--head is used.\n" +"\n" +" -e/--referer \n" +" (HTTP) Sends the \"Referer Page\" information to the HTTP\n" +" server. Some badly done CGIs fail if it's not set. This\n" +" can also be set with the -H/--header flag of course.\n" +"\n" +" -E/--cert \n" +" (HTTPS) Tells curl to use the specified certificate\n" +" file when getting a file with HTTPS. The certificate\n" +" must be in PEM format. If the optional password isn't\n" +" specified, it will be queried for on the terminal. Note\n" +" that this certificate is the private key and the\n" +" private certificate concatenated!\n" +"\n" +" -f/--fail\n" +" (HTTP) Fail silently (no output at all) on server\n" +" errors. This is mostly done like this to better enable\n" +" scripts etc to better deal with failed attempts. In\n" +" normal cases when a HTTP server fails to deliver a\n" +" document, it returns a HTML document stating so (which\n" +" often also describes why and more). This flag will\n" +" prevent curl from outputting that and fail silently\n" +" instead.\n" +"\n" +" -F/--form \n" +" (HTTP) This lets curl emulate a filled in form in which\n" +" a user has pressed the submit button. This causes curl\n" +" to POST data using the content-type multipart/form-data\n" +" according to RFC1867. This enables uploading of binary\n" +" files etc. To force the 'content' part to be read from\n" +" a file, prefix the file name with an @ sign. Example,\n" +" to send your password file to the server, where 'pass-\n" +" word' is the name of the form-field to which\n" +" /etc/passwd will be the input:\n" +"\n" +" curl -F password=@/etc/passwd www.mypasswords.com\n" +"\n" +" To read the file's content from stdin insted of a file,\n" +" use - where the file name should've been.\n" +"\n" +" -h/--help\n" +" Usage help.\n" +"\n" +" -H/--header

\n" +" (HTTP) Extra header to use when getting a web page. You\n" +" may specify any number of extra headers. Note that if\n" +" you should add a custom header that has the same name\n" +" as one of the internal ones curl would use, your exter-\n" +" nally set header will be used instead of the internal\n" +" one. This allows you to make even trickier stuff than\n" +" curl would normally do. You should not replace inter-\n" +" nally set headers without knowing perfectly well what\n" +" you're doing.\n" +"\n" +" -i/--include\n" +" (HTTP) Include the HTTP-header in the output. The\n" +" HTTP-header includes things like server-name, date of\n" +" the document, HTTP-version and more...\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" +" -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" +" rest of the line will be treated as a comment.\n" +"\n" +" Specify the filename as '-' to make curl read the file\n" +" from stdin.\n" +"\n" +" -l/--list-only\n" +" (FTP) When listing an FTP directory, this switch forces\n" +" a name-only view. Especially useful if you want to\n" +" machine-parse the contents of an FTP directory since\n" +" the normal directory view doesn't use a standard look\n" +" or format.\n" +"\n" +" -L/--location\n" +" (HTTP/HTTPS) If the server reports that the requested\n" +" page has a different location (indicated with the\n" +" header line Location:) this flag will let curl attempt\n" +" to reattempt the get on the new place. If used together\n" +" with -i or -I, headers from all requested pages will be\n" +" shown.\n" +"\n" +" -m/--max-time \n" +" Maximum time in seconds that you allow the whole opera-\n" +" tion to take. This is useful for preventing your batch\n" +" jobs from hanging for hours due to slow networks or\n" +" links going down. This doesn't work properly in win32\n" +" systems.\n" +" -M/--manual\n" +" Manual. Display the huge help text.\n" +"\n" +" -n/--netrc\n" +" Makes curl scan the .netrc file in the user's home\n" +" directory for login name and password. This is typi-\n" +" cally used for ftp on unix. If used with http, curl\n" +" will enable user authentication. See netrc(4) for\n" +" details on the file format. Curl will not complain if\n" +" that file hasn't the right permissions (it should not\n" +" be world nor group readable). The environment variable\n" +" \"HOME\" is used to find the home directory.\n" +"\n" +" A quick and very simple example of how to setup a\n" +" .netrc to allow curl to ftp to the machine\n" +" host.domain.com with user name\n" +"\n" +" machine host.domain.com user myself password secret\n" +"\n" +" -o/--output \n" +" Write output to instead of stdout. If you are\n" +" using {} or [] to fetch multiple documents, you can use\n" +" # in the specifier. That variable will be\n" +" replaced with the current string for the URL being\n" +" fetched. Like in:\n" +"\n" +" curl http://{one,two}.site.com -o \"file_#1.txt\"\n" +"\n" +" or use several variables like:\n" +"\n" +" curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n" +"\n" +" -O/--remote-name\n" +" Write output to a local file named like the remote file\n" +" we get. (Only the file part of the remote file is used,\n" +" the path is cut off.)\n" +"\n" +" -P/--ftpport
\n" +" (FTP) Reverses the initiator/listenor roles when con-\n" +" necting with ftp. This switch makes Curl use the PORT\n" +" command instead of PASV. In practice, PORT tells the\n" +" server to connect to the client's specified address and\n" +" port, while PASV asks the server for an ip address and\n" +" port to connect to.
should be one of:\n" +" interface - i.e \"eth0\" to specify which interface's IP\n" +" address you want to use (Unix only)\n" +" IP address - i.e \"192.168.10.1\" to specify exact IP\n" +" number\n" +" host name - i.e \"my.host.domain\" to specify machine\n" +" \"-\" - (any single-letter string) to make it pick\n" +" the machine's default\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" +"\n" +" -Q/--quote \n" +" (FTP) Send an arbitrary command to the remote FTP\n" +" server, by using the QUOTE command of the server. Not\n" +" all servers support this command, and the set of QUOTE\n" +" commands are server specific!\n" +"\n" +" -r/--range \n" +" (HTTP/FTP) Retrieve a byte range (i.e a partial docu-\n" +" ment) from a HTTP/1.1 or FTP server. Ranges can be\n" +" specified in a number of ways.\n" +" 0-499 - specifies the first 500 bytes\n" +" 500-999 - specifies the second 500 bytes\n" +" -500 - specifies the last 500 bytes\n" +" 9500- - specifies the bytes from offset 9500\n" +" and forward\n" +" 0-0,-1 - specifies the first and last byte\n" +" only(*)(H)\n" +" 500-700,600-799 - specifies 300 bytes from offset\n" +" 500(H)\n" +" 100-199,500-599 - specifies two separate 100 bytes\n" +" ranges(*)(H)\n" +"\n" +" (*) = NOTE that this will cause the server to reply\n" +" with a multipart response!\n" +"\n" +" You should also be aware that many HTTP/1.1 servers do\n" +" not have this feature enabled, so that when you attempt\n" +" to get a range, you'll instead get the whole document.\n" +"\n" +" FTP range downloads only support the simple syntax\n" +" 'start-stop' (optionally with one of the numbers omit-\n" +" ted). It depends on the non-RFC command SIZE.\n" +"\n" +" -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" +"\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" +" will append the local file name. NOTE that you must use\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" +" 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" +" interactively.\n" +"\n" +" -U/--proxy-user \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" +" data sent by curl, '<' means data received by curl that\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" +" 3rd party libraries linked with the executable.\n" +"\n" +" -x/--proxy \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" +" 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" +" LIST when doing file lists with ftp.\n" +"\n" +" -y/--speed-time \n" +" Speed Limit. If a download is slower than this given\n" +" speed, in bytes per second, for Speed Time seconds it\n" +" gets aborted. Speed Time is set with -Y and is 30 if\n" +" not set.\n" +"\n" +" -Y/--speed-limit