Compare commits

..

2116 Commits

Author SHA1 Message Date
Gisle Vanem
120f17ce04 Replace LF with CRLF. Ref RFC-2229, sec 2.3:
"Each command line must be terminated by a CRLF".
2005-02-09 11:50:41 +00:00
Daniel Stenberg
ab938bb9bd -O clarification 2005-02-08 23:39:47 +00:00
Daniel Stenberg
33820cd2ac inflate and out of memory fixes 2005-02-08 19:07:28 +00:00
Daniel Stenberg
41def21f91 ares_gethostbyname wants a 'ares_host_callback' in the 4th argument 2005-02-08 19:03:27 +00:00
Gisle Vanem
d118312922 Curl_addrinfo?_callback() and addrinfo_callback() now returns
CURLE_OK or CURLE_OUT_OF_MEMORY.
Add typecast in hostares.c.
2005-02-08 12:36:13 +00:00
Gisle Vanem
82b93e4945 Don't free too much in freedirs() if realloc() fails. 2005-02-08 12:32:28 +00:00
Daniel Stenberg
e36fb1ecda Curl_wait_for_resolv() no longer disconnects on failure, but leaves that
operation to the caller. Disconnecting has the disadvantage that the conn
pointer gets completely invalidated and this is not handled on lots of places
in the code.
2005-02-08 07:36:57 +00:00
Dan Fandrich
e4a1788614 Fix for a bug report that compressed files that are exactly 64 KiB long
produce a zlib error.
2005-02-07 19:12:37 +00:00
Gisle Vanem
7b23eff9cf Preserve previous status in Curl_http_done(). 2005-02-06 12:43:40 +00:00
Daniel Stenberg
67ff8e3ea3 valgrind errors occur too often when 'make test' is used. It is because too
many third-party libs and tools have problems. When curl is built without
--disable-shared, the testing is done with a front-end script which makes the
valgrind testing include (ba)sh as well and that often causes valgrind
errors. Either we improve the valgrind error scanner a lot to better identify
(lib)curl errors only, or we disable valgrind checking by default
2005-02-05 10:25:20 +00:00
Daniel Stenberg
2248599ae1 fix type 2005-02-04 23:53:12 +00:00
Daniel Stenberg
29350b363b Eric Vergnaud found a use of an uninitialized variable 2005-02-04 23:43:44 +00:00
Daniel Stenberg
83c470a443 David Byron pointed out that this -1 on the buffer size is pointless since
the buffer is already BUFSIZE +1 one big to fit the extra trailing zero. This
change is reported to fix David's weird SSL problem...
2005-02-04 13:42:41 +00:00
Daniel Stenberg
ab96e2d6e9 another example 2005-02-02 19:25:49 +00:00
Daniel Stenberg
6b81cf4bc9 HTML parsing example with libtidy, by Jeff Pohlmeyer 2005-02-02 19:25:37 +00:00
Daniel Stenberg
0d9301539e and we start over again 2005-02-01 08:46:06 +00:00
Daniel Stenberg
4a9e12542d 7.13 coming up 2005-02-01 07:54:36 +00:00
Daniel Stenberg
21b4105454 somewhat nicer libcurl usage 2005-01-31 20:03:01 +00:00
Daniel Stenberg
d7648d94ca htmltitle 2005-01-31 18:23:42 +00:00
Daniel Stenberg
883343ba63 HTML <head> parsing (with libxml) example code by Lars Nilsson. 2005-01-31 18:22:40 +00:00
Daniel Stenberg
16b5dc710f four changes 2005-01-30 22:57:19 +00:00
Daniel Stenberg
686d767053 if the DO operation returns failure, bail out and close down nicely to
prevent memory leakage
2005-01-30 22:54:06 +00:00
Daniel Stenberg
ed3176dd6b Let's add a cookie interface in 7.14 2005-01-30 13:26:12 +00:00
Daniel Stenberg
6a99ab098c Bugfixed the parser that scans the valgrind report outputs. I noticed that it
previously didn't detect and report the "Conditional jump or move depends on
uninitialised value(s)" error.

When I fixed this, I caught a few curl bugs with it. And then I had to spend
time to make the test suite IGNORE these errors when OpenSSL is used since it
produce massive amounts of valgrind warnings (but only of the "Conditional..."
kind it seems).

So, if a test that requires SSL is run, it ignores the "Conditional..."
errors, and you'll get a "valgrind PARTIAL" output instead of "valgrind OK".
2005-01-30 12:56:36 +00:00
Daniel Stenberg
b03adde546 properly mark tests as requiring feature 'SSL' 2005-01-30 12:53:05 +00:00
Daniel Stenberg
e6034ea299 Use calloc() to save us the memset() call and terminate conn->host.name
properly, to avoid reading uninited variables when using file:// (valgrind)
2005-01-30 12:42:15 +00:00
Daniel Stenberg
c7f51ebeab Clear the urlglob struct when allocated, since we might otherwise use
uninitialized variables. Pointed out to us by the friendly Valgrind.
2005-01-29 23:46:27 +00:00
Daniel Stenberg
9a820d7a98 include "url.h" for the Curl_safefree() proto 2005-01-29 22:38:45 +00:00
Daniel Stenberg
8dbaf534c8 Using the multi interface, and doing a requsted a re-used connection that
gets closed just after the request has been sent failed and did not re-issue
a request on a fresh reconnect like the easy interface did. Now it does!
(define CURL_MULTIEASY, run test case 160)
2005-01-29 22:31:06 +00:00
Daniel Stenberg
91f483c591 Define CURL_MULTIEASY when building this, to use my new curl_easy_perform()
that uses the multi interface to run the request. It is a great testbed for
the multi interface and I believe we shall do it this way for real in the
future when we have a successor to curl_multi_fdset().
2005-01-29 22:26:38 +00:00
Daniel Stenberg
c5b448038f corrected the URL 2005-01-29 13:54:15 +00:00
Daniel Stenberg
c4ff5eb0ca conn->ip_addr MUST NOT be used on re-used connections 2005-01-29 13:07:16 +00:00
Daniel Stenberg
0859cd2444 when using valgrind, include a much longer stack trace 2005-01-29 13:06:31 +00:00
Daniel Stenberg
59b45a90cc multi interface: when a request is denied due to "Maximum redirects followed"
libcurl leaked the last Location: URL.
2005-01-29 12:01:20 +00:00
Daniel Stenberg
f661475962 Connect failures with the multi interface was often returned as "connect()
timed out" even though the reason was different. Fixed this problem by not
setting this timeout to zero when using multi.
2005-01-28 23:21:24 +00:00
Daniel Stenberg
54b02ecf09 adjusted to the moved unlock of the DNS entry 2005-01-28 22:22:59 +00:00
Daniel Stenberg
4551e7ce49 KNOWN_BUGS #17 fixed. A DNS cache entry may not remain locked between two
curl_easy_perform() invokes. It was previously unlocked at disconnect, which
could mean that it remained locked between multiple transfers. The DNS cache
may not live as long as the connection cache does, as they are separate.

To deal with the lack of DNS (host address) data availability in re-used
connections, libcurl now keeps a copy of the IP adress as a string, to be able
to show it even on subsequent requests on the same connection.
2005-01-28 22:14:48 +00:00
Daniel Stenberg
064bc3ecbc Stephen More pointed out that CURLOPT_FTPPORT and the -P option didn't work
when built ipv6-enabled. I've now made a fix for it. Writing test cases for
custom port strings turned too tricky so unfortunately there's none.
2005-01-28 08:26:36 +00:00
Daniel Stenberg
cf38a4c470 test the EPRT/LPRT/PORT somewhat more 2005-01-27 23:03:02 +00:00
Daniel Stenberg
aacc79a3a3 Use the same work-around for the memdebug stuff as in the command line client,
to allow the contents of the env var decide the file name.
2005-01-27 22:40:56 +00:00
Daniel Stenberg
9864bf703d a slightly involved work-around to prevent the debug-tracing from logging
a free-without-alloc as the first call
2005-01-27 15:59:01 +00:00
Daniel Stenberg
289a42f050 Make the debug build get the debug dump file path from the environment
variable to allow the test suite to better control where it ends up.
2005-01-27 15:51:03 +00:00
Daniel Stenberg
ade1e79b37 verify a part of the PORT line 2005-01-27 12:59:40 +00:00
Daniel Stenberg
2415724d5f Make the server ignore the given PORT address, to make it possible to test
curl's -P option easier.
2005-01-26 23:18:31 +00:00
Daniel Stenberg
5463177f1f added more official web and download mirrors 2005-01-26 12:05:33 +00:00
Daniel Stenberg
4efd751eda new curlpp URL 2005-01-26 11:53:49 +00:00
Daniel Stenberg
2337efc3b1 fixed sort, mention C, the java binding is now maintained by Vic Hanson 2005-01-26 11:53:12 +00:00
Daniel Stenberg
b942a25a45 add number to the bugs to make them easier to refer to 2005-01-25 23:40:35 +00:00
Daniel Stenberg
beab9a9696 two known bugs 2005-01-25 22:21:42 +00:00
Daniel Stenberg
177dbc7be0 Ian Ford asked about support for the FTP command ACCT, and I discovered it is
present in RFC959... so now (lib)curl supports it as well. --ftp-account and
CURLOPT_FTP_ACCOUNT set the account string. (The server may ask for an account
string after PASS have been sent away. The client responds with "ACCT [account
string]".) Added test case 228 and 229 to verify the functionality. Updated
the test FTP server to support ACCT somewhat.
2005-01-25 22:13:12 +00:00
Daniel Stenberg
f2e71edcbd A minor "syntax error" in numerous test files corrected 2005-01-25 21:45:03 +00:00
Daniel Stenberg
fad6e5a5bc new web mirror 2005-01-25 13:59:48 +00:00
Daniel Stenberg
52f6c437fe --protocols is added in 7.13.0 2005-01-25 12:06:12 +00:00
Daniel Stenberg
80a8be6319 David Shaw contributed a fairly complete and detailed autoconf macro you can
use to detect libcurl and setup variables for the protocols the installed
libcurl supports: docs/libcurl/libcurl.m4
2005-01-25 09:29:05 +00:00
Daniel Stenberg
043d70fcdf Use plain structs and not typedef'ed ones in the hash and linked-list code. 2005-01-25 00:06:29 +00:00
Daniel Stenberg
4f7e958969 two options less 2005-01-23 00:08:56 +00:00
Daniel Stenberg
53143910a1 \fI marked \fP more function calls etc. 2005-01-22 22:43:04 +00:00
Daniel Stenberg
95656cd7f3 If you're using libcurl as a win32 DLL, you MUST use the CURLOPT_WRITEFUNCTION
if you set CURLOPT_WRITEDATA - or you will experience crashes.
2005-01-22 22:24:17 +00:00
Daniel Stenberg
d8f79b263d next release will be 7.13.0 2005-01-22 19:26:37 +00:00
Daniel Stenberg
51da8552c3 added a few items I plan to do 2005-01-22 09:03:55 +00:00
Daniel Stenberg
7e42cb61f7 FTP third transfer support overhaul. See CHANGES for details. 2005-01-21 09:32:32 +00:00
Daniel Stenberg
6c038680f9 clarify the struct name for CURLOPT_HTTPPOST 2005-01-21 08:56:04 +00:00
Daniel Stenberg
291a908f19 Added support for "verify" => "stripfile" to strip contents of the file that
is being checked.

Also made the server retrying sleep only one second instead of three, to reduce
some waiting when fooling around with the servers.
2005-01-20 22:48:43 +00:00
Daniel Stenberg
b264a03f89 Support file names passed to RETR that don't start with a number. In that
case, all non-numeric prefixing letters are cut off to figure out the test
number.
2005-01-20 22:47:31 +00:00
Daniel Stenberg
7472ede32a Philippe Hameau found out that -Q "+[command]" didn't work, although some code
was written for it. I fixed and added test case 227 to verify it.  The curl.1
man page didn't mention the '+' so I added it.
2005-01-20 22:22:12 +00:00
Daniel Stenberg
b5065e462b add support for NOOP 2005-01-20 22:05:44 +00:00
Daniel Stenberg
8dd799b4bd If you give a *_LARGE option you MUST make sure that the type of the passed-in
argument is a curl_off_t. If you use CURLOPT_INFILESIZE (without _LARGE) you
must make sure that to pass in a type 'long' argument. */
2005-01-20 14:24:56 +00:00
Daniel Stenberg
a38520c90d added test226 too 2005-01-19 22:00:54 +00:00
Daniel Stenberg
3050ae57c0 Stephan Bergmann made libcurl return CURLE_URL_MALFORMAT if an FTP URL
contains %0a or %0d in the user, password or CWD parts. (A future fix would
include doing it for %00 as well - see KNOWN_BUGS for details.) Test case 225
and 226 were added to verify this
2005-01-19 21:56:02 +00:00
Daniel Stenberg
01205f772c today's proxy fixes 2005-01-19 18:05:56 +00:00
Gisle Vanem
06ad5be3af Don't copy 'stderr' for Win-CE in IPv6 code. Don't call
GetCurrentProcess() twice; use a local variable.
2005-01-19 10:20:55 +00:00
Daniel Stenberg
2fe3829e5e add a URL to an article about making Apache support PUT 2005-01-19 10:09:15 +00:00
Daniel Stenberg
a0c8b9bc68 Stephan Bergmann pointed out two flaws in libcurl built with HTTP disabled:
1) the proxy environment variables are still read and used to set HTTP proxy

2) you couldn't disable http proxy with CURLOPT_PROXY (since the option was
   disabled)
2005-01-19 09:36:44 +00:00
Daniel Stenberg
0406b1facf skip sys/socket.h on windows CE 2005-01-18 15:13:23 +00:00
Daniel Stenberg
65dbee01e5 check for errno.h 2005-01-18 14:34:50 +00:00
Daniel Stenberg
b1080f7c9a Cody Jones' enhanced version of Samuel Daz Garca's MSVC makefile patch. 2005-01-18 10:17:34 +00:00
Daniel Stenberg
7bfd58d41f Add support for server 'ftp2' which is a second FTP server. Useful for 3rd
party transfer tests or tests that need two FTP servers.
2005-01-17 20:20:34 +00:00
Daniel Stenberg
3851c6aae2 support the new --id command line option, that allows a second (or third or
whatever) instance to run without overwriting the previous' logfiles
2005-01-17 19:49:12 +00:00
Daniel Stenberg
ae03fa7d8e mention the name-prefix protocol guess thing 2005-01-17 14:57:21 +00:00
Daniel Stenberg
8a14dd25a9 updated the wording for -B/--use-ascii 2005-01-17 09:18:04 +00:00
Daniel Stenberg
e0bea7d541 Alex aka WindEagle pointed out that when doing "curl -v dictionary.com", curl
assumed this used the DICT protocol. While guessing protocols will remain
fuzzy, I've now made sure that the host names must start with "[protocol]."
for them to be a valid guessable name. I also removed "https" as a prefix that
indicates HTTPS, since we hardly ever see any host names using that.
2005-01-16 08:51:52 +00:00
Daniel Stenberg
534a8a05f3 mention --netrc in the -u description 2005-01-16 08:34:18 +00:00
Gisle Vanem
f5b8a26d9a errrno can by freak accident become EINTR on DOS or
Windows (unrelated to select). select() can never set errno
to EINTR on Windows.
2005-01-15 09:26:07 +00:00
Daniel Stenberg
cf51f7fb65 output better error detection, like when ipv6 can't resolve 2005-01-15 09:21:51 +00:00
Daniel Stenberg
4d1f3d3cd0 Added README.hostip 2005-01-14 13:43:29 +00:00
Daniel Stenberg
f70b87b4c5 verify the protocol too 2005-01-14 09:39:20 +00:00
Daniel Stenberg
0e26355348 Inspired by Martijn Koster's patch and example source at
http://www.greenhills.co.uk/mak/gentoo/curl-eintr-bug.c, I now made the
select() and poll() calls properly loop if they return -1 and errno is
EINTR. glibc docs for this is found here:
http://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html

This last link says BSD doesn't have this "effect". Will there be a problem
if we do this unconditionally?
S: ----------------------------------------------------------------------
2005-01-13 21:51:48 +00:00
Gisle Vanem
246ea56eab Added dependencies. 2005-01-12 15:32:41 +00:00
Gisle Vanem
7c1bba315b Added '-bd' option; target is a DLL.
Added dependencies.
2005-01-12 15:32:26 +00:00
Daniel Stenberg
9395cad379 support for retrieving used IP addresses 2005-01-11 22:26:00 +00:00
Daniel Stenberg
c5b2e85b47 Dan Torop cleaned up a few no longer used variables from David Phillips'
select() overhaul fix.
2005-01-11 20:22:44 +00:00
Gisle Vanem
38f8087281 Removed CURLTOOLDEBUG. It caused libcurl_wc.dll
to fail in mysterious ways.
2005-01-11 17:08:47 +00:00
Daniel Stenberg
e3fa7d021e Renamed easy.h and multi.h to easyif.h and multiif.h to make sure they don't
shadow our public headers with the former names.
2005-01-11 15:25:29 +00:00
Gisle Vanem
a1813e2b2d ".\lib\easy.h" shadows for <curl/easy.h> in Watcom.
Force including ../include/curl/easy.h.
2005-01-11 14:59:24 +00:00
Gisle Vanem
2e62458eef Fix '!if' expression. 2005-01-11 14:52:42 +00:00
Gisle Vanem
bb9e5565f2 ".\lib\multi.h" shadows for <curl/multi.h> in Watcom.
Force including ../include/curl/multi.h.
2005-01-11 14:32:09 +00:00
Daniel Stenberg
29102befa6 Cyrill Osterwalder posted a detailed analysis about a bug that occurs when
using a custom Host: header and curl fails to send a request on a re-used
persistent connection and thus creates a new connection and resends it. It
then sent two Host: headers. Cyrill's analysis was posted here:
http://curl.haxx.se/mail/archive-2005-01/0022.html
2005-01-11 14:00:45 +00:00
Daniel Stenberg
9d1145598a Bruce Mitchener identified (bug report #1099640) the never-ending SOCKS5
problem with the version byte and the check for bad versions. Bruce has lots
of clues on this, and based on his suggestion I've now removed the check of
that byte since it seems to be able to contain 1 or 5.
2005-01-10 23:32:14 +00:00
Daniel Stenberg
065e466f1a Use Curl_easy_addmulti() to clear associations from easy handles to multi
handles. Include multi.h to get proto.
2005-01-10 11:42:20 +00:00
Daniel Stenberg
3ac00f32af edited wording 2005-01-10 11:27:02 +00:00
Daniel Stenberg
21bb852750 Pavel Orehov reported memory problems with the multi interface in bug report
#1098843. In short, a shared DNS cache was setup for a multi handle and when
the shared cache was deleted before the individual easy handles, the latter
cleanups caused read/writes to already freed memory.
2005-01-10 10:07:07 +00:00
Daniel Stenberg
83bab78bda Hzhijun reported a memory leak in the SSL certificate code, that leaked the
remote certificate name when it didn't match the used host name.
2005-01-10 09:48:39 +00:00
Gisle Vanem
894ec46ef4 Note about the static lib requirement; -DCURL_STATICLIB. 2005-01-08 16:35:03 +00:00
Gisle Vanem
4eb1d3eb1b Watcom additions. 2005-01-08 16:15:06 +00:00
Gisle Vanem
945423e83a Added Watcom targets. 2005-01-08 16:12:27 +00:00
Gisle Vanem
9fd33c0b96 New file. 2005-01-08 16:06:37 +00:00
Gisle Vanem
3c09f2d2bd Added Makefile.Watcom to EXTRA_DIST. 2005-01-08 16:03:45 +00:00
Daniel Stenberg
7b4bf6a22c three recent bug fixes 2005-01-07 21:14:57 +00:00
Daniel Stenberg
b5b77f6367 disable the valgrind log checking 2005-01-07 21:11:24 +00:00
Daniel Stenberg
5a8097a4d5 fixed the valgrind log check and make it possible to disable it for a specific
test, see test 509
2005-01-07 21:11:13 +00:00
Daniel Stenberg
9cdf6fb64b added test 199 2005-01-07 21:09:50 +00:00
Daniel Stenberg
a137223b4f prevent a single byte read outside the string in test case 39 2005-01-06 22:54:37 +00:00
Daniel Stenberg
52e1ce9518 fixed #1097019, multiple GET posts (-G) error 2005-01-06 22:25:35 +00:00
Daniel Stenberg
8127a34f98 recent events 2005-01-05 14:12:06 +00:00
Gisle Vanem
2dcb8b674f Changed curl.dll to libcurl.dll. 2005-01-04 16:16:03 +00:00
Gisle Vanem
1e3b1b6e47 Minor comment fix. 2005-01-04 16:13:58 +00:00
Daniel Stenberg
9cdaae94cc just narrowed some text to fit within 80 cols 2005-01-04 16:01:34 +00:00
Gisle Vanem
316e74be74 Removed _WIN32_WINNT to support IPv6 under Win-2K. 2005-01-04 16:00:14 +00:00
Daniel Stenberg
af69c4f4f7 Marty Kuhrt's VMS update 2005-01-03 19:17:10 +00:00
Daniel Stenberg
ad9648a215 reverted the bad naming of the implib names 2005-01-02 21:15:29 +00:00
Daniel Stenberg
1576f3319e Alex Neblett's minor update 2005-01-02 19:19:32 +00:00
Daniel Stenberg
8ac90316d9 nah, don't use the system's getpass() function since it too often is limited
to 8(!) or similar lengths passwords
2004-12-26 09:17:38 +00:00
Daniel Stenberg
35ba5c826d issue 54 - this takes sweat 2004-12-25 23:15:45 +00:00
Daniel Stenberg
4f4ffa98b5 Test case 241 fails on all systems that support IPv6 but that don't have the
host name 'ip6-localhost' in /etc/hosts (or similar) since the test case uses
that host name to test the IPv6 name to address resolver.
2004-12-25 22:51:37 +00:00
Daniel Stenberg
b7d92c3e03 --protocols, license, src/config.h.in 2004-12-25 22:30:31 +00:00
Daniel Stenberg
4ecf939452 ./src/config.h.in is now removed from CVS. It is copied from the
lib/config.h.in file by buildconf
2004-12-25 22:10:38 +00:00
Daniel Stenberg
7ef6b05ef1 My reimplementation and cleanup of the getpass source code. We officially no
longer use Angus Mackay's getpass code due to the weirdo license his code was
donated to us under.
2004-12-25 22:08:02 +00:00
Daniel Stenberg
695f95aad1 mention the new --protocols 2004-12-24 09:02:23 +00:00
Daniel Stenberg
2a6ea6d7a7 David Shaw added --protocols, and thus the --feature no longer mentions what
protocols that are disabled.
2004-12-24 08:59:44 +00:00
Dan Fandrich
f5e0ff2170 Added LDAP library issue. 2004-12-23 22:34:00 +00:00
Daniel Stenberg
814d176b86 recent changes
and Merry Christmas!
2004-12-23 22:31:39 +00:00
Daniel Stenberg
3955b31362 David Shaw fixed the disable variables so that curl-config --feature works
correctly!
2004-12-23 08:48:59 +00:00
Daniel Stenberg
4b3fb5a01c issue 47 in next release? 2004-12-22 22:46:05 +00:00
Daniel Stenberg
67abd4cd47 Rune Kleveland fixed a minor memory leak for received cookies with the (rare)
version attribute set.
2004-12-22 22:33:31 +00:00
Daniel Stenberg
58f4af7973 Marcin Konicki provided two configure fixes and a source fix to make curl
build out-of-the-box on BeOS.
2004-12-22 22:28:10 +00:00
Dan Fandrich
99befd3a15 C ensures that static variables are initialized to 0 2004-12-22 20:12:15 +00:00
Daniel Stenberg
3acda85c2b added CURLINFO_HTTP_CONNECTCODE 2004-12-22 12:31:55 +00:00
Daniel Stenberg
dbb69797cf uh, fixed! 2004-12-22 09:21:04 +00:00
Daniel Stenberg
2910880b15 Added: 4 protocols we _could_ support and the CONNECT HTTP/1.0 detail we might
fix one day.
2004-12-22 09:19:29 +00:00
Daniel Stenberg
8b5f0abef1 more about error codes 2004-12-21 21:35:00 +00:00
Daniel Stenberg
10b5327b19 test enforced chunked encoding with PUT on a local file 2004-12-21 20:19:05 +00:00
Daniel Stenberg
4ba1eb26fa Added test case 217 that verified CURLINFO_HTTP_CONNECTCODE, and I made the
-w option support 'http_connect' to make it easier to verify!
2004-12-21 19:59:35 +00:00
Daniel Stenberg
444f6427b8 oops, variables first then code 2004-12-21 14:33:37 +00:00
Daniel Stenberg
a173e07eec Prevent failf() from using the va_list variable more than once.
See bug report #1088962 and  Single Unix Specification:
http://www.opengroup.org/onlinepubs/007908799/xsh/vfprintf.html
2004-12-21 14:22:10 +00:00
Daniel Stenberg
3de85777de mention how the FTP code should be fixed one day 2004-12-21 10:54:21 +00:00
Daniel Stenberg
f4c5314890 include sys/types.h before sys/select.h 2004-12-21 10:11:07 +00:00
Daniel Stenberg
1225ad58bd set debug curl too when -c is used 2004-12-21 10:10:40 +00:00
Daniel Stenberg
951fdeba67 How do I list the root dir of an FTP server? 2004-12-21 09:37:55 +00:00
Dan Fandrich
327b46cced Fixed a compile warning introduced by making the protocol table const. This
involves a binary-compatible change to the API struct curl_version_info_data
2004-12-20 21:14:45 +00:00
Dan Fandrich
80d301257c Make some more arrays of pointers const. 2004-12-20 18:23:43 +00:00
Dan Fandrich
0e59182945 gcc 2.7 can't handle a few warning options that gcc 2.95 can. 2004-12-20 18:20:17 +00:00
Daniel Stenberg
7270d5ce26 start working on 7.12.4 2004-12-20 13:09:38 +00:00
Daniel Stenberg
a142d419d2 and we start all over again 2004-12-20 12:51:14 +00:00
Daniel Stenberg
23cf63f550 7.12.3 2004-12-20 12:35:02 +00:00
Gisle Vanem
13ee90bbd4 OpenSSL updates; get CA_BUNDLE from env. Assume no
Kerberos, have <pkcs12.h>, <engine.h> and built-in engines.
2004-12-19 11:52:31 +00:00
Gisle Vanem
754d6c3abd Remove 'data' initialiser. 2004-12-19 11:39:34 +00:00
Daniel Stenberg
c6f6e81238 clarified a few changes 2004-12-19 10:11:03 +00:00
Daniel Stenberg
7803a1a28a fixed the solaris pkcs12 build problem 2004-12-19 09:37:58 +00:00
Daniel Stenberg
3d647b9a98 if the pkcs12.h header exists, include it already in urldata.h to work around
a precedence problem with the zlib header. See CHANGES for details.
2004-12-19 09:37:32 +00:00
Daniel Stenberg
090a7f38be check for openssl/pkcs12.h 2004-12-19 09:36:54 +00:00
Daniel Stenberg
8ad47a13e5 Samuel Listopad added support for PKCS12 formatted certificates. 2004-12-18 10:42:48 +00:00
Daniel Stenberg
497cc6bfaf Samuel Listopad fixed -E to support "C:/path" (with forward slash) as well. 2004-12-18 10:28:31 +00:00
Daniel Stenberg
d5be114c07 mention the new cookie api plans 2004-12-18 10:28:04 +00:00
Daniel Stenberg
6e43a4ccce Jean-Marc Ranger pointed out that the returned data doesn't survive a call
to curl_multi_remove_handle() either.
2004-12-18 10:24:49 +00:00
Dan Fandrich
a07dcfd850 Renamed a variable to avoid conflict with a C++ reserved word. 2004-12-17 20:18:53 +00:00
Gisle Vanem
321511a5be Watcom has strtoll(). 2004-12-17 19:57:50 +00:00
Gisle Vanem
c5297b9fd9 Watcom uses 'i64' suffix. 2004-12-17 18:33:09 +00:00
Gisle Vanem
7e00076586 <windows.h> required for Watcom. 2004-12-17 18:32:41 +00:00
Gisle Vanem
9a8ba19b73 s/_write/write/g 2004-12-17 18:31:40 +00:00
Gisle Vanem
41e776f9db Fix calling convention of wlap32.dll function. Watcom
uses fastcall by default, so force cdecl.
2004-12-17 17:54:21 +00:00
Gisle Vanem
5c2d4a6bdd Watcom has 'struct timeval'. 2004-12-17 17:49:10 +00:00
Gisle Vanem
83b709401c Add libidn.a and iconv libraries if USE_IDNA=1. 2004-12-17 12:43:02 +00:00
Gisle Vanem
3590fffeae Added option for using C-ares and libidn.
Dependencies generated from $(CSOURCES).
2004-12-17 12:38:06 +00:00
Gisle Vanem
5e2e87cc8d getdate.c is gone. 2004-12-17 12:28:04 +00:00
Gisle Vanem
b1bdba7db5 Print true netrc name (.netrc/_netrc). 2004-12-17 12:26:18 +00:00
Daniel Stenberg
e3d342df96 avoid an extra malloc 2004-12-17 10:09:32 +00:00
Daniel Stenberg
ff54a74b4d duplicate ! typo 2004-12-17 10:09:06 +00:00
Daniel Stenberg
ccf65be0a4 fixed minor memory leak when running out of memory 2004-12-17 09:00:19 +00:00
Daniel Stenberg
7dfef13224 oops, add missing return keyword 2004-12-17 08:58:48 +00:00
Daniel Stenberg
0b85e53af2 fix skip-reason 2004-12-16 22:45:06 +00:00
Daniel Stenberg
26cfb21c00 several windows large-file fixes 2004-12-16 22:22:26 +00:00
Daniel Stenberg
b7acdbcb4c two more ftp directory re-use tests added 2004-12-16 22:22:11 +00:00
Daniel Stenberg
6e1e9caa32 Based on Gisle Vanem's patch: make sure the directory re-use works even when
a URL-encoded path is used.
2004-12-16 22:20:33 +00:00
Gisle Vanem
f71725de6e Must include <io.h> and <sys/stat.h> before redefining
stat(), fstat() and lseek().
2004-12-16 21:27:29 +00:00
Dan Fandrich
26fe6da93b Renamed a struct member to avoid conflict with a C++ reserved word. 2004-12-16 21:27:23 +00:00
Daniel Stenberg
8d4ac69175 reduced the number of sub-blocks 2004-12-16 18:18:23 +00:00
Daniel Stenberg
4f5a6a33b4 moved the lseek() and stat() magic defines to setup.h and now take advantage
of struct_stat in formdata.c as well, to support formpost uploads of large
files on Windows too
2004-12-16 18:09:27 +00:00
Gisle Vanem
ec8ee4404b Support uploading and resuming of >2GB files.
Ref. lib/file.c.
2004-12-16 16:49:14 +00:00
Daniel Stenberg
e47b5d4e6c Provide better reasons for why test cases are skipped. Also, don't show the
SKIPPED stuff in the short output. Some platforms get quite a lot of SKIPPED
and they don't add much value and only clutter screen space.
2004-12-16 14:18:11 +00:00
Daniel Stenberg
494c40fd98 NULL the fp pointer after it has been fclosed() 2004-12-16 13:55:19 +00:00
Daniel Stenberg
d3b414724b Dinar in bug report #1086121, found a file handle leak when a multipart
formpost (including a file upload part) was aborted before the whole file was
sent.
2004-12-16 09:52:36 +00:00
Dan Fandrich
38181fbc74 Fix the --enable-debug compiler warning options for older versions of gcc. 2004-12-15 21:09:53 +00:00
Daniel Stenberg
8847e61fca yet another mirror! 2004-12-15 14:09:52 +00:00
Daniel Stenberg
95b84adb9b precaution to prevent double typedefs of the bool 2004-12-15 14:05:07 +00:00
Daniel Stenberg
b34d161703 moved the bool typedef to setup.h 2004-12-15 10:33:51 +00:00
Daniel Stenberg
d88b3d3d5d fixed how backslashes are treated in glob strings 2004-12-15 09:23:24 +00:00
Dan Fandrich
f2fb9039bd Make some arrays of pointers const, too. 2004-12-15 03:03:45 +00:00
Dan Fandrich
a28b32aa45 Make some arrays of pointers const, too. 2004-12-15 02:32:04 +00:00
Dan Fandrich
1ba47e7af9 Add 'const' to immutable arrays. 2004-12-15 01:38:25 +00:00
Daniel Stenberg
9359498b06 clarify that the app must free the engine list 2004-12-14 22:47:13 +00:00
Daniel Stenberg
553082e24a prevent compiler warning when built without engine support 2004-12-14 22:06:25 +00:00
Daniel Stenberg
dc28a9c0c1 make sure the ipv6 http server gets its pid stored in a separate file 2004-12-14 21:52:16 +00:00
Daniel Stenberg
1faef62d59 use the correct variables, not fixed values 2004-12-14 21:25:23 +00:00
Daniel Stenberg
0d0d5e7ee3 Harshal Pradhan fixed changing username/password on a persitent HTTP
connection.
2004-12-14 21:22:51 +00:00
Daniel Stenberg
4f567d0f81 mistake 2004-12-14 21:22:12 +00:00
Dan Fandrich
f23d923fd3 Only declare static variables if they're needed. Fixed some compile warnings. 2004-12-14 20:44:36 +00:00
Dan Fandrich
10d6d8b2ae Header files are in openssl/ only if USE_OPENSSL is set. 2004-12-14 20:25:23 +00:00
Dan Fandrich
358e08b95d Removed fputc() prototype since it's already in stdio.h 2004-12-14 20:17:58 +00:00
Gisle Vanem
e181eda253 Caller must free 'engines' list. 2004-12-14 14:24:04 +00:00
Gisle Vanem
7d3f5d7ac1 urldata.h: Removed engine_list.
ssluse.*: Added SSL_strerror(). Curl_SSL_engines_list() now returns a slist
which must be freed by caller.
2004-12-14 14:20:21 +00:00
Daniel Stenberg
37c7a695a2 Moved the CURLE_SSL_ENGINE_INITFAILED error code last in the list so that
the others remain at previous values.
2004-12-14 09:58:45 +00:00
Daniel Stenberg
07f107ae20 Moved the engine stuff from the root-level of the SessionHandle struct to the
UrlState sub-struct. Also made the engine_list exist for non-ssl builds to
make curl build.
2004-12-14 09:36:22 +00:00
Gisle Vanem
5c14b3be6d Document CURLINFO_SSL_ENGINES and "--engine". 2004-12-13 20:14:04 +00:00
Gisle Vanem
1dc15ec1bc Set 'data->state.os_errno = error' in some places.
Needed elsewhere too?
2004-12-13 17:52:55 +00:00
Gisle Vanem
6a9ed44088 Support for "--engine list" option.
Moved CURLOPT_SSLENGINE* options to after verbose mode is set.
Added a goto. Eek!
2004-12-13 16:47:36 +00:00
Gisle Vanem
bdb0620529 Added handling of CURLINFO_SSL_ENGINES;
Added Curl_SSL_engines_list(), cleanup SSL in url.c
(no HAVE_OPENSSL_x etc.).
2004-12-13 16:43:00 +00:00
Gisle Vanem
be9ea07e87 Handle new type CURLINFO_SLIST.
Handle new info list CURLINFO_SSL_ENGINES.
2004-12-13 16:37:27 +00:00
Gisle Vanem
4cf14e9f85 Added CURLcode CURLE_SSL_ENGINE_INITFAILED,
Added CURLINFO_SLIST type for returing a 'struct slist' in
curl_easy_getinfo().
Added CURLINFO_SSL_ENGINES.
2004-12-13 16:35:56 +00:00
Gisle Vanem
d02b2c4308 Fixed missing braces warning. 2004-12-13 11:31:01 +00:00
Daniel Stenberg
1687a9eb94 large file file:// resumes on windows 2004-12-13 10:58:37 +00:00
Daniel Stenberg
344c6a3725 Gisle's fix for resuming large file:// files on windows - slightly edited
by me.
2004-12-13 10:25:26 +00:00
Daniel Stenberg
f966dad306 Dan Fandrich did minor corrections to his SSL cleanup patch 2004-12-13 08:34:46 +00:00
Daniel Stenberg
887f41c062 Dan Fandrich added libcurl.pc.in to the dist 2004-12-13 08:34:17 +00:00
Daniel Stenberg
4b1350e467 when failing to verify a HTTP server, display what curl said on stderr to
help debugging. (when using ipv6 I fell over this server that didn't have
the ipv6 module loaded)
2004-12-12 23:31:45 +00:00
Gisle Vanem
22a0c57746 Missing 'in6addr_any' in MingW's lib. ld bug? 2004-12-12 20:14:25 +00:00
Daniel Stenberg
fec571f5b0 modified to use the current error code name, not the obsolete one 2004-12-11 22:18:11 +00:00
Daniel Stenberg
976285ccbc undef more obsolete defines if CURL_NO_OLDIES is defined 2004-12-11 22:17:47 +00:00
Daniel Stenberg
9b3b7ad22e HTTP IPv6 support added to the test suite 2004-12-11 21:41:00 +00:00
Daniel Stenberg
1b8ac7c6b5 provide an error string when resuming fails - and use the proper error code,
not the former one
2004-12-11 18:55:51 +00:00
Daniel Stenberg
bd2db87237 fixed error message 2004-12-11 18:55:23 +00:00
Daniel Stenberg
df3ca59116 Dan Fandrich:
Here's a stab at a consolidation of the SSL detection heuristics into
configure. Source files aren't changed by this patch, except for setup.h and
the various config*.h files.  Within the configure script, OPENSSL_ENABLED is
used to determine if SSL is being used or not, and outside configure,
USE_SSLEAY means the same thing; this could be even further unified some day.

Now, when SSL is not detected, configure skips the various checks that are
dependent on SSL, speeding up the configure process and avoiding complications
with cross compiles.  I also updated all the architecture- specific config
files I could see, but I couldn't test them.
2004-12-11 18:47:22 +00:00
Daniel Stenberg
3ca4509ae9 Dan F's initial pkg-config file (not installed yet) 2004-12-11 18:46:40 +00:00
Daniel Stenberg
d531926246 mention the maybe-missing initial zero in the vernum output 2004-12-11 18:38:47 +00:00
Daniel Stenberg
357fdb60b6 Dan Fandrich: added some missing files. "I can't try them so they might still
be broken, but at least they'll be less broken than they are now."
2004-12-10 21:58:11 +00:00
Daniel Stenberg
b6f855cb9b Dan Fandrich corrects spelling mistakes 2004-12-10 21:56:35 +00:00
Daniel Stenberg
b6646310e8 Dan Fandrich extended the cross compile section and corrected spelling errors 2004-12-10 21:55:05 +00:00
Daniel Stenberg
070da3c08f untabified 2004-12-10 21:46:00 +00:00
Daniel Stenberg
6b7f6369ec username and IPv6 numerical address URL parser fix 2004-12-10 21:42:55 +00:00
Daniel Stenberg
309e3ce4f9 David Byron's debug build fix 2004-12-10 19:16:51 +00:00
Daniel Stenberg
8a4eb8ed45 move the port number extraction to after the extraction of user name/password,
as suggested by Kai Sommerfeld
2004-12-10 15:11:11 +00:00
Daniel Stenberg
eee70dcf8e two new test cases for proxy-CONNECT with NTLM (one doing GET, one doing POST) 2004-12-10 14:48:03 +00:00
Daniel Stenberg
c0c885a1f3 don't try the rewind if no http struct is allocated yet 2004-12-10 14:45:35 +00:00
Daniel Stenberg
a7488672bf configure and curl-config fixes 2004-12-10 09:46:14 +00:00
Daniel Stenberg
c1312cab1f Added two chapters: Custom Request Elements and Debug. 2004-12-10 09:45:55 +00:00
Daniel Stenberg
8c833d375a ignore the getpart tool 2004-12-09 09:58:45 +00:00
Daniel Stenberg
18f14ae23d close the connection when a bad test number was requested 2004-12-09 09:58:25 +00:00
Daniel Stenberg
98adcdd466 Ton Voon provided a configure fix that should fix the notorious (mostly
reported on Solaris) problem where the size_t check fails due to the SSL libs
being found in a dir not searched through by the run-time linker.
patch-tracker entry #1081707.
2004-12-09 09:27:30 +00:00
Daniel Stenberg
a2bd47c567 Bryan Henderson pointed out in bug report #1081788 that the curl-config
--vernum output wasn't zero prefixed properly (as claimed in documentation).
This is fixed in maketgz now.
2004-12-09 08:06:59 +00:00
Daniel Stenberg
7b3c308eb0 update the version numbers in the libcurl.plist automaticly on release 2004-12-08 23:09:46 +00:00
Daniel Stenberg
1be1d3cfb8 Matt Veenstra updated to 7.12.3. Starting now, we'll update the version number
in this file automatically on releases using the maketgz script.
2004-12-08 23:09:23 +00:00
Daniel Stenberg
b970469df9 Matt Veenstra:
- removal of getdate.c
- Added hostares.c, hostasyn.c, hostip4.c, hostip6.c, hostsync.c,
hostthre.c, inet_ntop.c, nwlib.c, parsedate.c, sterror.c, strtoofft.c

I have tested the build on 10.3, and will build on 10.2.8 in the next days.
2004-12-08 23:02:55 +00:00
Daniel Stenberg
80a324386b Rene Bernhardt found and fixed a buffer overrun in the NTLM code, where
libcurl always and unconditionally overwrote a stack-based array with 3 zero
bytes. I edited the fix to make it less likely to occur again (and added
a comment explaining the reason to the buffer size).
2004-12-07 23:09:41 +00:00
Daniel Stenberg
163518778c minor updates 2004-12-07 23:08:28 +00:00
Daniel Stenberg
7fd1ce4dc3 NORECURSE clarification, minor formatting update 2004-12-07 10:43:21 +00:00
Daniel Stenberg
c78ee11c41 CURLFTPSSL_ALL should make sure that the transfer fails if the data connection
isn't set to encrypted properly
2004-12-07 10:00:20 +00:00
Daniel Stenberg
4435e3b269 Fixed so that the final error message is sent to the verbose info "stream"
even if no errorbuffer is set.
2004-12-06 23:04:30 +00:00
Daniel Stenberg
b96a0dba90 Gisle Vanem's fix for better info messages when failing to connect using
the multi interface
2004-12-06 22:45:45 +00:00
Gisle Vanem
30dfc00a54 'crypto_engine' not used. 2004-12-06 16:36:50 +00:00
Gisle Vanem
fe5979cfdb Replace MINGW32 with built-in __MINGW32__. 2004-12-06 14:43:04 +00:00
Daniel Stenberg
a1f7987ad8 HTTP PUT a to a FTP URL with username+password - over HTTP proxy 2004-12-06 12:54:50 +00:00
Daniel Stenberg
ac269a8f68 Dan Fandrich added the --disable-cookies option to configure to build
libcurl without cookie support. This is mainly useful if you want to build a
minimalistic libcurl with no cookies support at all. Like for embedded
systems or similar.
2004-12-05 23:59:32 +00:00
Daniel Stenberg
35944744f8 Richard Atterer fixed libcurl's way of dealing with the EPSV
response. Previously, libcurl would re-resolve the host name with the new
port number and attempt to connect to that, while it should use the IP from
the control channel. This bug made it hard to EPSV from an FTP server with
multiple IP addresses!
2004-12-05 23:33:33 +00:00
Daniel Stenberg
4b1c0bd1e7 CURLOPT_FTPSSLAUTH was added in 7.12.2 2004-12-03 11:25:06 +00:00
Daniel Stenberg
b7ff86fa2b credit where credit is due 2004-12-03 11:06:05 +00:00
Daniel Stenberg
2c27e4ee76 Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
at a chunk boundary it was not considered an error and thus went unnoticed.
Added test case 207 to verify.
2004-12-03 09:31:25 +00:00
Daniel Stenberg
6ac9e67bd7 made the intended one hour default timeout in the CONNECT loop actually work 2004-12-02 23:30:13 +00:00
Daniel Stenberg
8726a6b6ed comment cleanup 2004-12-02 22:52:14 +00:00
Daniel Stenberg
2f26069a41 test 206 - HTTP proxy CONNECT auth Digest 2004-12-02 17:11:19 +00:00
Daniel Stenberg
d6c155ff47 added comment about port number in CONNECT string being used as test number 2004-12-02 17:11:09 +00:00
Daniel Stenberg
15360e5e51 prevent an initial "(nil)" to get sent in the initial request when doing
CONNECT to a proxy with digest
2004-12-02 17:08:37 +00:00
Gisle Vanem
e587a56fc0 Use "HAVE_SYS_TYPES_H". 2004-12-01 13:41:22 +00:00
Daniel Stenberg
113531432a make the "check" actually open all those file desciptors as well to make sure
it works, as it has proved to not work in some cases (like on Tor Arntsen's
AIX 5100-06 xlc 5.0 --disable-shared runs).
2004-12-01 10:34:46 +00:00
Gisle Vanem
bfa74c2649 alarm() works unreliable on djgpp 2.03. Don't use it. 2004-11-30 14:59:24 +00:00
Daniel Stenberg
6bb215f56c recent changes 2004-11-30 10:21:25 +00:00
Daniel Stenberg
8b37844e5f fixed test case errors 2004-11-30 10:20:59 +00:00
Daniel Stenberg
1445e62312 three new compress test cases 2004-11-30 09:54:16 +00:00
Daniel Stenberg
4781ff88fd Fixed the array comparison function even more, made the temporary files used
for diff output get created in the log/ dir and no longer deletes them since
they help in understanding the problem, fixing the test case and fixing curl
problems.
2004-11-30 09:53:53 +00:00
Daniel Stenberg
c28e15c682 Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream 2004-11-30 09:44:54 +00:00
Daniel Stenberg
fe0585ec91 no longer use the MIME::Base64.pm package as it seems to not be standard
on lots of perl versions, provide our own base64 decoder
2004-11-30 09:27:11 +00:00
Daniel Stenberg
18c0b49f3d added test 221 to test a broken gzip content download 2004-11-29 22:37:52 +00:00
Daniel Stenberg
5d69c956ee added test 220 - simple gzip auto decompress 2004-11-29 22:15:42 +00:00
Daniel Stenberg
93aa22ea08 --disable-epsv when connecting to an IPv6 ftp server 2004-11-29 21:45:25 +00:00
Daniel Stenberg
b7c6bc20be removed comment 2004-11-29 21:44:40 +00:00
Daniel Stenberg
9bb4a95e08 include setup.h first 2004-11-29 21:44:23 +00:00
Daniel Stenberg
0966ddafaa As reported in Mandrake's bug tracker bug 12285
(http://qa.mandrakesoft.com/show_bug.cgi?id=12285), when connecting to an
IPv6 host with FTP, --disable-epsv (or --disable-eprt) effectively disables
the ability to transfer a file. Now, when connected to an FTP server with
IPv6, these FTP commands can't be disabled even if asked to with the
available libcurl options.
2004-11-29 21:25:07 +00:00
Daniel Stenberg
c073625fb9 zero terminate the buffer spitout() returns, as the sws.c code depends on
that!
2004-11-29 18:26:09 +00:00
Daniel Stenberg
85dd4bfb8d make it possible for a test case to depend on the feature 'libz' 2004-11-29 12:23:02 +00:00
Daniel Stenberg
5ae34aa8e1 killed trailing whitespace 2004-11-29 12:11:46 +00:00
Daniel Stenberg
0eb8414750 Enable test cases to provide sections base64-encoded to be able to test
with binary data.
2004-11-29 12:10:09 +00:00
Daniel Stenberg
09717d3fc8 utility to base encode data passed on stdin 2004-11-29 12:09:05 +00:00
Daniel Stenberg
81a3246a56 stricter newline policy 2004-11-29 12:01:07 +00:00
Daniel Stenberg
4c8fbe9abf spell 2004-11-29 08:47:33 +00:00
Daniel Stenberg
c0d448f778 if gmtime() returns NULL, this returns -1 to bail out nicely 2004-11-29 08:10:10 +00:00
Daniel Stenberg
16e9a9eaef removed one we won't do, removed the CWD optimize as it is (partly) done 2004-11-28 13:04:34 +00:00
Daniel Stenberg
0d7446c134 add more info to the stderr output 2004-11-28 08:57:03 +00:00
Daniel Stenberg
a4752673bb typecast the coversion from long to int 2004-11-27 09:27:48 +00:00
Daniel Stenberg
9a0d5c4ed8 progress meter newline 2004-11-26 21:35:14 +00:00
Gisle Vanem
d85bc18178 I changed my mind. Remove ioctl() macro in setup.h instead. 2004-11-26 16:08:15 +00:00
Gisle Vanem
f0e66d8c76 Added anyauthput.exe. 2004-11-26 15:04:15 +00:00
Gisle Vanem
af114358c8 Renamed urldata.h members 'ioctl*' to 'ioctrl*' due to
clash with djgpp ioctl() macro in setup.h.
2004-11-26 14:57:01 +00:00
Daniel Stenberg
ffe17a8197 As reported in Mandrake's bug tracker bug 12289
(http://qa.mandrakesoft.com/show_bug.cgi?id=12289), curl would print a newline
to "finish" the progress meter after each redirect and not only after a
completed transfer.
2004-11-26 14:33:13 +00:00
Daniel Stenberg
2459e1e268 removed no longer used variable 2004-11-26 08:52:18 +00:00
Daniel Stenberg
a34a4af36a last-second-before-commit changes corrected 2004-11-26 08:41:39 +00:00
Daniel Stenberg
bf51f05a50 FTP improvements:
If EPSV, EPRT or LPRT is tried and doesn't work, it will not be retried on
the same server again even if a following request is made using a persistent
connection.

If a second request is made to a server, requesting a file from the same
directory as the previous request operated on, libcurl will no longer make
that long series of CWD commands just to end up on the same spot. Note that
this is only for *exactly* the same dir. There is still room for improvements
to optimize the CWD-sending when the dirs are only slightly different.

Added test 210, 211 and 212 to verify these changes. Had to improve the
test script too and added a new primitive to the test file format.
2004-11-25 22:21:49 +00:00
Daniel Stenberg
5d94ff5974 made the code fit within 80 cols 2004-11-25 16:49:14 +00:00
Daniel Stenberg
0d4ddfa743 mingw _has_ a ftruncate() but it doesn't work with 64bit file sizes so we
can just safely pretend we don't have one
2004-11-24 22:11:18 +00:00
Gisle Vanem
56c9899832 Provide a 64-bit capable ftruncate(). MingW has one, but
it takes only 32-bit offsets.
2004-11-24 19:34:25 +00:00
Daniel Stenberg
7b3fba1ad5 added missing new error string 2004-11-24 18:25:33 +00:00
Daniel Stenberg
700e3b685a mingw has a ftruncate() function 2004-11-24 16:16:36 +00:00
Daniel Stenberg
3e1caa6185 HTTP "auth done right". See lib/README.httpauth 2004-11-24 16:11:35 +00:00
Daniel Stenberg
50eafb7668 decided to skip the MSVC makefile fixes, nobody seems to really want them
and they are rather excessive
2004-11-24 16:08:41 +00:00
Daniel Stenberg
25559ac02e Andrs Garca fixed the configure script to detect select properly when run
with Msys/Mingw on Windows.
2004-11-24 15:49:43 +00:00
Gisle Vanem
51a87fa652 Clarify the static vs. import lib issue on Win32. 2004-11-24 15:14:42 +00:00
Daniel Stenberg
b2dad0342f added a bunch of people who really deserve to be here 2004-11-23 22:15:49 +00:00
Daniel Stenberg
a5abce7982 oops, use the precheck too! 2004-11-23 10:05:10 +00:00
Daniel Stenberg
de3f22b288 cut out release with no issue to fix 2004-11-23 09:52:56 +00:00
Daniel Stenberg
be5cc378c8 introducing the client/precheck concept to allow test 518 to *only* run when
it actually can run and test the FD_SETSIZE stuff it is meant to test
2004-11-23 09:50:16 +00:00
Daniel Stenberg
4afc4aed73 yet another binding 2004-11-23 09:22:23 +00:00
Daniel Stenberg
a4e1ac7952 David Phillips fix for test 518 and my extension to make it not run on
systems that can't run it fine.
2004-11-22 22:26:46 +00:00
Daniel Stenberg
f84d2b4d36 trying a version with URLs for all function calls 2004-11-22 16:24:46 +00:00
Daniel Stenberg
b4c7876e4b issue 52 is fixed, I work on 51 2004-11-22 15:49:17 +00:00
Daniel Stenberg
4207ef3d27 removed trailing whitespace 2004-11-22 14:41:36 +00:00
Daniel Stenberg
b3572269a4 removed unused variable and trailing whitespace 2004-11-22 14:41:24 +00:00
Daniel Stenberg
097d449cc1 remove curl_ prefix from functions not present in libcurl 2004-11-22 14:07:23 +00:00
Daniel Stenberg
7f44713487 re-indented to curl style 2004-11-22 13:48:35 +00:00
Daniel Stenberg
b7a6b78e0c renamed curl_thread to my_thread to avoid confusion 2004-11-22 13:43:52 +00:00
Daniel Stenberg
855a9eff76 add URLs in comments for all libcurl function calls 2004-11-22 13:39:23 +00:00
Daniel Stenberg
8e34e75100 Curl_select's timeout arg is an int 2004-11-22 13:28:44 +00:00
Daniel Stenberg
4be60ac155 the FD_SETSIZE problem is fixed 2004-11-21 23:13:13 +00:00
Daniel Stenberg
5ec4501b9d The FD_SETSIZE issue is already sorted, at least internally. We still need
to provide a better multi-API to allow apps to avoid select().
2004-11-21 13:18:36 +00:00
Daniel Stenberg
e80f566a14 added comment for windows people about READFUNCTION being needed 2004-11-21 12:42:28 +00:00
Daniel Stenberg
1729918777 Dan Fandrich fix to compile with libc5 2004-11-20 08:57:56 +00:00
Gisle Vanem
cef290c6b4 Enable >2GB files for MingW. 2004-11-19 15:15:52 +00:00
Gisle Vanem
539e34b5df Suppress signed vs. unsigned warnings on Win32 2004-11-19 14:38:02 +00:00
Daniel Stenberg
765683403f Curl_select() now uses curl_socket_t on socket arguments 2004-11-19 14:03:19 +00:00
Gisle Vanem
cca9fca894 ifdef for portable "/dev/null". 2004-11-19 13:50:41 +00:00
Gisle Vanem
2b403db811 Winsock sockets are not in range 0..FD_SETSIZE.
Shouldn't Curl_select() use curl_socket_t ?
2004-11-19 13:46:58 +00:00
Daniel Stenberg
03e7b7c95f add select.obj 2004-11-19 13:45:46 +00:00
Daniel Stenberg
1a05a90f1c David Phillips' FD_SETSIZE fix 2004-11-19 08:52:33 +00:00
Daniel Stenberg
dcea109bb5 Dan Fandrich fix: eliminates some pedantic CodeWarrior compiler warnings and
errors.
2004-11-18 14:04:40 +00:00
Gisle Vanem
d46a573bbe Added revision tag. 2004-11-16 17:15:07 +00:00
Daniel Stenberg
7d0d19708a Added README.httpauth to the dist 2004-11-16 14:24:54 +00:00
Daniel Stenberg
09f14efade saved for the future 2004-11-16 14:02:24 +00:00
Daniel Stenberg
87753cda49 mention the openssl callbacks for SSL multithread 2004-11-16 08:49:51 +00:00
Daniel Stenberg
66f6f43056 added test case 517: 22 tests of the curl_getdate() function 2004-11-15 21:49:35 +00:00
Daniel Stenberg
86f059dcfb tiny format fix for nicer man output 2004-11-15 21:41:21 +00:00
Daniel Stenberg
5931d43a36 clean up start time and t_startsingle use so that redirect_time works properly 2004-11-15 11:27:03 +00:00
Daniel Stenberg
8475a0df2f new -w variables supported 2004-11-15 11:25:39 +00:00
Gisle Vanem
ccc4c9c02c Added top_srcdir. 2004-11-15 10:41:58 +00:00
Gisle Vanem
16edb15600 Added revision id, test for USE_ARES.
Uses Makefile.inc.
2004-11-15 10:38:34 +00:00
Daniel Stenberg
9e7534a46e binding for R 2004-11-15 08:54:29 +00:00
Gisle Vanem
737dddaec0 Changes for static/dynamic linking of libcurl.
No need to generate a dummy sys/utime.h. Cleanup.
2004-11-14 13:51:33 +00:00
Gisle Vanem
b5c90c9b05 Borland doesn't have <sys/utime.h>, utime() nor
_lseeki64().
2004-11-14 13:50:21 +00:00
Gisle Vanem
c3ecd552f5 Borland doesn't have <sys/utime.h> nor utime(). 2004-11-14 13:49:09 +00:00
Gisle Vanem
56f0227c92 Static lib is libcurl.lib and import lib libcurl_imp.lib.
Added implib command. Cleanup
2004-11-14 13:48:15 +00:00
Daniel Stenberg
dcb5a4df01 Dan fixed the CURL_DISABLE_VERBOSE_STRINGS stuff for older gcc versions since
they don't support C99 varargs macros.
2004-11-13 21:57:33 +00:00
Gisle Vanem
fd64213c2f MingW/djgpp: Use GNU make's internal 'cd' to avoid shell-troubles. 2004-11-13 16:57:56 +00:00
Gisle Vanem
fc2c06754c Fix location of timeval.c. 2004-11-13 16:55:53 +00:00
Gisle Vanem
7ec200f4d1 Update comment. 2004-11-13 16:54:26 +00:00
Gisle Vanem
e53f139925 Add "-DCURL_STATICLIB" for static build.
Add ../lib/timeval.c for objects.
2004-11-13 15:47:17 +00:00
Gisle Vanem
61599ceb7b Renamed import lib to "libcurl_imp.lib".
Some cleanup and making it more readable.
2004-11-13 14:17:41 +00:00
Gisle Vanem
6f8e3f106a Set OpenSSL path to same as in ../lib/Makefile.vc6.
Import lib is now "libcurl_imp.lib".
Some cleanup and making it more readable.
2004-11-13 14:17:24 +00:00
Gisle Vanem
8fd676f73e MSVC with static link must define CURL_STATICLIB.
zlib path set to same as in lib/Makefile.vc6.
2004-11-12 11:48:02 +00:00
Gisle Vanem
98a8103a3b Netware target (hosted on Linux gcc) doesn't support
or need __declspec.
2004-11-12 11:45:05 +00:00
Daniel Stenberg
94043b1150 Dan Fandrich added the --disable-crypto-auth option to configure to allow
libcurl to build without Digest support. (I figure it should also explicitly
disable Negotiate and NTLM.)
2004-11-12 09:18:14 +00:00
Daniel Stenberg
1b02ad5e8a format mistake fixed 2004-11-12 06:42:30 +00:00
Daniel Stenberg
4897587615 Dan Fandrich can spell, I cannot 2004-11-11 23:13:59 +00:00
Daniel Stenberg
8e2f57c82e Dan Fandrich: make --disable-dict actually disable dict 2004-11-11 23:13:06 +00:00
Daniel Stenberg
c3323b1902 clarify and update according to commit made just now 2004-11-11 23:11:32 +00:00
Daniel Stenberg
59c063dfd3 Fix behaviour when passing NULL to CURLOPT_POSTFIELDS and CURLOPT_HTTPPOST. 2004-11-11 23:11:04 +00:00
Daniel Stenberg
8c16696f47 fix a IDN detect/use mistake 2004-11-11 22:01:53 +00:00
Daniel Stenberg
f68950db67 added some details on what to come 2004-11-11 16:56:34 +00:00
Daniel Stenberg
710e370c34 Dan Fandrich added --disable-verbose 2004-11-11 16:34:24 +00:00
Daniel Stenberg
7bb6d76d14 When libidn is detected without explicitly told to, we provide -L/lib and
-I/include options. Not anymore.
2004-11-11 14:41:37 +00:00
Daniel Stenberg
2467f814a8 fix the -I path to the proper include dir when --enable-debug is used 2004-11-11 14:15:41 +00:00
Gisle Vanem
a654ef9ee6 Adapted for C++. 2004-11-11 12:25:40 +00:00
Daniel Stenberg
c1688733c1 recent fixes 2004-11-11 09:51:12 +00:00
Daniel Stenberg
cd73a733c7 dates from 2038 or later now return 0x7fffffff when 32 bit time_t is used 2004-11-11 09:26:09 +00:00
Daniel Stenberg
8ef8e949bd fix curl.h include 2004-11-11 08:03:43 +00:00
Daniel Stenberg
49111a63e6 configure --with-gssapi fix 2004-11-10 21:43:41 +00:00
Daniel Stenberg
ee4ecf5155 Gisle's CURL_EXTERN fix 2004-11-10 15:50:33 +00:00
Gisle Vanem
3478253e5a Replace IsNT with IS_NT(). 2004-11-10 14:30:25 +00:00
Gisle Vanem
6ddc59dadf Replace IsNT with IS_NT().
Return correct timeval in windows_port.c.
Squelch gcc warnings:
  use 'ares_socket_t' in ares_fds.c.
  Don't cast a 'lvalue' in ares_init.c.
2004-11-10 14:23:20 +00:00
Daniel Stenberg
dc8688b8dc fix CURL_EXTERN for debug builds 2004-11-09 18:10:51 +00:00
Gisle Vanem
865e495188 Handle drive-letter on MS-DOS. 2004-11-09 14:57:11 +00:00
Gisle Vanem
d3c0ed007e Removed libcurl.def 2004-11-09 14:55:23 +00:00
Daniel Stenberg
0dc79376e7 with all external functions marked with CURL_EXTERN it is easy to count them
and... yes, they are 46!
2004-11-09 14:42:04 +00:00
Gisle Vanem
3ccbed1022 Changes for removing libcurl.def file on Win32.
Mark public functions with "CURL_EXTERN".
2004-11-09 14:02:58 +00:00
Gisle Vanem
377e43fbb9 Changes for removing libcurl.def file on Win32.
Added "CURL_EXTERN" to memdebug.h functions.
Cleaned up Makefile.vc6.
2004-11-09 14:00:56 +00:00
Daniel Stenberg
1f2b042b95 today's work 2004-11-08 21:39:18 +00:00
Daniel Stenberg
fd49ba6c18 another lame change in an attempt to fix the moot gcc 3.4 warning 2004-11-08 21:31:57 +00:00
Daniel Stenberg
facfa19cdd weirdo hack to fix debian bug report 278691:
'curl -v writes debugging to its network socket if stderr is closed'
2004-11-08 19:41:28 +00:00
Daniel Stenberg
3347ced899 added a default in the switch in an attempt to avoid the moot "will never be
executed" warning by gcc 3.4.0
2004-11-08 14:46:05 +00:00
Gisle Vanem
592686bee9 Change OS name. Fix header guard. 2004-11-08 14:21:24 +00:00
Gisle Vanem
f471a293ea Un-do changes for WinCE; cdecl decoration is not needed.
Confirmed by Paul Nolan.
2004-11-08 14:20:14 +00:00
Daniel Stenberg
c688166066 check for and require tld.h to be present before libidn usage is activated
in the build, since libidn 0.3.X didn't have the header and we don't support
that old libidn versions anyway.

This was mentioned on the list by Jean-Philippe Barrette-LaPierre and in bug
report #1062264.
2004-11-08 07:47:08 +00:00
Daniel Stenberg
5dcd2710d4 two post-1.2.1 changes 2004-11-07 23:48:42 +00:00
Daniel Stenberg
16d8383625 added ares_cancel and ares_version 2004-11-07 13:37:07 +00:00
Daniel Stenberg
6b49fd7483 Tim Sneddon's VMS fix for huge HTTP POSTs 2004-11-05 14:43:35 +00:00
Daniel Stenberg
f10985fc50 removed errno, added EAGAIN 2004-11-05 08:22:46 +00:00
Daniel Stenberg
edeac97773 it has a sys/stat.h file, according to Paul Nolan 2004-11-05 08:19:34 +00:00
Daniel Stenberg
40498ffdd0 update 2004-11-04 16:18:50 +00:00
Daniel Stenberg
fd884a3cd2 more retry stuff 2004-11-04 16:17:23 +00:00
Daniel Stenberg
1887629c5c test server port numbers are now easily changed 2004-11-04 16:15:26 +00:00
Daniel Stenberg
d3be5b2725 delete trailing whitespace 2004-11-04 16:14:33 +00:00
Daniel Stenberg
2e973684c0 based Andres Garcia's patch, added for mingw build 2004-11-04 14:19:22 +00:00
Daniel Stenberg
ab909fc4c2 recent changes 2004-11-02 21:46:27 +00:00
Daniel Stenberg
4cd5220d27 use ifdef not if 2004-11-02 14:02:29 +00:00
Daniel Stenberg
24d47a6e07 Paul Nolan fix to make libcurl build nicely on Windows CE 2004-11-02 10:12:22 +00:00
Daniel Stenberg
8a66584db4 documented the current --retry options 2004-11-02 09:43:50 +00:00
Daniel Stenberg
186f433e40 modified to not use realloc() on a NULL pointer 2004-11-02 08:26:55 +00:00
Daniel Stenberg
736a40fec9 When cross-compiling, the configure script no longer attempts to use
pkg-config on the build host in order to detect OpenSSL compiler options.
2004-11-01 22:50:59 +00:00
Gisle Vanem
4245400ae4 Fixed _write() arguments. 2004-10-28 13:18:09 +00:00
Gisle Vanem
629bba6b35 *** empty log message *** 2004-10-28 13:13:29 +00:00
Daniel Stenberg
f6f2a9e4be use longs 2004-10-28 07:23:19 +00:00
Daniel Stenberg
8bfcae65ef Dan Fandrich's gzip handling fix 2004-10-27 21:46:11 +00:00
Daniel Stenberg
96cf615e9d Added --retry and --retry-delay first attempt with four related test cases. 2004-10-27 21:29:55 +00:00
Daniel Stenberg
e9b3e1d031 log client disconnects 2004-10-27 14:18:57 +00:00
Daniel Stenberg
7167cde020 Testing to define _REENTRANT unconditionally in here. 2004-10-26 13:31:55 +00:00
Daniel Stenberg
2a80a4c521 mention how LDFLAGS=-R can be used (or LD_LIBRARY_PATH or ld.so.conf) 2004-10-26 08:09:16 +00:00
Daniel Stenberg
83f11b1c9b mention incompatibilities with ares 2004-10-26 08:08:41 +00:00
Daniel Stenberg
a00e7f0f5e Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
file that was already completely downloaded caused an error, while it
doesn't if you don't use --fail! I added test case 194 to verify the fix.
Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in
libcurl v8 due to all the kludges needed to support it.
2004-10-25 11:28:40 +00:00
Daniel Stenberg
e1607f5705 just nicer output when this is seen 2004-10-25 11:28:15 +00:00
Daniel Stenberg
cce931f27d the array sizes _can_ differ and the arrays can still match, since chomp
is used at times but it doesn't decrease the array size
2004-10-25 11:28:01 +00:00
Daniel Stenberg
34089c93bb format update 2004-10-25 11:05:37 +00:00
Daniel Stenberg
beb61ef429 Mohun Biswas found out that formposting a zero-byte file didn't work very
good. I fixed.
2004-10-24 22:31:40 +00:00
Daniel Stenberg
72aff74798 ignore this 2004-10-24 13:02:46 +00:00
Daniel Stenberg
8e715af480 maketgz now creates a ares_version.h.dist file with the given version data
properly set, and the Makefile.am is now fixed to use that when building
a new package with make dist.
2004-10-24 13:02:09 +00:00
Daniel Stenberg
2730842559 Dan Fandrich's better ifdef for include fix 2004-10-21 08:22:07 +00:00
Daniel Stenberg
cac269cf91 1.2.1 release time 2004-10-20 08:01:38 +00:00
Daniel Stenberg
249036ada0 this change was reverted since it broke on solaris 2004-10-19 18:50:46 +00:00
Daniel Stenberg
18d80b9e8f iconv 2.1.3 is considered bad for test case 165 2004-10-19 18:49:31 +00:00
Daniel Stenberg
b2d8e0b476 revert the charset fix as it broke the solaris tests (native iconv doesn't
like that name)
2004-10-19 18:46:12 +00:00
Daniel Stenberg
225a652021 Ralph Mitchell fixed: input field with NAME= and VALUE= weren't processed
properly case insensitive
2004-10-19 18:36:17 +00:00
Daniel Stenberg
38b1d96750 Alexander Krasnostavsky made it possible to make FTP 3rd party transfers with
both source and destination being the same host. It can be useful if you want
to move a file on a server or similar.
2004-10-19 18:26:35 +00:00
Daniel Stenberg
2f069ad3e2 snart isn't really used these days so we cut out the reference to it 2004-10-19 15:34:05 +00:00
Daniel Stenberg
a3dbe03e80 added num_connects 2004-10-19 15:32:31 +00:00
Daniel Stenberg
f4bef25b5e CURLINFO_NUM_CONNECTS and more 2004-10-19 15:30:08 +00:00
Gisle Vanem
ebf7d22503 djgpp has locale.h and setlocale(). 2004-10-19 10:14:06 +00:00
Gisle Vanem
9296d9deb8 All Win compilers have locale.h + setlocale(). 2004-10-19 10:13:26 +00:00
Daniel Stenberg
7b95a25adc bug 1049275 fixes test 165 2004-10-19 06:04:25 +00:00
Daniel Stenberg
82d6cfa7fc Peter Wullinger pointed out that curl should call setlocale() properly to
initiate the specific language operations, to make the IDN stuff work better.
2004-10-18 13:37:18 +00:00
Daniel Stenberg
48750d5fc7 start over on 7.12.3 2004-10-18 08:42:44 +00:00
Daniel Stenberg
4f0258ec09 7.12.2 2004-10-18 07:48:28 +00:00
Daniel Stenberg
db4d0d307a new mirror 2004-10-17 07:48:00 +00:00
Daniel Stenberg
2baf22e184 today's changes 2004-10-16 14:07:31 +00:00
Daniel Stenberg
21d5aead47 Alexander Krasnostavsky made the CURLOPT_FTP_CREATE_MISSING_DIRS option work
fine even for third party transfers.
2004-10-16 14:06:54 +00:00
Daniel Stenberg
f40c9b83df libcurl leaked memory for cookies with the "max-age" field set. 2004-10-16 13:54:40 +00:00
Gisle Vanem
b9e082b811 Changes for issue 50 2004-10-16 13:20:33 +00:00
Gisle Vanem
0bfa601a9f Open "debugit" in binary mode ("rb"). 2004-10-16 13:17:15 +00:00
Gisle Vanem
e356420123 Added Traian Nicolescu's patches for threaded resolver on
Windows. Plugged some potential handle and memory leaks.

Refs.
  http://curl.haxx.se/mail/lib-2004-10/0134.html
  http://curl.haxx.se/mail/lib-2004-10/0157.html
2004-10-16 12:59:05 +00:00
Daniel Stenberg
e8f85cba0f Eric Vergnaud pointed out that libcurl didn't treat ?-letters in the user name
and password fields properly in URLs, like
ftp://us?er:pass?word@site.com/. Added test 191 to verify the fix.
2004-10-14 13:44:54 +00:00
Daniel Stenberg
1aba99b1e7 use quotes to make gdb usage on this easier 2004-10-14 13:44:16 +00:00
Daniel Stenberg
12815d7cd6 let's fix this too 2004-10-14 13:34:42 +00:00
Gisle Vanem
9deb76ce3e Set errno = ENOMEM on faild countcheck(). 2004-10-13 19:11:46 +00:00
Daniel Stenberg
c98676068e .NET binding 2004-10-13 08:46:36 +00:00
Daniel Stenberg
b534f74bf4 correction 2004-10-12 18:20:36 +00:00
Daniel Stenberg
411e9b0c45 #include "strerror.h" to get the strerror proto 2004-10-12 12:49:38 +00:00
Daniel Stenberg
3fa1879f6a recent fixes 2004-10-12 12:47:38 +00:00
Daniel Stenberg
d30cf22c12 one item fixed, one added for 7.12.2 and two more for 7.12.3 2004-10-12 12:47:31 +00:00
Daniel Stenberg
557b6cfd3f add proper error message when send() fails 2004-10-12 07:24:19 +00:00
Daniel Stenberg
84bf03b365 removed trailing whitespace 2004-10-11 17:26:24 +00:00
Daniel Stenberg
34342bcd19 SO_NOSIGPIPE 2004-10-11 17:23:41 +00:00
Daniel Stenberg
5322a86313 another lame attempt to avoid the "warning: will never be executed" warning
by gcc 3.4
2004-10-10 14:36:22 +00:00
Gisle Vanem
1dc50e21c4 MSVC uses 'i64' suffix for 64-bit sizes. 2004-10-10 14:08:05 +00:00
Daniel Stenberg
1eddbb1b47 attempt to make the configure output appear in the build log when it runs
on my solaris 2.7 box too (currently unknown perl version)
2004-10-10 07:51:25 +00:00
Daniel Stenberg
bb8591cf54 set the SIZEOF_LONG define to get the new lib/strtoofft.h fine 2004-10-10 07:45:41 +00:00
Daniel Stenberg
a7913a62a9 If long is 8 bytes we can use strtol() to get 64 bit numbers and won't need
our strtoll() replacement function.
2004-10-10 03:39:59 +00:00
Daniel Stenberg
6d1b37b3da Prevent a longjmp warning by moving the rc assign within Curl_resolv().
Andy Cedilnik reported. Warning on HP-UX?
2004-10-10 03:32:01 +00:00
Daniel Stenberg
34750cc738 Use LL suffix for long long constants if the compiler supports it, to prevent
warnings.
2004-10-10 03:28:51 +00:00
Daniel Stenberg
af677c4e1d If long long is supported, check if [num]LL is supported for numerical
constants.
2004-10-10 03:22:45 +00:00
Daniel Stenberg
298076e00f --enable-ares on AIX has problem 2004-10-08 12:59:36 +00:00
Daniel Stenberg
0d2cdd9773 Use 'struct lifreq' and SIOCGLIFADDR 2004-10-08 09:57:33 +00:00
Daniel Stenberg
eb5d3b5a7c killed trailing whitespace 2004-10-08 09:39:37 +00:00
Daniel Stenberg
7663775971 if basename was found, check for a prototype and if none was found, provide
our own in the formdata.c file to prevent warnings on systems without it
2004-10-08 08:18:08 +00:00
Daniel Stenberg
fe46572f2b prevent warning with comparison between signed and unsigned 2004-10-08 08:16:02 +00:00
Daniel Stenberg
a6d4d3eeac use curlx_strnequal() from the private lib sources instead of strncasecmp()
for maximum portability
2004-10-07 22:57:24 +00:00
Daniel Stenberg
62f97f1817 use curl_strnequal(), not strncasecmp() 2004-10-07 22:56:24 +00:00
Daniel Stenberg
253ff7b2ad Gisle's new fix, the old file:// leak 2004-10-07 12:17:53 +00:00
Daniel Stenberg
c274e51654 use tld_strerror() only if previously detected, since otherwise we can't
work with libidn < 0.5.6
2004-10-07 07:41:44 +00:00
Daniel Stenberg
1239e48304 check for tld_strerror 2004-10-07 07:41:14 +00:00
Gisle Vanem
52313cbac9 Added tld_check_name(). 2004-10-06 19:00:37 +00:00
Gisle Vanem
071218a201 Fixed tld_check_name(). idna_to_unicode_lzlz() should never fail,
but return FALSE if 'uc_name == NULL' just in case.
2004-10-06 18:55:58 +00:00
Gisle Vanem
f0d6cc23ae USE_LIBIDN: Added Top-level-domain (TLD) check for host->name.
Only print a warning if check fails.
2004-10-06 18:40:10 +00:00
Daniel Stenberg
ceefe2e248 test resume and redirect 2004-10-06 14:58:07 +00:00
Daniel Stenberg
9a2aed7d7a Chih-Chung Chang reported that if you use CURLOPT_RESUME_FROM and enabled
CURLOPT_FOLLOWLOCATION, libcurl reported error if a redirect happened even if
the new URL would provide the resumed file. Test case 188 added to verify the
fix (together with existing test 99).
2004-10-06 13:37:12 +00:00
Gisle Vanem
a91a75355d *** empty log message *** 2004-10-06 13:24:08 +00:00
Daniel Stenberg
01acbfa1a5 updates of today 2004-10-06 09:04:20 +00:00
Daniel Stenberg
49b2896a3b avoid warnings on systems with this member set const 2004-10-06 07:52:20 +00:00
Daniel Stenberg
39af394a1c removed tabs and trailing whitespace from source 2004-10-06 07:50:18 +00:00
Daniel Stenberg
5c7dcc6c33 Dan Fandrich fix for hosts that need both -lnsl and -lsocket 2004-10-06 07:33:03 +00:00
Daniel Stenberg
6c5ea2af27 untabify 2004-10-06 06:58:42 +00:00
Gisle Vanem
93e084e097 djgpp has basename() 2004-10-05 13:48:50 +00:00
Daniel Stenberg
1a61bcecfc minor edit to re-use a variable and to hopefully avoid a (moot) warning
about code that won't be reached
2004-10-05 11:03:59 +00:00
Daniel Stenberg
3d9fb701e2 recent fixes 2004-10-05 10:52:51 +00:00
Daniel Stenberg
19a568a983 make the given path to --with-libidn override any other installation 2004-10-05 08:45:13 +00:00
Daniel Stenberg
70c3f6a8dd avoid warning for unused variable 2004-10-05 08:42:56 +00:00
Daniel Stenberg
bb999d8213 use idna_strerror() if it is available (only in libidn 0.5.6 or later) 2004-10-05 08:40:26 +00:00
Daniel Stenberg
121197bc87 Only include libgen.h if we have a basename as well.
Mainly meant to deal with the IRIX case which seems to requrie a "-lgen" lib
to find the basename function and thus without the gen lib, it finds the
header but not the function and our replacement function has a prototype
that doesn't match the IRIX one.

A different approach would be to make configure detect and use -lgen for the
systems that require it.
2004-10-05 06:55:09 +00:00
Daniel Stenberg
d5dd8e0fdc let our basename() be static 2004-10-05 06:49:09 +00:00
Daniel Stenberg
c368800877 name mix fix 2004-10-04 12:54:58 +00:00
Daniel Stenberg
6eb58549a9 closing in on release 2004-10-04 10:37:30 +00:00
Daniel Stenberg
95def48071 Made the dns entry remain locked while a connection to the host remains to
allow verbose output during this period. Bertrand Demiddelaer reported and
helped fixing.
2004-10-04 10:36:51 +00:00
Daniel Stenberg
2ee6c33412 set async.done to TRUE last in the addrinfo callback to prevent the risk that
the multi-threaded resolver does wrong
2004-10-03 21:32:24 +00:00
Daniel Stenberg
be7ce435c0 Replaced the use of isspace() with our own version instead since we have most
data as 'char *' and that makes us pass in negative values if there is 8bit
data in the string. Changing to unsigned causes too much warnings or too many
required typecasts to the normal string functions.
2004-10-03 21:02:01 +00:00
Daniel Stenberg
f4252f8672 when building with libidn support, check for idna_strerror() which is
included in very recent versions
2004-10-03 20:50:47 +00:00
Daniel Stenberg
f4f961c4ea added info about how users get info (like the CURLcode return code) from
individual transfers
2004-10-03 17:38:57 +00:00
Daniel Stenberg
e2fe03df8e removed trailing whitespace 2004-10-03 08:15:40 +00:00
Daniel Stenberg
19b284c214 Gisle Vanem provided code that displays an error message when the (libidn
based) IDN conversion fails. This is really due to a missing suitable
function in the libidn API that I hope we can remove once libidn gets a
function like this.
2004-10-02 13:01:44 +00:00
Daniel Stenberg
6b3e3095ea removed weird preprocessor juggling not needed 2004-10-02 12:58:27 +00:00
Daniel Stenberg
fd2aad1d9b someone should hit me 2004-10-01 11:27:14 +00:00
Daniel Stenberg
d239fc5d04 Aleksandar Milivojevic reported a problem in the Redhat bugzilla (see
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=134133) and not to anyone
involved in the curl project! This happens when you try to curl a file from a
proftpd site using SSL. It seems proftpd sends a somewhat unorthodox PASS
response code (232 instead of 230). I relaxed the response code check to deal
with this and similar cases.
2004-10-01 11:22:11 +00:00
Daniel Stenberg
ec4da97a35 fixed the basename() replacement, reported by Gisle 2004-10-01 11:20:38 +00:00
Daniel Stenberg
bb48ccedd7 mention when this option was added 2004-10-01 06:43:48 +00:00
Daniel Stenberg
afc0dfb141 reflect the last few changes 2004-10-01 06:43:37 +00:00
Daniel Stenberg
8e87223195 - Based on Fedor Karpelevitch's formpost path basename patch, file parts in
formposts no longer include the path part. If you _really_ want them, you
  must provide your preferred full file name with CURLFORM_FILENAME.

  Added detection for libgen.h and basename() to configure. My custom
  basename() replacement function for systems without it, might be a bit too
  naive...

  Updated 6 test cases to make them work with the stripped paths.
2004-10-01 06:36:11 +00:00
Daniel Stenberg
be1cece69b - Larry Campbell added CURLINFO_OS_ERRNO to curl_easy_getinfo() that allows an
app to retrieve the errno variable after a (connect) failure. It will make
  sense to provide this for more failures in a more generic way, but let's
  start like this.
2004-09-30 21:01:23 +00:00
Daniel Stenberg
45be6d6645 killed trailing whitespace 2004-09-30 20:50:34 +00:00
Daniel Stenberg
d4db35c125 Gnter Knauf and Casey O'Donnell worked out an extra #if condition for the
curl/multi.h header to work better in winsock-using apps.
2004-09-30 19:50:36 +00:00
Daniel Stenberg
94c6a5eeab Jean-Philippe Barrette-LaPierre made buildconf run better on Mac OS X by
properly using glibtoolize instead of plain libtoolize. (This is made if
glibtool was found and used instead of plain libtool.)
2004-09-30 19:46:32 +00:00
Daniel Stenberg
35292e794a --max-redirs is _not_ -Z 2004-09-30 14:38:29 +00:00
Daniel Stenberg
c2043a7f94 48 - Harshal Pradhan's isspace() fix for 8bit cookie content 2004-09-30 12:20:04 +00:00
Daniel Stenberg
e752588e8d issue 47 - Peter Sylvester's patch related to the new SRP on the TLS layer 2004-09-30 11:41:25 +00:00
Daniel Stenberg
8f30dbd4f0 fix the multi.h too 2004-09-30 11:38:46 +00:00
Daniel Stenberg
29eb80dbd1 added issue 45 "Chris' suspected race condition in the windows threaded
resolver"
2004-09-30 08:01:47 +00:00
Daniel Stenberg
6cf6f9a21e added five things I want fixed before the next release 2004-09-30 07:59:17 +00:00
Daniel Stenberg
6af6a2bbe8 Fixed an error message: we use CWD, we don't cd into dirs with FTP 2004-09-29 07:21:23 +00:00
Daniel Stenberg
2576ac1c76 Bertrand Demiddelaer fixed curl_easy_reset() so that it doesn't mistakingly
enable the progress meter.
2004-09-28 22:26:47 +00:00
Daniel Stenberg
bfeea8e6b7 - Henrik Stoerner fix: got a report that Tru64 Unix (the unix from Digital
when they made Alpha's) uses /etc/svc.conf for the purpose fixed below for
  other OSes. He made c-ares check for and understand it if present.

- Now c-ares will use local host name lookup _before_ DNS resolving by default
  if nothing else is told.
2004-09-28 22:19:39 +00:00
Daniel Stenberg
2f89f2311c recent stuff 2004-09-28 22:04:17 +00:00
Daniel Stenberg
75e5967afd made pkg-config not get used if a path is given with --with-ssl 2004-09-28 22:04:05 +00:00
Daniel Stenberg
1003628103 Only active the engine code if ssl is enabled. This is how the actual engine
member in the struct is used.
2004-09-28 07:11:32 +00:00
Daniel Stenberg
3451e888b9 - Henrik Stoerner: found out that C-ARES does not look at the /etc/host.conf
file to determine the sequence in which to search /etc/hosts and DNS.  So on
  systems where this order is defined by /etc/host.conf instead of a "lookup"
  entry in /etc/resolv.conf, C-ARES will always default to looking in DNS
  first, and /etc/hosts second.

  c-ares now looks at

  1) resolv.conf (for the "lookup" line);
  2) nsswitch.fon (for the "hosts:" line);
  3) host.conf (for the "order" line).

  First match wins.
2004-09-26 22:35:18 +00:00
Daniel Stenberg
12dc142a28 Dominick Meglio host file path discovery patch for windows 2004-09-26 18:20:58 +00:00
Daniel Stenberg
cb80670885 Ben Greear's minor fix to build (better) with cross-compiled(?) mingw 2004-09-26 06:53:53 +00:00
Daniel Stenberg
c189687188 allow setting CURLOPT_SSLENGINE to NULL even if no SSL engine is supported 2004-09-25 21:28:26 +00:00
Daniel Stenberg
595016d393 Dan Fandrich patched three tests 2004-09-22 18:23:14 +00:00
Daniel Stenberg
23550fe5de Dan Fandrich's fix to use 127.0.0.1 instead of localhost to not depend on
it resolving nicely
2004-09-22 18:21:45 +00:00
Daniel Stenberg
8420de971f Jean-Claude Chauve is a friend! 2004-09-22 12:54:41 +00:00
Daniel Stenberg
17f8f32b2e typo 2004-09-22 12:53:58 +00:00
Daniel Stenberg
7676f40218 jean-claude Chauve fixed an LDAP bug 2004-09-22 08:01:41 +00:00
Daniel Stenberg
2de62cb06f less long => int implicit conversion warnings 2004-09-20 13:21:48 +00:00
Gunter Knauf
be1df3ca0a removed getdate.c hack. 2004-09-19 23:30:34 +00:00
Daniel Stenberg
543ab6f331 added URL to the exception paragraph in the GPL FAQ 2004-09-19 22:37:26 +00:00
Daniel Stenberg
2b6f7ef2a9 the error message fix for failed connects 2004-09-19 14:30:16 +00:00
Daniel Stenberg
0d37f8564e kill trailing whitespace and clarify a few errors 2004-09-19 14:28:16 +00:00
Daniel Stenberg
6cd2536048 set an error message when connection fails 2004-09-19 14:27:56 +00:00
Daniel Stenberg
60fccf4e37 Location:-follow problem 2004-09-17 07:55:14 +00:00
Daniel Stenberg
8a8028394f one more option, one more friend 2004-09-16 22:10:15 +00:00
Daniel Stenberg
6a06667cc0 Added CURLOPT_FTPSSLAUTH 2004-09-16 21:45:16 +00:00
Daniel Stenberg
25bf23105d Location: problem with bad original URL, identified in bug report #1029478 2004-09-16 21:28:38 +00:00
Daniel Stenberg
2544c78083 Bertrand Demiddelaer's correction 2004-09-16 14:26:04 +00:00
Daniel Stenberg
40b9b6f6dc ftp-ssl mistake corrected 2004-09-16 08:45:11 +00:00
Daniel Stenberg
f5e1beddf1 no more getdate.c to care about 2004-09-15 08:07:20 +00:00
Daniel Stenberg
d4076c9a8a fixed to use the new file. Can we make this use Makefile.inc somehow? 2004-09-15 08:05:53 +00:00
Daniel Stenberg
106695d45e the new date parser affects -z 2004-09-15 07:31:48 +00:00
Daniel Stenberg
f71b3f48a1 Replaced the former date parser with a rewrite. No more yacc/bison needed. 2004-09-15 07:28:04 +00:00
Daniel Stenberg
aa8dd932c1 ignore more 2004-09-14 21:31:06 +00:00
Daniel Stenberg
adbe3eefb6 and moved back the month array to a static one since the ftp code won't need
it anymore
2004-09-13 20:49:27 +00:00
Daniel Stenberg
33f69c0546 removed this file again, we only provide a single public function and that
is already in the public header file
2004-09-13 20:48:24 +00:00
Daniel Stenberg
6c3a87a599 no longer includes getdate.h, there's no need for it 2004-09-13 20:47:31 +00:00
Daniel Stenberg
13cc010e38 getdate.h is not required to include, it adds nothing new 2004-09-13 20:47:15 +00:00
Daniel Stenberg
e99bf99829 revert the change for the new date parser, as the new one can deal with
the old format now
2004-09-13 20:43:12 +00:00
Daniel Stenberg
2e7dcc1e2a support for YYYYMMDD added, which allows us to keep using the lib/ftp.c code
I was previously #ifdef'ing to a different look when this parser is used
2004-09-13 20:40:27 +00:00
Daniel Stenberg
b85a036e4a added more examples/docs in the top comment 2004-09-13 07:57:12 +00:00
Daniel Stenberg
7885264b29 Since many users probably already use local time strings as input, I now
made it deal with named time zones as well as mail-style +0200 ones.

Seems to work fine. I'm comparing with GNU date command:

date -d [date] -u +%s
2004-09-13 07:45:19 +00:00
Daniel Stenberg
73dd450147 describes how you can extract the CA cert from a site using the openssl tool 2004-09-12 18:27:12 +00:00
Daniel Stenberg
96efa990f9 Added parsedate.[ch] 2004-09-11 20:06:33 +00:00
Daniel Stenberg
4e0aee9408 mention more friends 2004-09-11 20:06:14 +00:00
Daniel Stenberg
27d509cfe9 Minor adjustment needed for the new date parser to succeed. ifdef'ed out
for now.
2004-09-11 19:19:59 +00:00
Daniel Stenberg
ade8e47a8c more docs and fixed the delta compared to GMT that prevented test case 141 to
work with this
2004-09-11 19:16:34 +00:00
Daniel Stenberg
ca52c963c7 1. cookie expire-strings MUST use GMT timezones
2. adjusted date strings to upcoming date parser rewrite
2004-09-11 19:12:37 +00:00
Daniel Stenberg
17acdb5acf slightly better but still lacks 2004-09-11 13:07:42 +00:00
Daniel Stenberg
f6433211ae getdate replacement code. smaller, slicker, faster. 2004-09-11 09:24:02 +00:00
Daniel Stenberg
0ec4c66fba fixed -F to support setting type= even on parts that aren't file-uploads 2004-09-10 21:47:52 +00:00
Daniel Stenberg
1faa9d6fd5 minor indent change 2004-09-10 21:46:58 +00:00
Daniel Stenberg
23d64e720d up to date with recent changes 2004-09-10 21:13:55 +00:00
Daniel Stenberg
b8b56248bd - Bug report #1025986. When following a Location: with a custom Host: header
replacement, curl only replaced the Host: header on the initial request
  and didn't replace it on the following ones. This resulted in requests with
  two Host: headers.

  Now, curl checks if the location is on the same host as the initial request
  and then continues to replace the Host: header. And when it moves to another
  host, it doesn't replace the Host: header but it also doesn't make the
  second Host: header get used in the request.

  This change is verified by the two new test cases 184 and 185.
2004-09-10 20:58:51 +00:00
Daniel Stenberg
33929117f9 curl --sync 2004-09-09 06:58:01 +00:00
Daniel Stenberg
2b1673c9c8 Now the test servers and test cases can run on a custom port number. There's
no fixed port numbers in use anymore. Starting now, the default ports the
servers use are 8990 - 8993. There's no option to modify these yet, but
changing the $base option in the top of the runtests.pl script.
2004-09-08 08:08:38 +00:00
Gunter Knauf
702f549a6a fixed nasty warnings with gcc 3.3. 2004-09-03 18:51:36 +00:00
Daniel Stenberg
428741d7cf clarify CURLE_SSL_CERTPROBLEM somewhat 2004-09-02 21:05:56 +00:00
Daniel Stenberg
6fa624cf8c improved error message when client cert return failure 2004-09-02 21:03:41 +00:00
Daniel Stenberg
5f60188b8a use the correct struct name in the example 2004-09-02 20:42:44 +00:00
Daniel Stenberg
75a6fdeb58 added more info on the nobody 2004-09-01 12:05:59 +00:00
Daniel Stenberg
5f3fa92062 minor edit of HTTPGET 2004-09-01 09:25:19 +00:00
Daniel Stenberg
66077ae48b fix formatting flaw 2004-09-01 09:24:01 +00:00
Daniel Stenberg
92637303db fix the return code for curl_multi_add_handle() 2004-08-31 06:04:43 +00:00
Daniel Stenberg
811dfd710b mention when the function was added to the lib 2004-08-31 06:03:16 +00:00
Daniel Stenberg
b08dc2cadb proxy connection close and so 2004-08-30 15:02:37 +00:00
Daniel Stenberg
f7c5a097e3 proxy-connection close 2004-08-30 15:02:18 +00:00
Daniel Stenberg
5eb3102cd1 removed issue 36 from this list, we don't know how to do it and no one has
stepped forward to help us. Let's postpone that fix.
2004-08-30 14:22:47 +00:00
Daniel Stenberg
05825a8a9f Make "Proxy-Connection: close" close the current proxy connection, as
Roman Koifman found out.
2004-08-30 12:51:32 +00:00
Daniel Stenberg
24353c4372 getdate fix, adacurl release 2004-08-30 09:16:43 +00:00
Daniel Stenberg
e89ea07626 mention Gisle's recent fixes 2004-08-30 09:16:31 +00:00
Gisle Vanem
b99c95ba46 Removed ares_free_errmem.c from MSCV project files.
Fixed line-endings to CR-LF.
2004-08-29 15:40:17 +00:00
Daniel Stenberg
9432bfe90c updated with minor edits 2004-08-27 07:17:52 +00:00
Daniel Stenberg
37bf6da9c8 don't do SO_KEEPALIVE, we already have a finer grained method built-in 2004-08-27 07:04:31 +00:00
Daniel Stenberg
b3ebbd60a2 added some more details 2004-08-26 13:26:27 +00:00
Daniel Stenberg
e942394bdb getdate and new test cases from yday 2004-08-25 11:21:15 +00:00
Daniel Stenberg
4adfcd4fd7 not accurate anymore anyway 2004-08-25 11:18:33 +00:00
Daniel Stenberg
c10196afc0 Frankie V's description on how to get a CA cert for a random site using
IE
2004-08-25 08:09:48 +00:00
Daniel Stenberg
49746d1dce returned memory should not be freed 2004-08-24 20:36:38 +00:00
Daniel Stenberg
d46e235c2a added test 183 to verify that we properly send good Host: headers when
getting multiple URLs over a single proxy connection
2004-08-24 14:40:32 +00:00
Daniel Stenberg
ee44677d7e Attempt to quick-fix the getdate problem by post-replacing the getdate.c
file after the bison/yacc process to add the fix Harshal Pradhan suggested.
2004-08-24 11:48:02 +00:00
Daniel Stenberg
20057aee2e prevent files named ".nfs[something]" from being displayed when failing 2004-08-24 09:23:40 +00:00
Daniel Stenberg
7119679080 updated in CVS, generated with a much newer bison version 2004-08-23 15:28:53 +00:00
Daniel Stenberg
d869b51a57 Expect: 100-continue info added 2004-08-23 14:46:43 +00:00
Daniel Stenberg
dbacc81af7 added note about WRITEFUNCTION now being called with zero bytes if the file
to be transfered is empty
2004-08-23 14:41:54 +00:00
Daniel Stenberg
b233c13dca verify that transferring a zero byte FTP file results in a zero byte local
file
2004-08-23 14:41:19 +00:00
Daniel Stenberg
464be27479 Provide support for "transferring" zero bytes FTP files and comparing that
the output file actually is zero bytes after the transfer.
2004-08-23 14:40:43 +00:00
Daniel Stenberg
d736ac51c0 stripped trailing whitespace 2004-08-23 14:22:52 +00:00
Daniel Stenberg
e8b295ff7d lost of more into on how to tweak some headers 2004-08-23 14:22:44 +00:00
Daniel Stenberg
4a4490d5f1 debug.c is a fresh new example showing how to use the DEBUGFUNCTION to get
lots of fine info from a transfer
2004-08-23 14:22:26 +00:00
Daniel Stenberg
46313be2f5 added more header info for PUT and POST requests 2004-08-23 14:04:38 +00:00
Daniel Stenberg
723bfe42e7 Roman Koifman pointed out that libcurl send Expect: 100-continue on POSTs and
PUTs even when told to use HTTP 1.0, which is not correct.
2004-08-23 12:34:55 +00:00
Gisle Vanem
e35c7dcd72 More patches for Watt-32 on Win32; don't include "nameser.h". 2004-08-20 14:10:44 +00:00
Gisle Vanem
fa83a0573e No WSAGetLastError() on Watt-32/DOS 2004-08-20 14:07:11 +00:00
Gisle Vanem
7b97371ab1 No <sys/uio.h> on DOS/Win32 2004-08-20 13:48:24 +00:00
Gisle Vanem
b17e32baa7 Changes for Watt-32 on Windows. I've assumed Configure
sets the required HAVE_xx defines for non-DOS/Win targets.
2004-08-20 13:45:26 +00:00
Daniel Stenberg
cd52b9f0da Alexander Krasnostavsky made the write callback get called even when a zero
byte file is downloaded.
2004-08-20 12:09:09 +00:00
Daniel Stenberg
c3d74ffe48 socks proxy and timeouts bug 2004-08-20 10:52:35 +00:00
Daniel Stenberg
a231a96841 actually, we check for a numerical host using either ipv4 or ipv6, as neither
should result in a reverse dns lookup
2004-08-20 09:18:12 +00:00
Daniel Stenberg
93b61bf0d3 use inet_pton() correctly! 2004-08-20 09:11:52 +00:00
Gisle Vanem
06d39bd303 ZLIB_ROOT not needed 2004-08-19 15:24:49 +00:00
Gisle Vanem
52177b1f60 My first CVS commit just to see if this works.
BTW. Used eclipse IDE fo this, which really kicks ass.
2004-08-19 15:16:40 +00:00
Daniel Stenberg
566f7b5e58 simplified expression 2004-08-19 09:37:22 +00:00
Daniel Stenberg
c8c47768c7 Ling Thio pointed out that getaddrinfo() reverse-lookups ip-only names, and
this is an attempt to prevent it from doing that. affects ipv6-enabled only.
2004-08-19 06:44:19 +00:00
Daniel Stenberg
62ff567c47 the autobuilds failed all over on AIX, attempt to fix the strerror_r() problem
by setting _THREAD_SAFE (and -qthreaded) before strerror_r() is checked for.
2004-08-19 06:41:49 +00:00
Daniel Stenberg
ee400f9552 reuse handles in PHP/CURL works - Kirk Hedden told us 2004-08-19 06:31:29 +00:00
Daniel Stenberg
9ac7629e2c PHP FAQ 2004-08-18 11:18:36 +00:00
Daniel Stenberg
d72ca96a43 indented the code curl-style 2004-08-18 06:12:01 +00:00
Daniel Stenberg
d0dcb3b554 removed trailing whitespace 2004-08-17 19:46:34 +00:00
Daniel Stenberg
e139e49826 see also the reset function 2004-08-17 12:39:10 +00:00
Daniel Stenberg
3838745fdb mention the reset function 2004-08-17 12:37:35 +00:00
Daniel Stenberg
06a5c70f4d Kjetil Jacobsen reported an open file leak in file:// transfers of empty
files.
2004-08-17 12:00:39 +00:00
Daniel Stenberg
62af3fb7b9 added a check for the xlc compiler on AIX, and if that is detect we use
the -qthreaded compiler option
2004-08-17 10:47:57 +00:00
Daniel Stenberg
db302a1055 define _THREAD_SAFE on (recent) AIX systems to build thread-safe code 2004-08-17 09:00:30 +00:00
Daniel Stenberg
847c91e568 recent fixes 2004-08-17 06:56:53 +00:00
Daniel Stenberg
2646af106b allow a custom "Accept-Encoding:" header override the internally set one
that gets set with CURLOPT_ENCODING
2004-08-16 13:25:30 +00:00
Daniel Stenberg
7261b4556b strip trailing whitespace 2004-08-16 13:24:01 +00:00
Gunter Knauf
071e3cf007 syncronized with libcurl.def. 2004-08-16 11:09:30 +00:00
Gunter Knauf
164184b484 cosmetic fix. 2004-08-16 11:09:01 +00:00
Daniel Stenberg
8b6e87abee summary edit: mention that some options take a curl_off_t 2004-08-16 10:49:57 +00:00
Daniel Stenberg
45197b188e Roland Krikava's cookies over proxy fix. 2004-08-16 07:24:25 +00:00
Gunter Knauf
559553b169 fixed linkage dll targets. (submitted by Casey O'Donnell) 2004-08-14 22:03:40 +00:00
Daniel Stenberg
84ec4068de added two good ideas 2004-08-13 12:06:30 +00:00
Daniel Stenberg
aea87be19e mention Harshal Pradhan's windows fix 2004-08-13 12:01:20 +00:00
Daniel Stenberg
9f14744d16 Harshal Pradhan made minor syntax change to make this build with MSVC 7.1 2004-08-13 12:00:33 +00:00
Daniel Stenberg
1dc8c1dbc8 removed the ispell-added local word, compressed the final links into a
short section
2004-08-13 11:56:15 +00:00
Daniel Stenberg
e9812c53cb strip trailing whitespace 2004-08-13 11:53:33 +00:00
Daniel Stenberg
ed98565963 spell 2004-08-13 11:47:31 +00:00
Daniel Stenberg
1d3233612a Added "5.9 How does libcurl resolve host names?" since I wrote the text in
a mail anyway the other day.
2004-08-12 14:09:10 +00:00
Daniel Stenberg
8362a34cef updated with recent changes 2004-08-12 14:08:46 +00:00
Daniel Stenberg
edd16d978f hm 2004-08-12 11:39:00 +00:00
Daniel Stenberg
4356356305 3.16 What certificates do I need with I use SSL?
my first attempt at a basic description of the certs involvede
2004-08-12 11:02:01 +00:00
Daniel Stenberg
cb88135220 removed trailing whitespace, indented to curl-style levels 2004-08-12 07:01:20 +00:00
Daniel Stenberg
498a0fe795 Removed the _XOPEN_SOURCE defining again since it caused major havoc in IRIX
land with many warnings and even compiler errors due to missing structs etc
2004-08-12 06:30:17 +00:00
Daniel Stenberg
0ca1b6afcf --disable-[protocol] doesn't disable tests of the specific protocol 2004-08-11 11:18:24 +00:00
Daniel Stenberg
d3c9f3d6f8 clarify that CURLE_FTP_USER_PASSWORD_INCORRECT might in fact get returned
even if user and password are correct
2004-08-11 08:44:36 +00:00
Daniel Stenberg
df59ca1a45 include the server response in the error message when an FTP server gives
back a 530 after the password is provided, as it isn't necessary because of a
bad user name or password.
2004-08-11 08:39:48 +00:00
Daniel Stenberg
9d84442409 define the _XOPEN_SOURCE define in the config.h file instead, and also added a
decent quote about the define, taken from
http://www.opengroup.org/onlinepubs/007908799/xsh/compilation.html
2004-08-11 07:25:08 +00:00
Daniel Stenberg
5ab9d72e45 fixed the default result for xopen and mimpure to work better 2004-08-11 07:14:34 +00:00
Daniel Stenberg
6060e7ed96 experimental code to detect mips-sgi-irix systems that build without gcc
and if so, define _XOPEN_SOURCE to 500 in an attempt to build with less
warnings (on the 64bit versions)
2004-08-11 07:11:35 +00:00
Daniel Stenberg
7ca7f7a725 added several recent bindings 2004-08-11 06:42:20 +00:00
Daniel Stenberg
355b3d3057 updated the CURLOPT_POST description after input from Alan Pinstein 2004-08-10 13:22:08 +00:00
Daniel Stenberg
d5bdf5f89c Ok, setting CURLOPT_POST to 0 will now convert the request to a GET (this
remains undocumented as this is not the way we recommend)
2004-08-10 13:21:32 +00:00
Daniel Stenberg
17de7e0f1c minor reformat to suit the new FAQ parser 2004-08-10 12:41:44 +00:00
Daniel Stenberg
2cea484428 ignore curllib.dsp 2004-08-10 10:43:41 +00:00
Daniel Stenberg
fb3e19ae50 ignore more files 2004-08-10 10:43:10 +00:00
Daniel Stenberg
99db7fb222 7.12.2 work in progress 2004-08-10 10:40:56 +00:00
Daniel Stenberg
49d0272627 and we're back on a clean notes sheet again 2004-08-10 08:56:12 +00:00
Daniel Stenberg
da30242640 7.12.1 notes 2004-08-10 08:42:54 +00:00
Daniel Stenberg
811edcde18 added "5.8 libcurl.so.3: open failed: No such file or directory" and made
some general cleanups
2004-08-10 08:41:41 +00:00
Daniel Stenberg
4934e6471b In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input is
already UTF-8 encoded. We check for this case and copy the raw string manually
to avoid the problem. This code can be made conditional in the future when
OpenSSL has been fixed. Work-around brought by Alexis S. L. Carvalho.
2004-08-10 08:06:43 +00:00
Daniel Stenberg
9dbd6659dc more typecasts to please picky compilers 2004-08-10 06:41:13 +00:00
Daniel Stenberg
5ddad4cdb3 version string, krb4 link fix, added number of web mirrors and libcurl bindings 2004-08-09 13:13:10 +00:00
Daniel Stenberg
338c2da24f GSS/Kerberos 5 for ftp 2004-08-09 12:39:28 +00:00
Daniel Stenberg
b5cafc0b83 added info about my current idea about option separation between URLs on
the command line
2004-08-09 12:36:17 +00:00
Daniel Stenberg
c50ced6cc2 adding notes for 7.12.2 now, 7.12.1 is removed due to release ANY DAY NOW 2004-08-09 12:18:30 +00:00
Daniel Stenberg
f4783bda27 --negotiate does not work without username/password, bug report #1004841 2004-08-09 12:15:23 +00:00
Daniel Stenberg
b55507c8a7 the krb4 stuff needs -lcom_err to link now, for some odd reason. This is
possibly only on some platforms, but it happens on my Solaris 2.7 box and I
don't know anyone else that regularly build curl with krb4 support.
2004-08-09 10:06:15 +00:00
Daniel Stenberg
827a805966 typecast the assigment of an unsigned variable to a signed one to prevent
picky warnings
2004-08-09 08:29:39 +00:00
Daniel Stenberg
e23ba31eb9 ->fread() should get a size_t variable passed in 2004-08-09 08:28:17 +00:00
Daniel Stenberg
02c6fde11e made telrcv() take a ssize_t argument instead of int to better match other
functions (and prevent warnings)
2004-08-09 08:25:39 +00:00
Daniel Stenberg
d003f6e125 mention the new cool CA extraction way just documented 2004-08-09 07:02:51 +00:00
Daniel Stenberg
1dfff2487f new web mirror 2004-08-06 17:44:59 +00:00
Daniel Stenberg
4ff9cd39c5 negotiate fix and new glib/GTK+ binding 2004-08-05 18:55:51 +00:00
Daniel Stenberg
9c4ffcc250 Enrico Scholz fixed the service name to be uppercase as reported in bug
report #1004105
2004-08-05 18:52:54 +00:00
Daniel Stenberg
6b5a04cf83 multi-connect fix and cookie domain fix 2004-08-04 13:12:00 +00:00
Daniel Stenberg
55e61c092e Fixed multiple IP connects with the multi interface. This fix is influenced
by Gisle Vanem's patch, only modified by me.
2004-08-04 12:38:01 +00:00
Daniel Stenberg
de6ab3de22 Dylan Salisbury's fix to prevent us from accepting cookies from TLD only 2004-08-04 12:26:27 +00:00
Daniel Stenberg
5e1eb58e5a borland is already mentioned 2004-07-31 20:47:04 +00:00
Daniel Stenberg
d892a4dc23 mention this is new 2004-07-31 19:47:00 +00:00
Daniel Stenberg
496ea65f39 link to reset as well 2004-07-31 19:46:25 +00:00
Daniel Stenberg
6577b15d08 curl_easy_reset() documented 2004-07-31 19:46:01 +00:00
Daniel Stenberg
f2e35fad27 digest fix 2004-07-31 19:23:57 +00:00
Daniel Stenberg
81c48aa43d Joel Chen reported that we assumed content within quotes a bit too much in
the digest code. This fixes it.
2004-07-31 07:36:01 +00:00
Daniel Stenberg
0cfa9b52ae prevent all the sig and alarm stuff when using ares 2004-07-29 08:06:33 +00:00
Daniel Stenberg
48b92c163f fix a mingw32 build warning 2004-07-29 07:48:47 +00:00
Daniel Stenberg
b7575b39c4 mingw32 builds make .a libs 2004-07-29 07:37:36 +00:00
Daniel Stenberg
ae2f002b44 added typecast in an attempt to fix a mingw32 warning 2004-07-29 07:34:17 +00:00
Daniel Stenberg
89c312691e additional typecasts to please MIPSPro on 64bit IRIX 2004-07-29 07:30:38 +00:00
Daniel Stenberg
1d23affbc5 oops, curl_easy_reset is a void 2004-07-29 07:29:56 +00:00
Daniel Stenberg
26ffaa263b variable type fix 2004-07-29 07:24:39 +00:00
Daniel Stenberg
ca5e6160b7 provide a curl_easy_reset() proto 2004-07-29 07:20:19 +00:00
Daniel Stenberg
6d60ff6ea1 removed C++ comment to please picky source checkers 2004-07-29 07:19:27 +00:00
Daniel Stenberg
43ae26f146 fixes! 2004-07-28 22:00:14 +00:00
Daniel Stenberg
3e01f70468 curl_easy_reset was added 2004-07-28 21:40:20 +00:00
Daniel Stenberg
b9f1dd7691 Bertrand Demiddelaer fixed the host name to get setup properly even when
a connection is re-used, when a proxy is in use.
2004-07-28 21:27:33 +00:00
Daniel Stenberg
a7bed4fc7c Fixes Brian Akins' reported problems with duplicate Host: headers on re-used
connections.
2004-07-28 21:13:29 +00:00
Daniel Stenberg
7ca49dc91d use Makefile.inc and make it get included in dist archives 2004-07-28 18:40:50 +00:00
Daniel Stenberg
645ee8a42a renamed CURL_HEADERS, since it is a magic automake name we must not use 2004-07-28 18:40:18 +00:00
Daniel Stenberg
115dd6f095 Bertrand Demiddelaer made the testing work with valgrind 2.1 2004-07-26 15:45:03 +00:00
Daniel Stenberg
0e03165467 Bertrand Demiddelaer fixed two missing newlines 2004-07-26 15:42:07 +00:00
Daniel Stenberg
6574f4106e -o #[num] fix 2004-07-26 15:30:23 +00:00
Daniel Stenberg
8e7fcd9ee1 using #[num] with -o now make it literally used if there's no globbing for
that particular index. Reported in bug report 997536.
2004-07-26 09:11:10 +00:00
Daniel Stenberg
ad63e1e698 removed trailing whitespace 2004-07-26 09:09:26 +00:00
Daniel Stenberg
d784526dae libs built with libtool are named .la in the build dir 2004-07-25 06:03:10 +00:00
Daniel Stenberg
79d480e1e7 --enable-debug builds static only, Gisle fixed a memory leak and more 2004-07-24 21:51:43 +00:00
Daniel Stenberg
b3b2ba31f7 Gisle Vanem:
Basically in loops like handle_errors(), 'query->next' was assigned a local
variable and then query was referenced after the memory was freed by
next_server(). I've changed that so next_server() and end_query() returns the
next query. So callers should use this ret-value.

The next problem was that 'server->tcp_buffer_pos' had a random value at entry
to 1st recv() (luckily causing Winsock to return ENOBUFS).

I've also added a ares_writev() for Windows to streamline the code
a bit more.
2004-07-24 21:47:49 +00:00
Daniel Stenberg
7f78bc3c6d autobuilds with ares and curl_easy_reset() 2004-07-24 21:43:33 +00:00
Daniel Stenberg
f508f30fb6 curl_easy_reset() added. Need testing and docs. I also think we should make
the initial setting up the struct should use this single function to avoid
having the initialisation code at two places.
2004-07-24 21:31:01 +00:00
Daniel Stenberg
d20a05161a AM_PROG_LIBTOOL is deprecated and AC_PROG_LIBTOOL should be used instead 2004-07-24 21:29:43 +00:00
Daniel Stenberg
6769ab2797 if --enable-ares is used, we must run 'buildconf' in the ares dir before
we run configure.
2004-07-24 21:24:03 +00:00
Daniel Stenberg
85867cbe94 --enable-debug now makes the lib built static only since otherwise we
get problems
2004-07-24 21:22:46 +00:00
Daniel Stenberg
5e8d3988a2 generate the new configure better 2004-07-24 06:29:38 +00:00
Daniel Stenberg
1cd0a08575 now generated by automake 2004-07-23 18:34:21 +00:00
Daniel Stenberg
efd71af2a1 buildconf and memanalyze are parts of the plain release 2004-07-22 22:23:34 +00:00
Daniel Stenberg
2ea80c29fa Added buildconf buildconf.bat to the dist 2004-07-22 22:22:49 +00:00
Daniel Stenberg
e3fc0d5e78 refer bug reports to the mailing lists, not the old email alias 2004-07-22 22:22:29 +00:00
Daniel Stenberg
33f42aacca recent activities 2004-07-22 22:20:07 +00:00
Daniel Stenberg
c85bf83e88 - Fixed a few variable return types for some system calls. Made configure
check for ssize_t to make it possible to use that when receiving the send()
  error code. This is necessary to prevent compiler warnings on some systems.

- Made configure create config.h, and all source files now include setup.h that
  might include the proper config.h (or a handicrafted alternative).

- Switched to 'ares_socket_t' type for sockets in ares, since Windows don't
  use 'int' for that.

- automake-ified and libool-ified c-ares. Now it builds libcares as a shared
  lib on most platforms if wanted. (This bloated the size of the release
  archive with another 200K!)

- Makefile.am now uses Makefile.inc for the c sources, h headers and man
  pages, to make it easier for other makefiles to use the exact same set of
  files.

- Adjusted 'maketgz' to use the new automake magic when building distribution
  archives.
2004-07-22 22:18:45 +00:00
Daniel Stenberg
060b6ce148 the multi interface is not so new anymore! 2004-07-17 08:24:22 +00:00
Daniel Stenberg
35618b4712 minor format fix 2004-07-17 08:22:50 +00:00
Daniel Stenberg
cd2e99e980 deal with negative Content-Length: headers by ignoring the info 2004-07-16 21:01:16 +00:00
Daniel Stenberg
0359ae8f40 test downloading from a server claiming negative content-length 2004-07-16 21:00:50 +00:00
Gunter Knauf
972d39234f removed Makefile.b32.resp from repository. 2004-07-16 10:14:51 +00:00
Gunter Knauf
798349fce6 removed Makefile.b32.resp from the list. 2004-07-16 09:23:29 +00:00
Gunter Knauf
9612fda886 changed to use a temporary response file with tlib to give W9x a chance to build; looks ugly but works fine. 2004-07-16 09:20:57 +00:00
Gunter Knauf
4b217efb84 added borland-ssl and borland-ssl-zlib targets. 2004-07-15 22:20:52 +00:00
Gunter Knauf
555cfb3059 fixed zlib suport. 2004-07-15 21:54:10 +00:00
Gunter Knauf
c0d1d6926c some more tweaks, fixed zlib suport. 2004-07-15 21:51:59 +00:00
Gunter Knauf
fca8fcec3e added just another switch. 2004-07-15 19:36:30 +00:00
Gunter Knauf
6844d5dcad removed old CXXFLAGS; added switch to suppress linker banner. 2004-07-15 18:17:15 +00:00
Gunter Knauf
d759e97166 removed unneeded libs from linking. 2004-07-15 17:21:07 +00:00
Daniel Stenberg
cbfc737d79 recent activities 2004-07-15 09:03:32 +00:00
Gunter Knauf
ab64bf6fb1 added Borland support. 2004-07-15 02:34:58 +00:00
Gunter Knauf
0b0d20021c made OpenSSL support conditional. 2004-07-15 02:09:40 +00:00
Gunter Knauf
932a6f6b77 made OpenSSL support conditional;
removed ugly dependence on Makefile.b32.resp.
2004-07-15 01:59:59 +00:00
Gunter Knauf
1318760ad2 Gisle's fix to support Borland builds again. 2004-07-15 01:08:08 +00:00
Daniel Stenberg
15a403a98d now known as libcurl-tutorial.3 2004-07-14 15:33:27 +00:00
Daniel Stenberg
a92b7c1b16 Jason Nye pointed out that callbacks don't need to use the "C namespace" 2004-07-14 15:32:09 +00:00
Daniel Stenberg
0c54013ee3 An Andres Garcia fix: add a typecast to make it work better 2004-07-14 14:20:53 +00:00
Daniel Stenberg
ca5d1e7a8d removed the config-netware.h from the release archives 2004-07-14 14:18:31 +00:00
Gunter Knauf
40a39e2270 some more fixes; added cw32mt.lib, winmm.lib to the link libs for curl.exe. 2004-07-14 12:12:08 +00:00
Gunter Knauf
982530b186 changed Borland target since Borland's make doesnt understand '&'. 2004-07-14 11:39:29 +00:00
Gunter Knauf
fadc08445a changed to use Makefile.inc. 2004-07-14 11:30:01 +00:00
Gunter Knauf
783381c163 updated for current cvs sources; looking for getting rid of this file.... 2004-07-13 20:02:31 +00:00
Gunter Knauf
5f26bee7c8 changed to use Makefile.inc. 2004-07-13 20:01:15 +00:00
Gunter Knauf
2be57d0833 minor corrections. 2004-07-12 11:29:36 +00:00
Gunter Knauf
6e6748f051 changed to use Makefile.inc since Gisle agreed. 2004-07-11 23:43:32 +00:00
Gunter Knauf
a8d544d9b3 minor cleanup. 2004-07-11 18:14:11 +00:00
Gunter Knauf
5f1490e1bd added some lines to fetch ares version. 2004-07-11 17:59:07 +00:00
Gunter Knauf
2c3e557b5c updated MSVC build instructions. 2004-07-11 13:49:52 +00:00
Gunter Knauf
08df4b8971 changed paths to external libs to recent versions. 2004-07-11 13:49:18 +00:00
Gunter Knauf
11f58ea896 added new vc-zlib target. 2004-07-11 12:31:29 +00:00
Gunter Knauf
15f3b4b6d1 removed zlib dependence from default target; added new zlib targets. 2004-07-11 12:28:07 +00:00
Gunter Knauf
35270e50c2 removed obsolete NetWare config files;
we generate now config.h dynamically from Makefile.
2004-07-11 09:31:53 +00:00
Gunter Knauf
8c975657e7 added ifdef for NetWare to ares.h. 2004-07-11 08:30:23 +00:00
Gunter Knauf
03cb3b9db1 ifdef keep_sigact since its only used when SIGALRM is defined. 2004-07-10 23:11:22 +00:00
Gunter Knauf
19ad942739 fixed ares linking. 2004-07-07 20:46:39 +00:00
Daniel Stenberg
3cf452b923 file:// upload fix on windows 2004-07-06 15:17:32 +00:00
Daniel Stenberg
2a6f9aa155 Andres Garcia pointed out that we searched for a slash badly since it is
converted and thus we must search for backslash on windows
2004-07-06 15:16:05 +00:00
Daniel Stenberg
570455b21d clarify the -Q option a bit better 2004-07-06 08:08:13 +00:00
Daniel Stenberg
dccdf9e66c mingw and netware makefiles added by Gunter Knauf 2004-07-06 08:06:03 +00:00
Gunter Knauf
dd4d5bb1e0 fixed Win32 prebuild section; fixed minor cosmetic bug. 2004-07-06 02:37:52 +00:00
Gunter Knauf
842e4aaa0d added vc-ssl-zlib target. 2004-07-06 01:52:32 +00:00
Gunter Knauf
ebb09cd9c4 minor cleanup. 2004-07-06 01:18:35 +00:00
Gunter Knauf
9a6df07d3d be a bit more verbose when things go wrong. 2004-07-05 23:35:49 +00:00
Gunter Knauf
c59c429a69 added additional check to avoid calling a non-existant external script. 2004-07-05 23:07:59 +00:00
Gunter Knauf
69f9d0c916 the simple way was too simple, so added --mktarball option. 2004-07-05 22:35:00 +00:00
Gunter Knauf
56edbe3804 minor cosmetic fix. 2004-07-05 21:44:09 +00:00
Gunter Knauf
94c4a18541 added simple way to create a tarball just before the build is deleted. 2004-07-05 21:41:28 +00:00
Gunter Knauf
bdcf8d626d changed to reflect recent NetWare makefile changes;
moved call to buildconf.bat down so that it takes place in the build dir.
2004-07-05 21:32:18 +00:00
Gunter Knauf
576b40b1b0 added MingW32 makefile. 2004-07-05 13:53:27 +00:00
Gunter Knauf
954575a19d changed to use Makefile.inc; made paths overwritable. 2004-07-05 13:25:30 +00:00
Gunter Knauf
47bbe36725 added comment. 2004-07-05 13:24:44 +00:00
Daniel Stenberg
1a8f7e830c Added README.netware to the release archive 2004-07-05 11:43:32 +00:00
Gunter Knauf
dfc85b7291 added line where to find compile instructions. 2004-07-05 02:34:17 +00:00
Gunter Knauf
1457b80617 minor NetWare upate. 2004-07-05 02:20:20 +00:00
Gunter Knauf
dba40b35f2 try to relax linux build host detection. 2004-07-05 01:58:33 +00:00
Gunter Knauf
e9d95f1a25 added a simple README.netware. 2004-07-05 01:00:47 +00:00
Gunter Knauf
67e40a2b16 added section for compiling NetWare target. 2004-07-05 00:55:48 +00:00
Daniel Stenberg
25f5f14d35 Gnter Knauf made c-ares build and run on Novell Netware. 2004-07-04 22:20:26 +00:00
Daniel Stenberg
dfda9cc007 explicit typecasts to prevent warnings 2004-07-04 21:54:49 +00:00
Daniel Stenberg
e39b29fc48 typecast the conversion to uInt when assigning z->avail_in to prevent
warnings from picky compilers
2004-07-04 21:53:46 +00:00
Daniel Stenberg
4c17ba4fc0 make sure the 3rd argument passed to bind() is a socklen_t 2004-07-04 21:48:54 +00:00
Daniel Stenberg
4511f7ac50 SSL_get_verify_result() returns a long, so we receive the result in a long
and not an int.
2004-07-04 21:42:32 +00:00
Daniel Stenberg
b9f76f11bb typecast long => int conversion 2004-07-04 21:38:36 +00:00
Daniel Stenberg
17841a20e3 explicit typecasts when converting from long to int to avoid warnings 2004-07-04 21:37:35 +00:00
Gunter Knauf
d90d40b5d1 added NetWare section for paths. 2004-07-04 21:36:32 +00:00
Daniel Stenberg
d2e6a0583a made 'connectindex' a long variable to prevent compiler warnings when
implicitly converting it to int
2004-07-04 21:36:14 +00:00
Gunter Knauf
b2c9277e66 update to build both test apps. 2004-07-04 21:35:26 +00:00
Daniel Stenberg
31c332af93 typecast the conversion from long to int to prevent picky compiler warnings 2004-07-04 21:35:12 +00:00
Gunter Knauf
90af60a6ef removed now obsolete ifdef. Shouldnt the other ifdefs be inside the else as they are in ./src/setup.h ? 2004-07-04 15:37:25 +00:00
Gunter Knauf
80c7566203 removed now obsolete ifdef. 2004-07-04 15:34:58 +00:00
Gunter Knauf
efb1fdbec8 removed abort() - sync'd with getdate.y 1.26 2004-07-04 15:27:08 +00:00
Daniel Stenberg
bada8cc259 include the Makefile.inc file to get all sources and headers 2004-07-04 08:45:25 +00:00
Gunter Knauf
c3a076176e minor fix for compiling on Linux. 2004-07-03 22:25:37 +00:00
Gunter Knauf
2cda3070d5 added few ifdefs to make it usable for NetWare. 2004-07-03 21:48:42 +00:00
Gunter Knauf
728bed8c98 added NetWare makefile. 2004-07-03 21:44:32 +00:00
Gunter Knauf
6e72ea7442 reverted, older gcc breaks compilation since it doesnt know the switch. 2004-07-03 20:18:02 +00:00
Gunter Knauf
a4aac27fd3 killed warning with gcc 3.3.1 and later when using -O2. 2004-07-03 19:58:01 +00:00
Gunter Knauf
5b8816dcb7 modified to use new Makefile.inc to build up object list;
added generation of config.h and a prebuild target to create all neded files.
2004-07-03 19:13:28 +00:00
Gunter Knauf
fc0df97278 modified to use new Makefile.inc to build up object list;
added generation of config.h and a prebuild target to create all neded files.
2004-07-03 18:06:39 +00:00
Gunter Knauf
592658e874 added Makefile.inc which can be included from other makefiles to reduce maintaining. 2004-07-03 17:49:40 +00:00
Daniel Stenberg
5a70e42428 I prefer CURLOPT_WRITEDATA before CURLOPT_FILE 2004-07-02 14:00:49 +00:00
Daniel Stenberg
e4caa98901 snprintf instead of sprintf,
better support for HUGE files with the -# progress bar
2004-07-02 12:48:53 +00:00
Daniel Stenberg
c211a7c685 added typecasts to please compilers 2004-07-02 12:29:15 +00:00
Daniel Stenberg
7876c078bc variable type cleanup to hush compilers,
killed trailing whitespace
2004-07-02 12:28:57 +00:00
Daniel Stenberg
aedadfc779 explicit typecasts to double to prevent warnings about implicit conversions
that might lose accuracy
2004-07-02 11:56:26 +00:00
Daniel Stenberg
2046a6b9e5 curl_share_cleanup fix 2004-07-02 11:27:06 +00:00
Daniel Stenberg
d1d53b2bbf make clean now removes getdate.c 2004-07-02 11:25:13 +00:00
Daniel Stenberg
950aa1c743 configure --disable-http works these days 2004-07-02 09:14:46 +00:00
Daniel Stenberg
a9572bf88a Andrs Garca found out the share cleanup code crashes when you cleanup
and there are not lock/unlock functions set!
2004-07-02 08:28:31 +00:00
Daniel Stenberg
5a93f50394 typecase the argument to curl_easy_strerror() to a CURLcode to please
picky compilers
2004-07-01 14:06:44 +00:00
Daniel Stenberg
60af1cbcc2 djgpp fixes by Gisle 2004-07-01 13:55:13 +00:00
Daniel Stenberg
8952ef933b Gisle's win32-fix. 'errno' is not used for errors when socket() fails on
Windows.
2004-07-01 13:54:24 +00:00
Daniel Stenberg
b350d5da59 Gisle added makefile for djgpp builds 2004-07-01 13:53:13 +00:00
Daniel Stenberg
6df3bf3644 --trace fix 2004-07-01 12:37:55 +00:00
Daniel Stenberg
35840a2c5c make functions use size_t instead of int next major update 2004-07-01 08:22:52 +00:00
Daniel Stenberg
090b89cc76 Variable type cleanups to please the picky MIPSPro compiler. 2004-07-01 08:10:21 +00:00
Daniel Stenberg
f05d47ddd6 variable type cleanup to fix picky compiler warnings 2004-07-01 07:43:20 +00:00
Daniel Stenberg
fcfd4bef2d typecast to prevent picky compiler warning 2004-07-01 07:30:19 +00:00
Daniel Stenberg
18dc8fbc26 typecast to int when the variable is int! 2004-07-01 07:28:36 +00:00
Daniel Stenberg
d9ceee1c75 Gisle's djgpp magic 2004-07-01 06:59:43 +00:00
Daniel Stenberg
097281f459 Gisle Vanem made this build fine with djgpp and the Watt-32 stack. 2004-07-01 06:58:47 +00:00
Daniel Stenberg
087748c48e don't close the trace stream until _after_ the easy handle has been cleaned
up, as that can send traces too
2004-07-01 06:19:19 +00:00
Daniel Stenberg
e35187741b spellfixed comments 2004-07-01 06:08:06 +00:00
Daniel Stenberg
574e911375 Another Gisle update 2004-06-30 12:34:33 +00:00
Daniel Stenberg
ce945bd2f0 5K array on the stack is a big hefty, it is now allocated with malloc
instead
2004-06-30 12:05:07 +00:00
Daniel Stenberg
8efa6f407d I think 1024 bytes is enough for even most ipv6 addresses :-) 2004-06-30 12:04:37 +00:00
Daniel Stenberg
85bd4621db Prevent a very long password to buffer overflow the global variable we
use when built with a very old OpenSSL version.
2004-06-30 11:53:34 +00:00
Daniel Stenberg
6c3759d78d removed trailing whitespace, free a missing malloc when returning error 2004-06-30 11:51:24 +00:00
Daniel Stenberg
4af08a19f8 passing in a very long interface name could make a buffer overflow 2004-06-30 11:48:19 +00:00
Daniel Stenberg
c14650caec not PIN code, pass phrase 2004-06-30 11:34:57 +00:00
Daniel Stenberg
c7a9e07909 simplified the check for when to free() the buf data 2004-06-30 11:32:16 +00:00
Daniel Stenberg
185baf036b NOBODY set TRUE after a POST makes a good HEAD now 2004-06-30 11:09:16 +00:00
Daniel Stenberg
3523613826 wxcurldav 2004-06-30 10:47:14 +00:00
Daniel Stenberg
782ade7223 fixed 2004-06-30 09:29:00 +00:00
Daniel Stenberg
ba40eccc90 make the SSL connect use the same default connect timeout define as the
generic connect uses
2004-06-30 09:22:48 +00:00
Daniel Stenberg
4191741fb6 Curl_addrinfo is another typedef we use frequently 2004-06-29 18:45:52 +00:00
Daniel Stenberg
7a52f44bd4 Gisle fixed a bad free from the resolve reorg, I changed type of the buf
variable to sort out some compiler warnings.
2004-06-29 18:44:59 +00:00
Daniel Stenberg
efa5485744 Gisle's djgpp updates 2004-06-29 18:43:56 +00:00
Daniel Stenberg
c81ac51e5c Gisle's update 2004-06-29 18:43:04 +00:00
Gunter Knauf
fd17cf2e3c fixed argument parsing; added --setup option. 2004-06-29 13:20:37 +00:00
Daniel Stenberg
d4b0999415 'M-x ispell-buffer' 2004-06-29 13:16:30 +00:00
Daniel Stenberg
03f8ec89db multi interface connect fix 2004-06-29 11:27:33 +00:00
Daniel Stenberg
f633ab688b commented out the check for gethostbyname_r() as we no longer use it 2004-06-29 11:22:39 +00:00
Daniel Stenberg
808621ab22 corrected the Curl_is_connected() proto 2004-06-29 11:21:05 +00:00
Daniel Stenberg
6ed5feda2b First attempt at making the multi interface work when connecting to a host
that resolves to multiple IP addresses.
2004-06-29 11:20:07 +00:00
Daniel Stenberg
964066c0de Added missing info for the command line tool, as noted by Mike Kienenberger 2004-06-29 07:58:52 +00:00
Daniel Stenberg
a913e93667 --limit-rate problems on Mac OS X was reported by Rob Stanzel 2004-06-28 07:08:09 +00:00
Daniel Stenberg
a7b99fc463 check for a fine poll() before it is used to sleep subsecond 2004-06-27 21:51:54 +00:00
Daniel Stenberg
6f252f4704 reset CURLOPT_CUSTOMREQUEST with NULL 2004-06-27 21:19:54 +00:00
Daniel Stenberg
b596c34bed snprintf and version 2004-06-24 15:20:29 +00:00
Daniel Stenberg
b0cd96478c oops 5 bytes makes 4 letters plus zero byte 2004-06-24 15:15:27 +00:00
Daniel Stenberg
387ec712e6 fix warning 2004-06-24 15:06:25 +00:00
Daniel Stenberg
f2a99d7d74 the _num_chars() function is not used, removing 2004-06-24 15:05:39 +00:00
Daniel Stenberg
8b6b15dccc to prevent compier warnings, we only declare len if we have code
that uses it
2004-06-24 14:52:51 +00:00
Daniel Stenberg
bbb72b7b6b Gisle: free used memory better 2004-06-24 14:40:16 +00:00
Daniel Stenberg
785bad388b Gisle cleaned up remaining host resolve re-org issues 2004-06-24 14:39:52 +00:00
Daniel Stenberg
cf10df6c68 include header for our printfs 2004-06-24 14:35:45 +00:00
Daniel Stenberg
5b55dcbfbb reverted bad win32 fix 2004-06-24 14:34:13 +00:00
Gunter Knauf
e7dbbd16a5 fixed the MSVC build. 2004-06-24 13:49:14 +00:00
Daniel Stenberg
62f0457961 length limit the sscanf() parsing to prevent buffer overflow 2004-06-24 12:07:36 +00:00
Daniel Stenberg
8879b57b73 ah, simplified my latest change more 2004-06-24 12:01:20 +00:00
Daniel Stenberg
e49a6feabb fix for systems without gethostbyname_r() 2004-06-24 11:58:43 +00:00
Daniel Stenberg
feb2dd2835 Replaced all uses of sprintf() with the safer snprintf(). It is just a
precaution to prevent mistakes to lead to buffer overflows.
2004-06-24 11:54:11 +00:00
Daniel Stenberg
5e34f3dc01 made the Curl_he2ai() take the port number as an int intead, to avoid lots
of typecasts all over
2004-06-24 10:43:50 +00:00
Daniel Stenberg
0031d76f2a use snprintf() to be on the safe side 2004-06-24 10:43:22 +00:00
Daniel Stenberg
00ee738fdd typecasts to prevent warnings 2004-06-24 09:14:59 +00:00
Daniel Stenberg
8d0a823124 only use sockaddr_in6 on ipv6-enabled hosts 2004-06-24 09:13:50 +00:00
Daniel Stenberg
9729df1756 socks proxy support even when libcurl is built ipv6-enabled 2004-06-24 08:59:54 +00:00
Daniel Stenberg
cdb419d65e typecast to prevent warning 2004-06-24 08:31:17 +00:00
Daniel Stenberg
d6f9a41539 use Curl_addrinfo, not 'struct addrinfo' 2004-06-24 08:30:39 +00:00
Daniel Stenberg
1daa258b8a fixed problems I missed to fix from my cleanup 2004-06-24 08:09:54 +00:00
Daniel Stenberg
560c257bd0 prevent warning 2004-06-24 08:08:28 +00:00
Daniel Stenberg
d7aae417b1 Yet another resolve code re-org 2004-06-24 07:56:07 +00:00
Daniel Stenberg
c39858aac0 Source cleanups. The major one being that we now _always_ use a Curl_addrinfo
linked list for name resolved data, even on hosts/systems with only IPv4
stacks as this simplifies a lot of code.
2004-06-24 07:43:48 +00:00
Daniel Stenberg
818aed35e2 static functions are better not Curl_ prefixed to make their static
status more obvious
2004-06-23 09:08:03 +00:00
Daniel Stenberg
2ed524f07e When adding the return -1 to prevent warnings on some compilers, others
started complaining since it won't be reached... So I removed the call to
abort() and just return -1 instead. abort() was wrong to call anyway since
this is a library!
2004-06-23 06:17:17 +00:00
Daniel Stenberg
5f1eefd03f prevent a warning 2004-06-23 06:14:23 +00:00
Gunter Knauf
522b4d7576 one copy&paste too much, removed the define again. 2004-06-22 23:56:19 +00:00
Gunter Knauf
d6dcb08407 argh - copy&paste error. 2004-06-22 23:22:37 +00:00
Gunter Knauf
806c756a2d syncronized with recent getdate.y updates. 2004-06-22 23:04:57 +00:00
Daniel Stenberg
2494701347 the hostname variable wasn't assigned and we no longer use it 2004-06-22 21:25:53 +00:00
Daniel Stenberg
1c10272e15 cookie size 2004-06-22 21:22:42 +00:00
Daniel Stenberg
0badcf381a extended to include a cookie with 4998 bytes of content 2004-06-22 21:21:54 +00:00
Daniel Stenberg
35558e6bd7 David Cohen pointed out that RFC2109 says clients should allow cookies to
contain least 4096 bytes while libcurl only allowed 2047. I raised the limit
to 4999 now and made the used buffer get malloc()ed instead of simply
allocated on stack as before.
2004-06-22 21:15:51 +00:00
Daniel Stenberg
7659747e6f Gnter Knauf fixed getdate.y to remove a few warnings. I removed the
ifdef'ed test we never ever use anyway.
2004-06-22 21:12:34 +00:00
Gunter Knauf
53189fb2d7 added new --target option for autobuilding other targets than GNU-like. 2004-06-22 20:02:49 +00:00
Gunter Knauf
450c178d77 added 'clean' targets for mingw32 and netware. 2004-06-22 18:26:23 +00:00
Daniel Stenberg
a20eb6df1b reset CURLOPT_HTTPHEADER with NULL 2004-06-22 17:22:30 +00:00
Daniel Stenberg
d73425061a Moved the "About to connect() to" text to the place where the host name is
actually known, as before this text lied when used in i.e FTP.
2004-06-22 15:23:01 +00:00
Daniel Stenberg
0051d5ac88 Gisle Vanem improved the certificate wildcard checks 2004-06-22 08:54:42 +00:00
Daniel Stenberg
76920413d9 Gisle fixed the wildcard checks for certificates. 2004-06-22 08:51:22 +00:00
Daniel Stenberg
44d9a8ba4e Gunter's fix to avoid the notorious YYSTACK_USE_ALLOCA warning we get on
several platforms/compilers/yacc versions.
2004-06-22 07:27:43 +00:00
Daniel Stenberg
38dc548a87 retry to read the sent request a few times if it doesn't exist the first time 2004-06-22 07:09:47 +00:00
Daniel Stenberg
dca6386234 pass an int pointer when it expects an int pointer... 2004-06-22 06:50:41 +00:00
Daniel Stenberg
2a701a1aac modified some logging output 2004-06-22 06:44:14 +00:00
Daniel Stenberg
0cb297abc9 testcurl.sh is dead, long live tests/testcurl.pl! 2004-06-21 14:58:03 +00:00
Daniel Stenberg
821a23535b This is the old script for testing curl, now use tests/testcurl.pl instead.
It is more portable.
2004-06-21 14:56:48 +00:00
Daniel Stenberg
bc80599178 read callback return code and fixed the pycurl url 2004-06-21 14:20:34 +00:00
Daniel Stenberg
941374b573 CURL_READFUNC_ABORT stuff 2004-06-21 14:10:39 +00:00
Daniel Stenberg
1886893d66 Added blurb for the READFUNCTION, including the new CURL_READFUNC_ABORT
return code.
2004-06-21 14:09:23 +00:00
Daniel Stenberg
7291772b1f added test case 513 2004-06-21 14:08:48 +00:00
Daniel Stenberg
8e28721057 The read callback can now return CURL_READFUNC_ABORT to stop a transfer. 2004-06-21 14:07:38 +00:00
Daniel Stenberg
8d2120566e added CURL_READFUNC_ABORT 2004-06-21 14:04:36 +00:00
Daniel Stenberg
67341c4cbe when the client disconnects prematurely, dump the request as received thus
far
2004-06-21 14:00:11 +00:00
Daniel Stenberg
f8188ddfee recent events 2004-06-21 10:56:33 +00:00
Daniel Stenberg
29c546b426 typecasts to prevent compiler warnings 2004-06-21 08:37:53 +00:00
Daniel Stenberg
0d259b898b updates 2004-06-21 08:28:18 +00:00
Daniel Stenberg
c136b80af5 refer to the new tutorial man page 2004-06-21 08:28:10 +00:00
Daniel Stenberg
83b87d53c1 removed libcurl-the-guide from the dist 2004-06-21 08:27:45 +00:00
Daniel Stenberg
1e99f1ee41 libcurl-tutorial.3 is the former libcurl-the-guide converted to man page format 2004-06-21 08:17:08 +00:00
Daniel Stenberg
d7fe136d54 test 177 HTTP POST with --digest that gets a 302 response 2004-06-19 10:10:50 +00:00
Daniel Stenberg
cd7a0f829f When doing auth negotiations or authprobing, we only consider HTTP code
<300 to be good.
2004-06-19 10:10:24 +00:00
Daniel Stenberg
cf3f1ef284 prevent compiler warning 2004-06-19 09:38:08 +00:00
Daniel Stenberg
a737864a1c ispell-buffer 2004-06-18 13:11:49 +00:00
Daniel Stenberg
c68a6805b3 two issues to remember to fix before next release 2004-06-18 11:47:08 +00:00
Daniel Stenberg
bd3d5a17b4 Gisle's "SSL patch" from June 16th 2004, modified by me as discussed on the
mailing list.
2004-06-18 06:20:43 +00:00
Daniel Stenberg
d4b577114b With David Byron's test server I could repeat his problem and make sure that
POSTing over HTTPS:// with NTLM works fine now. There was a general problem
with multi-pass authentication with non-GET operations with CONNECT.
2004-06-18 06:15:26 +00:00
Daniel Stenberg
713effb6e4 large file FTP upload bug 2004-06-17 08:07:24 +00:00
Daniel Stenberg
b92e2ab6b1 new daring features, not used by any current test 2004-06-17 08:06:03 +00:00
Daniel Stenberg
05baf94b43 Keep the upload byte counter in an curl_off_t, not an int. 32bits is not
enough. This is most likely the bug Jean-Louis Lemaire reported that makes
2GB FTP uploads to report error when completed.
Also padded comments to get them aligned again, only for visibility.
2004-06-16 09:28:47 +00:00
Daniel Stenberg
a76288b99a Alexander Krasnostavsky fixed a flaw in the 3rd party transfer code that
didn't properly check return code.
2004-06-16 09:05:22 +00:00
Daniel Stenberg
557e95c0a3 post with auth problems fixed 2004-06-15 11:04:21 +00:00
Daniel Stenberg
0a83fa90bb skip the pid from the logging 2004-06-15 10:28:56 +00:00
Daniel Stenberg
daeb143177 test 176, use --ntlm and POST when the server doesn't require any auth 2004-06-15 09:20:04 +00:00
Daniel Stenberg
9f752120c0 added test case 175, use HTTP POST and DIGEST set but the server requires no
auth
2004-06-15 08:50:15 +00:00
Daniel Stenberg
80a1e972fc Fix the auth code to enable us to i.e set DIGEST and then find out that the
server doesn't require any auth at all and then we just continue nicely. We
now have an extra bit in the connection struct named 'authprobe' that is TRUE
when doing pure "HTTP authentication probing".
2004-06-15 08:45:22 +00:00
Daniel Stenberg
5e65d48ffa we actually build and run fine with libidn 0.4.1 too, so let's not require
anything newer than that
2004-06-14 21:40:11 +00:00
Daniel Stenberg
752ef08141 lots of multi interface description but also some general updates and additions 2004-06-14 14:44:28 +00:00
Daniel Stenberg
070e0e8b0a prevent compiler warnings on non-win32 platforms 2004-06-14 10:45:30 +00:00
Daniel Stenberg
2ed0728cef added test 174, HTTP POST --anyauth to server without auth requirements.
An attempt to repeat a reported auth problem. Works for me!
2004-06-14 09:16:39 +00:00
Daniel Stenberg
a79b9e9d4a recent action 2004-06-14 08:54:59 +00:00
Daniel Stenberg
24572daccc Allow formposting of files larger than what fits in memory by not reading the
file until it is actually being uploaded.
Make sure we build and still work with HTTP disabled - the SSL code might use
the boundary string for some random seeding.
2004-06-14 08:51:43 +00:00
Daniel Stenberg
1770563fff refuse running the torture tests without a debug build 2004-06-14 08:25:54 +00:00
Daniel Stenberg
4cd96483f6 moved default: in a switch case to prevent compiler warning that 'request'
might be used uninitialized
2004-06-13 09:08:38 +00:00
Daniel Stenberg
8f1783b8a7 provide curl_formfree() even when http is disabled, it does nothing then 2004-06-13 08:59:37 +00:00
Daniel Stenberg
be72eaa327 use Curl_strcasestr() when checking wildcard cert names 2004-06-13 08:33:26 +00:00
Daniel Stenberg
61bded1d82 added Curl_strcasestr() for case insensitive strstr() searching 2004-06-13 08:32:57 +00:00
Gunter Knauf
4b3937373a removed unused include path. 2004-06-11 17:27:03 +00:00
Gunter Knauf
08bf0907d4 fixed xdc generation, added lib target, load curl.nlm into ring3 by default. 2004-06-11 15:33:07 +00:00
Daniel Stenberg
eb044f8787 Tim Sneddon made it build fine on VMS again. 2004-06-11 12:29:30 +00:00
Gunter Knauf
8d0c77403c some more makefile changes. 2004-06-11 02:29:16 +00:00
Gunter Knauf
601062455c respect CVS builds in version string. 2004-06-11 01:36:27 +00:00
Gunter Knauf
5be788ba36 some more makefile changes. 2004-06-11 01:04:06 +00:00
Gunter Knauf
281559b31b cosmetic correction. 2004-06-10 22:24:37 +00:00
Gunter Knauf
ef1aa4e5e9 converted to UNIX format. 2004-06-10 21:20:15 +00:00
Gunter Knauf
7b7ac04895 added timeval.c to the sources for curlx_ functions. 2004-06-10 20:46:24 +00:00
Gunter Knauf
60f5b2b275 minor output fix. 2004-06-10 20:43:46 +00:00
Gunter Knauf
c0f9d7fdb7 ups! no copy command defined. 2004-06-10 20:29:19 +00:00
Gunter Knauf
fc4d6f73a6 added generation of missing files. 2004-06-10 20:25:02 +00:00
Gunter Knauf
295169f9d9 added generation of missing files. 2004-06-10 20:12:49 +00:00
Gunter Knauf
1a3797a699 make include path overridable. 2004-06-10 17:11:39 +00:00
Daniel Stenberg
977e106924 Gisle Vanem's init patch for Windows 2004-06-10 13:11:32 +00:00
Daniel Stenberg
8d76d4016d removed trailing whitespace 2004-06-10 11:56:02 +00:00
Daniel Stenberg
9f92657f76 Gisle corrected two comments 2004-06-10 11:55:37 +00:00
Daniel Stenberg
9f341f9ce5 Gisle Vanem's improved verbose output and timeout handling when connecting to
a host name that resolves to multiple IP addresses.
2004-06-10 11:06:21 +00:00
Daniel Stenberg
2098871509 build again with disabled http 2004-06-10 07:46:24 +00:00
Daniel Stenberg
3d00c86f4c Steven Bazyl and Seshubabu Pasam pointed out a bug on win32 when freeing the
path after a transfer.
2004-06-10 07:17:28 +00:00
Daniel Stenberg
90037b85d1 Alexander Krasnostavsky's fix to make libcurl build fine with configure
--disable-http, which thus builds a libcurl without HTTP support.
2004-06-09 08:23:55 +00:00
Daniel Stenberg
6ec145d4b4 when built with HTTP disabled, provide a curl_formadd() function anyway to
keep the API complete at all times
2004-06-09 08:22:02 +00:00
Daniel Stenberg
40a58c392f Added CURL_FORMADD_DISABLED when libcurl is built with HTTP disabled 2004-06-09 08:21:11 +00:00
Daniel Stenberg
9733cd59bb removed reference to the removed curl_formparse 2004-06-09 08:18:17 +00:00
Daniel Stenberg
b3caf7bfa8 Setting CURLOPT_RANGE to NULL disables it.
Setting CURLOPT_RESUME_FROM to 0 prevents a resumed transfer.
2004-06-09 08:05:23 +00:00
Daniel Stenberg
23fbb89805 recent changes 2004-06-09 07:01:48 +00:00
Daniel Stenberg
bd1adaf7ea when producing curllib.dsp, include libcurl.def as a source file.
An Alexander Krasnostavsky fix.
2004-06-09 06:54:12 +00:00
Gunter Knauf
0c9e23fc0c added the new source files. 2004-06-09 01:27:48 +00:00
Gunter Knauf
f091ce64ac corrected copyright. 2004-06-09 01:15:03 +00:00
Daniel Stenberg
55a69ebea6 Gisle's patch that'll allow curl to continue with the following URLs even
if one transfer fails.
2004-06-08 21:56:30 +00:00
Daniel Stenberg
d6b3850562 fix 2004-06-08 21:26:03 +00:00
Daniel Stenberg
80197cf493 James Bursa fixed a RISC OS init issue, removed trailing whitespace 2004-06-08 21:25:11 +00:00
Daniel Stenberg
8ee564c216 Marty Kuhrt's VMS fixes 2004-06-08 21:21:53 +00:00
Gunter Knauf
5bfeb60a83 corrected defines. 2004-06-08 15:05:45 +00:00
Daniel Stenberg
1ab4a2f870 delete trailing whitespace 2004-06-08 15:05:20 +00:00
Gunter Knauf
2a627059ac convert to UNIX format. 2004-06-08 14:57:37 +00:00
Gunter Knauf
3f739acf24 converted to UNIX format. 2004-06-08 14:52:32 +00:00
Daniel Stenberg
d3454ceb94 Kjetil Jacobsen pointed out that the CURLOPT_FILETIME option was wrongly
marked as accepting an objectpoint argument while it actually assumes a long.
The comment was also grossly misleading. The man page was and is correct
though.
2004-06-08 14:13:50 +00:00
Daniel Stenberg
59695c05b1 time schedule for this year 2004-06-08 12:23:48 +00:00
Daniel Stenberg
f0969c9692 prevent compiler warning with picky compilers 2004-06-07 10:28:14 +00:00
Daniel Stenberg
18dd8154e2 Reverted the previous change and redid it differently as it seemed to not
work. This is supposed to detect cross-compiling and alert the user, and not
do the POSIX-check for strerror_r() if it already detected a glibc-compatible
strerror_r().
2004-06-07 08:30:36 +00:00
Daniel Stenberg
4c58797607 When sending info about which host that sends what, include proper direction
to/from, based on a suggestion from Alexander Krasnostavsky
2004-06-07 07:01:29 +00:00
Daniel Stenberg
d620f1e529 configure fix 2004-06-04 20:57:59 +00:00
Daniel Stenberg
e0b436f8e1 1 - do better when cross-compiling when checking for strerror_r() - alert
the user.
2 - don't check for POSIX-style if glibc-style is found first
2004-06-04 19:01:58 +00:00
Daniel Stenberg
e99d1e97de test 173 added: HTTP RFC1867-formpost a file from stdin with "faked" filename 2004-06-04 12:24:47 +00:00
Daniel Stenberg
1fb74b4fa2 fixed spell, removed reference to a 'tools' subdir in the curl dir, as we
don't have one
2004-06-04 07:21:12 +00:00
Daniel Stenberg
473f6ea9f0 Gnter Knauf's netware fix 2004-06-04 07:04:32 +00:00
Daniel Stenberg
0b04c52119 Gnter Knauf's netware build fixes 2004-06-04 07:02:30 +00:00
Daniel Stenberg
8383945acc 3rd party transfers are in CVS now 2004-06-04 06:48:58 +00:00
Daniel Stenberg
fce9d51122 updated a comment 2004-06-03 14:42:08 +00:00
Daniel Stenberg
7c3ee84295 updates 2004-06-03 14:41:44 +00:00
Daniel Stenberg
a8db25f48b the test targets won't invoke the test suite if curl is built cross-compiled.
Pointed out by Chris Gaukroger.
2004-06-03 14:38:07 +00:00
Daniel Stenberg
20705ca311 set an automake conditional for if this is a cross-compile or not 2004-06-03 14:37:14 +00:00
Daniel Stenberg
af33c6b549 deleted trailing whitespace 2004-06-03 13:03:57 +00:00
Daniel Stenberg
2b8775dff7 7.12.0 introduced IDN support 2004-06-03 11:43:21 +00:00
Daniel Stenberg
ea81dd9e2e Alexander Krasnostavsky's FTP third party transfer (proxy) support 2004-06-03 11:41:05 +00:00
Daniel Stenberg
7dcb102733 Mention the python-isque mailing list, don't mention the commit mailing lists
as they are probably very rarely intresting to the "common people" anyway.
2004-06-03 11:30:30 +00:00
Daniel Stenberg
aa0e32060e CURLE_FAILED_INIT is returend when an unknown option is set 2004-06-03 11:19:35 +00:00
Daniel Stenberg
2e8f37aca5 Added example of how to use the upcoming support for FTP 3rd party transfers 2004-06-03 11:15:27 +00:00
Daniel Stenberg
195d769c4b corrected to use the proxy user name for proxy auth, as was just bugfixed! 2004-06-03 10:42:53 +00:00
Daniel Stenberg
70f08b5baa Vincent Bronner made the code use the correct user name + password when
doing proxy authentication.
2004-06-03 10:42:20 +00:00
Daniel Stenberg
9e987ac6a2 getinfo.c is a new tiny example that uses curl_easy_getinfo() to get the
content-type after a transfer.
2004-06-03 09:20:48 +00:00
Daniel Stenberg
de03f172ad very minor format edit 2004-06-02 14:39:34 +00:00
Daniel Stenberg
0078944486 CURLOPT_PUT is deprecated 2004-06-02 14:06:49 +00:00
Daniel Stenberg
d3f796ac59 Made CURLOPT_UPLOAD and CURLOPT_PUT mean the same thing internally (the
previous difference was not clear nor documented properly). They can now both
be used interchangeably, but we prefer UPLOAD to PUT since it is a more
generic term.
2004-06-02 13:57:38 +00:00
Daniel Stenberg
3d38080d54 *seven* new options to support 3rd party FTP transfers 2004-06-02 13:51:36 +00:00
Daniel Stenberg
fe07962f9c 7.12.1-CVS in progress 2004-06-02 11:39:06 +00:00
Daniel Stenberg
938a72b2db Gisle's adjustments to allow building with lcc-win32 2004-06-02 11:36:07 +00:00
Daniel Stenberg
a8827b1ed6 Gisle made ftp_mkd static 2004-06-02 11:34:53 +00:00
Daniel Stenberg
ff40cd71ac and we start all over again 2004-06-02 11:31:36 +00:00
Daniel Stenberg
39626d8cfd 7.12.0 2004-06-02 09:03:02 +00:00
Daniel Stenberg
67ad29e716 more changes 2004-06-02 08:57:43 +00:00
Daniel Stenberg
8bbf9b13af Renaud Duhaut corrected the unescaping procedure 2004-06-01 08:33:15 +00:00
Daniel Stenberg
cb21851c74 David Byron made this use the mm lib by default, as was previously done. This
might be done differently in the future.
2004-06-01 08:09:43 +00:00
Daniel Stenberg
8d611bec6e --create-dirs clarification 2004-06-01 07:03:46 +00:00
Daniel Stenberg
1de1dc7314 minor edits 2004-05-28 11:16:09 +00:00
Daniel Stenberg
aca79af7de check for failing strdup()s 2004-05-28 09:56:59 +00:00
Daniel Stenberg
da6eea9b38 delete trailing whitespace 2004-05-28 09:52:15 +00:00
Daniel Stenberg
dcf7310b2d fixed curl_easy_duphandle() to properly clean up all memory if any memory
function fails and it returns NULL
2004-05-27 07:48:09 +00:00
Daniel Stenberg
c2e8ba0fba free() allocated memory when the ares search can't be made 2004-05-27 07:10:36 +00:00
Daniel Stenberg
a5360255ba clear the domains and sortlist when the 'channel' is first created so that
we can compare if non-NULL elsewhere
2004-05-27 07:10:02 +00:00
Daniel Stenberg
5690a2b493 better checks to avoid free(NULL) 2004-05-27 07:09:21 +00:00
Daniel Stenberg
ff0429a802 James Bursa's fix to prevent free(NULL) to occur 2004-05-27 06:42:48 +00:00
Daniel Stenberg
46cdc83b81 the CONNECT issue seems fixed too now 2004-05-26 14:32:15 +00:00
Daniel Stenberg
76dfef7117 Mohun Biswas added release-zlib and debug-zlib targets. 2004-05-26 11:49:28 +00:00
Daniel Stenberg
de2aeb9fc2 MSVC makefiles updated and an auth problem when using CONNECT 2004-05-26 10:35:01 +00:00
Daniel Stenberg
17a5b44205 curllib.dsp works in the latest snapshots 2004-05-26 10:32:48 +00:00
Daniel Stenberg
f99e347878 bugs, changes, sponsors! 2004-05-26 09:23:11 +00:00
Daniel Stenberg
f5a0c17322 updated with recent stuff 2004-05-26 09:19:46 +00:00
Daniel Stenberg
8442c3942d three new functions in the public API 2004-05-26 09:17:20 +00:00
Daniel Stenberg
15cd35f67f added example that makes an upload to a file:// url 2004-05-26 09:00:03 +00:00
Daniel Stenberg
459801d6e0 strip trailing whitespace 2004-05-26 08:58:25 +00:00
Daniel Stenberg
2c43d64302 Added a new 'bit' in the connect struct named 'tunnel_proxy' that is set
if a connection is tunneled through a proxy. A tunnel is done with CONNECT,
either when using HTTPS or FTPS, or if explicitly enabled by the app.
2004-05-26 08:54:36 +00:00
Daniel Stenberg
fd802db39f initial support for "uploading" to file:// URLs 2004-05-25 21:47:29 +00:00
Daniel Stenberg
765754d39d --proxy-basic added for completeness 2004-05-25 14:44:25 +00:00
Daniel Stenberg
f7f6b288eb removed some stuff that actually is done now, added the --optionseparator
idea (not really new, but its better to have it mentioned in here)
2004-05-25 14:39:53 +00:00
Daniel Stenberg
11ee9540bf Bug report #948950, excessive amount of file descriptors might crash libcurl 2004-05-25 14:28:44 +00:00
Daniel Stenberg
f6319bd706 Massimiliano Ziccardi's updates for the VC6 makefiles 2004-05-25 13:52:12 +00:00
Daniel Stenberg
0912015a5c preprocessor magic around the libidn idn_free() stuff to remain workable
both with older libidn versions without idn_free() and with libidn versions
that gets installed without idn-free.h
2004-05-25 12:00:15 +00:00
Daniel Stenberg
4e7575fc7a checl for the idn_free stuff to remain functionall even with older libidn
versions
2004-05-25 11:59:32 +00:00
Daniel Stenberg
6531a6116d remove trailing whitespace 2004-05-25 11:13:49 +00:00
Daniel Stenberg
9a33561e80 make one call instead of two 2004-05-25 07:51:06 +00:00
Daniel Stenberg
88229a0f2a new example proving that the debug callback works even when the multi
interface is used
2004-05-24 15:16:53 +00:00
Daniel Stenberg
120394cc45 remove trailing whitespace 2004-05-24 15:16:29 +00:00
Daniel Stenberg
1adfe0fe18 multi interface, debug callback 2004-05-24 15:12:37 +00:00
Daniel Stenberg
d57c178a62 delete trailing whitespace 2004-05-24 13:31:28 +00:00
Daniel Stenberg
6faa83bc6a if no errorbuffer string was provided when a return code was returned, use
the curl_easy_strerror() function to provide one
2004-05-24 13:27:48 +00:00
Daniel Stenberg
9fb4e019fa IDN is a recognized feature 2004-05-24 13:23:54 +00:00
Daniel Stenberg
74551597b1 fixed a reference 2004-05-24 13:21:31 +00:00
Daniel Stenberg
37c269d0ba meta-m runs delete-trailing-whitespace in curl-mode 2004-05-24 12:12:09 +00:00
Daniel Stenberg
5d8b526b80 delete trailing whitespace 2004-05-24 11:57:34 +00:00
Daniel Stenberg
83dcc3e061 delete trailing whitespace 2004-05-24 10:46:22 +00:00
Daniel Stenberg
4ed58463f7 better name 2004-05-24 09:01:45 +00:00
Daniel Stenberg
85b2056dc7 only idn_free() if built with libidn 2004-05-24 08:19:37 +00:00
Daniel Stenberg
94ca911dc1 delete trailing whitespace 2004-05-24 07:53:25 +00:00
Daniel Stenberg
24420c2191 Simon Josefsson added a idn_free() function in libidn 0.4.5 as a reaction to
Gisle's previous mail. We now use this function, and thus we require libidn
 0.4.5 or later. No earler version will do.
2004-05-24 07:40:00 +00:00
Daniel Stenberg
59f904d8de Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could
not be used both in one request. Fixed it and added test case 172 to verify.
2004-05-24 07:13:48 +00:00
Daniel Stenberg
755f98e768 While talking to host a.b.c, libcurl did wrongly not accept cookies that were
set to the domain .a.b.c (that is with a dot prefix). This is now fixed and
test case 171 verifies it.
2004-05-21 20:40:15 +00:00
Daniel Stenberg
aadc797225 quickfix to avoid division by zero, possibly we should go over all of these
once and for all
2004-05-21 12:23:53 +00:00
Daniel Stenberg
5c882bdfa3 fixed transfer speed math 2004-05-20 20:48:16 +00:00
Daniel Stenberg
60f9450594 calculate upload and download speed using doubles to keep precision.
deleted trailing whitespace
2004-05-20 20:35:42 +00:00
Daniel Stenberg
ff52ba7f7b NTLM requires SSL 2004-05-19 11:25:21 +00:00
Daniel Stenberg
0fbcea45d6 cert verify 2004-05-19 11:10:36 +00:00
Daniel Stenberg
ca6d430561 added test 170 2004-05-19 10:32:25 +00:00
Daniel Stenberg
91601b3bf4 David Byron's test case with -F that used to crash 2004-05-19 10:31:58 +00:00
Daniel Stenberg
cdd70596df killed trailing whitespace 2004-05-19 09:25:00 +00:00
Daniel Stenberg
7e186f9a63 just code formatting and killed whitespace 2004-05-19 09:24:18 +00:00
Daniel Stenberg
a94e117ede language! 2004-05-19 09:09:31 +00:00
Daniel Stenberg
662cb30372 Set CURLOPT_USERAGENT too 2004-05-19 09:08:19 +00:00
Daniel Stenberg
bd3aba5d6a The kill trailing whitespace needs to be set better as this way it takes
effect globally which isn't nice. Commented it out for now. Display trailing
whitespace still, to remind me.
2004-05-19 08:16:08 +00:00
Daniel Stenberg
29ed6d24bf simplified all die messages 2004-05-18 10:55:40 +00:00
Daniel Stenberg
e2c5c20896 simplified the automake failed message too 2004-05-18 09:25:46 +00:00
Daniel Stenberg
7c4b6cb0d9 make this script tell that this is the obsolete version, to make it possible
to detect
2004-05-18 09:22:41 +00:00
Daniel Stenberg
aced2904ff simplified the die-line when aclocal fails, the previous one confused
the netbsd shell
2004-05-18 09:02:38 +00:00
Daniel Stenberg
17eb1fca7c + when storing the address in the cache fails, cleanup the resolved address
properly
+ delete trailing whitespace
2004-05-18 07:35:37 +00:00
Daniel Stenberg
2511d1193a * seed_enough() was converted to a macro to avoid the IRIX compiler warning
about that passed-in argument not being used.
* killed trailing whitespace
2004-05-18 07:25:13 +00:00
Daniel Stenberg
e9056f5f95 if shrinking the buffer fails, use the older larger one 2004-05-17 22:07:43 +00:00
Daniel Stenberg
a9893ca79a Peter Sylvester's patch that addresses two flaws in the peer certificate name
verification:

- when multiple common names are used (as in the curl tests), the last name
needs to be selected.

- allow comparing with encoded values, at least with BMP and ISO latin1
encoded T61strings.
2004-05-17 22:01:16 +00:00
Daniel Stenberg
f39f7c28f0 'make test-torture' in the root now runs a full torture test 2004-05-17 10:54:00 +00:00
Daniel Stenberg
a807065ccc removed debug output and trailing whitespace 2004-05-17 10:53:34 +00:00
Daniel Stenberg
67532e916c grrr, fix the check again if no ftp server at all is running 2004-05-17 10:51:51 +00:00
Daniel Stenberg
3920b4dae8 torture testing and a moved CVS repo 2004-05-17 10:39:44 +00:00
Daniel Stenberg
d70a335dce new Curl_done() proto 2004-05-17 08:07:07 +00:00
Daniel Stenberg
8001921112 I made Curl_done() take a pointer-pointer in the first argument instead, and
if the connection is killed it blanks the pointer it points to, to make it
easier to detect usage problems whereever Curl_done() is used.
2004-05-17 08:05:46 +00:00
Daniel Stenberg
d7cb09bd18 better bailing out on memory failure 2004-05-17 08:04:42 +00:00
Daniel Stenberg
e11710714c When waiting for the second connect, we now use alarm to timeout the waiting.
This is necessary in case the client never connects or somehow fails to do
it timely. The timeout used now is only 2 seconds, which might cause problems
on really slow hosts but longer times are painful when doing torture testing
on FTP test cases.

I'm not sure how this 'alarm' functionality works on Windows or other systems
that don't actually have the alarm() function.
2004-05-17 08:02:23 +00:00
Daniel Stenberg
5b0bfc298f improved the check for our own ftp server 2004-05-17 07:59:10 +00:00
Daniel Stenberg
0383f7f19d modified to not leak memory if a libcurl function returns failure, for better
memory leak detection
2004-05-17 07:45:20 +00:00
Daniel Stenberg
23a43c6e0f Seshubabu Pasam's format fixes and added notes about DER not working for
some (SSL-)options.
2004-05-17 07:12:32 +00:00
Daniel Stenberg
eb946690d2 make it not leak memory when it returns prematurely 2004-05-17 06:55:04 +00:00
Daniel Stenberg
c090fdbdf1 automatically delete trailing white space on save in curl-mode 2004-05-17 06:54:20 +00:00
Daniel Stenberg
de279099e5 bail out nicely if strdup() returns NULL, removed trailing whitespace 2004-05-17 06:53:41 +00:00
Daniel Stenberg
6bd8db3c99 deleted trailing whitespace 2004-05-17 06:50:32 +00:00
Daniel Stenberg
6176f14141 fixed a warning on IRIX, deleted trailing whitespace 2004-05-17 06:50:08 +00:00
Daniel Stenberg
512e54ff85 added string for the new share error code 2004-05-14 11:46:35 +00:00
Daniel Stenberg
a5aa569fe3 Added CURLSHE_NOMEM 2004-05-14 09:30:31 +00:00
Daniel Stenberg
e2e593a036 clean up properly on failure to enable easier libcurl leak detection 2004-05-14 09:22:12 +00:00
Daniel Stenberg
9ce0a7b49d new cvs instructions 2004-05-14 09:21:42 +00:00
Daniel Stenberg
4ab0d74250 enable memory debugging the same way the curl command line tool already does 2004-05-14 08:40:33 +00:00
Daniel Stenberg
b5f85ba77d memory cleanup and check fix 2004-05-13 15:19:02 +00:00
Daniel Stenberg
b6ee33c6e1 check that memory allocation functions truly return good data or bail out 2004-05-13 15:18:29 +00:00
Daniel Stenberg
1c69b15c7c return on memory alloc fail 2004-05-13 15:17:49 +00:00
Daniel Stenberg
54cd2bee58 better bailing out in case of no memory 2004-05-13 15:17:07 +00:00
Daniel Stenberg
5bf02b16a0 curl_free() doesn't free(NULL) but just returns 2004-05-13 15:16:36 +00:00
Daniel Stenberg
594cb8507b deal with input arguments as NULL 2004-05-13 15:16:10 +00:00
Daniel Stenberg
78aba6e4cd return CURLDIGEST_NOMEM when a memory function fails to deliver 2004-05-13 14:14:03 +00:00
Daniel Stenberg
ccdcdb2a46 mark a value as alloced when strdup()ed to prevent memory leaks 2004-05-13 14:13:12 +00:00
Daniel Stenberg
b121e41ec3 bail out when no memory occurs 2004-05-13 14:12:49 +00:00
Daniel Stenberg
05d8e56ffd Gisle Vamem reintroduced the verifyconnect() call on windows as well, and
we now use it to provide more info back on connect failures.
2004-05-13 10:40:17 +00:00
Daniel Stenberg
4345c7a712 Gisle: minor fix 2004-05-13 10:38:57 +00:00
Daniel Stenberg
12d5e33dc9 no more Curl_ldap_done 2004-05-13 10:38:37 +00:00
Daniel Stenberg
6d70a82757 Added two two missing header files I missed when I removed the noinst_HEADERS 2004-05-13 09:01:15 +00:00
Daniel Stenberg
47d52d4eca added https.c 2004-05-13 08:23:09 +00:00
Daniel Stenberg
4973b0f88a basic https fetching script 2004-05-13 08:22:40 +00:00
Daniel Stenberg
d1542bf549 made 'runtests.pl -t' run over all the tests just like other command lines
Also made -t imply -n to disable valgrind, it runs sloooow otherwise.

This now manages to run all tests OK up to test case 100 (the first FTP one)
for me.
2004-05-13 07:52:33 +00:00
Daniel Stenberg
2b7727aad1 James Bursa's patch to avoid free(NULL) (mainly because the libcurl memdebug
system thinks free(NULL) is badness)
2004-05-13 06:53:29 +00:00
Daniel Stenberg
fd775454ca Check that memory functions return non-NULL or return error. 2004-05-12 13:24:40 +00:00
Daniel Stenberg
8e09a389c4 make sure the returned pointer is NULL when encoding fails 2004-05-12 13:23:17 +00:00
Daniel Stenberg
aa3ae01878 clean up and return better on out of memory 2004-05-12 13:05:01 +00:00
Daniel Stenberg
c123676825 return NULL on out of memory 2004-05-12 13:04:30 +00:00
Daniel Stenberg
d60c22572b Curl_done() and the protocol-specific conn->curl_done() functions now all
take a CURLcode as a second argument, that is non-zero when Curl_done()
is called after an error was returned from Curl_do() (or similar).
2004-05-12 12:06:39 +00:00
Daniel Stenberg
1d7ce36791 return faster when we "hit a wall" while printfing 2004-05-12 12:05:13 +00:00
Daniel Stenberg
34e8baab9a general cleanup to bail out nice and clean when a memory function fails
to deliver
2004-05-12 12:04:38 +00:00
Daniel Stenberg
a219d774fe even if Curl_do() fails, we must call Curl_done() to do proper cleaning up 2004-05-12 09:02:54 +00:00
Daniel Stenberg
005042e973 improved cleaning up in case of memory allocation failures 2004-05-12 09:02:23 +00:00
Daniel Stenberg
d301d69fbf bail out if we can't allocate the new range string, and make use of aprintf()
instead of using snprintf() + strdup().
2004-05-12 08:26:56 +00:00
Daniel Stenberg
34af02caca Disable memdebug for the allocs done by the app, unless CURLTOOLDEBUG is
defined (which it never is atm).

Now, we can focus on making 'runtests -t [num]' work on all test cases and
we should never leak nor crash.
2004-05-12 08:22:04 +00:00
Daniel Stenberg
91025d1dd6 new man page 2004-05-12 08:10:25 +00:00
Daniel Stenberg
c9bab31a7f use size_t better for buffer and alloc lengths 2004-05-12 08:00:21 +00:00
Daniel Stenberg
2f60e91a9b removed another jhrg-reference in a comment 2004-05-12 07:56:01 +00:00
Daniel Stenberg
018affe6d0 Edited comments only. 2004-05-12 07:55:05 +00:00
Daniel Stenberg
aeb27ccfdb The Curl_unencode_XXX_write() function take a ssize_t as third argument, so
we typecast on invoke.
2004-05-12 07:54:44 +00:00
Daniel Stenberg
939866faab Left-over from before the return-code fix. This is probably the code that
causes xlc and gcc act differently on AIX.
2004-05-12 06:27:40 +00:00
Daniel Stenberg
98f968f2ee fixed Curl_open() to not leak anything if one malloc() fails, fix by
James Bursa only modified by me.
2004-05-11 21:17:03 +00:00
Daniel Stenberg
864f1a3366 - Nico Stappenbelt reported that when processing domain and search lines in
the resolv.conf file, the first entry encountered is processed and used as
  the search list. According to the manual pages for both Linux, Solaris and
  Tru64, the last entry of either a domain or a search field is used.
2004-05-11 21:12:10 +00:00
Daniel Stenberg
f42b10242f revert the accidentally added use of strace 2004-05-11 18:57:03 +00:00
Daniel Stenberg
853134017d minor leak in case of error, thanks to "./runtests.pl -n -t 25" 2004-05-11 14:53:24 +00:00
Daniel Stenberg
d3999e06d1 clear up memory on failure a little better 2004-05-11 14:48:53 +00:00
Daniel Stenberg
0b0b37cffe make the libidn pointer in the version struct a const 2004-05-11 14:22:51 +00:00
Daniel Stenberg
a13f5888d5 they're at least 36 functions now 2004-05-11 14:21:34 +00:00
Daniel Stenberg
c8807438ce updated to reflect reality! 2004-05-11 14:15:49 +00:00
Daniel Stenberg
3f106afd00 cut out the changelog, it is far from accurate anyway 2004-05-11 12:22:50 +00:00
Daniel Stenberg
d925057e11 added curl_global_init_mem 2004-05-11 11:48:09 +00:00
Daniel Stenberg
bbafb2eb27 curl_global_init_mem() allows the memory functions to be replaced.
memory.h is included everywhere for this.
2004-05-11 11:30:23 +00:00
Daniel Stenberg
434bc13812 *** empty log message *** 2004-05-11 11:29:31 +00:00
Daniel Stenberg
5c592f7dd9 Make this source code use our internal *printf().
Also some minor edits.
2004-05-11 11:29:02 +00:00
Daniel Stenberg
9bf1ba2f7e Added recent events to the log 2004-05-11 08:10:32 +00:00
Daniel Stenberg
724e4a3585 more changes, more news, more people 2004-05-11 08:10:15 +00:00
Daniel Stenberg
f69711fc78 another official download mirror 2004-05-11 08:09:56 +00:00
Daniel Stenberg
04e2520dbb new attempt at an improved DSP-file generation 2004-05-11 07:54:55 +00:00
Daniel Stenberg
7a35fb5403 slightly better dealing of bad mem situations 2004-05-10 14:45:11 +00:00
Daniel Stenberg
63f97b38eb Moved the fetching of the list of matching cookies to make it easier to free
that list in case something goes wrong in the function and we must bail out.
Courtesy of the torture testing.
2004-05-10 14:22:20 +00:00
Daniel Stenberg
b8541929c8 curl_slist_append() fixed to clear up properly if a memory function fails 2004-05-10 14:21:19 +00:00
Daniel Stenberg
329f17ac7c better detect if/when curl_slist_append() returns failure, and bail out
accordingly
2004-05-10 14:04:35 +00:00
Daniel Stenberg
5dcab07c54 if a malloc fails, clear up the memory and return failure 2004-05-10 14:04:06 +00:00
Daniel Stenberg
1f798affb9 typo 2004-05-10 10:52:29 +00:00
Daniel Stenberg
a2ecdf4249 the aprintf() versions now return NULL if _any_ alloc along the way failed,
previously they could return a piece of the string, making it impossible
for the caller to detect errors.
2004-05-10 10:50:43 +00:00
Daniel Stenberg
71fdc063bd better detection for when add_buffer() returns failure, and return when that
happens
2004-05-10 10:49:35 +00:00
Daniel Stenberg
887d78a9ad Curl_hash_add() was modified to clear up better in case of internal failure.
When failing, it should not tamper at all with the data it was supposed to
add to the cache.
2004-05-10 09:17:50 +00:00
Daniel Stenberg
00557a5475 checkpasswd() prevents segfault by checking that input argument is non-NULL 2004-05-10 09:16:21 +00:00
Daniel Stenberg
e18d27b78a James Bursa's adjustments to make the -t option work for any test case.
The -t is the "torture" test that first runs the test and counts the number
of allocations performed during it, then it runs the test repeatedly over and
over again and makes alloc number N fail to verify that we detect and return
properly from error cases everywhere.
2004-05-10 09:01:45 +00:00
Daniel Stenberg
228fea4628 make Curl_llist_insert_next() fail properly if malloc() fails 2004-05-10 08:57:37 +00:00
Daniel Stenberg
e64dacb40e better checking that strdup() works 2004-05-10 08:57:18 +00:00
Daniel Stenberg
fff01f24bf Luca fixed the nc= in the digest line since it apparantly should not have
quotes...
2004-05-10 08:09:15 +00:00
Daniel Stenberg
e55dee3807 James Bursa added better error checking for failer memory calls when
building formposts
2004-05-10 07:11:52 +00:00
Daniel Stenberg
8c2ce33c0b build curllib.dsp from these 2004-05-10 07:03:46 +00:00
Daniel Stenberg
135394f511 don't use -i when checking for our own server 2004-05-10 06:29:52 +00:00
Daniel Stenberg
fe065dc851 James' and Gisle' reports/fixes 2004-05-07 20:08:38 +00:00
Daniel Stenberg
445c7791a7 James Bursa changed two error message to use the display-name instead of the
internally-used name.
2004-05-07 18:56:33 +00:00
Daniel Stenberg
686ba84128 James Bursa's fix to make this deal with malloc(0) as OK to free() 2004-05-07 18:54:09 +00:00
Daniel Stenberg
3394c01826 We don't support any long protocol names so we can use a smaller buffer.
Also, make sure we have room for the trailing zero, only scan to size-1.

Gisle Vanem reported.
2004-05-07 18:46:28 +00:00
Daniel Stenberg
d67ea8c7ad count the formdata size using a 64bit size if avaialble 2004-05-07 09:50:49 +00:00
Daniel Stenberg
535046430a Made the lib/curllib.dsp file get generated automaticly 2004-05-07 09:45:33 +00:00
Daniel Stenberg
9aebdff219 don't use a magic define name 2004-05-07 09:42:23 +00:00
Daniel Stenberg
90da930131 This file is now generated at dist-time. 2004-05-07 09:41:28 +00:00
Daniel Stenberg
fbdc1b1e3d Generate curllib.dsp on dist.time from msvcproj.head msvcproj.foot and the
known source files. Not actually verified to work yet.
2004-05-07 09:41:05 +00:00
Daniel Stenberg
e942df755b get the display host name properly 2004-05-07 06:18:47 +00:00
Daniel Stenberg
91c8be3628 removed two odd comments 2004-05-06 15:17:10 +00:00
Daniel Stenberg
d56c03840b little fixes 2004-05-06 15:11:16 +00:00
Daniel Stenberg
d3d5cdf305 removed the warning if libidn isn't found 2004-05-06 15:05:23 +00:00
Daniel Stenberg
af43ce73e5 very minor output change 2004-05-06 15:04:04 +00:00
Daniel Stenberg
84b52e92f4 simplied the creation of new urls 2004-05-06 13:29:04 +00:00
Daniel Stenberg
0aa7d11cc9 %ld for long 2004-05-06 13:21:32 +00:00
Daniel Stenberg
933f7cecae int/long fix 2004-05-06 12:44:08 +00:00
Daniel Stenberg
8e73e55336 Michael Benedict brought a fix that fills in the errorbuffer properly
when ares fails to resolve a name. This was fixed before but somehow has
fallen out again!
2004-05-06 11:10:51 +00:00
Daniel Stenberg
55c015c136 typo AGAIN 2004-05-06 11:02:50 +00:00
Daniel Stenberg
bde6c6685e When using the icc compiler, we also ignore remark #1418 "external definition
with no prior declaration" since this is a habit we have in the code.
2004-05-06 10:58:57 +00:00
Daniel Stenberg
58387b91f9 printf %s with plain 'char *', not unsigned ones to silence icc's picky
warnings
2004-05-06 10:57:07 +00:00
Daniel Stenberg
6f74820cfc if no strerror_r prototype is found, we provide our own to prevent picky
compilers to warn
2004-05-06 10:49:40 +00:00
Daniel Stenberg
af72f198ba removed the unused 'len' variable, made use of the ptr pointer even if no
extra lib is used to prevent compiler warnings ("variable set but not used")
on that case
2004-05-06 07:32:30 +00:00
Daniel Stenberg
3fc831f9eb typecast the unsigned long to plain long to prevent compiler warnings 2004-05-06 07:24:47 +00:00
Daniel Stenberg
9f660862ec unused variable removed 2004-05-06 07:22:32 +00:00
Daniel Stenberg
1354671c90 use %ld to printf now.tv_sec 2004-05-06 07:21:19 +00:00
Daniel Stenberg
1175a226e3 curlx.h is a header to add to the release archive(s) 2004-05-06 07:19:58 +00:00
Daniel Stenberg
358b72bb12 fixed typo 2004-05-05 20:12:59 +00:00
Daniel Stenberg
6c408c885a Temporary disable the logic that runs gdb on a core dump, as it can't blindly
assume that the curl file is a proper binary, it is often a script file
produced by libtool.
2004-05-05 14:34:35 +00:00
Daniel Stenberg
9cf04dff6a hm, avoid division by zero more carefully with that new percentage math 2004-05-05 14:22:46 +00:00
Daniel Stenberg
6bdcfecbcf Joe Halpin fixed the warning on the typecast from data pointer to function
pointer!
2004-05-05 14:08:52 +00:00
Daniel Stenberg
3f21fe60fc Gisle fixed the percentage to work, I adjusted it slightly to not as easily
overflow on 32bit filesize-systems
2004-05-05 13:44:44 +00:00
Daniel Stenberg
b2c290e40e Gisle-fix: constified the 'interface' argument. 2004-05-05 13:42:23 +00:00
Daniel Stenberg
bc5b2fa12c Gisle fix: curl_formparse is gone. 2004-05-05 13:42:05 +00:00
Daniel Stenberg
32a9554c92 Gisle fixed: don't reference 'mem' if it's NULL. 2004-05-05 13:41:54 +00:00
Daniel Stenberg
afc1ed60f7 initiate variables properly to default to no auth for server and proxy 2004-05-05 13:00:03 +00:00
Daniel Stenberg
91018f4f24 AC_CHECK_TOOL is prolly better to use when checking for ar 2004-05-05 10:26:51 +00:00
Daniel Stenberg
fb086b57a8 slightly odd fix to prevent -Wunreachable-code to warn 2004-05-05 09:20:08 +00:00
Daniel Stenberg
3fc39a6efb alert the user if 'sed' or 'ar' couldn't be found, as it might very well
render a build impossible
2004-05-05 09:17:53 +00:00
Daniel Stenberg
6062ac7c37 made the progress meter display not overflow even if _very_ large files
are transfered. The maximum size we support now is 8 exabytes, which equals
to 8192 petabytes...
2004-05-05 08:43:23 +00:00
Daniel Stenberg
caf7854a3c if the values allow it, avoid floting point math for the current speed 2004-05-05 07:45:21 +00:00
Daniel Stenberg
6def0892ea additional typecasts in an attempt to avoid compiler warnings when switching
from 64 bit types to 32 bit ones
2004-05-05 07:30:52 +00:00
Daniel Stenberg
1c0744bde6 removed bad free() 2004-05-05 07:20:08 +00:00
Daniel Stenberg
7591e07b7c do the alarm time-left math using unsigned longs since that is what alarm()
returns and uses as input and converting to signed generates warnings and
actually risks loss of accuracy
2004-05-05 07:17:37 +00:00
Daniel Stenberg
35ab93f484 fix_hostname() now (void)s the conn argument to prevent warnings on non-idn
enabled builds
2004-05-05 07:08:31 +00:00
Daniel Stenberg
dcf5e52b62 ERR_error_string() returns an unsigned long so we should use one of those
for the return code
2004-05-05 07:01:33 +00:00
Daniel Stenberg
aae521d086 gcc 3.4 now uses the -Wunreachable-code option, I believe we can make older
ones use this too...
2004-05-05 06:59:27 +00:00
Daniel Stenberg
78e6508e22 check the size of size_t for lib/mprintf.c 2004-05-05 06:57:49 +00:00
Daniel Stenberg
4d9517f0b4 prevent warnings when using the gcc option -Wunreachable-code 2004-05-05 06:57:26 +00:00
Daniel Stenberg
a331aa0221 make the memlimit final NULL return get written to stderr as wella 2004-05-05 06:57:04 +00:00
Daniel Stenberg
679cabb532 mention the LICENSE-MIXING document 2004-05-05 06:12:24 +00:00
Daniel Stenberg
7332350e85 minor update edits 2004-05-05 06:11:57 +00:00
Daniel Stenberg
69f4dda74a added a third URL to the torture testing, this one also hangs at some point
for a reason I don't know
2004-05-05 06:11:13 +00:00
Daniel Stenberg
c19c3bd15a multipart formposts should be more streamy 2004-05-04 14:36:29 +00:00
Daniel Stenberg
76ff92b811 bail out when an add_buffer() function returns failure 2004-05-04 14:27:07 +00:00
Daniel Stenberg
4250637e7d improved the cleaning up of memory when we fail to resolve names due to
out of memory (thanks to 'runtests.pl -t')
2004-05-04 13:40:30 +00:00
Daniel Stenberg
08d1da106e check malloc() return code 2004-05-04 13:39:24 +00:00
Daniel Stenberg
9e31a0536e removed more leftovers from the formparse function 2004-05-04 09:31:04 +00:00
Daniel Stenberg
2960d37d71 removed curl_formparse() from the library 2004-05-04 08:24:13 +00:00
Daniel Stenberg
c63af5fc01 Gisle made item 38, now there's only one low-prio task left... 2004-05-04 07:54:08 +00:00
Daniel Stenberg
fc6eff13b5 General HTTP authentication cleanup and fixes 2004-05-04 07:52:53 +00:00
Daniel Stenberg
e7ee1ccf45 Gisle fixed the problem with ldap_search_s() fails with "filter error": a case
of using 'lud_filter' after freeing 'lud_dn'.
2004-05-03 15:01:34 +00:00
Daniel Stenberg
98bf69f8f1 improved the name of the test 2004-05-03 14:57:58 +00:00
Daniel Stenberg
0363fbc411 Added --proxy-digest, added the standard curl source header to this file. 2004-05-03 14:55:31 +00:00
Daniel Stenberg
e3bc92ae53 fixed the pdf and html for the strerror functions 2004-05-03 14:40:22 +00:00
Daniel Stenberg
27e76021e9 Added support for --proxy-digest 2004-05-03 11:56:18 +00:00
Daniel Stenberg
93dde29979 don't free(NULL) 2004-05-03 09:17:49 +00:00
Daniel Stenberg
d42dcd60cd Gisle Vanem:
Patch for ldap.c under Windows. It works with wldap32.dll as supplied with
Win-98/ME/2000/XP, so no extra .dlls are required.  I've mostly tested it
against Verisign's ldap server. Added code in the case there are to many
responses (rc = LDAP_SIZELIMIT_EXCEEDED) and print only those we got. E.g.

curl
ldap://directory.verisign.net/?cn,display-name,mail,info?subtree?(cn=*Nelson*)

will print the first 10 results.

My only problem with it is that ldap_search_s() fails with "filter error" when
CURLDEBUG is defined ?! Maybe someone can spot the error.
2004-05-03 09:14:12 +00:00
Daniel Stenberg
ade89799f5 mucho 2004-04-30 10:55:57 +00:00
Daniel Stenberg
6e118ce50f Display "exit OK" when the exit code has been verified to be OK, and added
initial basic valgrind-log scan for memory leaks it could detect.
2004-04-30 10:37:40 +00:00
Daniel Stenberg
34be9df773 deprecated functions 2004-04-30 10:34:54 +00:00
Daniel Stenberg
7356a67780 25 and 37 are now done, only two low-prio tasks left for the 7.12 release 2004-04-30 09:17:04 +00:00
Daniel Stenberg
f77949ef3b recent changes 2004-04-30 08:52:11 +00:00
Daniel Stenberg
26b8b3fc53 updated with more and new info 2004-04-30 08:51:19 +00:00
Daniel Stenberg
38cc79a54f these functions are marked to get removed from the public API "soon" 2004-04-30 08:38:08 +00:00
Daniel Stenberg
ec113aefb9 use the new lib/curlx.h header and modified the code to use all to-become-
curlx_-functions with the new prefix to prepare this code for the future
removal of several curl_-functions from the public libcurl API.
2004-04-30 08:23:50 +00:00
Daniel Stenberg
913e1570bd New header file that offers easy access to the curlx_ functions for an app.
curlx_ functions are NOT part of the offical API, but only available as source
code functions from the lib directory in case of need.
2004-04-30 08:22:38 +00:00
Daniel Stenberg
e2aaf22d5d support the new libcurl IDN feature, also a first attempt to display a stack
trace if a test results in a 'core' file and gdb is present
2004-04-30 08:03:07 +00:00
Daniel Stenberg
3304589043 idn is a new feature that can be made required for a test 2004-04-30 08:00:42 +00:00
Daniel Stenberg
0247642bb6 added test 166, formpost with white space in file name 2004-04-30 06:46:34 +00:00
Daniel Stenberg
19f5aa165c make the contents able to be any data, the previous stopped at white space 2004-04-30 06:45:53 +00:00
Daniel Stenberg
1756499b11 oops, a bad strtok() was fixed by Luca 2004-04-30 05:53:42 +00:00
Daniel Stenberg
15f9a93c25 include the full size of the sent response in the log 2004-04-30 05:51:37 +00:00
Daniel Stenberg
e99287734b Gisle fixed the counting of calloc()s 2004-04-29 14:33:19 +00:00
Daniel Stenberg
8349dde0f1 Introducing IDN host name testing. Test case 165 requires an IDN-capable
libcurl.
2004-04-29 13:43:04 +00:00
Daniel Stenberg
59907ebc0e fixed the host/proxy name issue when re-using a connection and made IDN names
work when using proxy by converting the IDN-name to the ACE-encoded version
before the request-URL is passed to the proxy.
2004-04-29 13:41:48 +00:00
Daniel Stenberg
da91d6ac66 remove newline from matching pattern 2004-04-29 13:31:57 +00:00
Daniel Stenberg
7548115a0e ignore cnonce lines too as they are based on the current time and will differ
from time to time!
2004-04-29 13:24:50 +00:00
Daniel Stenberg
8ca37dd1c7 encode the correct name 2004-04-29 11:57:52 +00:00
Daniel Stenberg
31e9e4bb76 curl_easy_duphandle() works again with ares enabled 2004-04-29 10:58:22 +00:00
Daniel Stenberg
84a322ab23 test 512 does some basic curl_easy_duphandle() testing 2004-04-29 10:57:10 +00:00
Daniel Stenberg
707f217b2d new test case for a simple curl_easy_duphandle() test 2004-04-29 10:56:22 +00:00
Daniel Stenberg
e6b45a66ec updated to work with the new Digest code 2004-04-29 10:47:13 +00:00
Daniel Stenberg
b34c40dcf5 Luca Altea's major HTTP Digest update 2004-04-29 08:18:32 +00:00
Daniel Stenberg
699ebe2f0b Gisle made the code use ERR_error_string_n() 2004-04-29 07:36:40 +00:00
Daniel Stenberg
e1c6f216c2 the new way of accessing the host name 2004-04-28 20:34:04 +00:00
Daniel Stenberg
630b73bfa8 Added LICENSE-MIXING to the release archive 2004-04-27 18:31:35 +00:00
Daniel Stenberg
877f16e5a5 IDN: Gisle Vanem made the win32 version handle a missing CHARSET environment
and then figure it out with a suitable windows call.
2004-04-27 15:19:28 +00:00
Daniel Stenberg
fbe1fa9dcc outputed elsewhere already 2004-04-27 15:13:46 +00:00
Daniel Stenberg
5b65cc55a2 idn stuff in code and configure script 2004-04-27 14:22:58 +00:00
Daniel Stenberg
97769737d0 we released yesterday, we have heaps of new stuff today! :-) 2004-04-27 14:22:40 +00:00
Daniel Stenberg
5b0a5c4050 provide our own inet_ntoa_r() proto if the system has none on its own 2004-04-27 14:17:36 +00:00
Daniel Stenberg
4b9f8e766d Made host name and proxy name get stored in a 'struct hostname' and set
all things up to work with encoded host names internally, as well as keeping
'display names' to show in debug messages. IDN resolves work for me now using
ipv6, ipv4 and ares resolving. Even cookies on IDN sites seem to do right.
2004-04-27 13:56:23 +00:00
Daniel Stenberg
96002646f1 without-libidn works too now 2004-04-27 12:08:53 +00:00
Daniel Stenberg
5ef6904ec3 hugehelp.c fix, without-ssl fix 2004-04-27 11:16:46 +00:00
Daniel Stenberg
2f53da5e7a make the loop use a fixed number of attempts to prevent eternal loops 2004-04-27 10:59:43 +00:00
Daniel Stenberg
58f1cc0b5f added curl_*_strerror 2004-04-27 07:05:40 +00:00
Daniel Stenberg
98c70b73f2 added doctype tag to get HTML compliant 2004-04-27 07:05:22 +00:00
Daniel Stenberg
6bd02a3ab5 We now make sure to only scan for SSL options with pkg-config if we haven't
disabled SSL with --without-ssl. This previously made the Makefiles use
the SSL libs even though told not to.
2004-04-26 22:13:36 +00:00
Daniel Stenberg
372e7a6cd4 Include "setup.h" and not "config.h" since setup.h is made to include
the correct config.h for the platform, and when this is done the USE_MANUAL
define is properly known.
2004-04-26 21:15:48 +00:00
Daniel Stenberg
211004bb0d my nroff 1.18.1 complained the URL as it contains a nroff combo somehow
and when I modified it slightly the warning dissappeared...
2004-04-26 21:12:10 +00:00
Daniel Stenberg
80d2fff1a1 oops, .obj not .c! 2004-04-26 20:41:33 +00:00
Daniel Stenberg
cf3cf413c8 improved libidn detection to correct the false positives we got 2004-04-26 15:31:43 +00:00
Daniel Stenberg
e218811ca3 made the verbose connect use the proper host name string even when using
a proxy
2004-04-26 15:19:55 +00:00
Daniel Stenberg
a9f2274bd8 NI_MAXHOST is not generally available, we use plain 256 bytes for the hostname
instead, its only for debug verbose output anyway
2004-04-26 15:14:19 +00:00
Daniel Stenberg
92179ff990 corrected mistake 2004-04-26 15:11:56 +00:00
Daniel Stenberg
4aac210a83 Gisle fixed a mistaken check 2004-04-26 14:18:42 +00:00
Daniel Stenberg
245e3122df Made defines instead of plain numbers for the Curl_resolv() return code to
make the code easier to read
2004-04-26 14:18:00 +00:00
Daniel Stenberg
ffc5fa3a2b typedef CURL in the curl.h file instead of only having a single useful typedef
in the separate types.h
2004-04-26 14:06:51 +00:00
Daniel Stenberg
f5042cce34 IDN adjustments and host cleanups by Gisle 2004-04-26 14:03:25 +00:00
Daniel Stenberg
712c67b4ae no longer include curl/types.h, it serves no purpose 2004-04-26 14:02:51 +00:00
Daniel Stenberg
5dcfb8ad66 ignore the curl/types.h header file 2004-04-26 14:02:01 +00:00
Daniel Stenberg
673ff5eb2c Moved down the ares check again to the bottom of the script since it
modified the compiler and link options so nothing can be tested for after
this check, as the c-ares lib might not have been built yet!
2004-04-26 13:42:39 +00:00
Daniel Stenberg
92fc3f07ba added the new files to the build 2004-04-26 12:33:14 +00:00
Daniel Stenberg
cff90cf3f9 "configure summary" 2004-04-26 12:29:30 +00:00
Daniel Stenberg
a33c53a36b Removed the FTPS test cases, they only annoy us as they don't work for anyone
anywhere. We need to write a better ftps-server for test purposes and then
we can re-introduced FTPS tests.
2004-04-26 12:04:34 +00:00
Daniel Stenberg
2370d4fa02 Curl_ip2addr() now takes an in_addr_t argument instead to prevent compiler
warnings
2004-04-26 12:02:33 +00:00
Daniel Stenberg
f128d904a5 removed assignment of variable never used 2004-04-26 11:56:05 +00:00
Daniel Stenberg
fb1039f2ab Tor Arntsen fixed a 'Statement not reachable'-warning 2004-04-26 11:52:43 +00:00
Daniel Stenberg
923ce98e42 Kim Karlsson pointed out that error 57 was wrongly documented 2004-04-26 09:28:02 +00:00
Daniel Stenberg
8e935b58a2 TommyTam made a patch to handle stdin redirection for win32. 2004-04-26 07:50:51 +00:00
Daniel Stenberg
c93e972543 some fixed, one removed, edited some. 7.12.0 in progress. 2004-04-26 07:47:16 +00:00
Daniel Stenberg
1cb66f5262 the recent commits explained 2004-04-26 07:26:16 +00:00
Daniel Stenberg
648e82f05d Major hostip.c cleanup and split into multiple files and easier #ifdef
usage.
2004-04-26 07:20:11 +00:00
Daniel Stenberg
1dbe60b8b7 supports showing "IDN" as a libcurl feature, now outputs the features
in alphabetical order
2004-04-26 07:14:47 +00:00
Daniel Stenberg
9631fa7407 added libidn awareness 2004-04-26 07:14:08 +00:00
Daniel Stenberg
9befc682ee added many comments 2004-04-26 07:12:52 +00:00
Daniel Stenberg
fbeb674479 major update of the error strings 2004-04-26 07:12:29 +00:00
Daniel Stenberg
af641d20a7 added comments 2004-04-26 07:11:39 +00:00
Daniel Stenberg
d02587750c added function headers and comments 2004-04-26 07:11:06 +00:00
Daniel Stenberg
241a4b3d45 --with-libidn[=PATH] is now supported 2004-04-26 07:08:36 +00:00
Daniel Stenberg
496e81a25a the next release is planned to become 7.12.0 2004-04-26 07:04:40 +00:00
Daniel Stenberg
f39b081253 start all over again 2004-04-26 07:03:51 +00:00
Daniel Stenberg
c96f7f13da 7.11.2 coming today 2004-04-26 06:05:49 +00:00
Daniel Stenberg
1bdc4b2006 updated the warning text when SSL is explicitly disabled 2004-04-25 15:23:23 +00:00
Daniel Stenberg
3915fecf80 USE_MANUAL is now defined by default 2004-04-25 15:21:16 +00:00
Daniel Stenberg
f94f06825c moved older changes to the CHANGES.2003 file 2004-04-25 08:33:06 +00:00
Daniel Stenberg
2ddbf8975a disable-manual 2004-04-25 08:19:55 +00:00
Daniel Stenberg
68a3cbe384 make the generated hugehelp.c file use the USE_MANUAL define so that it
will be properly built with configure --disable-manual even if the source
file is already present
2004-04-25 08:13:07 +00:00
Daniel Stenberg
b9432d1296 test164 HTTP range with multiple ranges 2004-04-24 09:33:25 +00:00
Daniel Stenberg
e202a29a9a removed a memory leak when doing a windows threaded resolve and it failed 2004-04-23 14:10:29 +00:00
Daniel Stenberg
3755bffcc2 Gisle Vanem found and fixed a memory leak when doing (failing) Windows
threaded name resolves.
2004-04-23 14:04:30 +00:00
Daniel Stenberg
2a0a305300 only a minor comment/format change 2004-04-23 11:00:47 +00:00
Daniel Stenberg
70e2aadc18 Replaced Curl_FormReadOneLine with Curl_formpostheader as that is the only use
for it. It saves one extra copy of the header.

I also added comments for several functions in formdata.c
2004-04-23 10:37:52 +00:00
Daniel Stenberg
a1c8aaf666 o --proxy-ntlm now checks if libcurl supports NTLM before using it
o minor --fail with authentication bugfix
2004-04-23 08:50:28 +00:00
Daniel Stenberg
8ee470aaeb --proxy-ntlm fix and test case 163 2004-04-23 08:47:20 +00:00
Daniel Stenberg
37e4858cd0 Made --proxy-ntlm check if the underlying library actually supports NTLM 2004-04-23 08:44:27 +00:00
Daniel Stenberg
a27072bebb minor format fix 2004-04-23 08:40:20 +00:00
Daniel Stenberg
47059f45fe added test 163 - a simple test case that use -F field<file, to verify that
we can pass on "odd" characters (newline, CR, tab) like this.
2004-04-23 08:40:11 +00:00
Daniel Stenberg
daced8041d No longer uses the valgrind option '--logfile-fd', we use the --logfile
option instead (even though it appends the pid to the file name, making it
harder to figure out its name to parse it after a test has run).

Also made sure we only use valgrind for the actual test command command lines,
not when for example running curl to detect if there are any already running
servers are present etc.
2004-04-23 08:38:43 +00:00
Daniel Stenberg
b053ae6a65 define the obsolete options to different values to prevent "duplicate case"
situtations in bindings that still have switch() cases for them
2004-04-23 06:29:41 +00:00
Daniel Stenberg
42f60ecb36 require SSL as otherwise NTLM doesn't work! 2004-04-23 06:04:52 +00:00
Daniel Stenberg
550862f41a missing brace 2004-04-22 21:27:32 +00:00
Daniel Stenberg
6838f74fe0 allow newlines in the contents when doing -F "var=[contents]"
Robert Marlow reported.
2004-04-22 20:09:33 +00:00
Daniel Stenberg
2ff30d067c - David Byron found and fixed a small bug with the --fail and authentication
stuff added a few weeks ago.  Turns out that if you specify --proxy-ntlm and
  communicate with a proxy that requires basic authentication, the proxy
  properly returns a 407, but the failure detection code doesn't realize it
  should give up, so curl returns with exit code 0. Test case 162 verifies
  this.
2004-04-22 20:07:41 +00:00
Daniel Stenberg
84406b3e2c allow newlines in the contents when doing -F "var=[contents]" 2004-04-22 15:26:30 +00:00
Daniel Stenberg
c323969bdd removed Curl_ftp_quit() as it was turned into a static in ftp.c 2004-04-22 13:15:17 +00:00
Daniel Stenberg
43cbbdbea0 If a transfer is found out to be only partial, libcurl will now treat that
as a problem serious enough to skip the final QUIT command before closing
the control connection. To avoid the risk that it will "hang" waiting for
the QUIT response. Added test case 161 to verify this.
2004-04-22 13:10:43 +00:00
Daniel Stenberg
1d3f76df71 If only a partial file was transfered, we consider that a fatal problem so
we won't try to QUIT the control connection and risk "hanging" waiting for
a response. Test case 161 verifies this. The quit-sending function was
also made static.
2004-04-22 13:09:00 +00:00
Daniel Stenberg
33cb93ad0b Added comments 2004-04-22 12:35:45 +00:00
Daniel Stenberg
4dc9179f4b modified how valgrind is run to make sure that file handle 3 exists when
we tell valgrind to use that to send the logfile to
2004-04-22 10:33:55 +00:00
Daniel Stenberg
26a5ec9aa0 danish mirror 2004-04-22 08:54:34 +00:00
Daniel Stenberg
883ea3113c Gisle's items 2004-04-21 19:35:06 +00:00
Daniel Stenberg
62b7c08bb3 include unistd.h as well for the close() proto on some platforms (like Tru64) 2004-04-21 11:18:42 +00:00
Daniel Stenberg
a85fa66cc8 typecast the tolower() argument to an int to prevent compiler warning 2004-04-21 11:15:35 +00:00
Daniel Stenberg
9ba010c629 typecast tolower/toupper arguments to int to make picky compilers complain
less
2004-04-21 11:15:02 +00:00
Daniel Stenberg
3ef3f2b6f0 test case 160 "should work" now 2004-04-21 08:56:02 +00:00
Daniel Stenberg
1401d909e8 Fix the "lingering close" problem when re-using a connection, as test case
160 shows.

We got no data and we attempted to re-use a connection. This might happen if
the connection was left alive when we were done using it before, but that was
closed when we wanted to read from it again. Bad luck. Retry the same request
on a fresh connect!

Deleted the sockerror variable again, it serves no purpose anymore.
2004-04-21 08:49:14 +00:00
Daniel Stenberg
3233322622 increase the headerbytecount for incoming "headers" 2004-04-21 08:47:57 +00:00
Daniel Stenberg
e373f1fd73 log the WAIT command 2004-04-21 06:56:54 +00:00
Daniel Stenberg
dc25cd6f3a cleanup leftovers 2004-04-20 09:46:10 +00:00
Daniel Stenberg
0e31d41d4e test160 - for a more controlled testing of the case where libcurl starts
to re-use a connection that is closed when re-used and libcurl should then
make a new fresh connection and use instead
2004-04-20 08:35:37 +00:00
Daniel Stenberg
b7a7600465 Cleaned up hostname/name/gname and path/ppath confusion. Removed the fixed-
length limit of the hostname part of the URL.
2004-04-20 07:53:24 +00:00
Daniel Stenberg
111a2f3057 new mirror and one that changed domain 2004-04-20 07:52:16 +00:00
Daniel Stenberg
760cecac8d make the first response get a "connection: close" header as that is how
most 1.1 connections will be closed. The case where it gets closed anyway
is subject for a new separate test.
2004-04-20 07:36:09 +00:00
Daniel Stenberg
6f8b4395ec changed the logging to work when the logfile is removed during testing 2004-04-19 15:20:30 +00:00
Daniel Stenberg
5506f8767c Make the server include "Connection: close" in the headers of the replies
it actually will close. This is after all what HTTP 1.1 says a server should
do.
2004-04-19 08:41:36 +00:00
Daniel Stenberg
5887945828 Gisle Vanem corrected a mistake in a recent progress fix 2004-04-19 07:18:26 +00:00
Daniel Stenberg
25e98179be Gisle Vanem: patches to make sws.c compile under MingW/MSVC is
attached. And some cosmetic fixes.
2004-04-17 11:38:41 +00:00
Daniel Stenberg
78ebe3fa5a Gisle made a failed connect output the reason for it 2004-04-17 11:33:47 +00:00
Daniel Stenberg
a8e8e51b14 NDEBUG should not be defined when CURLDEBUG is 2004-04-17 11:33:14 +00:00
Daniel Stenberg
f97d194934 adding issue 36 to be fixed before release 2004-04-16 07:33:53 +00:00
Daniel Stenberg
4661cc7403 don't display the . and .. files when dumping the log/ contents 2004-04-16 07:02:17 +00:00
Daniel Stenberg
bc11929395 remade the logging function to better deal with removed logfiles during
the execution of the tests
2004-04-16 07:01:47 +00:00
Daniel Stenberg
caf37bc92e issue 31 - fix windows multi interface is now corrected 2004-04-15 15:05:48 +00:00
Daniel Stenberg
5de447b0cb clarified that select() timeouts should always remain rather short 2004-04-15 15:05:12 +00:00
Daniel Stenberg
5dbaced4a2 my test suite edits 2004-04-15 14:53:47 +00:00
Daniel Stenberg
43f8a1f5de change the log format to look similar to sws
added various logging info
2004-04-15 13:55:37 +00:00
Daniel Stenberg
f57efa1899 clean the log directory between each single test, so that we can better
display all logs and only logs with relevant data when a test fails and -p
is used.
2004-04-15 13:37:19 +00:00
Daniel Stenberg
592522ceaf ftp->dirs[] is no longer terminated with a zero entry but ftp->dirdepth
should be used
2004-04-15 10:43:40 +00:00
Daniel Stenberg
4f84e6d9e2 removed the fixed dir depth limit in the FTP code 2004-04-15 07:52:39 +00:00
Daniel Stenberg
6f08903f07 two ipresolve fixes 2004-04-14 12:13:32 +00:00
Daniel Stenberg
220cd010bd format fix 2004-04-14 12:13:21 +00:00
Daniel Stenberg
68e8a0f0d9 asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will
now cause the resolve function to return NULL immediately
2004-04-14 12:10:44 +00:00
Daniel Stenberg
b23dbf9f34 Gisle Vanem made the -4/-6 actually get set too 2004-04-14 12:00:53 +00:00
Daniel Stenberg
1d0b5b507a Curl_wait_for_resolv() could hang due to the bad timeout timer resolution and
some bad thinking on my part.
2004-04-14 11:43:26 +00:00
Daniel Stenberg
b83d8104cd several changes 2004-04-14 07:07:30 +00:00
Daniel Stenberg
bf6e1053cf display interesting log files on failure, if -p is used 2004-04-14 07:04:45 +00:00
Daniel Stenberg
c3dd928e29 enable verbose as well 2004-04-14 06:53:34 +00:00
Daniel Stenberg
aba6c2b89d Added test case 511 in an attempt to repeat bug report #934666 "storage leak
in ftp.c", but it shows no leaking.
2004-04-14 06:30:37 +00:00
Daniel Stenberg
9c0a386246 minor format fix 2004-04-13 14:34:12 +00:00
Daniel Stenberg
bba3bb7556 eh, these can't be used for poll()! ;-) 2004-04-13 14:31:49 +00:00
Daniel Stenberg
c1422864b5 additional info 2004-04-13 14:27:47 +00:00
Daniel Stenberg
31a693b99a Gisle Vanem's fix that makes the multi interface work on Windows again even
when not using ares.
2004-04-13 13:59:12 +00:00
Daniel Stenberg
804534fbc9 spell fixes 2004-04-13 11:03:02 +00:00
Daniel Stenberg
1bc6532c16 more news 2004-04-13 10:58:44 +00:00
Daniel Stenberg
b48bf7470d proper typecast to prevent compiler warning 2004-04-13 10:42:32 +00:00
Daniel Stenberg
1ca9ce5ef4 removed the BUGS section since it offers nothing good 2004-04-13 09:08:52 +00:00
Daniel Stenberg
789f2ecbe7 1.2.0 2004-04-13 07:44:26 +00:00
Daniel Stenberg
ee7d1d0701 remove an long time #defined struct member and use the actual "real" name
instead to make it easier to find/read
2004-04-13 07:37:28 +00:00
Daniel Stenberg
4e3aa250c4 Moved the 'tcp_nodelay' member to the proper 'UserDefined' struct within the
sessionhandle to make the duphandle() function work as supposed. Also tried
to start document functions the doxygen way (in the headers of the functions).
Can't make it work though...
2004-04-13 07:16:26 +00:00
Daniel Stenberg
3647a6ddcd move issue 35 (hostip.c cleanup) forward, I don't feel like doing that now 2004-04-13 06:13:41 +00:00
Daniel Stenberg
79aaa85a51 full-test passes -p to runtests as well to get more details in case of failure 2004-04-13 05:58:19 +00:00
Daniel Stenberg
392a543eff Initial support for dumping the contents of the files in log/ when failing
when -p is used. For easier bug-hunting of autobuild failures. This still
only shows what files that are present in log/, as I believe we need to
filter which files we show on a failure.
2004-04-13 05:57:50 +00:00
Daniel Stenberg
eb6345de60 somewhat safer typecasting in case sizeof(long) != sizeof(void *) (is there
even such platforms?)
2004-04-12 06:55:25 +00:00
Daniel Stenberg
0fd3b7a00a David Byron's patch for MSVC builds with zlib 2004-04-11 20:25:10 +00:00
Daniel Stenberg
bd51b80fa5 updated to not include the msvc-generated files 2004-04-11 06:33:02 +00:00
Daniel Stenberg
15c900839b when checked out from CVS, run this to generate the proper scripts 2004-04-11 06:32:41 +00:00
Daniel Stenberg
2fd463e979 Dirk Manske increased the resolution for what the CURLINFO_*_TIME return. 2004-04-09 09:36:31 +00:00
Daniel Stenberg
de8660a96a we're working on 1.2.0 now 2004-04-08 18:10:03 +00:00
Daniel Stenberg
1e9cb272f1 added test 159, use --ntlm together with -0 2004-04-07 15:01:11 +00:00
Daniel Stenberg
72b1144b8c getting only a 100 Continue response and nothing else, when talking HTTP,
is now treated as an error by libcurl
2004-04-07 14:27:54 +00:00
Daniel Stenberg
348fe0e210 --limit-rate using -d or -F does not work 2004-04-07 14:03:13 +00:00
Daniel Stenberg
cf1f46e1ca renamed the strtoofft() macro to curlx_strtoofft() to adjust to the curlx_*
concept, and added lib/README.curlx to explain details about it
2004-04-07 07:30:40 +00:00
Daniel Stenberg
f052cbee19 Use curl_off_t for the limit rate values to support REALLY huge values on
such platforms that support large files.
2004-04-07 07:23:52 +00:00
Daniel Stenberg
1f5e8670e1 mention getting windows builds to work after rearrangements 2004-04-06 15:30:57 +00:00
Daniel Stenberg
3b491d0f73 Moved long-standing issues over from TODO-RELEASE to the more long-term TODO
file.
2004-04-06 15:29:01 +00:00
Daniel Stenberg
26a2b8d26d the memory leak on windows have been addressed 2004-04-06 15:22:21 +00:00
Daniel Stenberg
a7fd6f9007 require ssl since ntlm needs it 2004-04-06 15:16:07 +00:00
Daniel Stenberg
8ed44e8dfb New authentication code added, particularly noticable when doing POST or PUT
with Digest or NTLM. libcurl will now use HEAD to negotiate the authentication
and when done perform the requested POST.
2004-04-06 15:14:10 +00:00
Daniel Stenberg
f617c1131a mention the man page updates from the other day 2004-04-06 15:12:50 +00:00
Daniel Stenberg
5ca47f19d7 the pack_hostent() proto isn't used/needed with ipv6 is enabled.
time to restructure this source file!
2004-04-06 15:09:43 +00:00
Daniel Stenberg
9044fcbb5f Gisle Vanem's fix for bug item #927979 reported by Nathan O'Sullivan.
Good enough?
2004-04-06 14:51:14 +00:00
Daniel Stenberg
7a82810b59 Added the curl source header and changed some comments 2004-04-06 14:07:04 +00:00
Daniel Stenberg
0ccdf3d0e6 improved --limit-rate functionality, partly by the new use of curlx_tvnow() 2004-04-06 12:06:05 +00:00
Daniel Stenberg
ca7f0852df Gisle Vanem caught me breaking the windows version of Curl_strerror() 2004-04-06 12:02:36 +00:00
Daniel Stenberg
780b962336 provide these functions as curlx_* ones as this enables the curl app to
re-use these sources and functions for subsecond resolution timing
2004-04-06 10:15:10 +00:00
Daniel Stenberg
bbeb840916 up-to-date with reality 2004-04-06 07:59:11 +00:00
Daniel Stenberg
f4ec465bfc added HAVE_GETTIMEOFDAY, we need it for better time resolution 2004-04-06 07:49:57 +00:00
Daniel Stenberg
57c86a953d typecasts to please picky compilers checking the printf() format string 2004-04-06 07:48:29 +00:00
Daniel Stenberg
0fff8656e9 one change, three bugs, one credit 2004-04-06 06:24:37 +00:00
Daniel Stenberg
7b929636ee the last couple of days 2004-04-06 06:24:06 +00:00
Daniel Stenberg
76835a2e00 two issues to fix before 7.11.2, one issue to fix befor 7.12.0 2004-04-06 06:18:48 +00:00
Daniel Stenberg
1b171b02ac remove the general use of sys_nerr 2004-04-06 06:06:10 +00:00
Daniel Stenberg
a8dc362572 generated files, no need to keep in CVS 2004-04-05 12:38:54 +00:00
Daniel Stenberg
7c72f8ee6c prepend the man3 dir to the file name to work better.
Robin Kay pointed this out.
2004-04-02 11:04:34 +00:00
Daniel Stenberg
c39a54609b edits, mainly to make the generated html output nicer 2004-04-02 09:56:01 +00:00
Daniel Stenberg
ce6b767b47 minor edits 2004-04-02 09:50:42 +00:00
Daniel Stenberg
7ba4d3464f Dirk Manske's feedback:
* bring back subsecond resolution to CURLINFO_TOTAL_TIME
* Fix the Curl_pgrsDone() so that the final progress update is shown properly
2004-04-02 07:32:03 +00:00
Daniel Stenberg
03def138fe Andrs Garca's updated mingw makefiles 2004-04-02 07:18:13 +00:00
Daniel Stenberg
9d99af5329 if select returns -1, bail out of the loop 2004-04-02 06:40:31 +00:00
Daniel Stenberg
c8d850dbad Only check that the c-ares lib is valid if we don't use the "embedded"
directory. The provided ares dir is probably up-to-date, but more importantly
it is often not built yet at the time when this configure script runs.
2004-04-01 10:26:59 +00:00
Daniel Stenberg
01ea357744 When ares is enabled, we now check for the ares_cancel function to verify
that we use a library that is recent enough to build with the latest libcurl.
2004-04-01 09:10:33 +00:00
Daniel Stenberg
ad9e83a90f Dirk Manske's fix that makes sure we cancel the ares resolve when we time out
from a name resolve. Without this, we leak memory!
2004-04-01 08:40:36 +00:00
Daniel Stenberg
6c9d96e811 Dirk Manske's ares_cancel() function was added. 2004-04-01 08:25:58 +00:00
Daniel Stenberg
f840e5192c edited slightly, point out our new mailinglist 2004-04-01 08:25:23 +00:00
Daniel Stenberg
ba9272dd05 remind us about cvs tagging when we've built a release archive 2004-04-01 08:23:26 +00:00
Daniel Stenberg
675db3a211 removed my previously attempted fix for ares timeouts, not needed 2004-04-01 07:04:58 +00:00
Daniel Stenberg
1fc7ff878e Applied Joe Halpin's bugfixes to the NI_WITHSCOPEID test program. 2004-04-01 06:53:11 +00:00
Daniel Stenberg
b643d148b1 Dominick Meglio man page fixes 2004-04-01 06:10:56 +00:00
Daniel Stenberg
5804c995e1 Use the new HAVE_NI_WITHSCOPEID define instead of merely checking for the
existance of NI_WITHSCOPEID since some platforms have that define but still
can't function with it set.
2004-03-31 21:33:52 +00:00
Daniel Stenberg
13a6f85320 issue 30, digest re-negotiate works now! 2004-03-31 21:04:26 +00:00
Daniel Stenberg
8b4582f111 recent changes 2004-03-31 21:03:55 +00:00
Daniel Stenberg
cd3bf7c56f updates and David Byron's spellfix 2004-03-31 21:01:20 +00:00
Daniel Stenberg
ee1595dcd5 Roy Shan fixed a case that prevented ares name resolve timeouts to occur. 2004-03-31 20:50:01 +00:00
Daniel Stenberg
310086deed we're working on 7.11.2-CVS right now 2004-03-31 20:22:28 +00:00
Daniel Stenberg
5d27f50f2f HAVE_NI_WITHSCOPEID spelled right! 2004-03-31 20:13:53 +00:00
Daniel Stenberg
9d0330d5bd Remove the elapsed time from the most recent select() only. 2004-03-31 13:19:41 +00:00
Daniel Stenberg
d5074f74bb The asynch name resolve methods now all use CURL_TIMEOUT_RESOLVE for
the specific time to wait for a resolve. The definition is at the top of
this source file.
2004-03-31 12:55:24 +00:00
Daniel Stenberg
ea0cf7c87b Dirk Manske found out the Curl_wait_for_resolv() timed out too early. 2004-03-31 12:45:26 +00:00
Daniel Stenberg
a56164c8e0 added swsbounce 2004-03-31 12:24:08 +00:00
Daniel Stenberg
cd95bb22ea added include to fix warning 2004-03-31 11:55:56 +00:00
Daniel Stenberg
1745ecd8ac * Fixed a memory leak when doing repeated re-negotiations.
* Made the incoming line parser more forgiving to allow "name=contents" pairs
where the contents isn't within double quotes.
* Made the digest code return CURLDIGEST_BADALGO if a requested algorithm
isn't supported by the code.
2004-03-31 11:55:07 +00:00
Daniel Stenberg
75d66b9c62 test 153 tests Digest authorization and stale=true stuff 2004-03-31 11:51:21 +00:00
Daniel Stenberg
2ff9f55001 Added "swsbounce" magic: if this keyword is present in a <data> section it
sets the "swsbounce" magic mode. If there follows a request for the SAME
test number and the SAME part number, this mode will make the server bump
the part number internally and thus return a different <dataNUM> section
than it otherwise would.

Test case 153 uses this in case you need an example. It is pretty involved
and hard-to-use, but then the situation is pretty special over all. Enjoy.
2004-03-31 11:50:44 +00:00
Daniel Stenberg
ce446dbdc2 Moved the NI_WITHSCOPEID magic #ifdef to the top of the file and made sure
we use the NIFLAGS properly on both places in the code that use getnameinfo().
2004-03-31 10:59:48 +00:00
Daniel Stenberg
dd2add82ee Fixed how the user name is extracted from http_proxy environment variable
when set.
2004-03-31 10:46:06 +00:00
Daniel Stenberg
40d9855df2 Andrs Garca fixed a warning in the ioctlsocket() usage. 2004-03-31 10:34:53 +00:00
Daniel Stenberg
ecf7adba15 modified the NI_WITHSCOPEID to use an AF_INET6 socket immediately and
added some more debug output to make it easier to detect failure reasons
in the autobuild logs
2004-03-31 10:31:08 +00:00
Daniel Stenberg
931c847e2b CURLDIGEST_BADALGO is a new return code from the digest code 2004-03-31 09:20:27 +00:00
Daniel Stenberg
8230d9bff8 Dominick Meglio fixed a missing comma 2004-03-31 06:10:40 +00:00
Daniel Stenberg
64cc14e9e6 one issue less 2004-03-30 15:35:09 +00:00
Daniel Stenberg
d5b8971ff3 typecast setsockopt()'s 4th argument to void * to make compilers complain
less
2004-03-30 13:05:45 +00:00
Daniel Stenberg
7ea837a18c adjusted to the new dns cache function to hide more hostip internals 2004-03-30 13:02:31 +00:00
Daniel Stenberg
b8b8473b6d Lots of comments added an clarified. Added timeout for the ares version
of Curl_is_resolved() to address Roy Shan's reported problem.
2004-03-30 13:02:07 +00:00
Daniel Stenberg
894dbae455 added stale boolean to the digest struct 2004-03-30 13:00:53 +00:00
Daniel Stenberg
2c11425868 first attempt to support stale=true 2004-03-30 13:00:32 +00:00
Daniel Stenberg
a2ea0abf7f Added CURL_CHECK_NI_WITHSCOPEID that checks if NI_WITHSCOPEID exists and
works. No code actually uses the HAVE_NI_WITHSCOPEID (that a positive test
results in), but this is still only for testing purposes.
2004-03-30 10:35:54 +00:00
Daniel Stenberg
be8f8e66a4 Dominick Meglio's new ares_expand_string() function 2004-03-30 09:06:42 +00:00
Daniel Stenberg
9fadfffb9d when checking the automake version, cut off trailing "-p[whatever]" from the
version string before doing the version number checks.
2004-03-30 08:28:39 +00:00
Daniel Stenberg
76f23acfa1 if 0'ed out a code section that uses __FUNCTION__ etc, used for debugging
the new "fail with auth" code
2004-03-30 08:21:09 +00:00
Daniel Stenberg
6950aeafcc init the dns pointer to NULL for clarity 2004-03-30 08:14:37 +00:00
Daniel Stenberg
cd160a66c9 added more comments for what the functions return 2004-03-30 08:11:54 +00:00
Daniel Stenberg
a7376968d2 mention the fact that you can append a new CA cert to the existing bundle too 2004-03-30 06:46:36 +00:00
Daniel Stenberg
fd96a2af34 David Byron's patch was appplied to make CURLOPT_FAILONERROR work nicely
even with authentcations such as NTLM or Digest enabled. Test cases 150, 151
and 152 were added to verify the functionality.
2004-03-30 06:42:12 +00:00
Daniel Stenberg
a90cd1a45c David Byron's new test cases for the --fail and auth stuff. 2004-03-30 06:41:33 +00:00
Daniel Stenberg
8e92600ddd David Byron made CURLOPT_FAILONERROR work with authentications such as NTLM
or Digest.
2004-03-30 06:40:01 +00:00
Daniel Stenberg
5e75c310ba 'authdone' was added to the sessionhandle and thus was removed from the
argument to the NTLM function(s)
2004-03-30 06:39:24 +00:00
Daniel Stenberg
20cab07c29 David Byron added 'authdone' to the SessionHandle. 2004-03-30 06:38:52 +00:00
Daniel Stenberg
f466d7a6f1 these are now in the packages/vms dir 2004-03-29 22:45:14 +00:00
Daniel Stenberg
dc46f535ae The select() timeout is better not static since some implementation actually
might change it. I don't *think* it does it when the timeout is 0,0 but it
is better to be sure...
2004-03-29 21:29:24 +00:00
Daniel Stenberg
27fd5d6d6a issue 24 is fixed by making sure the time fields use a static width 2004-03-29 13:46:58 +00:00
Daniel Stenberg
18a3c3302f several noticable recent changes 2004-03-29 13:46:16 +00:00
Daniel Stenberg
97959a00d7 changes changes changes 2004-03-29 13:45:53 +00:00
Daniel Stenberg
5e92b2906b All test targets now run 'make all' before they prcoeed with the actual
testing so that all test files are build first properly. David Byron reported.
2004-03-29 12:38:41 +00:00
Daniel Stenberg
126ed14313 Gisle Vanem's djgpp/MS-DOS updates 2004-03-29 12:29:25 +00:00
Daniel Stenberg
712d0374f7 fix to figure out the "real" windows path when built and run with mingw
Andrs Garca helped out!
2004-03-29 09:26:31 +00:00
Daniel Stenberg
4b49b2e3cf re-indented to use curl-standard source formatting 2004-03-29 07:25:59 +00:00
Daniel Stenberg
d85c21994f netinet/tcp.h may require netinet/in.h to be include before 2004-03-29 06:22:57 +00:00
Daniel Stenberg
6b33a5f954 use the correct struct 2004-03-28 21:41:10 +00:00
Daniel Stenberg
ed22afe5fb Tor fixed a left-over from the ip argument to setnodelay 2004-03-27 11:15:50 +00:00
Daniel Stenberg
843391c745 Gisle Vanem:
A patch to bypass MS' sillyness with regard to IPv6 and getaddrinfo().

The CURLDEBUG part is to avoid redefinition warning caused by memdebug.h. If
ENABLE_IPV6 isn't enabled, it doesn't matter since we never call
getaddrinfo(). Allthough we could to support weird protocols like SOCK_RDM
that Win-2K/XP has.
2004-03-26 13:47:46 +00:00
Daniel Stenberg
ad6699e0c4 some more password blurb 2004-03-26 13:20:28 +00:00
Daniel Stenberg
43137cf595 check for netinet/tcp.h precense before actually including it 2004-03-26 07:10:15 +00:00
Daniel Stenberg
db6dc49b0b removed the ip number from the notcpdelay function 2004-03-26 07:03:30 +00:00
Daniel Stenberg
593170d1de get the version number from the new curlver.h header file 2004-03-25 16:03:41 +00:00
Daniel Stenberg
0eace2fefe localtime and gmtime are not thread-safe on newer AIXes either so we force
a check for there *_r-versions too
2004-03-25 15:48:54 +00:00
Daniel Stenberg
abd65e21c6 force recent AIX versions to check for strerror_r 2004-03-25 15:10:01 +00:00
Daniel Stenberg
e21104a865 only output one line about the nodelay even if it fails 2004-03-25 14:01:01 +00:00
Daniel Stenberg
3ecf63fa66 win32 doesn't need and even doesn't build if we extern declare sys_nerr 2004-03-25 13:43:19 +00:00
Daniel Stenberg
762dcf0780 include the strerror.h file without curl_ prefix 2004-03-25 13:42:23 +00:00
Daniel Stenberg
75ee9b5333 strerror without prefix 2004-03-25 13:40:57 +00:00
Daniel Stenberg
e161bdc5be cut off 'curl_' from the strerror file names 2004-03-25 13:40:24 +00:00
Daniel Stenberg
bb3d6e8552 tcp-nodelay patch by Joe Halpin 2004-03-25 13:37:18 +00:00
Daniel Stenberg
189c2f4989 so there are at least two different strerror_r() versions and our brand
new configure script detects them and now this code acts according to what
API that was detected
2004-03-25 12:45:01 +00:00
Daniel Stenberg
f28389c87b Tor Arntsen fixed how this is invoked 2004-03-25 12:16:42 +00:00
Daniel Stenberg
7461592a16 strerror_r() detection changes:
1. Try with _THREAD_SAFE instead of _REENTRANT, as AIX seems to require it
   and if _REENTRANT is required we should already have it set since one of
   the previous tests.
2. Added API-detection for what kind of strerror_r() that is provided. The
   POSIX style or the glibc style.

Tor Arntsen provided the necessary feedback these changes are based upon.
2004-03-25 12:15:00 +00:00
Daniel Stenberg
50b0e72f7b detect daily snapshots using the new path for this test 2004-03-25 11:39:29 +00:00
Daniel Stenberg
76e73cfec8 make clean now removes *dist files too that might be leftovers from
'maketgz'
2004-03-25 11:34:35 +00:00
Daniel Stenberg
5d8ec172a6 invoke this script via env, as it is more likely to exist at a fixed path
while perl often is installed in /usr/local/bin or elsewhere
2004-03-25 08:22:03 +00:00
Daniel Stenberg
0953140b53 added curl_strerror to the build 2004-03-25 07:53:37 +00:00
Daniel Stenberg
6c2825997a extern declare the sys_nerr variable. Required on Solaris at least. 2004-03-25 07:52:11 +00:00
Daniel Stenberg
accc6eb91a Always include setup.h as the first header file.
Added a more verbose comment about what strerror_r() can set errno to in
case of failure.
This file still doesn't build on Solaris due to a missing 'sys_nerr' symbol.
2004-03-25 07:33:11 +00:00
Daniel Stenberg
eab8cdc640 Added protos for the upcoming curl_*_strerror() functions 2004-03-24 22:53:42 +00:00
Daniel Stenberg
dc9d0f256d missed the new header file 2004-03-24 22:46:02 +00:00
Daniel Stenberg
b60d6404d8 Gisle Vanem's fix to replace the bad use of strerror(). This introduces
Curl_strerror() that attempts to be thread-safe _and_ works on Windows too!
2004-03-24 22:45:37 +00:00
Daniel Stenberg
08fe4b3210 new header file - for Curl_strerror() 2004-03-24 22:43:09 +00:00
Daniel Stenberg
0e60a118d0 better comments, added some more variable types we use in the font-lock 2004-03-24 22:24:03 +00:00
Daniel Stenberg
4b78b4124e Tor Arntsen's major ispell patch 2004-03-24 21:40:45 +00:00
Daniel Stenberg
0d6d9af7ab Tor Arntsen's mkdir-fix to make this run with perl 5.0005 2004-03-24 21:28:31 +00:00
Daniel Stenberg
41cd36b830 Avoid doing chdir .., as it breaks the ability to use symlinks properly.
chdir to absolute directory names instead. (this flaw exists in the shell
version too)
2004-03-24 10:52:21 +00:00
Daniel Stenberg
242be55771 added check for strerror_r() 2004-03-24 08:45:58 +00:00
Daniel Stenberg
7cf47ea5b5 include curl/curlver.h instead since this only needs the version defines 2004-03-24 07:27:58 +00:00
Daniel Stenberg
6fb0012833 error messages and new test script 2004-03-23 16:12:55 +00:00
Daniel Stenberg
9d1ce9c0df we are progressing 2004-03-23 16:12:37 +00:00
Daniel Stenberg
5947e4e9fd distribute testcurl.pl too starting now 2004-03-23 16:11:01 +00:00
Daniel Stenberg
e992aa6a54 Greg Hewgill's version of testcurl.sh rewritten in perl for greater
portability. I put it in this directory instead of the root since I think
perhaps it makes more sense.
2004-03-23 16:07:02 +00:00
Daniel Stenberg
2cf218610e keep current_speed as an curl_off_t for better precision at higher speeds
if large file support is available
2004-03-23 16:01:31 +00:00
Daniel Stenberg
fe6f0aeb26 switch() on the right variable! 2004-03-23 15:48:27 +00:00
Daniel Stenberg
bd04c6fb67 curl_strequal() returns int, keep return variables in an int 2004-03-23 15:30:12 +00:00
Daniel Stenberg
c5637baa06 make the variables that hold the result of strlen() size_t 2004-03-23 15:28:31 +00:00
Daniel Stenberg
f8426a2c44 stricter variable type usage 2004-03-23 15:25:54 +00:00
Daniel Stenberg
0c791d1e76 variable type usage cleanup to please picky compilers 2004-03-23 15:20:57 +00:00
Daniel Stenberg
c4a89d29f6 get strlen() results in a size_t, delete 'register' 2004-03-23 15:14:57 +00:00
Daniel Stenberg
306ff5649a made time2str() use longs internally instead to prevent compiler warnings
when converting to ints
2004-03-23 15:06:14 +00:00
Daniel Stenberg
1c652dfc5d added explicit typecasts to prevent compiler warnings on variable conversions 2004-03-23 15:01:19 +00:00
Daniel Stenberg
1f61e7f8f4 If localbind fails, provide a more portable error message. 2004-03-23 14:43:42 +00:00
Daniel Stenberg
1a5f190e47 minor update by Kevin 2004-03-23 14:34:09 +00:00
Daniel Stenberg
570033448c src/version.h was not properly made! 2004-03-23 14:29:21 +00:00
Daniel Stenberg
f44b655513 progress meter fix, CURLINFO_CONTENT_LENGTH_DOWNLOAD fix, cygwin package fix 2004-03-23 11:52:08 +00:00
Daniel Stenberg
0aa720fa26 it actually fits to make a NNNd NNh display so this can be used up to
999 days
2004-03-23 11:46:31 +00:00
Daniel Stenberg
d44f3f84f8 Fixed the time fields no never get wider than 8 letters. They can now switch
to a "days + hours" or even "just days" display if the time value is very
large. I also switched several calculations over to fixed-point instead of the
previous doubles.
2004-03-23 11:43:34 +00:00
Daniel Stenberg
d426db3d27 int/size_t cleanup 2004-03-23 09:12:51 +00:00
Daniel Stenberg
0fd88d7c8f minor variable type cleanups 2004-03-23 08:50:28 +00:00
Daniel Stenberg
4e84ac4db8 minor edits to make picky compilers whine less 2004-03-23 08:46:08 +00:00
Daniel Stenberg
da5c8a121f changed the long to int typecasts to see if icc 8.0 complains less on this 2004-03-23 08:42:01 +00:00
Daniel Stenberg
76c36688d0 Makes CURLINFO_CONTENT_LENGTH_DOWNLOAD work even if CURLOPT_NOBODY is set
true.
2004-03-22 22:38:12 +00:00
Daniel Stenberg
651c8d3bc4 Kevin Roth's updates to handle a new requirement from the Cygwin folks to
package man and doc files in a slightly different location.
2004-03-22 22:24:23 +00:00
Daniel Stenberg
a8a946d71d crap files to get the dirs made when checked out from CVS 2004-03-22 21:46:08 +00:00
Daniel Stenberg
c5c005609e container to get this dir made 2004-03-22 21:42:07 +00:00
Daniel Stenberg
97886f9353 Make the axp/README ia64/README vax/README files get included as well.
They're 0-bytes files, but make the dirs get created!
2004-03-22 21:37:02 +00:00
Daniel Stenberg
a784bd0797 fixed the ntlm problem with longish passwords 2004-03-22 13:56:48 +00:00
Daniel Stenberg
4aacf65678 vms fixes committed 2004-03-22 13:56:30 +00:00
Daniel Stenberg
dd1ba7633e Enabled 'NT responses' in the NTLM type-3 message. 2004-03-22 13:50:30 +00:00
Daniel Stenberg
a4ea5a4054 fixed /I "." for the debug build too 2004-03-22 11:32:22 +00:00
Daniel Stenberg
69060b1382 add /I "." to include ca-bundle.h properly 2004-03-22 11:26:40 +00:00
Daniel Stenberg
a6562ea77d issue 27 fixed, moved libcurl version defines to its own header file 2004-03-22 10:22:01 +00:00
Daniel Stenberg
ad3563096a include the new curlver instead, since all this wants is the version info 2004-03-22 08:54:26 +00:00
Daniel Stenberg
c5f02c1986 Introducing curl/curlver.h for keeping the curl version info only. 2004-03-22 08:37:38 +00:00
Daniel Stenberg
7ef5d20cad files moved here from the $ROOT/src dir 2004-03-21 22:50:53 +00:00
Daniel Stenberg
98b619c3a7 removed deleted files 2004-03-21 22:49:36 +00:00
Daniel Stenberg
5b75919f95 Marty Kuhrt's adjustments for a cleaner VMS build 2004-03-21 22:44:52 +00:00
Daniel Stenberg
20b76e09e3 Marty Kuhrt's VMS updates 2004-03-21 22:38:01 +00:00
Daniel Stenberg
67fca4cb01 recognize and use ACLOCAL_FLAGS if set (Thomas Schwinge patch) 2004-03-21 15:45:58 +00:00
Daniel Stenberg
606715b2cd use tabs, not spaces! 2004-03-21 15:32:15 +00:00
Daniel Stenberg
ce04b35032 Added the Version 7.11.1 marker 2004-03-19 13:22:48 +00:00
Daniel Stenberg
ec7f244ee9 starting a new cycle 2004-03-19 08:41:49 +00:00
Daniel Stenberg
a5b206f398 irix configure fix and a msvc project file update 2004-03-18 14:20:17 +00:00
Daniel Stenberg
306a05f9ff Mitz Wark's reported Digest re-negotiate problem is issue 30. 2004-03-18 12:59:03 +00:00
Daniel Stenberg
81f8350616 For IRIX systems we must pick the "correct" lib dirs for the particular
libs we want. $libsuff is the magic variable that contains a suffix (which
might be blank). Tor Arntsen brought details and verified this fix.
2004-03-18 10:03:34 +00:00
Daniel Stenberg
760ca6adc4 added http_ntlm.[ch] and inet_pton.[ch], pointed out by Watz 2004-03-17 21:30:26 +00:00
Daniel Stenberg
ffb35ff5c3 Gnter Knauf's update, mainly converted to plain old C comments. 2004-03-17 13:36:45 +00:00
Daniel Stenberg
8eda06131b new netware-related files added to the distribution 2004-03-17 12:48:41 +00:00
Daniel Stenberg
5b55f9ecb3 Gnter Knauf's NetWare changes. 2004-03-17 12:46:42 +00:00
Daniel Stenberg
3417e0b0fc nonsense comments removed 2004-03-17 07:22:04 +00:00
Daniel Stenberg
79ed144b0f mention yesterday's man page update frenzy 2004-03-16 10:41:14 +00:00
Daniel Stenberg
8e5cf6589c issue 29 has a bug report mentioning details 2004-03-16 10:40:48 +00:00
Daniel Stenberg
fc67cca882 removed the min() macro define 2004-03-16 09:16:38 +00:00
Daniel Stenberg
eea2287068 random updates 2004-03-16 07:56:51 +00:00
Daniel Stenberg
5fe5de7511 added the CA bundle default path, and mention the risk that the server you
try to talk to may be an imposter
2004-03-16 07:25:52 +00:00
Daniel Stenberg
4a6b9972dd ntlm and long passwords 2004-03-15 16:32:13 +00:00
Daniel Stenberg
256a16a8a3 if the global_init() is called from within curl_easy_init() and returns
an error code, we now make curl_easy_init fail and return NULL.
2004-03-15 16:28:36 +00:00
Daniel Stenberg
30e0891d3d ignore these files 2004-03-15 13:20:53 +00:00
Daniel Stenberg
8147ccdf76 automake file for this dir 2004-03-15 13:20:01 +00:00
Daniel Stenberg
26ab286630 provide URLs to two patches mentioned 2004-03-15 13:13:14 +00:00
Daniel Stenberg
738807883e NTLM fix 2004-03-15 13:09:59 +00:00
Daniel Stenberg
03a0988ce8 better formatting to create fine links in the web version 2004-03-15 12:42:19 +00:00
Daniel Stenberg
7de892eeb4 more formatting fixes 2004-03-15 12:41:24 +00:00
Daniel Stenberg
8c4e91a653 refer to function names better to enhance the HTML output 2004-03-15 11:56:07 +00:00
Daniel Stenberg
8f77030473 Initial commit of the first attempt to make three new *strerror() functions.
No protos in the headers yet and no docs.
2004-03-15 11:51:32 +00:00
Daniel Stenberg
546d0bd3d1 windows builds now report a slightly different "OS" string 2004-03-15 11:43:04 +00:00
Daniel Stenberg
5d53b544d3 check for m4 version in buildconf 2004-03-15 11:42:48 +00:00
Daniel Stenberg
6dc8fac122 random formatting updates to look better in HTML version 2004-03-15 11:37:37 +00:00
Daniel Stenberg
8114f8562b use .NF for the struct part to looke better in HTML
format some function references properly
2004-03-15 11:30:29 +00:00
Daniel Stenberg
c79fa187b9 more fixes 2004-03-15 11:26:53 +00:00
Daniel Stenberg
237ec68b0e better formatting of functions to get better links in the web version 2004-03-15 10:26:08 +00:00
Daniel Stenberg
4ebf4f6e55 better mentioning of other functions to create proper hrefs in the web
version
2004-03-15 10:23:14 +00:00
Daniel Stenberg
4d86593f3c build_vms.com is removed from here 2004-03-15 10:18:38 +00:00
Daniel Stenberg
ec050ccbc4 Marty Kuhrt's VMS updates 2004-03-15 10:11:34 +00:00
Daniel Stenberg
f19cade50f Added the new vms subdir in the packages dir 2004-03-15 10:10:24 +00:00
Daniel Stenberg
a2f35aaf67 new vms subdir 2004-03-15 10:08:32 +00:00
Daniel Stenberg
e5c4b6b345 not used anymore since Marty Kuhrt's recent VMS updates 2004-03-15 10:03:58 +00:00
Daniel Stenberg
bad978feb2 Marty Kuhrt's provided files for the VMS package 2004-03-15 10:03:05 +00:00
Daniel Stenberg
bea9152aa8 Check for a GNU version of m4, since autoconf won't run nicely without one. 2004-03-15 07:47:13 +00:00
Daniel Stenberg
f788f988ea fix signed and unsigned warnings 2004-03-14 18:15:04 +00:00
Daniel Stenberg
d04ffd258b postsize is off_t now, so we typecase it to int before doing normal printf
with it (knowing it won't be larger than what fits in an int)
2004-03-13 17:11:42 +00:00
Daniel Stenberg
24cfa7f1bb the postsize is an off_t so use the proper printf format to output the
content-length when doing multipart posts
2004-03-13 17:03:17 +00:00
Daniel Stenberg
94a1d09ac7 more variable type fixing for the huge posts 2004-03-12 14:22:16 +00:00
Daniel Stenberg
230a75091b newer c-ares release 2004-03-12 13:17:46 +00:00
Daniel Stenberg
4ad68ec305 more variable type fixes for the large POST support 2004-03-12 13:06:01 +00:00
Daniel Stenberg
ef776ab893 Made the 'postsize' variable an off_t type to be able to hold large file
sizes if desired
2004-03-12 12:07:01 +00:00
Daniel Stenberg
f8ff0f6bef minor variable type fix 2004-03-12 12:05:33 +00:00
Daniel Stenberg
bc7122f6e2 CURLOPT_POSTFIELDSIZE_LARGE is added in 7.11.1 2004-03-12 09:14:45 +00:00
Daniel Stenberg
e5963dae48 ignore aclocal.m4 2004-03-12 08:57:10 +00:00
Daniel Stenberg
1ebda8fa0e Added CURLOPT_POSTFIELDSIZE_LARGE to offer a large file version of the
CURLOPT_POSTFIELDSIZE option to allow really big HTTP POSTs.
2004-03-12 08:55:47 +00:00
Daniel Stenberg
9af532e662 David Byron's fix to clear outs.filename 2004-03-12 08:03:31 +00:00
Daniel Stenberg
9d064a3927 dl and ulspeed are now curl_off_t so typecast them to double when we
return their values
2004-03-11 21:51:55 +00:00
Daniel Stenberg
d6edcfb486 Optimize the way libcurl uses CWD 2004-03-11 21:49:56 +00:00
Daniel Stenberg
1d5a914c1c Made max5data() take a curl_off_t size as argument instead of double. Should
make the progress meter more accurate for large files. Also made the sprintf
usage in that function avoid floating point.
2004-03-11 21:48:15 +00:00
Daniel Stenberg
666bc9ee4e added that header fiddling the msvc users will enjoy 2004-03-11 13:15:14 +00:00
Daniel Stenberg
e545e33d5f Gisle Vanem's fixes to use CURL_SOCKET_BAD more instead of -1 for sockets. 2004-03-11 13:13:35 +00:00
Daniel Stenberg
326e8b9fc1 don't let the EINTR stuff build on windows 2004-03-11 12:57:04 +00:00
Daniel Stenberg
0d1fc73f21 Use more curl_off_t variables when doing the progress meter calculations and
argument passing and try to convert to double only when providing data to the
external world.
2004-03-10 16:20:33 +00:00
Daniel Stenberg
50a1853560 use the new OS define from lib/config-win32.h 2004-03-10 16:07:19 +00:00
Daniel Stenberg
35e158d80b make loop variable size_t as well when looping to a size_t limit 2004-03-10 16:03:12 +00:00
Daniel Stenberg
7225b14002 curl_socket_t mistakes cleanup 2004-03-10 16:01:47 +00:00
Daniel Stenberg
85838a8966 turn niflags into a define named NIFLAGS 2004-03-10 15:24:56 +00:00
Daniel Stenberg
d29590f583 added the Estonian one, removed the cyberservers one since it is dead and
they don't respond to email
2004-03-10 11:30:19 +00:00
Daniel Stenberg
467c3e3a1f fixing 2004-03-10 11:28:45 +00:00
Daniel Stenberg
b484b3b696 Gisle Vanem improved build on Windows. 2004-03-10 11:28:34 +00:00
Daniel Stenberg
b45d50ccc2 Nah, ignore the OS define in here. This is being included by ares and it
certainly doesn't need the OS define.
2004-03-10 10:19:32 +00:00
Daniel Stenberg
78e0ba82b0 ignore the icc warning 981 "operands are evaluated in unspecified order" 2004-03-10 09:52:04 +00:00
Daniel Stenberg
c39c55cb2d Minor edit to avoid an unreachable break and to remove the extra {} body
within the switch.
2004-03-10 09:50:12 +00:00
Daniel Stenberg
cf004cbc7e keep the number of bytes read in a size_t variable 2004-03-10 09:44:42 +00:00
Daniel Stenberg
9948250723 strequal() returns int so we typecast the return to bool when we store the
result as bool
2004-03-10 09:41:37 +00:00
Daniel Stenberg
47afa058a8 store times in time_t 2004-03-10 09:36:43 +00:00
Daniel Stenberg
40e892bb36 Jeff Lawson fixed the SSL connection to deal with received signals during the
connect.
2004-03-10 08:43:01 +00:00
Daniel Stenberg
bc6f3beb9c Now requires an OS string defined by the config*.h file 2004-03-10 08:15:50 +00:00
Daniel Stenberg
f9e1f32adb make windows builds use the OS string "i386-pc-win32" instead of just "win32"
to make it more like other OS strings
2004-03-10 08:14:22 +00:00
Daniel Stenberg
93f96835f8 use size_t for string lengths 2004-03-10 08:12:09 +00:00
Daniel Stenberg
22f4d81f3e Make sure SIZEOF_CURL_OFF_T is defined before we check for it being > 4.
It is only undefined when this file is included by others (like ares) and
in those cases it doesn't matter.
2004-03-10 08:08:02 +00:00
Daniel Stenberg
0d1f80ccb5 removed the #if 0'ed pragmas that disable warnings on msvc 2004-03-10 07:04:31 +00:00
Daniel Stenberg
4e87dd89bf moved the curl_socket_t typedef downwards 2004-03-10 07:03:13 +00:00
Daniel Stenberg
60e4b57ad8 added the new socket type 2004-03-09 22:55:47 +00:00
Daniel Stenberg
ce5805a955 Use curl_socket_t instead of int for holding sockets. The typedefs and
defines are in setup.h.
2004-03-09 22:52:50 +00:00
Daniel Stenberg
dad0715d79 Added -I$(top_srcdir)/include, since lib/setup.h might include files from
the external curl include dir.
2004-03-09 21:49:46 +00:00
Daniel Stenberg
52d85341ae only build with the windows threading trace code if
DEBUG_THREADING_GETHOSTBYNAME is defined
2004-03-09 21:42:43 +00:00
Daniel Stenberg
7b2869338d explicit typecast to visualize that we really want the result of the
operation as a size_t
2004-03-09 21:39:50 +00:00
Daniel Stenberg
ab35b2837f Tor Arntsen's fix to a AIX build problem 2004-03-09 21:25:59 +00:00
Daniel Stenberg
863473a856 remove ares/aclocal.m4 before cvs update to prevent bad conflicts 2004-03-09 11:24:36 +00:00
Daniel Stenberg
be6af69dc7 mingw has str(n)casecmp() functions 2004-03-09 10:18:09 +00:00
Daniel Stenberg
3a80dc7f3e timezone dummy to build better on Windows - Gisle Vanem 2004-03-09 09:47:51 +00:00
Daniel Stenberg
bd42a2acb1 Gisle Vanem fixed the bad argc check 2004-03-09 09:43:30 +00:00
Daniel Stenberg
7f0e708322 the error message stuff is for 7.12 2004-03-09 09:38:16 +00:00
Daniel Stenberg
8cbfe5d24a Andrs Garca-fix to make it build with mingw 2004-03-09 08:38:25 +00:00
Daniel Stenberg
bab9f532f2 added HAVE_IOCTLSOCKET here 2004-03-09 08:35:33 +00:00
Daniel Stenberg
09cce943cb this is generated, removed from CVS 2004-03-08 16:29:45 +00:00
Daniel Stenberg
702021e099 don't compare signed/unsigned 2004-03-08 16:20:51 +00:00
Daniel Stenberg
e94c46c00c Removed John Clayton's really odd bug since its never been reported again and
it was quite a long time since he experienced that one.
2004-03-08 14:04:10 +00:00
Daniel Stenberg
9d311ff2c0 mention error 64 2004-03-08 13:57:38 +00:00
Daniel Stenberg
108434b95c the largefile for version_info fix 2004-03-08 13:17:53 +00:00
Daniel Stenberg
c30cb73a5b fread() returns a size_t 2004-03-08 12:56:18 +00:00
Daniel Stenberg
b7c56594b3 use curl standard source formatting 2004-03-08 12:51:33 +00:00
Daniel Stenberg
2b700fae9d typecast enum to int to make it printf() properly 2004-03-08 12:51:13 +00:00
Daniel Stenberg
ef783d8da7 variable type fixes 2004-03-08 12:48:09 +00:00
Daniel Stenberg
a4f1833629 Moved the error message buffer into the glob struct as well. 2004-03-08 12:47:37 +00:00
Daniel Stenberg
2c756fa1d7 Commented the Curl_read() arguments. 2004-03-08 12:37:46 +00:00
Daniel Stenberg
385086b460 size_t/int fix 2004-03-08 12:37:11 +00:00
Daniel Stenberg
72a4715dff strlen() returns size_t 2004-03-08 12:36:54 +00:00
Daniel Stenberg
7e6043f04f we ignore the ICC warning 1419 as well 2004-03-08 11:37:12 +00:00
Daniel Stenberg
576be36249 waitconnect() takes the timeout argument as a long 2004-03-08 11:36:47 +00:00
Daniel Stenberg
c52c592f4c store size as size_t
use %zd when outputting size_t
2004-03-08 11:33:49 +00:00
Daniel Stenberg
d9ffd2f544 don't use 'register'
make strtol() returns get stored in long variables
don't mix size_t with int
2004-03-08 11:28:14 +00:00
Daniel Stenberg
a684c51c9b size_t/int/long fixes 2004-03-08 08:38:29 +00:00
Daniel Stenberg
3fa4ac080e we must not only support long long for Largefile to work, we must have
a curl_off_t type that is larger than 4 bytes
2004-03-08 07:46:26 +00:00
Daniel Stenberg
9c8b2a9958 issue 12 fixed, the final known outstanding issue to be done before 7.11.1 2004-03-05 13:12:58 +00:00
Daniel Stenberg
498666bdc3 issue 12 fix 2004-03-05 12:54:18 +00:00
Daniel Stenberg
3d3612e252 another include to prevent warnings 2004-03-05 11:39:19 +00:00
Daniel Stenberg
e9920d8a04 two fixes, one new mirror 2004-03-05 10:18:58 +00:00
Daniel Stenberg
acc5096eef clonk 2004-03-05 10:14:46 +00:00
Daniel Stenberg
6717240650 more fixing to make the progress/getinfo stuff to work properly when doing
file: transfers too
2004-03-05 09:40:16 +00:00
Daniel Stenberg
ef0a2c714b clearly tell that these are ftp response timeouts 2004-03-05 09:37:48 +00:00
Daniel Stenberg
2cd6403011 Major rewrite of the test HTTP server to allow more fancy features to make
better tests with the issue12-patch applied.
This change also includes Andrs Garca's win32-fixes.
Made the logging look better/more readable in sws.log
2004-03-05 08:32:11 +00:00
Daniel Stenberg
75e1483e0d 'make clean' should only remove the generated html files, index.html is not
one of them!
2004-03-05 08:01:55 +00:00
Daniel Stenberg
8a4532ca2d mention the D binding 2004-03-05 07:57:07 +00:00
Daniel Stenberg
13f98c5c18 Multiple updates, most of them being proper formatting to create nice html
links in the web pages, but also additional facts and removal of old crap.
2004-03-05 07:55:02 +00:00
Daniel Stenberg
30e71d54e0 issue 12 fix is pending and is working in devel
added issue 24 - fix the progress meter for large files on slow networks to
not wrap
2004-03-04 16:19:12 +00:00
Daniel Stenberg
465753c2de When following to a new URL, we must make sure to call Curl_done() first,
since the current connection must be taken care of properly before we move
on. Christopher R. Palmer reported a problem he found due to this mistake.
2004-03-04 16:13:33 +00:00
Daniel Stenberg
e40392ac03 Andrs Garca's patch to prevent warnings while compiling with mingw, mainly
because it is now possible to have both WIN32 and HAVE_CONFIG_H defined.
2004-03-04 15:32:18 +00:00
Daniel Stenberg
1eb9fd6c4d use size_t for the data, but keep the protos use ssize_t to better fit
with the existing transfer.c code
2004-03-04 15:25:06 +00:00
Daniel Stenberg
78e47fbb5c include the proper header file too 2004-03-04 15:23:57 +00:00
Daniel Stenberg
2b59e90c54 fix progress data to be updated properly for file: transfers, as reported
by Jesse Noller
2004-03-04 15:12:12 +00:00
Daniel Stenberg
59a30e6d9b prevent harmless compiler warning 2004-03-04 12:57:12 +00:00
Daniel Stenberg
e0287fea20 David Byron's version resource fix 2004-03-04 09:56:39 +00:00
Daniel Stenberg
4fbf3f16e2 new "version resource" file for windows builds 2004-03-04 09:56:17 +00:00
Daniel Stenberg
de6433d5c2 show curl --version output as well 2004-03-03 14:46:37 +00:00
Daniel Stenberg
23ef66f33a largefile bit for the version_info and now winsock 1.1 only 2004-03-03 14:39:47 +00:00
Daniel Stenberg
2479e06848 David Byron's work on making libcurl only require winsock 1.1 on Windows
machines.
2004-03-03 13:32:56 +00:00
Daniel Stenberg
f2abe03fcf three days of changes 2004-03-03 13:30:18 +00:00
Daniel Stenberg
5e7f1a0eaf more variable type cleanups 2004-03-03 13:24:14 +00:00
Daniel Stenberg
eb9383d49b our timeout values are longs while 'tv_sec' is int 2004-03-03 13:17:44 +00:00
Daniel Stenberg
817d17354e make the backup variable of the same kind as the data it backups! ;-) 2004-03-03 13:12:30 +00:00
Daniel Stenberg
88e226c686 some more size_t usage, and two added typecasts when converting from size_t
to long (MIPSpro warnings)
2004-03-03 13:11:28 +00:00
Daniel Stenberg
9116dd41bd tv_sec is an int, so we explicitly typecast the result of long - long to
an int when we assign it.
2004-03-03 13:07:32 +00:00
Daniel Stenberg
213d64fbd7 attempted typecase to silence the MIPSpro warning:
cc-1506 cc: REMARK File = ../../curl/ares/ares__read_line.c, Line = 46
There is an implicit conversion from "unsigned long" to "int"; rounding, sign
extension, or loss of accuracy may result.

if (!fgets(*buf + offset, *bufsize - offset, fp))
2004-03-03 13:03:35 +00:00
Daniel Stenberg
a8419d68b6 #ifdef #define #undef circus to prevent compiler warnings on #if operations
with undefined variables.
2004-03-03 12:37:15 +00:00
Daniel Stenberg
87a1c7033e removed include stuff now handled by test.h 2004-03-03 10:09:30 +00:00
Daniel Stenberg
6e3fa90c9e We let this file include more generic headers that many libtests need anyway
to reduce the amount of #include stuff in each single libNNN.c file.
unistd.h was added to prevent select() warnings on FreeBSD
2004-03-03 10:09:16 +00:00
Daniel Stenberg
b2ef40731a Tom Bates' adjustment to build on his nsr-tandem-nsk. 2004-03-03 09:27:18 +00:00
Daniel Stenberg
e2f7030202 rename struct FILE to FILEPROTO, to prevent it from causing trouble with
the plain old FILE typedef.
2004-03-03 09:25:59 +00:00
Daniel Stenberg
533519cc9c Dan Fandrich fixed some GSS detection flaws 2004-03-03 09:16:36 +00:00
Daniel Stenberg
7c85be9435 corrected the reuse_fresh condition 2004-03-02 14:00:44 +00:00
Daniel Stenberg
89829093ca large file in jan 2004 2004-03-02 10:22:05 +00:00
Daniel Stenberg
7cb10a1853 various updates 2004-03-02 10:08:04 +00:00
Daniel Stenberg
33d67c68de two items fixed, one so old I don't think its valid anymore 2004-03-02 10:07:47 +00:00
Daniel Stenberg
e46b5719f2 display src/config.h as well after configure as run 2004-03-02 09:50:37 +00:00
Daniel Stenberg
353f764119 Yet another curl_off_t printf format attempt, we now exclude the %-letter from
FORMAT_OFF_T to allow additional options to get specified, like with '"%5"
FORMAT_OFF_T'.
2004-03-02 09:31:18 +00:00
Daniel Stenberg
9f437269fb Define CURL_NO_OLDIES to prevent us from getting obsolete stuff defined. 2004-03-02 09:13:28 +00:00
Daniel Stenberg
45391178c9 CURLOPT_MUTE is obsolete since a long while, we don't need to set it! 2004-03-02 09:11:52 +00:00
Daniel Stenberg
eddeb49fb6 clean the html and pdf files 2004-03-02 08:28:23 +00:00
Daniel Stenberg
7ab3b5b3bb use FORMAT_OFF_T instead of CURL_FORMAT_OFF_T to reduce the complexity of
having to redef that name
2004-03-02 07:25:39 +00:00
Daniel Stenberg
00d5f886e3 - we switch to simply use FORMAT_OFF_T internally
- Also, we must not assume that SIZEOF_CURL_OFF_T is defined, as this file
gets included from the ares dir at times and then it isn't defined.
2004-03-02 07:25:08 +00:00
Daniel Stenberg
49daeaf805 the CURLOPT_FRESH_CONNECT fix 2004-03-01 16:32:51 +00:00
Daniel Stenberg
d03fbf5dfb a fair day's work! 2004-03-01 16:30:59 +00:00
Daniel Stenberg
cb72a80fe0 Use CURL_FORMAT_OFF_T for printf()inf curl_off_t variables. 2004-03-01 16:28:00 +00:00
Daniel Stenberg
71d81f1f75 Now uses CURL_FORMAT_OFF_T instead of %Od
Fixed the check for bad resumes. Made test case 99 work and proved a bug
in test case ... eh, was it 32?
2004-03-01 16:27:34 +00:00
Daniel Stenberg
b0c51d198c large_file is a new feature we can require for a specific test 2004-03-01 16:25:24 +00:00
Daniel Stenberg
71335e5b99 support 'large_file' as a feature to require for specific tests (such as
test 99)
2004-03-01 16:24:54 +00:00
Daniel Stenberg
c9b23ca055 check for CURL_VERSION_LARGEFILE in the feature bitmask 2004-03-01 16:24:26 +00:00
Daniel Stenberg
7983ec84a7 set CURL_VERSION_LARGEFILE if we support large files 2004-03-01 16:24:04 +00:00
Daniel Stenberg
8cb2a68694 define ENABLE_64BIT if we have enabled 64bit large files
define our internal CURL_FORMAT_OFF_T define, we don't use the global one!
2004-03-01 16:23:35 +00:00
Daniel Stenberg
485122035c fixed the test code to work 2004-03-01 16:22:17 +00:00
Daniel Stenberg
5c4dba1418 * Added CURL_VERSION_LARGEFILE
* If CURL_NO_OLDIES is defined, we hide all obsolete functions/options.

* CURL_FORMAT_OFF_T is defined for portable printf()ing of curl_off_t types
(although not with curl_mprintf()!)
2004-03-01 16:20:20 +00:00
Daniel Stenberg
d6eb28400b added test 99, very basic initial large file test 2004-03-01 16:18:40 +00:00
Daniel Stenberg
526c61c657 global dns cache is not nice, we consider it obsolete starting now 2004-03-01 15:50:15 +00:00
Daniel Stenberg
fd6ec05916 Ignore the dreaded aclocal warnings on underquoted definitions that the
recent autoconf annoyingly introduced.
2004-03-01 13:14:26 +00:00
Daniel Stenberg
6789dfc5f5 Perhaps -Wundef is better on gcc versions after 2.95, since the autobuild
on FreeBSD gives us lots of warnings in system headers and I suspect this
option is what causes them!
2004-03-01 13:10:35 +00:00
Daniel Stenberg
193a652e6a When setting aggressive pedantic compiler options, display what options
that were set. For easier debugging/changing of this.
2004-03-01 13:02:34 +00:00
Daniel Stenberg
4d12be9867 removed an unnecessary shift and splut up som weird two-statements-per-line
code
2004-03-01 12:54:59 +00:00
Daniel Stenberg
87e7f4f688 Use the z-option to printf %d for size_t printf. z is supported by the
libcurl *printf and by Linux printf(). This should make the code work nicely
even for 64bit size_ts.
2004-03-01 12:45:12 +00:00
Daniel Stenberg
5eeaff8235 Support 'z' for size_t-sized integer printing, as in %zd or %zx. 2004-03-01 12:44:07 +00:00
Daniel Stenberg
7d2e872828 Only consider the fresh-connection option on the first connection made, not
on followed redirections etc. This should fix the bug #905365, which caused
NTLM to fail with the option set.
2004-03-01 09:43:42 +00:00
Daniel Stenberg
097938e6c8 Moved two 7.11.2 issues over to the more general TODO docs. 2004-03-01 09:08:52 +00:00
Daniel Stenberg
d57b84e290 minor spellfix 2004-03-01 08:54:22 +00:00
Daniel Stenberg
fcc07bed90 intend the top-level blurb to make it easier to discard it from the web
site output
2004-03-01 08:50:28 +00:00
Daniel Stenberg
43bda5cd17 Tor and David 2004-03-01 08:20:21 +00:00
Daniel Stenberg
45c7f064d4 mention how to make a curl handle use the share 2004-03-01 08:02:50 +00:00
Daniel Stenberg
4dfc0a78e7 Only attempt to send the FTP QUIT command if we actually have a FTP struct. 2004-03-01 07:59:25 +00:00
Daniel Stenberg
82bd583251 in Curl_disonnect(): call the protocol-specific disconnect function before we
unlink the "current" connection struct from the connection cache.
2004-03-01 07:19:26 +00:00
Daniel Stenberg
78f52c05a9 Report the correct size when 'verifiedserver' is requested. 2004-03-01 07:16:45 +00:00
Daniel Stenberg
d818cbe58c Dirk Manske fixed the attempt to install the removed errmem manpage 2004-02-29 18:39:31 +00:00
Daniel Stenberg
4ae4336643 using roffit 0.6 we can get <a href> links with the --mandir option 2004-02-27 15:48:13 +00:00
Daniel Stenberg
25bcd45034 formatting update to produce better links with the new roffit version 2004-02-27 15:34:06 +00:00
Daniel Stenberg
f53d6e1c39 elaborate on the URL option 2004-02-27 14:07:22 +00:00
Daniel Stenberg
17a3aa1ddc minor size_t fix to kill a warning 2004-02-27 13:21:47 +00:00
Daniel Stenberg
6c78b4b7c0 fixed some more size_t/int/long warnings and removed a few CMC comments 2004-02-27 13:21:14 +00:00
Daniel Stenberg
2b634be467 Mark obsolete options with OSBOLETE in a comment on the same line, to make
it easier to exclude them with grep, when grepping for options.
2004-02-27 12:41:03 +00:00
Daniel Stenberg
c5b8e446f6 ispell by Tor Arntsen 2004-02-27 12:27:40 +00:00
Daniel Stenberg
7bd55dc17c updated the debug option function from curl's acinclude.m4 2004-02-27 11:29:36 +00:00
Daniel Stenberg
009cd96490 remove the number of obsolete options 2004-02-27 09:02:29 +00:00
Daniel Stenberg
d0242da304 Added a few options that were still not documented. Now I believe all options
mentioned in the current curl/curl.h header file (that aren't marked as
obsolete) are present.
2004-02-27 09:02:06 +00:00
Daniel Stenberg
ab44763cb7 updated with recent events 2004-02-27 08:08:08 +00:00
Daniel Stenberg
3a80bb0a09 issue 21 is now history 2004-02-27 07:15:42 +00:00
Daniel Stenberg
77268e0649 Joe Halpin made the FTP code send 'QUIT' on the control connection before
it disconnects the TCP connection, like a good ftp client should!
2004-02-27 07:08:37 +00:00
Daniel Stenberg
1ceb77b4dc we need to hide this warning since it otherwise appears on all verifiedserver
requests to the ftp server!
2004-02-26 22:56:32 +00:00
Daniel Stenberg
3430ce7907 Kill the server when this test is done, as other FTP-tests sometimes
have problems otherwise.
2004-02-26 22:40:33 +00:00
Daniel Stenberg
4ba7ef34d1 fixed a "comparison between signed and unsigned" warning 2004-02-26 22:19:20 +00:00
Daniel Stenberg
4515d06465 David Byron's fixes to make the latest curl build fine under MSVC 6. 2004-02-26 16:23:28 +00:00
Daniel Stenberg
b6a4ca9bc8 this works like buildconf + configure does on unixes 2004-02-26 16:13:13 +00:00
Daniel Stenberg
9b6350d0b0 adjusted to work with the modified fopen() line and the new calloc line 2004-02-26 14:53:17 +00:00
Daniel Stenberg
07de0ff0ff Gisle Vanem's added support calloc()-debugging and outputting mode for
fopen() as well.
2004-02-26 14:52:51 +00:00
Daniel Stenberg
7d8cd5906c use calloc instead of malloc and we won't have to memset() the struct 2004-02-26 14:52:16 +00:00
Daniel Stenberg
1056d2d22d When this is verified to be a CVS tree, we remove the two generated source
files from the source dir to make certain they're generated in the build
process.
2004-02-26 13:59:10 +00:00
Daniel Stenberg
d571064b65 Clear up int/long/size_t/ssize_t usage a bit 2004-02-26 13:40:43 +00:00
Daniel Stenberg
33eaf2e18b minor fixes to avoid MIPSPro pedantic warnings 2004-02-26 12:47:43 +00:00
Daniel Stenberg
a054e5baf3 don't mix int and size_t, it generates warnings! 2004-02-26 12:45:29 +00:00
Daniel Stenberg
85af357d81 Make icc ignore "invalid format string conversion" warnings as well. They
appear because of our home-grown option '%Od' for the curl_off_t output.
2004-02-26 12:40:09 +00:00
Daniel Stenberg
d687eed33e use %ld when printf()ing long variables (and removed use of 'register') 2004-02-26 12:32:29 +00:00
Daniel Stenberg
38b6016dfa added the ever-present source header 2004-02-26 11:46:17 +00:00
Daniel Stenberg
be2cdf14f3 Don't call the lock/unlock functions if they are NULL. They can still be
NULL without violating protocol.
2004-02-26 11:39:38 +00:00
Daniel Stenberg
0943f33438 Use __INTEL_COMPILER instead of __ICC to the cpp to detect the Intel icc
compiler!
2004-02-26 11:37:14 +00:00
Daniel Stenberg
4427d91479 runtests.pl now provides the srcdir to the ftpserver so that it can pass
that to loadtest properly.
2004-02-26 09:19:59 +00:00
Daniel Stenberg
0c03ed6013 modified loadtest() to produce better error message when it fails to load
a test file
2004-02-26 09:19:16 +00:00
Daniel Stenberg
0c3c1b390a The build logs were created in the "wrong" dir and thus never removed
after use, this is an attempt to fix this.
2004-02-26 07:58:49 +00:00
Daniel Stenberg
9b09193cfd today's work 2004-02-25 15:44:39 +00:00
Daniel Stenberg
b2cff76722 typecast to int when printfing CURLcode 2004-02-25 15:43:15 +00:00
Daniel Stenberg
37817667e2 use %ld when printfing longs 2004-02-25 15:41:36 +00:00
Daniel Stenberg
f9b2b7940e disable the use of long double, we don't use it 2004-02-25 15:34:05 +00:00
Daniel Stenberg
5168b32f86 if ares is present, run aclocal in that dir before autoconf is run 2004-02-25 14:32:57 +00:00
Daniel Stenberg
0373758359 added the better debug option logic from curl by adding acinclude.m4 to the
configure stuff
2004-02-25 14:32:39 +00:00
Daniel Stenberg
df94c7aedc Based on a patch by Greg Hewgill I modified how long long is used, as we
can use a 64bit type with MSVC that is a long long equivalent.
2004-02-25 14:15:38 +00:00
Daniel Stenberg
6bd2de0c42 set debug options when using the icc compiler 2004-02-25 14:14:30 +00:00
Daniel Stenberg
82c31256e1 better formatting of the share options 2004-02-25 12:34:19 +00:00
Daniel Stenberg
403cbbe0c4 mark the function name 2004-02-25 12:32:33 +00:00
Daniel Stenberg
9a7e3437ae added CURLOPT_SHARE 2004-02-25 12:20:41 +00:00
Daniel Stenberg
4fa58560bf Moved most of the set-debug-options-depending-on-compiler logic to the new
CURL_CC_DEBUG_OPTS function in acinclude.m4
2004-02-25 10:19:02 +00:00
Daniel Stenberg
be62b27ce2 Output $CC and $CFLAGS as well. A Tor Arntsen patch. 2004-02-25 09:03:09 +00:00
Daniel Stenberg
3be66f3a03 Don't check for HAVE_ defines in this header file, it is meant to be public
and we can't depend on configure-defines in it. This logic is borrowed from
the public curl headers.
2004-02-25 07:22:00 +00:00
Daniel Stenberg
089bdaed00 fix 2004-02-25 07:17:31 +00:00
Daniel Stenberg
0d3674129f Dan Fandrich fixed a minor flaw in Dominick's fix! 2004-02-25 06:37:42 +00:00
Daniel Stenberg
fce6783be4 check for a few basic header files 2004-02-23 16:20:42 +00:00
Daniel Stenberg
48bc26e7e3 include sys/select.h 2004-02-23 16:20:31 +00:00
Daniel Stenberg
f128fae705 fixed some warnings in the (both new and old) base64 usage 2004-02-23 16:09:39 +00:00
Daniel Stenberg
800fa31b65 features no one seem to care much about are now moved over to the 7.11.2
release
2004-02-23 16:04:16 +00:00
Daniel Stenberg
2ae4420869 make newer MSCV7 compilers use _strtoi64() as a strtoll() replacement 2004-02-23 14:24:49 +00:00
Daniel Stenberg
8ba042cf88 limit rate and windows timeouts 2004-02-23 13:48:27 +00:00
Daniel Stenberg
7adf43c1c5 ares_free_errmem is gone 2004-02-23 13:35:28 +00:00
Daniel Stenberg
d007e5615c unused and now removed 2004-02-23 13:33:18 +00:00
Daniel Stenberg
888eec833c Removed getpass from here. The fact this still was present here indicates
that this file is out of date!
2004-02-23 12:01:10 +00:00
Daniel Stenberg
2911e63bc2 curl_off_t is 8 bytes big on windows 2004-02-23 11:59:28 +00:00
Daniel Stenberg
34d247bc4e switch the arguments according to the c source 2004-02-23 11:44:03 +00:00
Daniel Stenberg
99bc7e5fd3 oops, the decode() function got its arguments reversed in my cleanup
operation!
2004-02-23 11:39:21 +00:00
Daniel Stenberg
0b1f7995c5 correct the input data structs 2004-02-23 09:01:08 +00:00
Daniel Stenberg
f35c28214e use size_t to keep strlen() results 2004-02-23 08:38:49 +00:00
Daniel Stenberg
35fd1365ae simplied how create_hostcache_id() is used, and also its function somewhat
cleared up some ssize_t/size_t mixups
2004-02-23 08:35:57 +00:00
Daniel Stenberg
f493081004 adjusted to the modified base64 protos 2004-02-23 08:24:53 +00:00
Daniel Stenberg
e1b5e15431 More size_t cleanups in the base64 functions. 2004-02-23 08:22:43 +00:00
Daniel Stenberg
1aba4c519b The base64 encode function now takes a size_t for size, not an int as
previously.
2004-02-23 08:07:55 +00:00
Daniel Stenberg
ae76a67566 more int vs long/size_t fixes after icc compiler warnings 2004-02-23 08:04:31 +00:00
Daniel Stenberg
76241d0a02 more int/long fixes after icc "remarks" 2004-02-23 08:00:56 +00:00
Daniel Stenberg
89227a9d75 next_id is an unsigned short, typecast the assign to prevent picky compilers
to warn
2004-02-23 07:57:44 +00:00
Daniel Stenberg
dfb5090e0f typecase the bitfiddling results since we get a long and we store an int,
they may not be of the size size
2004-02-23 07:55:58 +00:00
Daniel Stenberg
c7fe8a7a11 make ares_expand_name() take a long * instead of an int *, since we do
pointer arithmetic (ptr1 - ptr2) and to do that properly on 64bit we need
long
2004-02-23 07:52:20 +00:00
Daniel Stenberg
7174ca7a20 strlen() returns a size_t, which might be larger than int on some platforms 2004-02-23 07:46:59 +00:00
Daniel Stenberg
2e61fde07f argh, use single-quotes instead of double ones to make $Revision appear 2004-02-23 07:32:45 +00:00
Daniel Stenberg
41263f7d88 use the proper source header, and set the version string to this file's
revision number
2004-02-23 07:17:13 +00:00
Daniel Stenberg
02095ba0e1 cd back to the root path before removing the build dir, since some systems
refuse to remove the dir otherwise!
2004-02-23 07:08:59 +00:00
Daniel Stenberg
32a678eab3 Dominick Meglio's fix for supporting multiple names in the Nameserver key
on Windows.
2004-02-22 22:42:20 +00:00
Daniel Stenberg
bd7ba3bde6 this code uses no long long, so we can have warnings about them 2004-02-22 22:36:36 +00:00
Daniel Stenberg
0ffec4272a the missing part of Gisle Vanem's connect-timeout fix for win32 2004-02-22 22:31:24 +00:00
Daniel Stenberg
ea4cd4d8aa -Wno-format-nonliteral does not exist in my gcc 2.96, only use that with
newer versions
2004-02-21 16:56:01 +00:00
Daniel Stenberg
c7775c59bf mention in --limit-rate that --speed-limit might ruin the limiting slightly. 2004-02-21 16:18:57 +00:00
Daniel Stenberg
243bd5bbb4 David Byron's fix to allow the speed-limit logic work even if you set
limit-rate. It does work on the expense of the rate limiter.
2004-02-21 15:08:21 +00:00
Daniel Stenberg
4bde770169 added some extra typecasts to prevent compiler warnings when converting
int to various types
2004-02-21 15:05:46 +00:00
Daniel Stenberg
9af7e46f72 inlcude krb4.h to get the proto for Curl_krb_kauth() to satisfy picky
compilers
2004-02-21 14:57:29 +00:00
Daniel Stenberg
7d844c430c Gisle Vanem brings name resolving timeout possibilities to windows people.
This works by magicly starting up a new thread that can be killed when the
timeout is reached. testtesttest!
2004-02-20 16:41:50 +00:00
Daniel Stenberg
4f953b6459 that icc attempt in configure 2004-02-20 16:29:57 +00:00
Daniel Stenberg
44995d6877 Some compilers warn on completely empty source files, we provide a blank
one to prevent that.
2004-02-20 16:22:47 +00:00
Daniel Stenberg
2ebc821558 Convert functions to ANSI-style declaration to prevent compiler warnings 2004-02-20 16:18:26 +00:00
Daniel Stenberg
907bb78f3e When the built-in manual is disabled, we generate a function doing nothing
just to avoid making a totally empty file. Just to avoid compiler warnings.
2004-02-20 15:39:37 +00:00
Daniel Stenberg
b2e1bf7e7d No longer support Z as a flag to print size_t, it isn't used by libcurl
and I doubt anyone else uses it.

Better preprocessor magic for the O flag (for curl_off_t printing) to prevent
compiler warnings.
2004-02-20 15:16:31 +00:00
Daniel Stenberg
7173a0f7b6 cool.haxx.se, no longer sourceforge 2004-02-20 13:09:35 +00:00
Daniel Stenberg
a49bebc74e Only use -Wstrict-prototypes with gcc 3.3 or later.
It is working with earlier versions, but when I use it with 3.0.3, I can't
get it to ignore errors in "system headers" with -isystem so we get
excessive amounts of warnings on SSL headers which is very annoying.
2004-02-20 10:11:50 +00:00
Daniel Stenberg
8777ba7e42 include sys/select.h to prevent picky compiler warnings when using select()
without proto
2004-02-20 08:51:43 +00:00
Daniel Stenberg
a39669198f we call the macro CURLMAX() isntead of MAX(), just because it turned up
it collides with another MAX define on some platforms (like netbsd 1.6.1)
2004-02-20 08:47:23 +00:00
Daniel Stenberg
2c0c75e345 oops, missed a define when I changed from Curl_ to curlx_ 2004-02-20 07:22:25 +00:00
Daniel Stenberg
236337ce86 fix protos to prevent warnings 2004-02-20 07:19:18 +00:00
Daniel Stenberg
224ccc780a added getpart.h for the spitout() proto 2004-02-20 07:19:01 +00:00
Daniel Stenberg
ccde85d198 %HTTPPORT supported in subVariables 2004-02-20 07:14:58 +00:00
Daniel Stenberg
9e7657d6ed mention what ports the test suite uses 2004-02-20 07:05:10 +00:00
Daniel Stenberg
7ac455fca3 When trying to see if there's a friendly http server on "our" port, we
only accept return code 7 to indicate that there's no server present.
2004-02-20 06:59:17 +00:00
Daniel Stenberg
e295cd759c -Wcast-align is a bit too annoying 2004-02-19 21:34:52 +00:00
Daniel Stenberg
a472cd9310 Anything that looks like gcc 5.0 or more is no longer treated as gcc. I hope
this will make us exclude icc 8.0 etc.
2004-02-19 21:32:19 +00:00
Daniel Stenberg
8794cb286b refer to FILEFORMAT 2004-02-19 21:21:12 +00:00
Daniel Stenberg
455b1af214 When --enable-debug is used, for every -I provided to $CPPFLAGS we add
a corresponding -isystem, if using gcc, to inhibit warnings on those
headers.
2004-02-19 19:25:11 +00:00
Daniel Stenberg
d765a00adb Tor Arntsen's tiny fix! 2004-02-19 16:24:22 +00:00
Daniel Stenberg
de37308722 if not yacc or bison is found, check if we *really* need it, and if we do
we bail out!
2004-02-19 15:58:58 +00:00
Daniel Stenberg
7729c63be0 fixed the no-ssl version to return int as well 2004-02-19 15:39:06 +00:00
Daniel Stenberg
eebcf90942 provide protos to the functions to prevent warnings 2004-02-19 13:03:04 +00:00
Daniel Stenberg
fa8ecd3d53 typecast the type to an int on return 2004-02-19 13:00:33 +00:00
Daniel Stenberg
134cb66129 return int from test() 2004-02-19 13:00:05 +00:00
Daniel Stenberg
349a15b089 provide a test() proto 2004-02-19 12:59:57 +00:00
Daniel Stenberg
c14fa2c935 use a die and a log function to die and log texts
better detect test suite failures
remove the buildlog at exit
make a random buildlog file name, now in the same dir where the build dir
is created
checks if the ares build succeeded
2004-02-19 12:56:45 +00:00
Daniel Stenberg
6ca7af3419 remove the build.log too at exit, and also use the proper $pwd prefix
to find the files/dirs to remove so that it still works if we "die" after
having done a 'cd'
2004-02-19 12:10:07 +00:00
Daniel Stenberg
afa5924487 very minor phrase edit 2004-02-19 10:21:54 +00:00
Daniel Stenberg
bd63a557f3 fixes from the recent days 2004-02-19 10:21:43 +00:00
Daniel Stenberg
49aa798082 check for standard headers when --enable-debug is used 2004-02-19 09:33:59 +00:00
Daniel Stenberg
c6e5b67197 Doug Porter's patch that changes the order of preferences on how to find the
default netrc file. We now read and uses HOME _before_ we use getpwuid() to
better allow users to move around HOME to use different .netrc files without
having to rely on even blacker magic.
2004-02-19 09:22:00 +00:00
Daniel Stenberg
e7050f97c4 If --enable-debug is used and gcc, we figure out which version and then we
use as aggressive warning options as possible for the used compiler version.
2004-02-19 09:01:13 +00:00
Daniel Stenberg
b28f3d43bf item 19 is considered fixed until we get to hear differently
item 25 is now dealt with using the curlx_ prefix, mentioned in detail here:
http://curl.haxx.se/mail/lib-2004-02/0215.html
2004-02-19 08:19:21 +00:00
Daniel Stenberg
edd467a12c Use the strtoofft.h header file from the lib directory, as we are now
officially using library-code when building the app (at least for the platforms
that don't have a strtoll() on their own).
2004-02-19 08:13:20 +00:00
Daniel Stenberg
0bf1bd51c4 Remade to use curlx_-prefix. This means this function can be compiled and
linked separately by the application. This function is not provided by the
libcurl API. It can only be accessed by apps if they compile and use this
particular source code.
2004-02-19 08:12:13 +00:00
Daniel Stenberg
4cf70e3069 AIX and Tru64 have what Tor calls "horribly broken 'which' programs" so we
now scan the PATH ourself to find the path to (g)libtool
2004-02-18 16:16:13 +00:00
Daniel Stenberg
9efddfedab removed some "jhrg" from comments 2004-02-18 15:28:56 +00:00
Daniel Stenberg
4b11e19f26 I removed the socklen_t requirement from memdebug.h, so we don't need to
figure it out here anymore to build debug builds.
2004-02-18 12:26:27 +00:00
Daniel Stenberg
de681d3b8f Made curl_accept() take a 'void *' instead of 'socklen_t *' in the 3rd
argument to also not force the casual includer to know about the socklen_t
type.
2004-02-18 12:22:56 +00:00
Daniel Stenberg
f33be3c313 Modified curl_accept() to take a 'void *' in the 2nd argument instead of
sockaddr *. This has the added benefit that source files that include
memdebug.h doesn't have to know about "sockaddr".
2004-02-18 12:18:33 +00:00
Daniel Stenberg
62a12b7faf No longer uses the 'ret' variable in the plain ipv4-version of
my_getaddrinfo() (caused a warning by the IRIX MIPSPro compiler). Also
clarified the situation for the 3-arg version of gethostbyname_r() with a huge
comment.
2004-02-18 10:05:17 +00:00
Daniel Stenberg
e75ab79bdb The --enable-debug option really requires this to be built as part of curl.
When using it, we now set the include path to better find the devel curl
headers, and we check for the socklen_t type since the curl memdebug stuff
needs it.
2004-02-18 09:07:50 +00:00
Daniel Stenberg
abd7e32c66 simplified and better commented config.h include logic 2004-02-18 08:35:51 +00:00
Daniel Stenberg
e2b6a45cfa Make sure dns cache timeout -1 really means forever, as it is documented to
be. Simply skip the pruning.
2004-02-18 07:56:18 +00:00
Daniel Stenberg
e0c0b2ba7d fix the help text for --manual if built without manual 2004-02-17 13:46:00 +00:00
Daniel Stenberg
debbcf81bb ignore more 2004-02-17 07:57:31 +00:00
Daniel Stenberg
8300a880cc memdebug build, 'make' no longer builds the demo tools 2004-02-17 07:41:10 +00:00
Daniel Stenberg
420bbd2e08 'make all' also builds the demos 2004-02-17 07:40:46 +00:00
Daniel Stenberg
d87981e4c1 include ares_private.h to make sure we get the memdebug stuff included 2004-02-17 07:40:31 +00:00
Daniel Stenberg
59091fa860 If CURLDEBUG is set we use the libcurl internal memdebug system to track
memory leaks etc.
2004-02-17 07:40:02 +00:00
Daniel Stenberg
dc659ec736 only build adig and ahost if 'make demos' is used 2004-02-16 16:27:18 +00:00
Daniel Stenberg
09aa165942 support closesocket() for closing sockets as well, as then we can use this
code fine on ares!
2004-02-16 16:24:01 +00:00
Daniel Stenberg
f2fbb5f3d5 Make realloc() support NULL as pointer. Made to allow us to use these routines
to memdebug the ares stuff as well.
2004-02-16 16:23:19 +00:00
Daniel Stenberg
29bedfcf7f item 24 fixed, edited a few issues 2004-02-16 15:27:40 +00:00
Daniel Stenberg
ccdaa0b51f Make the 'areschannel' get created in the curl_easy_init() and re-use that
same channel during the whole curl handle's life until curl_easy_cleanup().
2004-02-16 15:24:22 +00:00
Daniel Stenberg
f516734941 updates 2004-02-16 13:36:08 +00:00
Daniel Stenberg
d53d33698c verbose-fix, socks5-fix, dnscache-fix, configure-winmmlib-fix 2004-02-16 13:33:41 +00:00
Daniel Stenberg
39926181ea Fix verbosconnect() when ipv6-enabled to not assume that conn->serv_addr
is a valid pointer, but instead always depend on the passed-in dns pointer.
This happens to be NULL when the connection is re-used...
2004-02-16 13:14:55 +00:00
Daniel Stenberg
8415b4a271 removed usage of a silly macro instead of the actual functions memcpy
and memset
2004-02-16 09:56:18 +00:00
Daniel Stenberg
e4916145ef Jeff Lawson pointed out that we need to check for a '5' in the version field
to properly work with SOCKS5 proxies. I also included some ascii art describing
the SOCKS5 response, as RFC1928 describes. Jeff provided details in bug
report #741841 and here: http://curl.haxx.se/mail/lib-2004-02/0181.html
2004-02-16 07:33:30 +00:00
Daniel Stenberg
3ec605de67 Andrs Garca added a check for lwinmm for Mingw/sys 2004-02-15 22:34:58 +00:00
Daniel Stenberg
a7e04cac78 Mark the dns entry 'inuse' properly even when used from the cache. This
seems to correct some host cache screw-ups I could reproduce.
2004-02-15 16:57:53 +00:00
Daniel Stenberg
8ddc18a4f9 another case which should use CURLcode and not int 2004-02-15 13:58:57 +00:00
Daniel Stenberg
0d3aa8b7be Use the was_iface variable when binding a socket locally, even if no
SO_BINDTODEVICE is present, to prevent compiler warnings about the variable
2004-02-15 13:55:24 +00:00
Daniel Stenberg
496bbceef1 bind interface and large file fixes 2004-02-15 13:51:07 +00:00
Daniel Stenberg
901edd32b5 recent fixes 2004-02-15 13:50:04 +00:00
Daniel Stenberg
0612c275a7 (void) functions we don't check the return code for 2004-02-15 13:48:50 +00:00
Daniel Stenberg
f3d91528a1 CURLcode/int cleanup to reduce IRIX warnings
Removed some dates/names in the comments.
2004-02-15 13:48:28 +00:00
Daniel Stenberg
f7fae23546 spell! 2004-02-15 13:47:32 +00:00
Daniel Stenberg
2d41efb71e don't assume we can use gcc 2.96+ options 2004-02-15 12:30:40 +00:00
Daniel Stenberg
7abf2f44ec in the socks code, make sure we receive Curl_read results in ints and
Curl_write in CURLcode, to keep the picky compilers happy
2004-02-13 12:42:37 +00:00
Daniel Stenberg
3a36d4fdea removed usage of unset variables (by a function that does nothing!) 2004-02-13 12:28:27 +00:00
Daniel Stenberg
12b71e422f return an int 2004-02-13 12:18:34 +00:00
Daniel Stenberg
d25a0a1bc8 return an int, not a CURLcode 2004-02-13 12:17:42 +00:00
Daniel Stenberg
4d17e77532 use CURLcode, not int, prevents picky compilers to warn 2004-02-13 12:16:24 +00:00
Daniel Stenberg
6a921197e2 the now and start variables were never really used 2004-02-13 12:13:30 +00:00
Daniel Stenberg
fa57a8a78e Ben Greear's SO_BINDTODEVICE patch that binds to a network interface "even
more" when the previous approach. Known to work on Linux, possibly on other
platforms as well.
2004-02-13 09:50:23 +00:00
Daniel Stenberg
eb4d65d0ba Tor Arntsen made the ares build warnings etc get included as well 2004-02-13 07:15:36 +00:00
Daniel Stenberg
e7d9ea8919 Greg Hewgill found out 'contentlength' wasn't big enough to hold a large file! 2004-02-13 07:12:40 +00:00
Daniel Stenberg
372b141d5b make the path const 2004-02-13 07:05:15 +00:00
Daniel Stenberg
115e74a8ad I made the same fix here, that Tor already did in the ftp.c code. To make
sure this doesn't get weird on 64bit archs.
2004-02-13 07:03:03 +00:00
Daniel Stenberg
1b26fe39f9 Tor Arntsen's fix for the bad (64bit wise) typecast when using gmtime() 2004-02-13 06:59:49 +00:00
Daniel Stenberg
4674f3f115 Make hostcache_fixoffset() take a long for offset, to fully work with 64bit
archs, also no longer typecast pointers to ints as that is a nono on 64bit
systems.
2004-02-12 16:02:55 +00:00
Daniel Stenberg
d8a1415646 up to date with recent fixes 2004-02-12 15:50:38 +00:00
Daniel Stenberg
773e7e871e If no nroff tool is found, or if no command line switch to nroff that converts
a man page to text is found, we disable the built-in manual stuff to still
be able to build.
2004-02-12 15:05:38 +00:00
Daniel Stenberg
1d937d62c0 support configure --disable-manual 2004-02-12 14:46:12 +00:00
Daniel Stenberg
f3663a9d0f added --enable/disable-manual 2004-02-12 14:45:50 +00:00
Daniel Stenberg
199b2f4602 no need to run make test in the data dir anymore 2004-02-12 14:43:13 +00:00
Daniel Stenberg
49ab1d914c provide a source path to the servers to make them find the tests when run
outside the source dir, not needing any symlinks
2004-02-12 14:40:08 +00:00
Daniel Stenberg
f9a6e7b68d stop doing the weirdo symlinks 2004-02-12 14:39:28 +00:00
Daniel Stenberg
5d64d657de removed the subchar variable, it was only set and never used 2004-02-12 09:53:03 +00:00
Daniel Stenberg
52caba0417 removed the ldaptext variable, it was only set and never used 2004-02-12 09:51:43 +00:00
Daniel Stenberg
ad1a70205f removed the nth variable, it was only set and never used anyway 2004-02-12 09:50:44 +00:00
Daniel Stenberg
d57eed6f22 No longer receive the return code in ConnectionKillOne() that wasn't dealt
with anyway and thus caused picky compiler to warn.
2004-02-12 09:48:27 +00:00
Daniel Stenberg
a3d39efa3b Andrs Garca's additional fix to make the OpenSSL stuff work for msys/mingw 2004-02-11 21:14:54 +00:00
Daniel Stenberg
50efb8f33e #if-check for SIGALRM before assuming it is present 2004-02-11 21:11:08 +00:00
Daniel Stenberg
ad75360ec7 use libtoolize --force to overwrite existing (older) files 2004-02-11 13:08:38 +00:00
Daniel Stenberg
7f29bf61e2 install ares_version.h as well 2004-02-11 12:59:16 +00:00
Daniel Stenberg
9ca395fded Dirk Manske's fix to install ares_version.h as well 2004-02-11 12:58:43 +00:00
Daniel Stenberg
68e140b2eb mondays are busy days catching up with the patches from the weekend! ;-) 2004-02-09 16:16:05 +00:00
Daniel Stenberg
283f68f660 Dominick Meglio's update 2004-02-09 13:51:52 +00:00
Daniel Stenberg
e6947f99ed recent updates 2004-02-09 13:41:24 +00:00
Daniel Stenberg
93e32e6f62 Modified the default HTTP Accept: header to only be Accept: */* 2004-02-09 12:46:41 +00:00
Daniel Stenberg
f8a5ec1380 Removed, this was only used to work out what went wrong with test 91, and
we seem to have nailed that one now!
2004-02-09 11:41:07 +00:00
Daniel Stenberg
2d0b2f294f Oops. I broke the flow with the previous commit. 2004-02-09 11:40:00 +00:00
Daniel Stenberg
08e286ed68 P R Schaffner updated this to work for 7.11.0 2004-02-09 10:24:55 +00:00
Daniel Stenberg
220caed248 Dominick Meglio's added share interface documentation 2004-02-09 09:07:26 +00:00
Daniel Stenberg
6eb0b5b917 removed the state file renaming I accidentally left there 2004-02-09 08:55:33 +00:00
Daniel Stenberg
3bdc883c93 some annoying compilers warn about "(void)foo;" lines so we avoid them 2004-02-09 08:34:19 +00:00
Daniel Stenberg
cc85f813d1 Make param2text() take an int argument, as that is what's being passed in.
This is made to prevent compiler warnings.
2004-02-09 08:31:52 +00:00
Daniel Stenberg
e723d2eb7c use VAR_NONE instead of 0 in the table to prevent compiler warning 2004-02-09 08:29:09 +00:00
Daniel Stenberg
b440c6638f return 'res' to better discover test failures and to stop compiler warnings
about it never being used
2004-02-09 08:28:00 +00:00
Daniel Stenberg
648c5b05c0 Uninitialized variable set. 2004-02-09 08:25:48 +00:00
Daniel Stenberg
011929cf4d Tor Arntsen's patch for working around a notorious bug in the AIX5
getaddrinfo() implementation.
2004-02-09 07:52:36 +00:00
Daniel Stenberg
7f679c3da3 Ken Rastatter's fixes to improve portability of this example:
These minor changes remove portability issues with the this example and allow
it to run on Win32. Specifically:

* The use of pthread_create() has been replaced by g_thread_create(). This
removes the dependency on the pthreads library. Since this is an example using
GTK+, g_thread_create() is available as it is a part of glibc.

* The CURLOPT_FILE option is now referred to by its "newer name"
CURLOPT_WRITEDATA.

* The use of CURLOPT_WRITEFUNCTION has been added.  As described in the docs,
this avoids the crashes when using a DLL under Win32.

* The output file has been renamed from "/tmp/test.curl" to "test.curl". It's
unlikely that there is a /tmp when in Win32 and other examples in libcurl
write their output files to the working directory.
2004-02-09 07:12:33 +00:00
Daniel Stenberg
3e4cd0b422 mingw configure fix, host: fix, compiler warnings in ldap.c 2004-02-06 14:27:08 +00:00
Daniel Stenberg
fc4f777b42 updated with recent fixes 2004-02-06 14:23:10 +00:00
Daniel Stenberg
208a31f549 The Curl_strtoll() issue 2004-02-06 14:17:30 +00:00
Daniel Stenberg
e565631afe updated 2004-02-06 13:42:49 +00:00
Daniel Stenberg
9f2780a2ee Rewrote the gethostbyname() check after Andrs Garca's provided patch
for finding it using mingw on windows.
I also made the script skip the search for gethostbyname_r and gethostbyaddr_r
when ipv6 is enabled.
2004-02-06 12:13:20 +00:00
Daniel Stenberg
1a6969a887 Added documentation of a few command line options that were still undocumented
here.
2004-02-06 10:17:13 +00:00
Daniel Stenberg
f56d753507 A custom Host: header is only considered if the request is not made by
following a location. After discussions with Tim Baker.
2004-02-06 08:11:58 +00:00
Daniel Stenberg
e5165af5a6 The MIPSPro compiler complains on constructs such as "(void)foo;" so
we avoid it where possible.
2004-02-06 07:59:16 +00:00
Daniel Stenberg
83e878420a Make sure DynaGetFunction() returns a function pointer, not a data pointer.
The standards don't actually allow typecasts between data and functions so
some picky compilers warn about this.
2004-02-06 07:28:49 +00:00
Daniel Stenberg
58a5f485db Remove the attempt to detect if we already tested the same source setup.
We really don't care, and so many other things could've changed to make the
new test interesting anyway.
2004-02-06 07:15:27 +00:00
Daniel Stenberg
e8fb77fac3 numerous things went in today 2004-02-05 21:52:53 +00:00
Daniel Stenberg
d292088a83 added the missing stdin section 2004-02-05 21:51:45 +00:00
Daniel Stenberg
de100f8b51 An attempt to only set both libz-related defines at the same time. We need
both the lib and the header present for both defines to be set. If only one
of the files is found, we issue a warning and set no define.
2004-02-05 21:40:05 +00:00
Daniel Stenberg
1cb2306ae0 Andrs Garca's updates 2004-02-05 21:03:53 +00:00
Daniel Stenberg
cc90a235f4 if an empty 'transfer-encoding:' header is provided, we switch off the
chunky coding of uploads
2004-02-05 15:50:16 +00:00
Daniel Stenberg
e97ce57d0b Made a test that sends data on stdin to PUT, with a given length and
chunked transfer-encoding disabled. Fixed to work after Len Krause's
bug report.
2004-02-05 15:21:46 +00:00
Daniel Stenberg
dc753b8315 Gisle Vanem fixed a windows compiler warning 2004-02-05 13:25:14 +00:00
Daniel Stenberg
a5c4442ebf changed the test() function to return type int 2004-02-05 12:34:17 +00:00
Daniel Stenberg
a271cfb697 include process.h to get the _getpid() proto 2004-02-05 12:19:13 +00:00
Daniel Stenberg
6dffe9702d when using --enable-debug and gcc, provide the -Wno-format-nonliteral option
to prevent the warning in mprintf.c:

(currently line 930) "format not a string literal, argument types not checked"
2004-02-05 10:38:32 +00:00
Daniel Stenberg
f71139750d options we get as longs need to be typecasted when assigned to prevent
picky compiler warnings
2004-02-05 09:38:56 +00:00
Daniel Stenberg
690b3e58b2 fix return type to silence compiler warnings 2004-02-05 09:38:10 +00:00
Daniel Stenberg
0c7cb0c10f prevent warning from that picky MIPSpro compiler 2004-02-05 09:37:46 +00:00
Daniel Stenberg
4816294f52 compiler warning fix, compare struct pointers of the same type 2004-02-05 09:37:04 +00:00
Daniel Stenberg
6587ff440a use the timeout options when waiting for the server to connect when using
PORT
Provide better error messages to allow debugging if one if the ipv6-related
name functions fail in the ftp_use_port() function. This might help us
diagnose the problems on AIX. Also make sure getaddrinfo() uses NULL and
not "0" for the service argument.
2004-02-05 09:26:01 +00:00
Daniel Stenberg
791e49134b hide the pack_hostent proto if ipv6 is enabled, as figured out by Tor Arntsen 2004-02-05 08:34:31 +00:00
Daniel Stenberg
9254c3a103 Fix the socklen_t type too. Needed only when built with memory debugging
as then we include the memdebug.h header from the lib dir, and it then
requires this type... (fails on IRIX 6.5 without this)
2004-02-05 08:27:47 +00:00
Daniel Stenberg
9c95ebcbe7 fixed "comparison between signed and unsigned" complaints 2004-02-04 10:24:23 +00:00
Daniel Stenberg
3a4ed71b88 don't use 'sin' as variable name as the picky compiler warnings complain
about it shadowing the function sin()
2004-02-04 10:23:15 +00:00
Daniel Stenberg
d6d312d550 fixing 2004-02-04 09:16:05 +00:00
Daniel Stenberg
1fa163fdf7 prevent a compiler warning about a macro definition 2004-02-04 08:04:28 +00:00
Daniel Stenberg
82b27d1b97 prevent the windows version to use global symbol names
added prototypes for the strcasecmp() functions
2004-02-04 08:00:25 +00:00
Daniel Stenberg
f7dee3b846 we use the more aggressive compiler warnings 2004-02-04 07:54:42 +00:00
Daniel Stenberg
a7b5045598 made more pointers unsigned, as they were mostly used passed in to functions
that assume them to be unsigned. Stops compiler warnings.
2004-02-04 07:52:13 +00:00
Daniel Stenberg
b7fda8ec73 typecast comparision between signed and unsigned 2004-02-04 07:51:30 +00:00
Daniel Stenberg
3d7f4c0d77 try_config() takes a second parameter as const, to prevent picky compiler
warnings
2004-02-04 07:50:51 +00:00
Daniel Stenberg
01771e50a1 takes a void *, not a char * anymore 2004-02-04 07:50:18 +00:00
Daniel Stenberg
c23cf6a058 ares_free_string() now takes a void * instead 2004-02-04 07:49:33 +00:00
Daniel Stenberg
79f9914af8 don't compare signed and unsigned 2004-02-04 07:48:46 +00:00
Daniel Stenberg
803fb123cb added a tags target 2004-02-04 07:48:20 +00:00
Daniel Stenberg
97728f5b1c new configure file 2004-02-04 07:48:00 +00:00
Daniel Stenberg
36d5f30b8c use configure.ac instead of configure.in
support --enable-debug to switch on picky compiler options
2004-02-04 07:47:04 +00:00
Daniel Stenberg
e82a575894 stop a compiler warning 2004-02-04 07:40:25 +00:00
Daniel Stenberg
773a8fe598 no one uses libcurl before 7.7 anyway... 2004-02-03 15:59:06 +00:00
Daniel Stenberg
fa1c0d4a56 libcares.a is here 2004-02-03 14:06:16 +00:00
Daniel Stenberg
7e01548d46 link with libcares instead of libares 2004-02-03 13:58:38 +00:00
Daniel Stenberg
14b36a8cba We now produce 'libcares.a' instead, to make it possible to have both c-ares
and the original ares installed in the same lib dir.
2004-02-03 13:58:08 +00:00
Daniel Stenberg
1089d91e77 the configure and memdebug fixes of yday 2004-02-03 10:07:26 +00:00
Daniel Stenberg
556b68f44e the unused quit-function didn't pass a correct variable type to the
response reading function
2004-02-03 09:52:32 +00:00
Daniel Stenberg
3f37ae471d add link to the new cares web site 2004-02-03 09:40:19 +00:00
Daniel Stenberg
9f4e682ca9 added notes about incompatible functions 2004-02-03 09:16:40 +00:00
Daniel Stenberg
5fc8d4da45 adjusted to the new single-parameter version of this function 2004-02-03 08:58:10 +00:00
Daniel Stenberg
4af66b70fc removed odd newline 2004-02-03 08:47:26 +00:00
Daniel Stenberg
95dd343244 added the missing ares numerical version initialiser 2004-02-03 06:39:37 +00:00
Daniel Stenberg
e449aab0af modified *strerror() 2004-02-03 06:38:38 +00:00
Daniel Stenberg
3a0192bea6 Use the nroff option figured out by the configure script. An attempt to
make this better on more systems.
2004-02-02 22:39:37 +00:00
Daniel Stenberg
37685848d1 try to figure out if -man or -mandoc works to get text with the NROFF
utility
2004-02-02 22:39:04 +00:00
Daniel Stenberg
0412a201a3 undef accept before defining it, since AIX 5.2 has it as a define! 2004-02-02 21:34:01 +00:00
Daniel Stenberg
ca522d4787 more test91 tweaks and some c-ares stuff 2004-02-02 16:29:58 +00:00
Daniel Stenberg
c2967c3c39 now provides c-ares version info in both version calls 2004-02-02 16:24:41 +00:00
Daniel Stenberg
70d7a9e6a5 Introducing the SECOND version of the version_info struct. This should
be backwards compatible with older libcurls just fine.
2004-02-02 16:24:18 +00:00
Daniel Stenberg
462d1c5231 use the new single-argument ares_strerror() 2004-02-02 16:15:58 +00:00
Daniel Stenberg
886391d145 adjusted to the modified ares_strerror() function
NOTE that this breaks ares-compatibility, we have now officially taken the
turn into the c-ares path. We will now officially depend on c-ares for asynch
name resolves.
2004-02-02 16:00:31 +00:00
Daniel Stenberg
1442fab4b6 remove rcsid stuff from c files, it serves no useful purpose 2004-02-02 15:59:35 +00:00
Daniel Stenberg
aa93e2e638 removed the silly second argument to ares_strerror()
This breaks the API and ABI with the existing ares library. We hereby require
the upcoming c-ares 1.0 for asynch name resolves!
2004-02-02 15:59:12 +00:00
Daniel Stenberg
e1d541086c Dirk Manske fixed the ares usage even more. We could get a timeout from ares
as well, and when failing and not getting a timeout we now include the
error message ares can provide us with.
2004-02-02 15:53:50 +00:00
Daniel Stenberg
3b0f52205d mention mpe/ix 2004-02-02 15:34:09 +00:00
Daniel Stenberg
b84eaff1d5 set the 'retry' bit to TRUE when the connection is about to be retried,
this allows the HTTP code to *not* return a failure just because no data
has been received from the server
2004-02-02 14:49:54 +00:00
Daniel Stenberg
9eb6fc1fb6 clear the sockerror if no error was returned 2004-02-02 14:49:10 +00:00
Daniel Stenberg
253f5f1a9a ares resolve timeout and ca bundle include fixes 2004-02-02 12:46:58 +00:00
Daniel Stenberg
dd1f495c2f we include errno.h to truly know if we have ECONNRESET or not 2004-02-02 11:59:42 +00:00
Daniel Stenberg
12fa877f00 Timeout slow ares name lookups. This is based on the patch brought by
Dirk Manske, but modified by me.
2004-02-02 10:15:22 +00:00
Daniel Stenberg
580a2fe72b when including ca-bundle.h, don't look in the current dir first, simply use
the search path since we want the build-version rather than the one in the
source dir
2004-02-02 10:13:54 +00:00
Daniel Stenberg
7f0ec86769 fixed the win32 function to use the correct proto, as pointed out by Gisle
Vanem
2004-02-02 07:24:30 +00:00
Daniel Stenberg
5e69ca0ebd test case 97 2004-02-02 07:21:21 +00:00
Daniel Stenberg
b6592e29a4 added test 97, a simple test with -d post and a replacede content-type
header using -H
2004-02-02 07:13:29 +00:00
Daniel Stenberg
4cba2ea1ad attempt to fix the notorious test 91 failures 2004-01-30 12:43:49 +00:00
Daniel Stenberg
14cb9d296c make sure the connection is closed when it was detected reset! 2004-01-30 12:41:27 +00:00
Daniel Stenberg
df750c236c Somewhat crude attempt at fixing the test 91 failures. I commit this now
so that the automatic testing hosts will test these changes over the weekend.
2004-01-30 12:08:18 +00:00
Daniel Stenberg
154c9bc3b8 hide the grep result 2004-01-30 09:48:55 +00:00
Daniel Stenberg
508ad2c92f catching up with reality 2004-01-30 09:31:44 +00:00
Daniel Stenberg
36a90aeaec test case 510, mpeix fix 2004-01-30 09:31:23 +00:00
Daniel Stenberg
f385b1976e when we receive a request overflow, we still dump the incoming request to
the dump file to make it easier to understand and debug the situation
2004-01-30 09:27:27 +00:00
Daniel Stenberg
3d99b566a6 added lib510.c for callback POST using chunked encoding 2004-01-30 09:26:23 +00:00
Daniel Stenberg
99a3e2d769 added test 510, callback-based POST using chunked encoding 2004-01-30 09:25:45 +00:00
Daniel Stenberg
aaa42735e6 --socks 2004-01-30 08:54:00 +00:00
Daniel Stenberg
50c80a49cc Added --socks 2004-01-30 08:51:24 +00:00
Daniel Stenberg
6b7f169b10 only do the verifyconnect() clear magic on mpeix 2004-01-30 07:51:51 +00:00
Daniel Stenberg
01e3bb98b5 the thread and SSL issue is now fixed 2004-01-29 16:17:51 +00:00
Daniel Stenberg
7052598e59 note about the need for extra functions set to OpenSSL if you use OpenSSL
multi-threaded
2004-01-29 16:17:25 +00:00
Daniel Stenberg
ab52e20832 update with recent info 2004-01-29 16:00:10 +00:00
Daniel Stenberg
f50678eda7 don't include config.g in src/hugehelp.c unless HAVE_CONFIG_H is defined 2004-01-29 15:48:27 +00:00
Daniel Stenberg
3ded81188b ares fix, warnings fixed, mpeix fixes 2004-01-29 15:41:56 +00:00
Daniel Stenberg
a435151735 check for sys/ioctl.h as well
added commented more aggressive compiler options for gcc, subject to be used
instead of the current ones when --enable-debug is used
2004-01-29 15:38:27 +00:00
Daniel Stenberg
bfe5568c85 added verifyconnect proto and use it correctly in the waitconnect function 2004-01-29 15:37:21 +00:00
Daniel Stenberg
7e45a1ac53 moved the definitions of IOCTL_3_ARGS to setup.h 2004-01-29 15:35:42 +00:00
Daniel Stenberg
76a51ef4b3 1. changed order of two include files to build fine on MPE/iX
2. now reads the socket error before check connect status, also to make us
   run fine on MPE/iX
2004-01-29 15:29:47 +00:00
Daniel Stenberg
fc7c4d6157 Ken Hirsch says he basicly needs all 'mv' to be 'mv -f' for configure to
run in a sane manner on his MPE/iX operating system.
2004-01-29 15:28:53 +00:00
Daniel Stenberg
4d17d6876e Dan Fandrich's cleanup patch to make pedantic compiler options cause less
warnings. Minor edits by me.
2004-01-29 13:56:45 +00:00
Daniel Stenberg
0d6236f7e1 make pedantic compiler options generate less warnings 2004-01-29 13:54:08 +00:00
Daniel Stenberg
0e4e72f193 added hugehelp.h 2004-01-29 13:53:34 +00:00
Daniel Stenberg
107413c021 nonsence change to make -Wunreachable-code get happy 2004-01-29 13:49:41 +00:00
Daniel Stenberg
d7579087f2 use hugehelp.h to silence picky compiler warnings 2004-01-29 13:48:36 +00:00
Daniel Stenberg
3415ac3866 documented ares_version() 2004-01-29 12:07:48 +00:00
Daniel Stenberg
d50b209a7a return a const char * 2004-01-29 12:07:34 +00:00
Daniel Stenberg
62e0f10eba use the name 'c-ares' for this package 2004-01-29 11:33:31 +00:00
Daniel Stenberg
0b2b7439fe include the new README.cares 2004-01-29 11:33:16 +00:00
Daniel Stenberg
edcd1981ea point out that this is a forked project, all c-ares specific stuff is now
in README.cares
2004-01-29 11:32:45 +00:00
Daniel Stenberg
ada9a9f4a1 c-ares specific README, leaving most of the original README as-is 2004-01-29 11:32:24 +00:00
Daniel Stenberg
1c0e4f1178 cut off the initial blurb, moved that to README.cares 2004-01-29 11:32:01 +00:00
Daniel Stenberg
663d2080d1 Dirk Manske fixed a flaw in the setting of the socket to non-blocking 2004-01-29 11:23:36 +00:00
Daniel Stenberg
e5641a33bb updates 2004-01-29 11:21:37 +00:00
Daniel Stenberg
9b24c9a754 adjusted to the corrected chunked transfer-encoding extra trailing CRLF 2004-01-29 07:43:56 +00:00
Daniel Stenberg
99b96d5446 verify that buildconf ran fine to allow it to continue 2004-01-29 07:29:28 +00:00
Daniel Stenberg
cf7817eb38 upload with chunked transfer encoding is now fixed 2004-01-28 21:44:45 +00:00
Daniel Stenberg
9bca9681ba Gisle has eyes, I don't 2004-01-28 17:38:58 +00:00
Daniel Stenberg
958987c214 Chunked-transfers should have an additional CRLF after the final 0 CRLF
sequence.
2004-01-28 17:07:22 +00:00
Daniel Stenberg
ed75842df0 added the extra newline that this needs to succeed 2004-01-28 17:03:49 +00:00
Daniel Stenberg
f35398e414 send a connection: close in the initial reply to see if things differ 2004-01-27 13:35:55 +00:00
Daniel Stenberg
3b39cee785 number two is fixed! 2004-01-27 13:17:44 +00:00
Daniel Stenberg
dc932f739a CONNECT response headers are now passed back as "regular" headers 2004-01-27 12:54:22 +00:00
Daniel Stenberg
7d15651115 don't advance the line pointer if it already points to the null terminator 2004-01-27 12:39:34 +00:00
Daniel Stenberg
e096072745 very big transfers now get nicer progress displayed after 9999 megabytes have
been transfered!
2004-01-27 12:25:37 +00:00
Daniel Stenberg
5d947e973e display OK if it runs OK 2004-01-27 12:16:24 +00:00
Daniel Stenberg
2465ff991f when saving in a cookie jar fails, include the file name in the error message
to make it easier to track down
2004-01-26 16:16:44 +00:00
Daniel Stenberg
d10a941d29 Removed two redundant #include files in the djgpp section. They're already
included. (a Dan Fandrich fix)
2004-01-26 07:55:16 +00:00
Daniel Stenberg
5a58d51993 the *_LARGE options work fine on windows in 7.11.1 2004-01-23 12:52:04 +00:00
Daniel Stenberg
142f40582f things continue to happen 2004-01-23 12:51:27 +00:00
Daniel Stenberg
4227407438 Use Curl_strtoll() if needed. This is not a library call, this is just the
same code as the library uses for its internal function. Thus the captical
C in the beginning.
2004-01-23 12:50:53 +00:00
Daniel Stenberg
6e29f5d1df use the Curl_strtoll() source code from the lib code 2004-01-23 12:49:53 +00:00
Daniel Stenberg
334c3df09d Proxy username and password on persistant connections could easily get
messed up. Vincent Bronner detected this.
2004-01-23 08:36:03 +00:00
Daniel Stenberg
4120b7b0c0 check the arguments to the socks5 function, as the name and password might
be NULL pointers, and if non-NULL if now support zero-length names/passwords
2004-01-23 08:29:56 +00:00
Daniel Stenberg
fac1c13895 fixed the progress meter display for files >32 bit, Gisle Vanem reported 2004-01-23 08:02:12 +00:00
Daniel Stenberg
649caa1953 include curl.h for the typedef 2004-01-23 07:44:02 +00:00
Daniel Stenberg
d8ee927be2 define SIZEOF_CURL_OFF_T if not already defined 2004-01-23 07:41:05 +00:00
Daniel Stenberg
3efb90dd75 re-intended the code curl-style 2004-01-22 14:37:06 +00:00
Daniel Stenberg
e4c5653035 zlib fix for the help text, stroll usage on mingw/djgpp 2004-01-22 14:35:06 +00:00
Daniel Stenberg
ad7e26b140 return curl_off_t instead of long long, to work on more platforms 2004-01-22 14:31:46 +00:00
Daniel Stenberg
f39749cee4 Gisle Vanem fixed the compressed help text zlib code 2004-01-22 14:27:58 +00:00
Daniel Stenberg
87eb26a33d it has strtoll 2004-01-22 14:25:54 +00:00
Daniel Stenberg
9a48ca69fc Gisle Vanem's fix, mingw as strtoll 2004-01-22 14:25:19 +00:00
Daniel Stenberg
a259f66fa4 attempt to fix 64bit seeking for Windows, does it work? 2004-01-22 13:11:35 +00:00
Daniel Stenberg
83d77dc013 font-lock the curl_off_t type instead of the off_t 2004-01-22 12:48:48 +00:00
Daniel Stenberg
e36914a425 header file fixing 2004-01-22 12:46:55 +00:00
Daniel Stenberg
5bd0471315 use curl_off_t instead of off_t 2004-01-22 12:46:07 +00:00
Daniel Stenberg
b791e158f0 use curl_off_t instead of off_t! 2004-01-22 12:45:50 +00:00
Daniel Stenberg
6cd0a90b52 Instead of checking the off_t size, we use the source dir version of the
curl.h header and then check for the size of the curl_off_t type.
2004-01-22 12:01:59 +00:00
Daniel Stenberg
d5bb877fba s/not/note 2004-01-22 11:56:39 +00:00
Daniel Stenberg
0c4907afcc curl_off_t is the new type for large file support
HttpPost is not defined anymore
2004-01-22 11:54:39 +00:00
Daniel Stenberg
e5cd0cc402 use the proper type for formposts, not the deprecated one 2004-01-22 11:54:00 +00:00
Daniel Stenberg
252423a725 added the missing proto for the still unused quit function 2004-01-22 11:53:43 +00:00
Daniel Stenberg
eaddf3d198 mark the option better 2004-01-22 10:17:09 +00:00
Daniel Stenberg
a37a79c2a9 start working on 7.11.1 2004-01-22 09:40:30 +00:00
674 changed files with 44466 additions and 25084 deletions

3726
CHANGES

File diff suppressed because it is too large Load Diff

1572
CHANGES.2003 Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -15,17 +15,12 @@ Compile and build instructions follow below.
CHANGES.0 contains ancient changes.
CHANGES.$year contains changes for the particular year.
tests/memanalyze.pl
is for analyzing the output generated by curl if -DCURLDEBUG
is used when compiling (run configure with --enable-debug)
buildconf builds the makefiles and configure stuff
Makefile.dist is included as the root Makefile in distribution archives
perl/ is a subdirectory with various perl scripts
To build after having extracted everything from CVS, do this:
To build in environments that support configure, after having extracted
everything from CVS, do this:
./buildconf
./configure
@@ -35,10 +30,15 @@ make
./configure --disable-shared --enable-debug --enable-maintainer-mode
In environments that don't support configure (i.e. Microsoft), do this:
buildconf.bat
REQUIREMENTS
You need the following software installed:
For buildconf (not buildconf.bat) to work, you need the following software
installed:
o autoconf 2.57 (or later)
o automake 1.7 (or later)

View File

@@ -23,9 +23,8 @@
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = CHANGES COPYING maketgz reconf Makefile.dist \
curl-config.in build_vms.com curl-style.el sample.emacs testcurl.sh \
RELEASE-NOTES
EXTRA_DIST = CHANGES COPYING maketgz reconf Makefile.dist curl-config.in \
curl-style.el sample.emacs RELEASE-NOTES buildconf buildconf.bat libcurl.pc.in
bin_SCRIPTS = curl-config
@@ -55,6 +54,9 @@ test:
test-full:
@(cd tests; $(MAKE) all full-test)
test-torture:
@(cd tests; $(MAKE) all torture-test)
#
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
# must contain the following line:

View File

@@ -30,44 +30,153 @@ ssl:
make
borland:
cd lib & make -f Makefile.b32
cd src & make -f Makefile.b32
cd lib
make -f Makefile.b32
cd ..\src
make -f Makefile.b32
borland-ssl:
cd lib
make -f Makefile.b32 WITH_SSL=1
cd ..\src
make -f Makefile.b32 WITH_SSL=1
borland-ssl-zlib:
cd lib
make -f Makefile.b32 WITH_SSL=1 WITH_ZLIB=1
cd ..\src
make -f Makefile.b32 WITH_SSL=1 WITH_ZLIB=1
borland-clean:
cd lib
make -f Makefile.b32 clean
cd ..\src
make -f Makefile.b32 clean
watcom:
cd lib
wmake -f Makefile.Watcom
cd ..\src
wmake -f Makefile.Watcom
watcom-clean:
cd lib
wmake -f Makefile.Watcom clean
cd ..\src
wmake -f Makefile.Watcom clean
mingw32:
cd lib & make -f Makefile.m32 ZLIB=1
cd src & make -f Makefile.m32 ZLIB=1
$(MAKE) -C lib -f Makefile.m32 ZLIB=1
$(MAKE) -C src -f Makefile.m32 ZLIB=1
mingw32-ssl:
cd lib & make -f Makefile.m32 SSL=1 ZLIB=1
cd src & make -f Makefile.m32 SSL=1 ZLIB=1
$(MAKE) -C lib -f Makefile.m32 SSL=1 ZLIB=1
$(MAKE) -C src -f Makefile.m32 SSL=1 ZLIB=1
mingw32-clean:
$(MAKE) -C lib -f Makefile.m32 clean
$(MAKE) -C src -f Makefile.m32 clean
vc-clean:
cd lib
nmake -f Makefile.vc6 clean
cd ..\src
nmake -f Makefile.vc6 clean
vc-all:
cd lib
nmake -f Makefile.vc6 cfg=release
nmake -f Makefile.vc6 cfg=release-ssl
nmake -f Makefile.vc6 cfg=release-zlib
nmake -f Makefile.vc6 cfg=release-ssl-zlib
nmake -f Makefile.vc6 cfg=release-ssl-dll
nmake -f Makefile.vc6 cfg=release-zlib-dll
nmake -f Makefile.vc6 cfg=release-ssl-dll-zlib-dll
nmake -f Makefile.vc6 cfg=release-dll
nmake -f Makefile.vc6 cfg=release-dll-ssl-dll
nmake -f Makefile.vc6 cfg=release-dll-zlib-dll
nmake -f Makefile.vc6 cfg=release-dll-ssl-dll-zlib-dll
nmake -f Makefile.vc6 cfg=debug
nmake -f Makefile.vc6 cfg=debug-ssl
nmake -f Makefile.vc6 cfg=debug-zlib
nmake -f Makefile.vc6 cfg=debug-ssl-zlib
nmake -f Makefile.vc6 cfg=debug-ssl-dll
nmake -f Makefile.vc6 cfg=debug-zlib-dll
nmake -f Makefile.vc6 cfg=debug-ssl-dll-zlib-dll
nmake -f Makefile.vc6 cfg=debug-dll
nmake -f Makefile.vc6 cfg=debug-dll-ssl-dll
nmake -f Makefile.vc6 cfg=debug-dll-zlib-dll
nmake -f Makefile.vc6 cfg=debug-dll-ssl-dll-zlib-dll
vc:
cd lib
nmake -f Makefile.vc6 cfg=release
nmake /f Makefile.vc6 cfg=release
cd ..\src
nmake -f Makefile.vc6
nmake /f Makefile.vc6
vc-zlib:
cd lib
nmake /f Makefile.vc6 cfg=release-zlib
cd ..\src
nmake /f Makefile.vc6 cfg=release-zlib
vc-ssl:
cd lib
nmake -f Makefile.vc6 cfg=release-ssl
nmake /f Makefile.vc6 cfg=release-ssl
cd ..\src
nmake -f Makefile.vc6 cfg=release-ssl
nmake /f Makefile.vc6 cfg=release-ssl
vc-ssl-zlib:
cd lib
nmake /f Makefile.vc6 cfg=release-ssl-zlib
cd ..\src
nmake /f Makefile.vc6 cfg=release-ssl-zlib
vc-ssl-dll:
cd lib
nmake -f Makefile.vc6 cfg=release-ssl-dll
nmake /f Makefile.vc6 cfg=release-ssl-dll
cd ..\src
nmake -f Makefile.vc6
nmake /f Makefile.vc6 cfg=release-ssl-dll
vc-libcurl-ssl-dll:
vc-dll-ssl-dll:
cd lib
nmake -f Makefile.vc6 cfg=release-libcurl-ssl-dll
nmake /f Makefile.vc6 cfg=release-dll-ssl-dll
cd ..\src
nmake -f Makefile.vc6
nmake /f Makefile.vc6 cfg=release-dll-ssl-dll
vc-dll:
cd lib
nmake /f Makefile.vc6 cfg=release-dll
cd ..\src
nmake /f Makefile.vc6 cfg=release-dll
vc-dll-zlib-dll:
cd lib
nmake /f Makefile.vc6 cfg=release-dll-zlib-dll
cd ..\src
nmake /f Makefile.vc6 cfg=release-dll-zlib-dll
vc-dll-ssl-dll-zlib-dll:
cd lib
nmake /f Makefile.vc6 cfg=release-dll-ssl-dll-zlib-dll
cd ..\src
nmake /f Makefile.vc6 cfg=release-dll-ssl-dll-zlib-dll
vc-ssl-dll-zlib-dll:
cd lib
nmake /f Makefile.vc6 cfg=release-ssl-dll-zlib-dll
cd ..\src
nmake /f Makefile.vc6 cfg=release-ssl-dll-zlib-dll
vc-zlib-dll:
cd lib
nmake /f Makefile.vc6 cfg=release-zlib-dll
cd ..\src
nmake /f Makefile.vc6 cfg=release-zlib-dll
djgpp:
make -C lib -f Makefile.dj
make -C src -f Makefile.dj
$(MAKE) -C lib -f Makefile.dj
$(MAKE) -C src -f Makefile.dj
cygwin:
./configure
@@ -81,7 +190,17 @@ amiga:
cd ./lib && make -f makefile.amiga
cd ./src && make -f makefile.amiga
netware:
$(MAKE) -C lib -f Makefile.netware
$(MAKE) -C src -f Makefile.netware
netware-ssl:
$(MAKE) -C lib -f Makefile.netware SSL=1
$(MAKE) -C src -f Makefile.netware SSL=1
netware-clean:
$(MAKE) -C lib -f Makefile.netware clean
$(MAKE) -C src -f Makefile.netware clean
unix: all

53
README
View File

@@ -1,12 +1,12 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
README
Curl is a command line tool for transfering data specified with URL
Curl is a command line tool for transferring data specified with URL
syntax. Find out how to use Curl by reading the curl.1 man page or the
MANUAL document. Find out how to install Curl by reading the INSTALL
document.
@@ -17,7 +17,9 @@ README
You find answers to the most frequent questions we get in the FAQ document.
Study the COPYING file for distribution terms and similar.
Study the COPYING file for distribution terms and similar. If you distribute
curl binaries or other binaries that involve libcurl, you might enjoy the
LICENSE-MIXING document.
CONTACT
@@ -32,42 +34,55 @@ WEB SITE
Sweden -- http://curl.haxx.se/
Australia -- http://curl.planetmirror.com/
Austria -- http://curl.gds.tuwien.ac.at/
Denmark -- http://curl.cofman.dk/
Estonia -- http://curl.wildyou.net/
France -- http://curl.mirror.internet.tp/
Germany -- http://curl.kgt.org/
Germany -- http://curl.mirror.at.stealer.net/
Germany -- http://curl.netmirror.org/
Russia -- http://curl.tsuren.net/
Taiwan -- http://curl.cs.pu.edu.tw/
Thailand -- http://curl.siamu.ac.th/
US (CA) -- http://curl.mirror.redwire.net/
US (TX) -- http://curl.cyberservers.net/
US (CA) -- http://curl.mirrormonster.com/
US (CA) -- http://curl.signal42.com/
US (TX) -- http://curl.109k.com/
DOWNLOAD
The official download mirror sites are:
Australia -- http://curl.planetmirror.com/download/
Australia -- http://curl.planetmirror.com/download.html
Austria -- http://curl.gds.tuwien.ac.at/download.html
Estonia -- http://curl.wildyou.net/download.html
Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/
Germany -- http://curl.mirror.at.stealer.net/download.html
Germany -- http://curl.netmirror.org/download.html
Germany -- http://www.mirrorspace.org/curl/
Hongkong -- http://www.execve.net/curl/
Russia -- http://curl.tsuren.net/download/
Russia -- http://curl.tsuren.net/download.html
Sweden -- ftp://ftp.sunet.se/pub/www/utilities/curl/
Sweden -- http://cool.haxx.se/curl/
Thailand -- http://curl.siamu.ac.th/download/
US (CA) -- http://curl.mirror.redwire.net/download/
US (TX) -- http://curl.cyberservers.net/download/
Taiwan -- http://curl.cs.pu.edu.tw/download.html
Thailand -- http://curl.siamu.ac.th/download.html
US (CA) -- http://curl.mirror.redwire.net/download.html
US (CA) -- http://curl.mirrormonster.com/download.html
US (CA) -- http://curl.signal42.com/download.html
US (TX) -- http://curl.109k.com/download.html
CVS
To download the very latest source off the CVS server do this:
cvs -d :pserver:cvsread@cvs.php.net:/repository login
cvs -d :pserver:anonymous@cool.haxx.se:/cvsroot/curl login
(enter "phpfi" when asked for password)
(just press enter when asked for password)
cvs -d :pserver:cvsread@cvs.php.net:/repository co curl
cvs -d :pserver:anonymous@cool.haxx.se:/cvsroot/curl co curl
(you'll get a directory named curl created, filled with the source code)
cvs -d :pserver:cvsread@cvs.php.net:/repository logout
(you're off the hook!)
NOTICE
Curl contains pieces of source code that is Copyright (c) 1998, 1999

View File

@@ -1,89 +1,27 @@
Curl and libcurl 7.11.0. A minor-features-added release.
Curl and libcurl 7.13.1
The 78th public curl release. Release number 105 counted from the very
beginning.
Public curl release number: 86
Releases counted from the very beginning: 113
Available command line options: 104
Available curl_easy_setopt() options: 122
Number of public functions in libcurl: 46
Amount of public web site mirrors: 15
Number of known libcurl bindings: 29
This release includes the following changes:
o allows the URL to be set by a callback when using the multi interface
o large file support was added. Use one of the new options: INFILESIZE_LARGE,
RESUME_FROM_LARGE and MAXFILESIZE_LARGE
o the new --ftp-pasv overrides a previous --ftpport
o CURLOPT_FTPSSL and ftps:// now do ssl over FTP "The Right Way" (the curl
tool now features the --ftp-ssl option)
o The Windows DLLs are built with an added "resource file"
o New LIBCURL_VERSION_* defines for easier checking version number
o Included Mac OS X 'framework' makefile in the release archive
o Removed the TRUE and FALSE #defines from the public curl header file
o Added CURLOPT_NETRC_FILE
o
This release includes the following bugfixes:
o improved config file parsing for options with required parameters
o using --trace with a bad file name could crash
o release archive contains compressed help text
o the win32 password prompting supports backspace
o builds natively on AmigaOS (without unix emulation)
o ftps:// now uses port 990 by default
o the "configure --with-spnego" action was improved
o fixed a rare follow-redirect problem
o curl-config --feature now outputs AsynchDNS if enabled
o occational re-use of freed-memory problem fixed
o curl-config --libs now include the ares link directory
o configure --enable-ares now accepts a given path
o -lz no longer appear twice on the link line
o more descriptive error message if the FTP response reader fails
o curl-config --feature now shows 'AsynchDNS' when built with ares
o VMS build up-to-date and clarified source code
o resolve bug caused socks5 to fail
o Content-Length: is ignored when getting chunked Transfer-Encoding
o POST over proxy to https server failed
o improved how libcurl deals with persistant connections over FTP when a
transfer fails
o accessing a proxy that requires Basic auth without password caused a hang
o a free free-twice problem in the server certificate code
o minor memory leak when using ranges on persistant connections
o formpost parts sending files with .html extensions now use "Content-Type:
text/html"
o formpost parts now default to "Content-Type: application/octet-stream"
o --progress-bar was slightly improved
o Failing to connect to localhost, using the multi interface on Solaris
showed a connect problem now fixed.
o The generated ca-bundle.h file is now generated in the build dir, not the
source dir
o The FTP-EPSV response parser for the 229 code was fixed
o curl finds the user's home dir slightly different and hopefully better on
Windows
o testcurl.sh can now be used to autotest daily tarballs
o a couple of command line options now check that the underlying library
actually supports the features before trying to enable them
o uninitialized variable fix
o better html versions of the man pages
o
Other curl-related news since the previous public release:
o pycURL 7.10.8 was released: http://pycurl.sf.net/
o TclCurl 0.10.8 was released:
http://personal1.iddeo.es/andresgarci/tclcurl/english/
o the Ferite curl binding was released: http://www.ferite.org/
o stopped the curl.sourceforge.net mirror, it now redirects to curl.haxx.se
o fresh new curl web mirrors:
US Texas - http://curl.cyberservers.net
US California - http://curl.mirrors.redwire.net
Germany - http://curl.mirror.at.stealer.net
Thailand - http://curl.siamu.ac.th
o Dan Fandrich stepped forward and helps maintaining the download web page
o
This release would not have looked like this without help, code, reports and
advice from friends like these:
Kevin Roth, Troels Walsted Hansen, Matt Veenstra, Marty Kuhrt, Benjamin
Gerard, Gisle Vanem, Ralph Mitchell, S<>bastien Willemijns, Kang-Jin Lee,
Peter Sylvester, Siddhartha Prakash Jain, Mathias Axelsson, Maciej
W. Rozycki, Nicolas Croiset, Josh Kapell, Gaz Iqbal, Dave May, Markus
Moeller, James Clancy, Giuseppe Attardi, swalkaus at yahoo.com, Steve Green,
Marty Kuhrt, Dominick Meglio, Diego Casorran, David Byron, John McGowan,
David J Meyer, Dan Fandrich, Pierre, Brian R Duffy, Luke Call, Vincent
Bronner
Thanks! (and sorry if I forgot to mention someone)

View File

@@ -1,54 +1,36 @@
Issues not sorted in any particular order. #[num] refers to bug report
numbers. UNASSIGNED means that no person has publicly stated to work on the
issue.
Issues not sorted in any particular order.
Fix before releasing 7.11.0
===========================
To get fixed in 7.11.1
To get fixed in 7.13.1 (planned release: April 2005)
======================
1. Introduce a new error code indicating authentication problems (for proxy
CONNECT error 407 for example). #845941 UNASSIGNED
58 - Fix KNOWN_BUGS #19: "FTP 3rd party transfers with the multi interface
doesn't work"
2. Make the proxy CONNECT headers get passed to the callbacks just like other
headers are. #845941 UNASSIGNED
59 - Figure out a fix for David Byron's SSL problems:
http://curl.haxx.se/mail/lib-2005-01/0240.html
4. Multi-threaded OpenSSL usage needs to be addressed (Dirk Manske has stepped
forward on this)
47 - Peter Sylvester's patch for SRP on the TLS layer
Awaits OpenSSL support for this, no need to support this in libcurl before
there's an OpenSSL release that does it.
6. REST fix for servers not behaving well on >2GB requests (some outstanding
issues, Dave Meyer works on this)
54 - Turn the FTP code into a state machine to support the multi interface
100% non-blocking.
8. Resolve the occational test case 91 failure. This still has no
resolution. Test case 96 has been added to CVS to try variations of this
test. (David Byron has done lots of research) UNASSIGNED
To get fixed in 7.14.0
======================
9. Modify ares to do 'files bind' order instead of 'bind files' by default
(not actually part of libcurl) See details by Frank Ticheler posted here:
http://curl.haxx.se/mail/archive-2003-11/0020.html UNASSIGNED
55 - Add a function to the multi interface that gets file descriptors, as an
alternative to the curl_multi_fdset(). This is necessary to allow apps to
properly avoid the FD_SETSIZE problem.
10. Anton Fedorov's "dumpcert" patch (only mailed to me privately) UNASSIGNED
56 - Make curl_easy_perform() a wrapper-function that simply creates a multi
handle, adds the easy handle to it, runs curl_multi_perform() until the
transfer is done, then detach the easy handle, destroy the multi handle
and return the easy handle's return code. This will thus make everything
internally use and assume the multi interface. The select()-loop should
use the new function from (55).
12. The "PUT and (NTLM/Digest) auth" bug (confusion, awaits feedback) #862835
14. Evaluate/apply Gertjan van Wingerde's SSL patches, UNASSIGNED
16. Tony Blakie's bug report about getting a 302 and Location: back from a
proxy after a CONNECT request. (correct behavior on this is not certain)
UNASSIGNED, lack of feedback on this. Subject for dismissal.
18. Modified Accept: header in the default HTTP request (being discussed).
UNASSIGNED
19. Resolve Giuseppe Attardi's "elusive cache bug" (work required)
20. Directory listing support for file:///dir/ (patch by David Hull)
http://sourceforge.net/tracker/index.php?func=detail&aid=844036&group_id=976&atid=300976
This patch needs work to become portable. UNASSIGNED
21. Send QUIT before closing an FTP connection. Joe Halpin has provided an
initial patch. Some outstanding issues.
23. Peter Sylvester's "Most Significant Common Name" patch. Feedback welcome.
57 - Add an interface to libcurl for getting and setting cookies from an easy
handle. One idea: http://curl.haxx.se/mail/lib-2004-12/0195.html the
older idea: http://curl.haxx.se/dev/COOKIES. We need to settle on some
middle ground I guess.

View File

@@ -64,7 +64,7 @@ dnl the code was bad, try a different program now, test 3
],[
/* ioctlsocket source code */
int socket;
int flags = ioctlsocket(socket, FIONBIO, &flags);
unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
],[
dnl ioctlsocket test was good
nonblock="ioctlsocket"
@@ -87,9 +87,7 @@ AC_DEFINE(HAVE_IOCTLSOCKET_CASE, 1, [use Ioctlsocket() for non-blocking sockets]
dnl Ioctlsocket didnt compile, do test 5!
AC_TRY_COMPILE([
/* headers for SO_NONBLOCK test (BeOS) */
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <socket.h>
],[
/* SO_NONBLOCK source code */
long b = 1;
@@ -245,7 +243,8 @@ AC_DEFUN([CURL_CHECK_WORKING_GETADDRINFO],[
#include <sys/types.h>
#include <sys/socket.h>
void main(void) {
int main(void)
{
struct addrinfo hints, *ai;
int error;
@@ -254,11 +253,9 @@ void main(void) {
hints.ai_socktype = SOCK_STREAM;
error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
if (error) {
exit(1);
}
else {
exit(0);
return 1;
}
return 0;
}
],[
ac_cv_working_getaddrinfo="yes"
@@ -276,10 +273,72 @@ if test "$ac_cv_working_getaddrinfo" = "yes"; then
fi
])
dnl ************************************************************
dnl check for working NI_WITHSCOPEID in getnameinfo()
dnl
AC_DEFUN([CURL_CHECK_NI_WITHSCOPEID],[
AC_CACHE_CHECK(for working NI_WITHSCOPEID, ac_cv_working_ni_withscopeid,[
AC_RUN_IFELSE([[
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int main()
{
#ifdef NI_WITHSCOPEID
struct sockaddr_storage ss;
int sslen = sizeof(ss);
int rc;
char hbuf[NI_MAXHOST];
int fd = socket(AF_INET6, SOCK_STREAM, 0);
if(fd < 0) {
perror("socket()");
return 1; /* couldn't create socket of either kind */
}
rc = getsockname(fd, (struct sockaddr *)&ss, &sslen);
if(rc) {
perror("getsockname()");
return 2;
}
rc = getnameinfo((struct sockaddr *)&ss, sslen, hbuf, sizeof(hbuf),
NULL, 0,
NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID);
if(rc) {
printf("rc = %s\n", gai_strerror(rc));
return 3;
}
return 0; /* everything works fine, use NI_WITHSCOPEID! */
#else
return 4; /* we don't seem to have the definition, don't use it */
#endif
}
]],
dnl program worked:
[ ac_cv_working_ni_withscopeid="yes" ],
dnl program failed:
[ ac_cv_working_ni_withscopeid="no" ],
dnl we cross-compile:
[ ac_cv_working_ni_withscopeid="yes" ]
) dnl end of AC_RUN_IFELSE
]) dnl end of AC_CACHE_CHECK
if test "$ac_cv_working_ni_withscopeid" = "yes"; then
AC_DEFINE(HAVE_NI_WITHSCOPEID, 1,
[Define if NI_WITHSCOPEID exists and works])
fi
]) dnl end of AC_DEFUN
AC_DEFUN([CURL_CHECK_LOCALTIME_R],
[
dnl check for a few thread-safe functions
dnl check for localtime_r
AC_CHECK_FUNCS(localtime_r,[
AC_MSG_CHECKING(whether localtime_r is declared)
AC_EGREP_CPP(localtime_r,[
@@ -295,6 +354,112 @@ AC_DEFUN([CURL_CHECK_LOCALTIME_R],
AC_MSG_RESULT(no))])])
])
dnl
dnl This function checks for strerror_r(). If it isn't found at first, it
dnl retries with _THREAD_SAFE defined, as that is what AIX seems to require
dnl in order to find this function.
dnl
dnl If the function is found, it will then proceed to check how the function
dnl actually works: glibc-style or POSIX-style.
dnl
dnl glibc:
dnl char *strerror_r(int errnum, char *buf, size_t n);
dnl
dnl What this one does is to return the error string (no surprises there),
dnl but it doesn't usually copy anything into buf! The 'buf' and 'n'
dnl parameters are only meant as an optional working area, in case strerror_r
dnl needs it. A quick test on a few systems shows that it's generally not
dnl touched at all.
dnl
dnl POSIX:
dnl int strerror_r(int errnum, char *buf, size_t n);
dnl
AC_DEFUN([CURL_CHECK_STRERROR_R],
[
dnl determine of strerror_r is present
AC_CHECK_FUNCS(strerror_r,[
AC_MSG_CHECKING(whether strerror_r is declared)
AC_EGREP_CPP(strerror_r,[
#include <string.h>],[
strerror_r="yes"
AC_MSG_RESULT(yes)],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING(whether strerror_r with -D_THREAD_SAFE is declared)
AC_EGREP_CPP(strerror_r,[
#define _THREAD_SAFE
#include <string.h>],[
strerror_r="yes"
CPPFLAGS="-D_THREAD_SAFE $CPPFLAGS"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))])])
if test "x$strerror_r" = "xyes"; then
dnl check if strerror_r is properly declared in the headers
AC_CHECK_DECL(strerror_r, ,
AC_DEFINE(HAVE_NO_STRERROR_R_DECL, 1, [we have no strerror_r() proto])
,
[#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
])
dnl determine if this strerror_r() is glibc or POSIX
AC_MSG_CHECKING([for a glibc strerror_r API])
AC_TRY_RUN([
#include <string.h>
#include <errno.h>
int
main () {
char buffer[1024]; /* big enough to play with */
char *string =
strerror_r(EACCES, buffer, sizeof(buffer));
/* this should've returned a string */
if(!string || !string[0])
return 99;
return 0;
}
],
GLIBC_STRERROR_R="1"
AC_DEFINE(HAVE_GLIBC_STRERROR_R, 1, [we have a glibc-style strerror_r()])
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]),
dnl cross-compiling!
AC_MSG_NOTICE([cannot determine strerror_r() style: edit lib/config.h manually!])
)
if test -z "$GLIBC_STRERROR_R"; then
AC_MSG_CHECKING([for a POSIX strerror_r API])
AC_TRY_RUN([
#include <string.h>
#include <errno.h>
int
main () {
char buffer[1024]; /* big enough to play with */
int error =
strerror_r(EACCES, buffer, sizeof(buffer));
/* This should've returned zero, and written an error string in the
buffer.*/
if(!buffer[0] || error)
return 99;
return 0;
}
],
AC_DEFINE(HAVE_POSIX_STRERROR_R, 1, [we have a POSIX-style strerror_r()])
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]) ,
dnl cross-compiling!
AC_MSG_NOTICE([cannot determine strerror_r() style: edit lib/config.h manually!])
)
fi dnl if not using glibc API
fi dnl we have a strerror_r
])
AC_DEFUN([CURL_CHECK_INET_NTOA_R],
[
dnl determine if function definition for inet_ntoa_r exists.
@@ -475,3 +640,129 @@ if test "$ac_cv_func_gethostbyname_r" = "yes"; then
fi
fi
])
dnl We create a function for detecting which compiler we use and then set as
dnl pendantic compiler options as possible for that particular compiler. The
dnl options are only used for debug-builds.
AC_DEFUN([CURL_CC_DEBUG_OPTS],
[
if test "$GCC" = "yes"; then
dnl figure out gcc version!
AC_MSG_CHECKING([gcc version])
gccver=`$CC -dumpversion`
num1=`echo $gccver | cut -d . -f1`
num2=`echo $gccver | cut -d . -f2`
gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null`
AC_MSG_RESULT($gccver)
AC_MSG_CHECKING([if this is icc in disguise])
AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
dnl action if the text is found, this it has not been replaced by the
dnl cpp
ICC="no"
AC_MSG_RESULT([no]),
dnl the text was not found, it was replaced by the cpp
ICC="yes"
AC_MSG_RESULT([yes])
)
if test "$ICC" = "yes"; then
dnl this is icc, not gcc.
dnl ICC warnings we ignore:
dnl * 269 warns on our "%Od" printf formatters for curl_off_t output:
dnl "invalid format string conversion"
dnl * 279 warns on static conditions in while expressions
dnl * 981 warns on "operands are evaluated in unspecified order"
dnl * 1418 "external definition with no prior declaration"
dnl * 1419 warns on "external declaration in primary source file"
dnl which we know and do on purpose.
WARN="-wd279,269,981,1418,1419"
if test "$gccnum" -gt "600"; then
dnl icc 6.0 and older doesn't have the -Wall flag
WARN="-Wall $WARN"
fi
else dnl $ICC = yes
dnl this is a set of options we believe *ALL* gcc versions support:
WARN="-W -Wall -Wwrite-strings -pedantic -Wpointer-arith -Wnested-externs -Winline -Wmissing-prototypes"
dnl -Wcast-align is a bit too annoying on all gcc versions ;-)
if test "$gccnum" -ge "207"; then
dnl gcc 2.7 or later
WARN="$WARN -Wmissing-declarations"
fi
if test "$gccnum" -gt "295"; then
dnl only if the compiler is newer than 2.95 since we got lots of
dnl "`_POSIX_C_SOURCE' is not defined" in system headers with
dnl gcc 2.95.4 on FreeBSD 4.9!
WARN="$WARN -Wundef -Wno-long-long -Wsign-compare"
fi
if test "$gccnum" -ge "296"; then
dnl gcc 2.96 or later
WARN="$WARN -Wfloat-equal"
fi
if test "$gccnum" -gt "296"; then
dnl this option does not exist in 2.96
WARN="$WARN -Wno-format-nonliteral"
fi
dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
dnl on i686-Linux as it gives us heaps with false positives
if test "$gccnum" -ge "303"; then
dnl gcc 3.3 and later
WARN="$WARN -Wendif-labels -Wstrict-prototypes"
fi
if test "$gccnum" -ge "304"; then
# try -Wunreachable-code on gcc 3.4
WARN="$WARN -Wunreachable-code"
fi
for flag in $CPPFLAGS; do
case "$flag" in
-I*)
dnl Include path, provide a -isystem option for the same dir
dnl to prevent warnings in those dirs. The -isystem was not very
dnl reliable on earlier gcc versions.
add=`echo $flag | sed 's/^-I/-isystem /g'`
WARN="$WARN $add"
;;
esac
done
fi dnl $ICC = no
CFLAGS="$CFLAGS $WARN"
AC_MSG_NOTICE([Added this set of compiler options: $WARN])
else dnl $GCC = yes
AC_MSG_NOTICE([Added no extra compiler options])
fi dnl $GCC = yes
dnl strip off optimizer flags
NEWFLAGS=""
for flag in $CFLAGS; do
case "$flag" in
-O*)
dnl echo "cut off $flag"
;;
*)
NEWFLAGS="$NEWFLAGS $flag"
;;
esac
done
CFLAGS=$NEWFLAGS
]) dnl end of AC_DEFUN()

View File

@@ -5,3 +5,19 @@ adig
ahost
config.log
config.status
aclocal.m4
.deps
Makefile.in
config.guess
config.h
config.h.in
config.sub
libtool
ltmain.sh
stamp-h1
*.lo
.libs
depcomp
libcares.la
missing
ares_version.h.dist

View File

@@ -1,17 +1,231 @@
This package is built on ares 1.1.1 (written by Greg Hudson). I've decided to
put together and release my own ares archives since the ares maintainer
doesn't want these improvements.
Changelog for the c-ares project
The package is called 'c-ares' for now since I (Daniel Stenberg) want this for
use within the curl project (hence the letter C) and it makes a nice pun.
* November 7
* January 4, 2004:
- Fixed the VC project and makefile to use ares_cancel and ares_version
* October 24
- The released ares_version.h from 1.2.1 says 1.2.0 due to a maketgz flaw.
This is now fixed.
Version 1.2.1 (October 20, 2004)
* September 29
- Henrik Stoerner fix: got a report that Tru64 Unix (the unix from Digital
when they made Alpha's) uses /etc/svc.conf for the purpose fixed below for
other OSes. He made c-ares check for and understand it if present.
- Now c-ares will use local host name lookup _before_ DNS resolving by default
if nothing else is told.
* September 26
- Henrik Stoerner: found out that c-ares does not look at the /etc/host.conf
file to determine the sequence in which to search /etc/hosts and DNS. So on
systems where this order is defined by /etc/host.conf instead of a "lookup"
entry in /etc/resolv.conf, c-ares will always default to looking in DNS
first, and /etc/hosts second.
c-ares now looks at
1) resolv.conf (for the "lookup" line);
2) nsswitch.fon (for the "hosts:" line);
3) host.conf (for the "order" line).
First match wins.
- Dominick Meglio patched: C-ares on Windows assumed that the HOSTS file is
located in a static location. It assumed
C:\Windows\System32\Drivers\Etc. This is a poor assumption to make. In fact,
the location of the HOSTS file can be changed via a registry setting.
There is a key called DatabasePath which specifies the path to the HOSTS
file:
http://www.microsoft.com/technet/itsolutions/network/deploy/depovg/tcpip2k.mspx
The patch will make c-ares correctly consult the registry for the location
of this file.
* August 29
- Gisle Vanem fixed the MSVC build files.
* August 20
- Gisle Vanem made c-ares build and work with his Watt-32 TCP/IP stack.
* August 13
- Harshal Pradhan made a minor syntax change in ares_init.c to make it build
fine with MSVC 7.1
* July 24
- Made the lib get built static only if --enable-debug is used.
- Gisle Vanem fixed:
Basically in loops like handle_errors(), 'query->next' was assigned a local
variable and then query was referenced after the memory was freed by
next_server(). I've changed that so next_server() and end_query() returns
the next query. So callers should use this ret-value.
The next problem was that 'server->tcp_buffer_pos' had a random value at
entry to 1st recv() (luckily causing Winsock to return ENOBUFS).
I've also added a ares_writev() for Windows to streamline the code a bit
more.
* July 20
- Fixed a few variable return types for some system calls. Made configure
check for ssize_t to make it possible to use that when receiving the send()
error code. This is necessary to prevent compiler warnings on some systems.
- Made configure create config.h, and all source files now include setup.h that
might include the proper config.h (or a handicrafted alternative).
- Switched to 'ares_socket_t' type for sockets in ares, since Windows don't
use 'int' for that.
- automake-ified and libool-ified c-ares. Now it builds libcares as a shared
lib on most platforms if wanted. (This bloated the size of the release
archive with another 200K!)
- Makefile.am now uses Makefile.inc for the c sources, h headers and man
pages, to make it easier for other makefiles to use the exact same set of
files.
- Adjusted 'maketgz' to use the new automake magic when building distribution
archives.
- Anyone desires HTML and/or PDF versions of the man pages in the release
archives?
* July 3
- G<>nter Knauf made c-ares build and run on Novell Netware.
* July 1
- Gisle Vanem provided Makefile.dj to build with djgpp, added a few more djgpp
fixes and made ares not use 'errno' to provide further info on Windows.
* June 30
- Gisle Vanem made it build with djgpp and run fine with the Watt-32 stack.
* June 10
- Gisle Vanem's init patch for Windows:
The init_by_resolv_conf() function fetches the DNS-server(s)
from a series of registry branches.
This can be wrong in the case where DHCP has assigned nameservers, but the
user has overridden these servers with other prefered settings. Then it's
wrong to use the DHCPNAMESERVER setting in registry.
In the case of no global DHCP-assigned or fixed servers, but DNS server(s)
per adapter, one has to query the adapter branches. But how can c-ares know
which adapter is valid for use? AFAICS it can't. There could be one adapter
that is down (e.g. a VPN adapter).
So it's better to leave this to the IP Helper API (iphlapi) available in
Win-98/2000 and later. My patch falls-back to the old way if not available.
* June 8
- James Bursa fixed an init issue for RISC OS.
* May 11
- Nico Stappenbelt reported that when processing domain and search lines in
the resolv.conf file, the first entry encountered is processed and used as
the search list. According to the manual pages for both Linux, Solaris and
Tru64, the last entry of either a domain or a search field is used.
This is now adjusted in the code
Version 1.2.0 (April 13, 2004)
* April 2, 2004
- Updated various man pages to look nicer when converted to HTML on the web
site.
* April 1, 2004
- Dirk Manske provided a new function that is now named ares_cancel(). It is
used to cancel/cleanup a resolve/request made using ares functions on the
given ares channel. It does not destroy/kill the ares channel itself.
- Dominick Meglio cleaned up the formatting in several man pages.
* March 30, 2004
- Dominick Meglio's new ares_expand_string. A helper function when decoding
incoming DNS packages.
- Daniel Stenberg modified the Makefile.in to use a for loop for the man page
installation to improve overview and make it easier to add man pages.
Version 1.1.0 (March 11, 2004)
* March 9, 2004
- Gisle Vanem improved build on Windows.
* February 25, 2004
- Dan Fandrich found a flaw in the Feb 22 fix.
- Added better configure --enable-debug logic (taken from the curl configure
script). Added acinclude.m4 to the tarball.
* February 23, 2004
- Removed ares_free_errmem(), the function, the file and the man page. It was
not used and it did nothing.
- Fixed a lot of code that wasn't "64bit clean" and thus caused a lot of
compiler warnings on picky compilers.
* February 22, 2004
- Dominick Meglio made ares init support multiple name servers in the
NameServer key on Windows.
* February 16, 2004
- Modified ares_private.h to include libcurl's memory debug header if
CURLDEBUG is set. This makes all the ares-functions supervised properly by
the curl test suite. This also forced me to add inclusion of the
ares_private.h header in a few more files that are using some kind of
memory-related resources.
- Made the makefile only build ahost and adig if 'make demos' is used.
* February 10, 2004
- Dirk Manske made ares_version.h installed with 'make install'
* February 4, 2004
- ares_free_errmem() is subject for removal, it is simply present for future
purposes, and since we removed the extra parameter in strerror() it won't
be used by c-ares!
- configure --enable-debug now enables picky compiler options if gcc is used
- fixed several compiler warnings --enable-debug showed and Joerg Mueller-Tolk
reported
Version 1.0.0 (February 3, 2004)
* February 3, 2004
- now we produce the libcares.a library instead of the previous libares.a
since we are no longer compatible
* February 2, 2004
- ares_strerror() has one argument less. This is the first official
modification of the existing provided ares API.
* January 29, 2004
- Dirk Manske fixed how the socket is set non-blocking.
* January 4, 2004
- Dominick Meglio made the private gettimeofday() become ares_gettimeofday()
instead in order to not pollute the name space and risk colliding with
other libraries' versions of this function.
* October 24, 2003. Daniel Stenberg:
* October 24, 2003. Daniel Stenberg
Added ares_version().
@@ -26,3 +240,5 @@ Version 1.0-pre1 (8 October 2003)
- Daniel Stenberg adjusted the windows port
- liren at vivisimo.com made the initial windows port
* Imported the sources from ares 1.1.1

View File

@@ -3,15 +3,20 @@
*.3
NEWS
README
README.cares
CHANGES
FILES
maketgz
aclocal.m4
acinclude.m4
Makefile.in
Makefile.dj
Makefile.m32
Makefile.netware
install-sh
mkinstalldirs
configure
configure.in
configure.ac
config.guess
config.sub
vc/adig/adig.dep
@@ -19,8 +24,6 @@ vc/adig/adig.dsp
vc/adig/adig.mak
vc/adig/adig.plg
vc/vc.dsw
vc/vc.ncb
vc/vc.opt
vc/ahost/ahost.dep
vc/ahost/ahost.dsp
vc/ahost/ahost.mak

66
ares/Makefile.am Normal file
View File

@@ -0,0 +1,66 @@
AUTOMAKE_OPTIONS = foreign
lib_LTLIBRARIES = libcares.la
man_MANS = $(MANPAGES)
MSVCFILES = vc/adig/adig.dep vc/adig/adig.dsp vc/adig/adig.mak \
vc/adig/adig.plg vc/vc.dsw vc/ahost/ahost.dep vc/ahost/ahost.dsp \
vc/ahost/ahost.mak vc/ahost/ahost.plg vc/areslib/areslib.dep \
vc/areslib/areslib.dsp vc/areslib/areslib.mak vc/areslib/areslib.plg
# adig and ahost are just sample programs and thus not mentioned with the
# regular sources and headers
EXTRA_DIST = CHANGES README.cares Makefile.inc adig.c ahost.c $(man_MANS) \
$(MSVCFILES)
VER=-version-info 0:0:0
# This flag accepts an argument of the form current[:revision[:age]]. So,
# passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
# 1.
#
# If either revision or age are omitted, they default to 0. Also note that age
# must be less than or equal to the current interface number.
#
# Here are a set of rules to help you update your library version information:
#
# 1.Start with version information of 0:0:0 for each libtool library.
#
# 2.Update the version information only immediately before a public release of
# your software. More frequent updates are unnecessary, and only guarantee
# that the current interface number gets larger faster.
#
# 3.If the library source code has changed at all since the last update, then
# increment revision (c:r+1:a)
#
# 4.If any interfaces have been added, removed, or changed since the last
# update, increment current, and set revision to 0. (c+1:r=0:a)
#
# 5.If any interfaces have been added since the last public release, then
# increment age. (c:r:a+1)
#
# 6.If any interfaces have been removed since the last public release, then
# set age to 0. (c:r:a=0)
#
libcares_la_LDFLAGS = $(VER)
# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc
libcares_la_SOURCES = $(CSOURCES) $(HHEADERS)
# where to install the c-ares headers
libcares_ladir = $(includedir)
# what headers to install on 'make install':
libcares_la_HEADERS = ares.h ares_version.h
# Make files named *.dist replace the file without .dist extension
dist-hook:
find $(distdir) -name "*.dist" -exec rm {} \;
(distit=`find $(srcdir) -name "*.dist"`; \
for file in $$distit; do \
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
cp $$file $(distdir)$$strip; \
done)

50
ares/Makefile.dj Normal file
View File

@@ -0,0 +1,50 @@
#
# c-ares Makefile for djgpp/gcc/Watt-32.
# By Gisle Vanem <giva@bgnett.no> 2004.
#
.SUFFIXES: .exe
include Makefile.inc
WATT32_ROOT = $(subst \,/,$(WATT_ROOT))
CC = gcc
CFLAGS = -O2 -Wall -DWATT32 -Dselect=select_s -I$(WATT32_ROOT)/inc
LDFLAGS = -s
EX_LIBS = $(WATT32_ROOT)/lib/libwatt.a
OBJ_DIR = djgpp
OBJECTS = $(addprefix $(OBJ_DIR)/, $(CSOURCES:.c=.o))
all: $(OBJ_DIR) libcares.a ahost.exe adig.exe
@echo Welcome to c-ares.
$(OBJ_DIR):
- mkdir $(OBJ_DIR)
libcares.a: $(OBJECTS)
ar rs $@ $?
ahost.exe: ahost.c libcares.a
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
adig.exe: adig.c libcares.a
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
clean:
rm -f $(OBJECTS) libcares.a
vclean realclean: clean
rm -f ahost.exe adig.exe depend.dj
- rmdir $(OBJ_DIR)
$(OBJ_DIR)/%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
@echo
depend:
$(CC) -MM $(CFLAGS) $(CSOURCES) | \
sed -e 's/^\([a-zA-Z0-9_-]*\.o:\)/$$(OBJ_DIR)\/\1/' > depend.dj
-include depend.dj

View File

@@ -1,87 +0,0 @@
# $Id$
SHELL=/bin/sh
INSTALL=@INSTALL@
RANLIB=@RANLIB@
VPATH=@srcdir@
srcdir=@srcdir@
top_srcdir=@top_srcdir@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
mandir=@mandir@
CC=@CC@
CPPFLAGS=@CPPFLAGS@
CFLAGS=@CFLAGS@ ${WARN_CFLAGS} ${ERROR_CFLAGS}
DEFS=@DEFS@
LDFLAGS=@LDFLAGS@
LIBS=@LIBS@
ALL_CFLAGS=${CPPFLAGS} ${CFLAGS} ${DEFS}
OBJS= ares__close_sockets.o ares__get_hostent.o ares__read_line.o \
ares_destroy.o ares_expand_name.o ares_fds.o ares_free_errmem.o \
ares_free_hostent.o ares_free_string.o ares_gethostbyaddr.o \
ares_gethostbyname.o ares_init.o ares_mkquery.o ares_parse_a_reply.o \
ares_parse_ptr_reply.o ares_process.o ares_query.o ares_search.o \
ares_send.o ares_strerror.o ares_timeout.o ares_version.o
all: libares.a adig ahost
libares.a: ${OBJS}
ar cru $@ ${OBJS}
${RANLIB} $@
adig: adig.o libares.a
${CC} ${LDFLAGS} -o $@ adig.o libares.a ${LIBS}
ahost: ahost.o libares.a
${CC} ${LDFLAGS} -o $@ ahost.o libares.a ${LIBS}
${OBJS}: ares.h ares_dns.h ares_private.h
.c.o:
${CC} -c ${ALL_CFLAGS} $<
check:
install:
${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
${top_srcdir}/mkinstalldirs ${DESTDIR}${includedir}
${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man3
${INSTALL} -m 644 libares.a ${DESTDIR}${libdir}
${RANLIB} ${DESTDIR}${libdir}/libares.a
chmod u-w ${DESTDIR}${libdir}/libares.a
${INSTALL} -m 444 ${srcdir}/ares.h ${DESTDIR}${includedir}
${INSTALL} -m 444 ${srcdir}/ares_destroy.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_expand_name.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_fds.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_free_errmem.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_free_hostent.3 \
${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_free_string.3 \
${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_gethostbyaddr.3 \
${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_gethostbyname.3 \
${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_init.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_init_options.3 \
${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_mkquery.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_parse_a_reply.3 \
${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_parse_ptr_reply.3 \
${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_process.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_query.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_search.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_send.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_strerror.3 ${DESTDIR}${mandir}/man3
${INSTALL} -m 444 ${srcdir}/ares_timeout.3 ${DESTDIR}${mandir}/man3
clean:
rm -f ${OBJS} libares.a adig.o adig ahost.o ahost
distclean: clean
rm -f config.cache config.log config.status Makefile

15
ares/Makefile.inc Normal file
View File

@@ -0,0 +1,15 @@
CSOURCES = ares_fds.c ares_process.c ares_free_hostent.c ares_query.c \
ares__close_sockets.c ares_free_string.c ares_search.c ares__get_hostent.c \
ares_gethostbyaddr.c ares_send.c ares__read_line.c ares_gethostbyname.c \
ares_strerror.c ares_cancel.c ares_init.c ares_timeout.c ares_destroy.c \
ares_mkquery.c ares_version.c ares_expand_name.c ares_parse_a_reply.c \
windows_port.c ares_expand_string.c ares_parse_ptr_reply.c
HHEADERS = ares.h ares_private.h setup.h ares_dns.h ares_version.h nameser.h
MANPAGES= ares_destroy.3 ares_expand_name.3 ares_expand_string.3 ares_fds.3 \
ares_free_hostent.3 ares_free_string.3 ares_gethostbyaddr.3 \
ares_gethostbyname.3 ares_init.3 ares_init_options.3 ares_mkquery.3 \
ares_parse_a_reply.3 ares_parse_ptr_reply.3 ares_process.3 \
ares_query.3 ares_search.3 ares_send.3 ares_strerror.3 ares_timeout.3 \
ares_version.3 ares_cancel.3

75
ares/Makefile.m32 Normal file
View File

@@ -0,0 +1,75 @@
#############################################################
# $Id$
#
## Makefile for building libcares.a with MingW32 (GCC-3.2)
## Use: make -f Makefile.m32 [demos]
##
## Quick hack by Guenter; comments to: /dev/nul
CC = gcc
AR = ar
RANLIB = ranlib
STRIP = strip -g
#RM = rm -f
########################################################
## Nothing more to do below this line!
LIB=libcares.a
CC=gcc
#CPPFLAGS=@CPPFLAGS@
WARN_FLAGS=-Wall
CFLAGS=-O2
CFLAGS+=${WARN_CFLAGS} ${ERROR_CFLAGS}
DEFS=-DMINGW32
LDFLAGS=-s
LIBS=-lwsock32
ALL_CFLAGS=${CPPFLAGS} ${CFLAGS} ${DEFS}
MANPAGES := $(patsubst %.c,%.o,$(wildcard ares_*.3))
OBJS := $(patsubst %.c,%.o,$(wildcard ares_*.c))
OBJS += windows_port.o
$(LIB): ${OBJS}
ar cru $@ ${OBJS}
${RANLIB} $@
all: $(LIB) demos
demos: adig.exe ahost.exe
tags:
etags *.[ch]
adig.exe: adig.o $(LIB)
${CC} ${LDFLAGS} -o $@ adig.o $(LIB) ${LIBS}
ahost.exe: ahost.o $(LIB)
${CC} ${LDFLAGS} -o $@ ahost.o $(LIB) ${LIBS}
${OBJS}: ares.h ares_dns.h ares_private.h
.c.o:
${CC} -c ${ALL_CFLAGS} $<
check:
install:
${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
${top_srcdir}/mkinstalldirs ${DESTDIR}${includedir}
${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man3
${INSTALL} -m 644 $(LIB) ${DESTDIR}${libdir}
${RANLIB} ${DESTDIR}${libdir}/$(LIB)
chmod u-w ${DESTDIR}${libdir}/$(LIB)
${INSTALL} -m 444 ${srcdir}/ares.h ${DESTDIR}${includedir}
${INSTALL} -m 444 ${srcdir}/ares_version.h ${DESTDIR}${includedir}
(for man in $(MANPAGES); do \
${INSTALL} -m 444 ${srcdir}/$${man} ${DESTDIR}${mandir}/man3; \
done)
clean:
rm -f ${OBJS} $(LIB) adig.o adig.exe ahost.o ahost.exe
distclean: clean
rm -f config.cache config.log config.status Makefile

317
ares/Makefile.netware Normal file
View File

@@ -0,0 +1,317 @@
#################################################################
#
## Makefile for building libares.lib (NetWare version - gnu make)
## Use: make -f Makefile.netware
##
## Comments to: Guenter Knauf <eflash@gmx.net>
#
#################################################################
# Edit the path below to point to the base of your Novell NDK.
ifndef NDKBASE
NDKBASE = c:/novell
endif
ifndef INSTDIR
INSTDIR = ../curl-$(LIBCURL_VERSION_STR)-bin-nw
endif
# Edit the vars below to change NLM target settings.
TARGETS = adig.nlm ahost.nlm
LTARGET = libcares.lib
VERSION = $(LIBCARES_VERSION)
COPYR = Copyright (c) 1996 - 2004, Daniel Stenberg, <daniel@haxx.se>
DESCR = cURL $(subst .def,,$(notdir $@)) $(LIBCARES_VERSION_STR) - http://curl.haxx.se
MTSAFE = YES
STACK = 64000
SCREEN = none
#EXPORTS =
# Comment the line below if you dont want to load protected automatically.
#LDRING = 3
# Edit the var below to point to your lib architecture.
ifndef LIBARCH
LIBARCH = LIBC
endif
# must be equal to DEBUG or NDEBUG
DB = NDEBUG
# DB = DEBUG
# DB = CURLDEBUG
# Optimization: -O<n> or debugging: -g
ifeq ($(DB),NDEBUG)
OPT = -O2
OBJDIR = release
else
OPT = -g
OBJDIR = debug
endif
# Include the version info retrieved from curlver.h
-include $(OBJDIR)/version.inc
# The following line defines your compiler.
ifdef METROWERKS
CC = mwccnlm
else
CC = gcc
endif
YACC = bison -y
CP = cp -afv
# RM = rm -f
# if you want to mark the target as MTSAFE you will need a tool for
# generating the xdc data for the linker; here's a minimal tool:
# http://www.gknw.com/development/prgtools/mkxdc.zip
MPKXDC = mkxdc
# Global flags for all compilers
CFLAGS = $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
ifeq ($(CC),mwccnlm)
LD = mwldnlm
LDFLAGS = -nostdlib $(PRELUDE) $(OBJS) $(<:.def=.o) -o $@ -commandfile
AR = mwldnlm
ARFLAGS = -type library -w nocmdline $(OBJDIR)/*.o -o
CFLAGS += -msgstyle gcc -gccinc -inline off -opt nointrinsics -proc 586
CFLAGS += -relax_pointers
#CFLAGS += -w on
ifeq ($(LIBARCH),LIBC)
PRELUDE = $(SDK_LIBC)/imports/libcpre.o
CFLAGS += -align 4
else
PRELUDE = "$(METROWERKS)/Novell Support/libraries/runtime/prelude.obj"
# CFLAGS += -include "$(METROWERKS)/Novell Support/headers/nlm_prefix.h"
CFLAGS += -align 1
endif
else
LD = nlmconv
LDFLAGS = -T
AR = ar
ARFLAGS = -cq
CFLAGS += -fno-builtin -fpack-struct -fpcc-struct-return -fno-strict-aliasing
CFLAGS += -Wall -Wno-format # -pedantic
ifeq ($(LIBARCH),LIBC)
PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
else
PRELUDE = $(SDK_CLIB)/imports/clibpre.gcc.o
CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
endif
endif
NDK_ROOT = $(NDKBASE)/ndk
SDK_CLIB = $(NDK_ROOT)/nwsdk
SDK_LIBC = $(NDK_ROOT)/libc
ifeq ($(LIBARCH),LIBC)
INCLUDES += -I$(SDK_LIBC)/include -I$(SDK_LIBC)/include/nks
INCLUDES += -I$(SDK_LIBC)/include/winsock
CFLAGS += -D_POSIX_SOURCE
# CFLAGS += -D__ANSIC__
else
INCLUDES += -I$(SDK_CLIB)/include/nlm -I$(SDK_CLIB)/include
# INCLUDES += -I$(SDK_CLIB)/include/nlm/obsolete
CFLAGS += -DNETDB_USE_INTERNET
endif
CFLAGS += -I. $(INCLUDES)
ifeq ($(MTSAFE),YES)
XDCOPT = -n
endif
ifeq ($(MTSAFE),NO)
XDCOPT = -u
endif
ifeq ($(findstring linux,$(OSTYPE)),linux)
DL = '
#-include $(NDKBASE)/nlmconv/ncpfs.inc
endif
OBJS := $(patsubst %.c,$(OBJDIR)/%.o,$(wildcard ares_*.c))
.PHONY: lib nlm prebuild dist install clean
lib: prebuild $(LTARGET)
nlm: prebuild $(TARGETS)
prebuild: $(OBJDIR) $(OBJDIR)/version.inc config.h arpa/nameser.h
dist: all
-$(RM) $(OBJS) $(OBJDIR)/*.map $(OBJDIR)/*.ncv
-$(RM) $(OBJDIR)/*.def $(OBJDIR)/*.xdc $(OBJDIR)/version.inc
install: $(INSTDIR) all
@$(CP) *.nlm $(INSTDIR)
@$(CP) ../CHANGES $(INSTDIR)
@$(CP) ../COPYING $(INSTDIR)
@$(CP) ../README $(INSTDIR)
@$(CP) ../RELEASE-NOTES $(INSTDIR)
clean:
-$(RM) $(LTARGET) $(TARGETS) config.h
-$(RM) -r $(OBJDIR)
-$(RM) -r arpa
%.lib: $(OBJS)
@echo Creating $@
@-$(RM) $@
@$(AR) $(ARFLAGS) $@ $^
%.nlm: $(OBJDIR)/%.def $(OBJDIR)/%.o $(OBJDIR)/%.xdc $(OBJS)
@echo Linking $@
@-$(RM) $@
@$(LD) $(LDFLAGS) $<
$(INSTDIR):
@mkdir $(INSTDIR)
$(OBJDIR):
@mkdir $(OBJDIR)
$(OBJDIR)/%.o: %.c
# @echo Compiling $<
$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/version.inc: ares_version.h $(OBJDIR)
@echo Creating $@
@awk -f ../packages/NetWare/get_ver.awk $< > $@
$(OBJDIR)/%.xdc: Makefile.netware
@echo Creating $@
@$(MPKXDC) $(XDCOPT) $@
$(OBJDIR)/%.def: Makefile.netware
@echo Creating $@
@echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
@echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
@echo $(DL)# All your changes will be lost!!$(DL) >> $@
@echo $(DL)#$(DL) >> $@
@echo $(DL)copyright "$(COPYR)"$(DL) >> $@
@echo $(DL)description "$(DESCR)"$(DL) >> $@
@echo $(DL)version $(VERSION)$(DL) >> $@
ifdef NLMTYPE
@echo $(DL)type $(NLMTYPE)$(DL) >> $@
endif
ifdef STACK
@echo $(DL)stack $(STACK)$(DL) >> $@
endif
ifdef SCREEN
@echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
else
@echo $(DL)screenname "DEFAULT"$(DL) >> $@
endif
ifeq ($(DB),DEBUG)
@echo $(DL)debug$(DL) >> $@
endif
@echo $(DL)threadname "$^"$(DL) >> $@
ifdef XDCOPT
@echo $(DL)xdcdata $(@:.def=.xdc)$(DL) >> $@
endif
ifeq ($(LDRING),0)
@echo $(DL)flag_on 16$(DL) >> $@
endif
ifeq ($(LDRING),3)
@echo $(DL)flag_on 512$(DL) >> $@
endif
ifeq ($(LIBARCH),CLIB)
@echo $(DL)start _Prelude$(DL) >> $@
@echo $(DL)exit _Stop$(DL) >> $@
@echo $(DL)import @$(SDK_CLIB)/imports/clib.imp$(DL) >> $@
@echo $(DL)import @$(SDK_CLIB)/imports/threads.imp$(DL) >> $@
@echo $(DL)import @$(SDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
@echo $(DL)import @$(SDK_CLIB)/imports/socklib.imp$(DL) >> $@
@echo $(DL)module clib$(DL) >> $@
else
@echo $(DL)flag_on 64$(DL) >> $@
@echo $(DL)pseudopreemption$(DL) >> $@
@echo $(DL)start _LibCPrelude$(DL) >> $@
@echo $(DL)exit _LibCPostlude$(DL) >> $@
@echo $(DL)check _LibCCheckUnload$(DL) >> $@
@echo $(DL)import @$(SDK_LIBC)/imports/libc.imp$(DL) >> $@
@echo $(DL)import @$(SDK_LIBC)/imports/netware.imp$(DL) >> $@
@echo $(DL)module libc$(DL) >> $@
endif
ifdef MODULES
@echo $(DL)module $(MODULES)$(DL) >> $@
endif
ifdef EXPORTS
@echo $(DL)export $(EXPORTS)$(DL) >> $@
endif
ifdef IMPORTS
@echo $(DL)import $(IMPORTS)$(DL) >> $@
endif
ifeq ($(LD),nlmconv)
@echo $(DL)input $(OBJS)$(DL) >> $@
@echo $(DL)input $(PRELUDE)$(DL) >> $@
@echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
endif
config.h: Makefile.netware
@echo Creating $@
@echo $(DL)/* $@ for NetWare target.$(DL) > $@
@echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
@echo $(DL)** All your changes will be lost!!$(DL) >> $@
@echo $(DL)*/$(DL) >> $@
@echo $(DL)#define OS "i586-pc-NetWare"$(DL) >> $@
@echo $(DL)#define VERSION "$(LIBCURL_VERSION_STR)"$(DL) >> $@
@echo $(DL)#define PACKAGE_BUGREPORT "curl-bug@haxx.se"$(DL) >> $@
@echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
@echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
@echo $(DL)#define HAVE_DLFCN_H 1$(DL) >> $@
@echo $(DL)#define HAVE_DLOPEN 1$(DL) >> $@
@echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
@echo $(DL)#define HAVE_FCNTL_H 1$(DL) >> $@
@echo $(DL)#define HAVE_FIONBIO 1$(DL) >> $@
@echo $(DL)#define HAVE_GETHOSTBYADDR 1$(DL) >> $@
@echo $(DL)#define HAVE_GETTIMEOFDAY 1$(DL) >> $@
@echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
@echo $(DL)#define HAVE_INET_NTOA 1$(DL) >> $@
@echo $(DL)#define HAVE_INET_PTON 1$(DL) >> $@
@echo $(DL)#define HAVE_INTTYPES_H 1$(DL) >> $@
@echo $(DL)#define HAVE_LIMITS_H 1$(DL) >> $@
@echo $(DL)#define HAVE_LONGLONG 1$(DL) >> $@
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
@echo $(DL)#define HAVE_SOCKET 1$(DL) >> $@
@echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
@echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
@echo $(DL)#define HAVE_STRCASECMP 1$(DL) >> $@
@echo $(DL)#define HAVE_STRDUP 1$(DL) >> $@
@echo $(DL)#define HAVE_STRFTIME 1$(DL) >> $@
@echo $(DL)#define HAVE_STRING_H 1$(DL) >> $@
@echo $(DL)#define HAVE_STRLCAT 1$(DL) >> $@
@echo $(DL)#define HAVE_STRLCPY 1$(DL) >> $@
@echo $(DL)#define HAVE_STRSTR 1$(DL) >> $@
@echo $(DL)#define HAVE_SYS_PARAM_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SYS_SELECT_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SYS_STAT_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SYS_TIME_H 1$(DL) >> $@
@echo $(DL)#define HAVE_TERMIOS_H 1$(DL) >> $@
@echo $(DL)#define HAVE_TIME_H 1$(DL) >> $@
@echo $(DL)#define HAVE_UNAME 1$(DL) >> $@
@echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
@echo $(DL)#define SIZEOF_CURL_OFF_T 4$(DL) >> $@
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
ifdef NW_WINSOCK
@echo $(DL)#define HAVE_CLOSESOCKET 1$(DL) >> $@
else
@echo $(DL)#define HAVE_SYS_TYPES_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SYS_SOCKET_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SYS_SOCKIO_H 1$(DL) >> $@
@echo $(DL)#define HAVE_NETDB_H 1$(DL) >> $@
endif
ifdef OLD_NOVELLSDK
@echo $(DL)#define socklen_t int$(DL) >> $@
endif
arpa/nameser.h: nameser.h
@echo Fix missing header $@
@-mkdir arpa
@$(CP) $< arpa

View File

@@ -1,3 +1,6 @@
Major changes since:
* see the CHANGES file
Major changes in release 1.1.1:
* ares should now compile as C++ code (no longer uses reserved word
"class").

View File

@@ -1,3 +1,8 @@
This is c-ares, a forked version of the original ares. The original ares
README follows below, the c-ares specific details are in README.cares
====================================================================
This is ares, an asynchronous resolver library. It is intended for
applications which need to perform DNS queries without blocking, or
need to perform multiple DNS queries in parallel. The primary

25
ares/README.cares Normal file
View File

@@ -0,0 +1,25 @@
c-ares
======
This package is based on ares 1.1.1 (written by Greg Hudson). I decided to
fork and release a separate project since the ares author didn't want the
improvements that were vital for our use of it.
This package is dubbed 'c-ares' since I (Daniel Stenberg) wanted this for use
within the curl project (hence the letter C) and it makes a nice pun. Also,
c-ares is not API compatible with ares: a new name makes that more obvious to
the public.
The full source code is available in the 'c-ares' release archives, and in the
'ares' subdir of the curl CVS source repostitory.
If you find bugs, correct flaws, have questions or have comments in general in
regard to c-ares (or by all means the original ares too), get in touch with us
on the c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares
c-ares is of course distributed under the same MIT-style license as the
original ares.
You'll find all c-ares details and news here:
http://daniel.haxx.se/projects/c-ares

101
ares/acinclude.m4 Normal file
View File

@@ -0,0 +1,101 @@
dnl We create a function for detecting which compiler we use and then set as
dnl pendantic compiler options as possible for that particular compiler. The
dnl options are only used for debug-builds.
dnl This is a copy of the original found in curl's configure script. Don't
dnl modify this one, edit the one in curl and copy it back here when that one
dnl is changed.
AC_DEFUN([CURL_CC_DEBUG_OPTS],
[
if test "$GCC" = "yes"; then
dnl figure out gcc version!
AC_MSG_CHECKING([gcc version])
gccver=`$CC -dumpversion`
num1=`echo $gccver | cut -d . -f1`
num2=`echo $gccver | cut -d . -f2`
gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null`
AC_MSG_RESULT($gccver)
AC_MSG_CHECKING([if this is icc in disguise])
AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
dnl action if the text is found, this it has not been replaced by the
dnl cpp
ICC="no"
AC_MSG_RESULT([no]),
dnl the text was not found, it was replaced by the cpp
ICC="yes"
AC_MSG_RESULT([yes])
)
if test "$ICC" = "yes"; then
dnl this is icc, not gcc.
dnl ICC warnings we ignore:
dnl * 279 warns on static conditions in while expressions
dnl * 269 warns on our "%Od" printf formatters for curl_off_t output:
dnl "invalid format string conversion"
WARN="-wd279,269"
if test "$gccnum" -gt "600"; then
dnl icc 6.0 and older doesn't have the -Wall flag
WARN="-Wall $WARN"
fi
else dnl $ICC = yes
dnl
WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare"
dnl -Wcast-align is a bit too annoying ;-)
if test "$gccnum" -ge "296"; then
dnl gcc 2.96 or later
WARN="$WARN -Wfloat-equal"
if test "$gccnum" -gt "296"; then
dnl this option does not exist in 2.96
WARN="$WARN -Wno-format-nonliteral"
fi
dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
dnl on i686-Linux as it gives us heaps with false positives
if test "$gccnum" -ge "303"; then
dnl gcc 3.3 and later
WARN="$WARN -Wendif-labels -Wstrict-prototypes"
fi
fi
for flag in $CPPFLAGS; do
case "$flag" in
-I*)
dnl include path
add=`echo $flag | sed 's/^-I/-isystem /g'`
WARN="$WARN $add"
;;
esac
done
fi dnl $ICC = no
CFLAGS="$CFLAGS $WARN"
fi dnl $GCC = yes
dnl strip off optimizer flags
NEWFLAGS=""
for flag in $CFLAGS; do
case "$flag" in
-O*)
dnl echo "cut off $flag"
;;
*)
NEWFLAGS="$NEWFLAGS $flag"
;;
esac
done
CFLAGS=$NEWFLAGS
]) dnl end of AC_DEFUN()

358
ares/aclocal.m4 vendored
View File

@@ -1,358 +0,0 @@
dnl $Id$
dnl Copyright 1996 by the Massachusetts Institute of Technology.
dnl
dnl Permission to use, copy, modify, and distribute this
dnl software and its documentation for any purpose and without
dnl fee is hereby granted, provided that the above copyright
dnl notice appear in all copies and that both that copyright
dnl notice and this permission notice appear in supporting
dnl documentation, and that the name of M.I.T. not be used in
dnl advertising or publicity pertaining to distribution of the
dnl software without specific, written prior permission.
dnl M.I.T. makes no representations about the suitability of
dnl this software for any purpose. It is provided "as is"
dnl without express or implied warranty.
dnl This file provides local macros for packages which use specific
dnl external libraries. The public macros are:
dnl
dnl ATHENA_UTIL_COM_ERR
dnl Generates error if com_err not found.
dnl ATHENA_UTIL_SS
dnl Generates error if ss not found.
dnl ATHENA_REGEXP
dnl Sets REGEX_LIBS if rx library used; ensures POSIX
dnl regexp support.
dnl ATHENA_MOTIF
dnl Sets MOTIF_LIBS and defines HAVE_MOTIF if Motif used.
dnl ATHENA_MOTIF_REQUIRED
dnl Generates error if Motif not found.
dnl ATHENA_AFS
dnl Sets AFS_LIBS and defines HAVE_AFS if AFS used. Pass
dnl in an argument giving the desired AFS libraries;
dnl AFS_LIBS will be set to that value if AFS is found.
dnl AFS_DIR will be set to the prefix given.
dnl ATHENA_AFS_REQUIRED
dnl Generates error if AFS libraries not found. AFS_DIR
dnl will be set to the prefix given.
dnl ATHENA_KRB4
dnl Sets KRB4_LIBS and defines HAVE_KRB4 if krb4 used.
dnl ATHENA_KRB4_REQUIRED
dnl Generates error if krb4 not found. Sets KRB4_LIBS
dnl otherwise. (Special behavior because krb4 libraries
dnl may be different if using krb4 compatibility libraries
dnl from krb5.)
dnl ATHENA_KRB5
dnl Sets KRB5_LIBS and defines HAVE_KRB5 if krb5 used.
dnl ATHENA_KRB5_REQUIRED
dnl Generates error if krb5 not found.
dnl ATHENA_HESIOD
dnl Sets HESIOD_LIBS and defines HAVE_HESIOD if Hesiod
dnl used.
dnl ATHENA_HESIOD_REQUIRED
dnl Generates error if Hesiod not found.
dnl ATHENA_ARES
dnl Sets ARES_LIBS and defines HAVE_ARES if libares
dnl used.
dnl ATHENA_ARES_REQUIRED
dnl Generates error if libares not found.
dnl ATHENA_ZEPHYR
dnl Sets ZEPHYR_LIBS and defines HAVE_ZEPHYR if zephyr
dnl used.
dnl ATHENA_ZEPHYR_REQUIRED
dnl Generates error if zephyr not found.
dnl
dnl All of the macros may extend CPPFLAGS and LDFLAGS to let the
dnl compiler find the requested libraries. Put ATHENA_UTIL_COM_ERR
dnl and ATHENA_UTIL_SS before ATHENA_AFS or ATHENA_AFS_REQUIRED; there
dnl is a com_err library in the AFS libraries which requires -lutil.
dnl ----- com_err -----
AC_DEFUN(ATHENA_UTIL_COM_ERR,
[AC_ARG_WITH(com_err,
[ --with-com_err=PREFIX Specify location of com_err],
[com_err="$withval"], [com_err=yes])
if test "$com_err" != no; then
if test "$com_err" != yes; then
CPPFLAGS="$CPPFLAGS -I$com_err/include"
LDFLAGS="$LDFLAGS -L$com_err/lib"
fi
AC_CHECK_LIB(com_err, com_err, :,
[AC_MSG_ERROR(com_err library not found)])
else
AC_MSG_ERROR(This package requires com_err.)
fi])
dnl ----- ss -----
AC_DEFUN(ATHENA_UTIL_SS,
[AC_ARG_WITH(ss,
[ --with-ss=PREFIX Specify location of ss (requires com_err)],
[ss="$withval"], [ss=yes])
if test "$ss" != no; then
if test "$ss" != yes; then
CPPFLAGS="$CPPFLAGS -I$ss/include"
LDFLAGS="$LDFLAGS -L$ss/lib"
fi
AC_CHECK_LIB(ss, ss_perror, :,
[AC_MSG_ERROR(ss library not found)], -lcom_err)
else
AC_MSG_ERROR(This package requires ss.)
fi])
dnl ----- Regular expressions -----
AC_DEFUN(ATHENA_REGEXP,
[AC_ARG_WITH(regex,
[ --with-regex=PREFIX Use installed regex library],
[regex="$withval"], [regex=no])
if test "$regex" != no; then
if test "$regex" != yes; then
CPPFLAGS="$CPPFLAGS -I$regex/include"
LDFLAGS="$LDFLAGS -L$regex/lib"
fi
AC_CHECK_LIB(regex, regcomp, REGEX_LIBS=-lregex,
[AC_MSG_ERROR(regex library not found)])
else
AC_CHECK_FUNC(regcomp, :,
[AC_MSG_ERROR(can't find POSIX regexp support)])
fi
AC_SUBST(REGEX_LIBS)])
dnl ----- Motif -----
AC_DEFUN(ATHENA_MOTIF_CHECK,
[if test "$motif" != yes; then
CPPFLAGS="$CPPFLAGS -I$motif/include"
LDFLAGS="$LDFLAGS -L$motif/lib"
fi
AC_CHECK_LIB(Xm, XmStringFree, :, [AC_MSG_ERROR(Motif library not found)])])
AC_DEFUN(ATHENA_MOTIF,
[AC_ARG_WITH(motif,
[ --with-motif=PREFIX Use Motif],
[motif="$withval"], [motif=no])
if test "$motif" != no; then
ATHENA_MOTIF_CHECK
MOTIF_LIBS=-lXm
AC_DEFINE(HAVE_MOTIF)
fi
AC_SUBST(MOTIF_LIBS)])
AC_DEFUN(ATHENA_MOTIF_REQUIRED,
[AC_ARG_WITH(motif,
[ --with-motif=PREFIX Specify location of Motif],
[motif="$withval"], [motif=yes])
if test "$motif" != no; then
ATHENA_MOTIF_CHECK
else
AC_MSG_ERROR(This package requires Motif.)
fi])
dnl ----- AFS -----
AC_DEFUN(ATHENA_AFS_CHECK,
[AC_CHECK_FUNC(insque, :, AC_CHECK_LIB(compat, insque))
AC_CHECK_FUNC(gethostbyname, :, AC_CHECK_LIB(nsl, gethostbyname))
AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket))
if test "$afs" != yes; then
CPPFLAGS="$CPPFLAGS -I$afs/include"
LDFLAGS="$LDFLAGS -L$afs/lib -L$afs/lib/afs"
fi
AC_CHECK_LIB(sys, pioctl, :, [AC_MSG_ERROR(AFS libraries not found)],
-lrx -llwp -lsys)
AFS_DIR=$afs
AC_SUBST(AFS_DIR)])
dnl Specify desired AFS libraries as a parameter.
AC_DEFUN(ATHENA_AFS,
[AC_ARG_WITH(afs,
[ --with-afs=PREFIX Use AFS libraries],
[afs="$withval"], [afs=no])
if test "$afs" != no; then
ATHENA_AFS_CHECK
AFS_LIBS=$1
AC_DEFINE(HAVE_AFS)
fi
AC_SUBST(AFS_LIBS)])
AC_DEFUN(ATHENA_AFS_REQUIRED,
[AC_ARG_WITH(afs,
[ --with-afs=PREFIX Specify location of AFS libraries],
[afs="$withval"], [afs=/usr/afsws])
if test "$afs" != no; then
ATHENA_AFS_CHECK
else
AC_MSG_ERROR(This package requires AFS libraries.)
fi])
dnl ----- Kerberos 4 -----
AC_DEFUN(ATHENA_KRB4_CHECK,
[AC_CHECK_FUNC(gethostbyname, :, AC_CHECK_LIB(nsl, gethostbyname))
AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket))
AC_CHECK_LIB(gen, compile)
if test "$krb4" != yes; then
CPPFLAGS="$CPPFLAGS -I$krb4/include"
if test -d "$krb4/include/kerberosIV"; then
CPPFLAGS="$CPPFLAGS -I$krb4/include/kerberosIV"
fi
LDFLAGS="$LDFLAGS -L$krb4/lib"
fi
AC_CHECK_LIB(krb4, krb_rd_req,
[KRB4_LIBS="-lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"],
[AC_CHECK_LIB(krb, krb_rd_req,
[KRB4_LIBS="-lkrb -ldes"],
[AC_MSG_ERROR(Kerberos 4 libraries not found)],
-ldes)],
-ldes425 -lkrb5 -lk5crypto -lcom_err)])
AC_DEFUN(ATHENA_KRB4,
[AC_ARG_WITH(krb4,
[ --with-krb4=PREFIX Use Kerberos 4],
[krb4="$withval"], [krb4=no])
if test "$krb4" != no; then
ATHENA_KRB4_CHECK
AC_DEFINE(HAVE_KRB4)
fi
AC_SUBST(KRB4_LIBS)])
AC_DEFUN(ATHENA_KRB4_REQUIRED,
[AC_ARG_WITH(krb4,
[ --with-krb4=PREFIX Specify location of Kerberos 4],
[krb4="$withval"], [krb4=yes])
if test "$krb4" != no; then
ATHENA_KRB4_CHECK
AC_SUBST(KRB4_LIBS)
else
AC_MSG_ERROR(This package requires Kerberos 4.)
fi])
dnl ----- Kerberos 5 -----
AC_DEFUN(ATHENA_KRB5_CHECK,
[AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(socket, socket)
AC_CHECK_LIB(gen, compile)
if test "$krb5" != yes; then
CPPFLAGS="$CPPFLAGS -I$krb5/include"
LDFLAGS="$LDFLAGS -L$krb5/lib"
fi
AC_CHECK_LIB(krb5, krb5_init_context, :,
[AC_MSG_ERROR(Kerberos 5 libraries not found)],
-lk5crypto -lcom_err)])
AC_DEFUN(ATHENA_KRB5,
[AC_ARG_WITH(krb5,
[ --with-krb5=PREFIX Use Kerberos 5],
[krb5="$withval"], [krb5=no])
if test "$krb5" != no; then
ATHENA_KRB5_CHECK
KRB5_LIBS="-lkrb5 -lk5crypto -lcom_err"
AC_DEFINE(HAVE_KRB5)
fi
AC_SUBST(KRB5_LIBS)])
AC_DEFUN(ATHENA_KRB5_REQUIRED,
[AC_ARG_WITH(krb5,
[ --with-krb5=PREFIX Specify location of Kerberos 5],
[krb5="$withval"], [krb5=yes])
if test "$krb5" != no; then
ATHENA_KRB5_CHECK
else
AC_MSG_ERROR(This package requires Kerberos 5.)
fi])
dnl ----- Hesiod -----
AC_DEFUN(ATHENA_HESIOD_CHECK,
[AC_CHECK_FUNC(res_send, :, AC_CHECK_LIB(resolv, res_send))
if test "$hesiod" != yes; then
CPPFLAGS="$CPPFLAGS -I$hesiod/include"
LDFLAGS="$LDFLAGS -L$hesiod/lib"
fi
AC_CHECK_LIB(hesiod, hes_resolve, :,
[AC_MSG_ERROR(Hesiod library not found)])])
AC_DEFUN(ATHENA_HESIOD,
[AC_ARG_WITH(hesiod,
[ --with-hesiod=PREFIX Use Hesiod],
[hesiod="$withval"], [hesiod=no])
if test "$hesiod" != no; then
ATHENA_HESIOD_CHECK
HESIOD_LIBS="-lhesiod"
AC_DEFINE(HAVE_HESIOD)
fi
AC_SUBST(HESIOD_LIBS)])
AC_DEFUN(ATHENA_HESIOD_REQUIRED,
[AC_ARG_WITH(hesiod,
[ --with-hesiod=PREFIX Specify location of Hesiod],
[hesiod="$withval"], [hesiod=yes])
if test "$hesiod" != no; then
ATHENA_HESIOD_CHECK
else
AC_MSG_ERROR(This package requires Hesiod.)
fi])
dnl ----- libares -----
AC_DEFUN(ATHENA_ARES_CHECK,
[AC_CHECK_FUNC(res_send, :, AC_CHECK_LIB(resolv, res_send))
if test "$ares" != yes; then
CPPFLAGS="$CPPFLAGS -I$ares/include"
LDFLAGS="$LDFLAGS -L$ares/lib"
fi
AC_CHECK_LIB(ares, ares_init, :, [AC_MSG_ERROR(libares not found)])])
AC_DEFUN(ATHENA_ARES,
[AC_ARG_WITH(ares,
[ --with-ares=PREFIX Use libares],
[ares="$withval"], [ares=no])
if test "$ares" != no; then
ATHENA_ARES_CHECK
ARES_LIBS="-lares"
AC_DEFINE(HAVE_ARES)
fi
AC_SUBST(ARES_LIBS)])
AC_DEFUN(ATHENA_ARES_REQUIRED,
[AC_ARG_WITH(ares,
[ --with-ares=PREFIX Specify location of libares],
[ares="$withval"], [ares=yes])
if test "$ares" != no; then
ATHENA_ARES_CHECK
else
AC_MSG_ERROR(This package requires libares.)
fi])
dnl ----- zephyr -----
AC_DEFUN(ATHENA_ZEPHYR_CHECK,
[if test "$zephyr" != yes; then
CPPFLAGS="$CPPFLAGS -I$zephyr/include"
LDFLAGS="$LDFLAGS -L$zephyr/lib"
fi
AC_CHECK_LIB(zephyr, ZFreeNotice, :, [AC_MSG_ERROR(zephyr not found)])])
AC_DEFUN(ATHENA_ZEPHYR,
[AC_ARG_WITH(zephyr,
[ --with-zephyr=PREFIX Use zephyr],
[zephyr="$withval"], [zephyr=no])
if test "$zephyr" != no; then
ATHENA_ZEPHYR_CHECK
ZEPHYR_LIBS="-lzephyr"
AC_DEFINE(HAVE_ZEPHYR)
fi
AC_SUBST(ZEPHYR_LIBS)])
AC_DEFUN(ATHENA_ZEPHYR_REQUIRED,
[AC_ARG_WITH(zephyr,
[ --with-zephyr=PREFIX Specify location of zephyr],
[zephyr="$withval"], [zephyr=yes])
if test "$zephyr" != no; then
ATHENA_ZEPHYR_CHECK
else
AC_MSG_ERROR(This package requires zephyr.)
fi])

View File

@@ -13,8 +13,7 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
@@ -38,7 +37,7 @@ static const char rcsid[] = "$Id$";
#include "ares_dns.h"
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#define INADDR_NONE 0xffffffff
#endif
/* Mac OS X portability check */
@@ -55,58 +54,58 @@ struct nv {
};
static const struct nv flags[] = {
{ "usevc", ARES_FLAG_USEVC },
{ "primary", ARES_FLAG_PRIMARY },
{ "igntc", ARES_FLAG_IGNTC },
{ "norecurse", ARES_FLAG_NORECURSE },
{ "stayopen", ARES_FLAG_STAYOPEN },
{ "noaliases", ARES_FLAG_NOALIASES }
{ "usevc", ARES_FLAG_USEVC },
{ "primary", ARES_FLAG_PRIMARY },
{ "igntc", ARES_FLAG_IGNTC },
{ "norecurse", ARES_FLAG_NORECURSE },
{ "stayopen", ARES_FLAG_STAYOPEN },
{ "noaliases", ARES_FLAG_NOALIASES }
};
static const int nflags = sizeof(flags) / sizeof(flags[0]);
static const struct nv classes[] = {
{ "IN", C_IN },
{ "CHAOS", C_CHAOS },
{ "HS", C_HS },
{ "ANY", C_ANY }
{ "IN", C_IN },
{ "CHAOS", C_CHAOS },
{ "HS", C_HS },
{ "ANY", C_ANY }
};
static const int nclasses = sizeof(classes) / sizeof(classes[0]);
static const struct nv types[] = {
{ "A", T_A },
{ "NS", T_NS },
{ "MD", T_MD },
{ "MF", T_MF },
{ "CNAME", T_CNAME },
{ "SOA", T_SOA },
{ "MB", T_MB },
{ "MG", T_MG },
{ "MR", T_MR },
{ "NULL", T_NULL },
{ "WKS", T_WKS },
{ "PTR", T_PTR },
{ "HINFO", T_HINFO },
{ "MINFO", T_MINFO },
{ "MX", T_MX },
{ "TXT", T_TXT },
{ "RP", T_RP },
{ "AFSDB", T_AFSDB },
{ "X25", T_X25 },
{ "ISDN", T_ISDN },
{ "RT", T_RT },
{ "NSAP", T_NSAP },
{ "NSAP_PTR", T_NSAP_PTR },
{ "SIG", T_SIG },
{ "KEY", T_KEY },
{ "PX", T_PX },
{ "GPOS", T_GPOS },
{ "AAAA", T_AAAA },
{ "LOC", T_LOC },
{ "SRV", T_SRV },
{ "AXFR", T_AXFR },
{ "MAILB", T_MAILB },
{ "MAILA", T_MAILA },
{ "ANY", T_ANY }
{ "A", T_A },
{ "NS", T_NS },
{ "MD", T_MD },
{ "MF", T_MF },
{ "CNAME", T_CNAME },
{ "SOA", T_SOA },
{ "MB", T_MB },
{ "MG", T_MG },
{ "MR", T_MR },
{ "NULL", T_NULL },
{ "WKS", T_WKS },
{ "PTR", T_PTR },
{ "HINFO", T_HINFO },
{ "MINFO", T_MINFO },
{ "MX", T_MX },
{ "TXT", T_TXT },
{ "RP", T_RP },
{ "AFSDB", T_AFSDB },
{ "X25", T_X25 },
{ "ISDN", T_ISDN },
{ "RT", T_RT },
{ "NSAP", T_NSAP },
{ "NSAP_PTR", T_NSAP_PTR },
{ "SIG", T_SIG },
{ "KEY", T_KEY },
{ "PX", T_PX },
{ "GPOS", T_GPOS },
{ "AAAA", T_AAAA },
{ "LOC", T_LOC },
{ "SRV", T_SRV },
{ "AXFR", T_AXFR },
{ "MAILB", T_MAILB },
{ "MAILA", T_MAILA },
{ "ANY", T_ANY }
};
static const int ntypes = sizeof(types) / sizeof(types[0]);
@@ -125,10 +124,10 @@ static const char *rcodes[] = {
static void callback(void *arg, int status, unsigned char *abuf, int alen);
static const unsigned char *display_question(const unsigned char *aptr,
const unsigned char *abuf,
int alen);
const unsigned char *abuf,
int alen);
static const unsigned char *display_rr(const unsigned char *aptr,
const unsigned char *abuf, int alen);
const unsigned char *abuf, int alen);
static const char *type_name(int type);
static const char *class_name(int dnsclass);
static void usage(void);
@@ -142,13 +141,12 @@ int main(int argc, char **argv)
struct hostent *hostent;
fd_set read_fds, write_fds;
struct timeval *tvp, tv;
char *errmem;
#ifdef WIN32
WORD wVersionRequested = MAKEWORD(1,1);
WSADATA wsaData;
WSAStartup(wVersionRequested, &wsaData);
#endif
#endif
options.flags = ARES_FLAG_NOCHECKRESP;
options.servers = NULL;
@@ -156,80 +154,80 @@ int main(int argc, char **argv)
while ((c = getopt(argc, argv, "f:s:c:t:T:U:")) != -1)
{
switch (c)
{
case 'f':
/* Add a flag. */
for (i = 0; i < nflags; i++)
{
if (strcmp(flags[i].name, optarg) == 0)
break;
}
if (i == nflags)
usage();
options.flags |= flags[i].value;
break;
{
case 'f':
/* Add a flag. */
for (i = 0; i < nflags; i++)
{
if (strcmp(flags[i].name, optarg) == 0)
break;
}
if (i == nflags)
usage();
options.flags |= flags[i].value;
break;
case 's':
/* Add a server, and specify servers in the option mask. */
hostent = gethostbyname(optarg);
if (!hostent || hostent->h_addrtype != AF_INET)
{
fprintf(stderr, "adig: server %s not found.\n", optarg);
return 1;
}
options.servers = realloc(options.servers, (options.nservers + 1)
* sizeof(struct in_addr));
if (!options.servers)
{
fprintf(stderr, "Out of memory!\n");
return 1;
}
memcpy(&options.servers[options.nservers], hostent->h_addr,
sizeof(struct in_addr));
options.nservers++;
optmask |= ARES_OPT_SERVERS;
break;
case 's':
/* Add a server, and specify servers in the option mask. */
hostent = gethostbyname(optarg);
if (!hostent || hostent->h_addrtype != AF_INET)
{
fprintf(stderr, "adig: server %s not found.\n", optarg);
return 1;
}
options.servers = realloc(options.servers, (options.nservers + 1)
* sizeof(struct in_addr));
if (!options.servers)
{
fprintf(stderr, "Out of memory!\n");
return 1;
}
memcpy(&options.servers[options.nservers], hostent->h_addr,
sizeof(struct in_addr));
options.nservers++;
optmask |= ARES_OPT_SERVERS;
break;
case 'c':
/* Set the query class. */
for (i = 0; i < nclasses; i++)
{
if (strcasecmp(classes[i].name, optarg) == 0)
break;
}
if (i == nclasses)
usage();
dnsclass = classes[i].value;
break;
case 'c':
/* Set the query class. */
for (i = 0; i < nclasses; i++)
{
if (strcasecmp(classes[i].name, optarg) == 0)
break;
}
if (i == nclasses)
usage();
dnsclass = classes[i].value;
break;
case 't':
/* Set the query type. */
for (i = 0; i < ntypes; i++)
{
if (strcasecmp(types[i].name, optarg) == 0)
break;
}
if (i == ntypes)
usage();
type = types[i].value;
break;
case 't':
/* Set the query type. */
for (i = 0; i < ntypes; i++)
{
if (strcasecmp(types[i].name, optarg) == 0)
break;
}
if (i == ntypes)
usage();
type = types[i].value;
break;
case 'T':
/* Set the TCP port number. */
if (!isdigit((unsigned char)*optarg))
usage();
options.tcp_port = strtol(optarg, NULL, 0);
optmask |= ARES_OPT_TCP_PORT;
break;
case 'T':
/* Set the TCP port number. */
if (!isdigit((unsigned char)*optarg))
usage();
options.tcp_port = strtol(optarg, NULL, 0);
optmask |= ARES_OPT_TCP_PORT;
break;
case 'U':
/* Set the UDP port number. */
if (!isdigit((unsigned char)*optarg))
usage();
options.udp_port = strtol(optarg, NULL, 0);
optmask |= ARES_OPT_UDP_PORT;
break;
}
case 'U':
/* Set the UDP port number. */
if (!isdigit((unsigned char)*optarg))
usage();
options.udp_port = strtol(optarg, NULL, 0);
optmask |= ARES_OPT_UDP_PORT;
break;
}
}
argc -= optind;
argv += optind;
@@ -241,8 +239,7 @@ int main(int argc, char **argv)
if (status != ARES_SUCCESS)
{
fprintf(stderr, "ares_init_options: %s\n",
ares_strerror(status, &errmem));
ares_free_errmem(errmem);
ares_strerror(status));
return 1;
}
@@ -256,7 +253,7 @@ int main(int argc, char **argv)
else
{
for (; *argv; argv++)
ares_query(channel, *argv, dnsclass, type, callback, *argv);
ares_query(channel, *argv, dnsclass, type, callback, *argv);
}
/* Wait for all queries to complete. */
@@ -266,14 +263,14 @@ int main(int argc, char **argv)
FD_ZERO(&write_fds);
nfds = ares_fds(channel, &read_fds, &write_fds);
if (nfds == 0)
break;
break;
tvp = ares_timeout(channel, NULL, &tv);
count = select(nfds, &read_fds, &write_fds, NULL, tvp);
if (count < 0 && errno != EINVAL)
{
perror("select");
return 1;
}
{
perror("select");
return 1;
}
ares_process(channel, &read_fds, &write_fds);
}
@@ -283,9 +280,9 @@ int main(int argc, char **argv)
static void callback(void *arg, int status, unsigned char *abuf, int alen)
{
char *name = (char *) arg, *errmem;
int id, qr, opcode, aa, tc, rd, ra, rcode, i;
unsigned int qdcount, ancount, nscount, arcount;
char *name = (char *) arg;
int id, qr, opcode, aa, tc, rd, ra, rcode;
unsigned int qdcount, ancount, nscount, arcount, i;
const unsigned char *aptr;
/* Display the query name if given. */
@@ -297,10 +294,9 @@ static void callback(void *arg, int status, unsigned char *abuf, int alen)
*/
if (status != ARES_SUCCESS)
{
printf("%s\n", ares_strerror(status, &errmem));
ares_free_errmem(errmem);
printf("%s\n", ares_strerror(status));
if (!abuf)
return;
return;
}
/* Won't happen, but check anyway, for safety. */
@@ -324,11 +320,11 @@ static void callback(void *arg, int status, unsigned char *abuf, int alen)
/* Display the answer header. */
printf("id: %d\n", id);
printf("flags: %s%s%s%s%s\n",
qr ? "qr " : "",
aa ? "aa " : "",
tc ? "tc " : "",
rd ? "rd " : "",
ra ? "ra " : "");
qr ? "qr " : "",
aa ? "aa " : "",
tc ? "tc " : "",
rd ? "rd " : "",
ra ? "ra " : "");
printf("opcode: %s\n", opcodes[opcode]);
printf("rcode: %s\n", rcodes[rcode]);
@@ -339,7 +335,7 @@ static void callback(void *arg, int status, unsigned char *abuf, int alen)
{
aptr = display_question(aptr, abuf, alen);
if (aptr == NULL)
return;
return;
}
/* Display the answers. */
@@ -348,7 +344,7 @@ static void callback(void *arg, int status, unsigned char *abuf, int alen)
{
aptr = display_rr(aptr, abuf, alen);
if (aptr == NULL)
return;
return;
}
/* Display the NS records. */
@@ -357,7 +353,7 @@ static void callback(void *arg, int status, unsigned char *abuf, int alen)
{
aptr = display_rr(aptr, abuf, alen);
if (aptr == NULL)
return;
return;
}
/* Display the additional records. */
@@ -366,16 +362,17 @@ static void callback(void *arg, int status, unsigned char *abuf, int alen)
{
aptr = display_rr(aptr, abuf, alen);
if (aptr == NULL)
return;
return;
}
}
static const unsigned char *display_question(const unsigned char *aptr,
const unsigned char *abuf,
int alen)
const unsigned char *abuf,
int alen)
{
char *name;
int type, dnsclass, status, len;
int type, dnsclass, status;
long len;
/* Parse the question name. */
status = ares_expand_name(aptr, abuf, alen, &name, &len);
@@ -409,11 +406,12 @@ static const unsigned char *display_question(const unsigned char *aptr,
}
static const unsigned char *display_rr(const unsigned char *aptr,
const unsigned char *abuf, int alen)
const unsigned char *abuf, int alen)
{
const unsigned char *p;
char *name;
int type, dnsclass, ttl, dlen, status, len;
int type, dnsclass, ttl, dlen, status;
long len;
struct in_addr addr;
/* Parse the RR name. */
@@ -465,7 +463,7 @@ static const unsigned char *display_rr(const unsigned char *aptr,
/* For these types, the RR data is just a domain name. */
status = ares_expand_name(aptr, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
return NULL;
printf("\t%s.", name);
free(name);
break;
@@ -475,12 +473,12 @@ static const unsigned char *display_rr(const unsigned char *aptr,
p = aptr;
len = *p;
if (p + len + 1 > aptr + dlen)
return NULL;
return NULL;
printf("\t%.*s", len, p + 1);
p += len + 1;
len = *p;
if (p + len + 1 > aptr + dlen)
return NULL;
return NULL;
printf("\t%.*s", len, p + 1);
break;
@@ -489,13 +487,13 @@ static const unsigned char *display_rr(const unsigned char *aptr,
p = aptr;
status = ares_expand_name(p, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
return NULL;
printf("\t%s.", name);
free(name);
p += len;
status = ares_expand_name(p, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
return NULL;
printf("\t%s.", name);
free(name);
break;
@@ -505,11 +503,11 @@ static const unsigned char *display_rr(const unsigned char *aptr,
* then a domain name.
*/
if (dlen < 2)
return NULL;
return NULL;
printf("\t%d", (aptr[0] << 8) | aptr[1]);
status = ares_expand_name(aptr + 2, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
return NULL;
printf("\t%s.", name);
free(name);
break;
@@ -521,24 +519,24 @@ static const unsigned char *display_rr(const unsigned char *aptr,
p = aptr;
status = ares_expand_name(p, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
return NULL;
printf("\t%s.\n", name);
free(name);
p += len;
status = ares_expand_name(p, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
return NULL;
printf("\t\t\t\t\t\t%s.\n", name);
free(name);
p += len;
if (p + 20 > aptr + dlen)
return NULL;
return NULL;
printf("\t\t\t\t\t\t( %d %d %d %d %d )",
(p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3],
(p[4] << 24) | (p[5] << 16) | (p[6] << 8) | p[7],
(p[8] << 24) | (p[9] << 16) | (p[10] << 8) | p[11],
(p[12] << 24) | (p[13] << 16) | (p[14] << 8) | p[15],
(p[16] << 24) | (p[17] << 16) | (p[18] << 8) | p[19]);
(p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3],
(p[4] << 24) | (p[5] << 16) | (p[6] << 8) | p[7],
(p[8] << 24) | (p[9] << 16) | (p[10] << 8) | p[11],
(p[12] << 24) | (p[13] << 16) | (p[14] << 8) | p[15],
(p[16] << 24) | (p[17] << 16) | (p[18] << 8) | p[19]);
break;
case T_TXT:
@@ -546,19 +544,19 @@ static const unsigned char *display_rr(const unsigned char *aptr,
* strings. */
p = aptr;
while (p < aptr + dlen)
{
len = *p;
if (p + len + 1 > aptr + dlen)
return NULL;
printf("\t%.*s", len, p + 1);
p += len + 1;
}
{
len = *p;
if (p + len + 1 > aptr + dlen)
return NULL;
printf("\t%.*s", len, p + 1);
p += len + 1;
}
break;
case T_A:
/* The RR data is a four-byte Internet address. */
if (dlen != 4)
return NULL;
return NULL;
memcpy(&addr, aptr, sizeof(struct in_addr));
printf("\t%s", inet_ntoa(addr));
break;
@@ -571,18 +569,18 @@ static const unsigned char *display_rr(const unsigned char *aptr,
/* The RR data is three two-byte numbers representing the
* priority, weight, and port, followed by a domain name.
*/
printf("\t%d", DNS__16BIT(aptr));
printf(" %d", DNS__16BIT(aptr + 2));
printf(" %d", DNS__16BIT(aptr + 4));
status = ares_expand_name(aptr + 6, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
printf("\t%s.", name);
free(name);
break;
default:
printf("\t[Unknown RR; cannot parse]");
}
@@ -598,7 +596,7 @@ static const char *type_name(int type)
for (i = 0; i < ntypes; i++)
{
if (types[i].value == type)
return types[i].name;
return types[i].name;
}
return "(unknown)";
}
@@ -610,7 +608,7 @@ static const char *class_name(int dnsclass)
for (i = 0; i < nclasses; i++)
{
if (classes[i].value == dnsclass)
return classes[i].name;
return classes[i].name;
}
return "(unknown)";
}
@@ -618,6 +616,6 @@ static const char *class_name(int dnsclass)
static void usage(void)
{
fprintf(stderr, "usage: adig [-f flag] [-s server] [-c class] "
"[-t type] [-p port] name ...\n");
"[-t type] [-p port] name ...\n");
exit(1);
}

View File

@@ -13,8 +13,7 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
@@ -34,7 +33,7 @@ static const char rcsid[] = "$Id$";
#include "ares_dns.h"
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#define INADDR_NONE 0xffffffff
#endif
static void callback(void *arg, int status, struct hostent *host);
@@ -46,23 +45,21 @@ int main(int argc, char **argv)
int status, nfds;
fd_set read_fds, write_fds;
struct timeval *tvp, tv;
char *errmem;
struct in_addr addr;
#ifdef WIN32
WORD wVersionRequested = MAKEWORD(1,1);
WSADATA wsaData;
WSAStartup(wVersionRequested, &wsaData);
#endif
#endif
if (argc == 0)
if (argc <= 1)
usage();
status = ares_init(&channel);
if (status != ARES_SUCCESS)
{
fprintf(stderr, "ares_init: %s\n", ares_strerror(status, &errmem));
ares_free_errmem(errmem);
fprintf(stderr, "ares_init: %s\n", ares_strerror(status));
return 1;
}
@@ -71,12 +68,12 @@ int main(int argc, char **argv)
{
addr.s_addr = inet_addr(*argv);
if (addr.s_addr == INADDR_NONE)
ares_gethostbyname(channel, *argv, AF_INET, callback, *argv);
ares_gethostbyname(channel, *argv, AF_INET, callback, *argv);
else
{
ares_gethostbyaddr(channel, &addr, sizeof(addr), AF_INET, callback,
*argv);
}
{
ares_gethostbyaddr(channel, &addr, sizeof(addr), AF_INET, callback,
*argv);
}
}
/* Wait for all queries to complete. */
@@ -86,7 +83,7 @@ int main(int argc, char **argv)
FD_ZERO(&write_fds);
nfds = ares_fds(channel, &read_fds, &write_fds);
if (nfds == 0)
break;
break;
tvp = ares_timeout(channel, NULL, &tv);
select(nfds, &read_fds, &write_fds, NULL, tvp);
ares_process(channel, &read_fds, &write_fds);
@@ -99,12 +96,11 @@ int main(int argc, char **argv)
static void callback(void *arg, int status, struct hostent *host)
{
struct in_addr addr;
char *mem, **p;
char **p;
if (status != ARES_SUCCESS)
{
fprintf(stderr, "%s: %s\n", (char *) arg, ares_strerror(status, &mem));
ares_free_errmem(mem);
fprintf(stderr, "%s: %s\n", (char *) arg, ares_strerror(status));
return;
}

View File

@@ -20,55 +20,70 @@
#include <sys/types.h>
#ifdef WIN32
#include <winsock.h>
#include <windows.h>
#else
#include <netinet/in.h>
#if defined(_AIX) || defined(NETWARE)
/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
libc5-based Linux systems. Only include it on system that are known to
require it! */
#include <sys/select.h>
#endif
#define ARES_SUCCESS 0
#if defined(WATT32)
#include <netinet/in.h>
#include <tcp.h>
#elif defined(WIN32)
#include <winsock.h>
#include <windows.h>
#else
#include <netinet/in.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define ARES_SUCCESS 0
/* Server error codes (ARES_ENODATA indicates no relevant answer) */
#define ARES_ENODATA 1
#define ARES_EFORMERR 2
#define ARES_ESERVFAIL 3
#define ARES_ENOTFOUND 4
#define ARES_ENOTIMP 5
#define ARES_EREFUSED 6
#define ARES_ENODATA 1
#define ARES_EFORMERR 2
#define ARES_ESERVFAIL 3
#define ARES_ENOTFOUND 4
#define ARES_ENOTIMP 5
#define ARES_EREFUSED 6
/* Locally generated error codes */
#define ARES_EBADQUERY 7
#define ARES_EBADNAME 8
#define ARES_EBADFAMILY 9
#define ARES_EBADRESP 10
#define ARES_ECONNREFUSED 11
#define ARES_ETIMEOUT 12
#define ARES_EOF 13
#define ARES_EFILE 14
#define ARES_ENOMEM 15
#define ARES_EDESTRUCTION 16
#define ARES_EBADQUERY 7
#define ARES_EBADNAME 8
#define ARES_EBADFAMILY 9
#define ARES_EBADRESP 10
#define ARES_ECONNREFUSED 11
#define ARES_ETIMEOUT 12
#define ARES_EOF 13
#define ARES_EFILE 14
#define ARES_ENOMEM 15
#define ARES_EDESTRUCTION 16
#define ARES_EBADSTR 17
/* Flag values */
#define ARES_FLAG_USEVC (1 << 0)
#define ARES_FLAG_PRIMARY (1 << 1)
#define ARES_FLAG_IGNTC (1 << 2)
#define ARES_FLAG_NORECURSE (1 << 3)
#define ARES_FLAG_STAYOPEN (1 << 4)
#define ARES_FLAG_NOSEARCH (1 << 5)
#define ARES_FLAG_NOALIASES (1 << 6)
#define ARES_FLAG_NOCHECKRESP (1 << 7)
#define ARES_FLAG_USEVC (1 << 0)
#define ARES_FLAG_PRIMARY (1 << 1)
#define ARES_FLAG_IGNTC (1 << 2)
#define ARES_FLAG_NORECURSE (1 << 3)
#define ARES_FLAG_STAYOPEN (1 << 4)
#define ARES_FLAG_NOSEARCH (1 << 5)
#define ARES_FLAG_NOALIASES (1 << 6)
#define ARES_FLAG_NOCHECKRESP (1 << 7)
/* Option mask values */
#define ARES_OPT_FLAGS (1 << 0)
#define ARES_OPT_TIMEOUT (1 << 1)
#define ARES_OPT_TRIES (1 << 2)
#define ARES_OPT_NDOTS (1 << 3)
#define ARES_OPT_UDP_PORT (1 << 4)
#define ARES_OPT_TCP_PORT (1 << 5)
#define ARES_OPT_SERVERS (1 << 6)
#define ARES_OPT_DOMAINS (1 << 7)
#define ARES_OPT_LOOKUPS (1 << 8)
#define ARES_OPT_FLAGS (1 << 0)
#define ARES_OPT_TIMEOUT (1 << 1)
#define ARES_OPT_TRIES (1 << 2)
#define ARES_OPT_NDOTS (1 << 3)
#define ARES_OPT_UDP_PORT (1 << 4)
#define ARES_OPT_TCP_PORT (1 << 5)
#define ARES_OPT_SERVERS (1 << 6)
#define ARES_OPT_DOMAINS (1 << 7)
#define ARES_OPT_LOOKUPS (1 << 8)
struct ares_options {
int flags;
@@ -89,42 +104,48 @@ struct timeval;
struct ares_channeldata;
typedef struct ares_channeldata *ares_channel;
typedef void (*ares_callback)(void *arg, int status, unsigned char *abuf,
int alen);
int alen);
typedef void (*ares_host_callback)(void *arg, int status,
struct hostent *hostent);
struct hostent *hostent);
int ares_init(ares_channel *channelptr);
int ares_init_options(ares_channel *channelptr, struct ares_options *options,
int optmask);
int optmask);
void ares_destroy(ares_channel channel);
void ares_cancel(ares_channel channel);
void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
ares_callback callback, void *arg);
ares_callback callback, void *arg);
void ares_query(ares_channel channel, const char *name, int dnsclass,
int type, ares_callback callback, void *arg);
int type, ares_callback callback, void *arg);
void ares_search(ares_channel channel, const char *name, int dnsclass,
int type, ares_callback callback, void *arg);
int type, ares_callback callback, void *arg);
void ares_gethostbyname(ares_channel channel, const char *name, int family,
ares_host_callback callback, void *arg);
ares_host_callback callback, void *arg);
void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
int family, ares_host_callback callback, void *arg);
int family, ares_host_callback callback, void *arg);
int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds);
struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv,
struct timeval *tv);
struct timeval *tv);
void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds);
int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
int rd, unsigned char **buf, int *buflen);
int rd, unsigned char **buf, int *buflen);
int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
int alen, char **s, int *enclen);
int alen, char **s, long *enclen);
int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf,
int alen, unsigned char **s, long *enclen);
int ares_parse_a_reply(const unsigned char *abuf, int alen,
struct hostent **host);
struct hostent **host);
int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
int addrlen, int family, struct hostent **host);
void ares_free_string(char *str);
int addrlen, int family, struct hostent **host);
void ares_free_string(void *str);
void ares_free_hostent(struct hostent *host);
const char *ares_strerror(int code, char **memptr);
const char *ares_strerror(int code);
void ares_free_errmem(char *mem);
#ifdef __cplusplus
}
#endif
#endif /* ARES__H */

View File

@@ -13,13 +13,13 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <stdlib.h>
#ifdef WIN32
#else
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include "ares.h"
#include "ares_private.h"
@@ -44,14 +44,14 @@ void ares__close_sockets(struct server_state *server)
server->tcp_lenbuf_pos = 0;
/* Close the TCP and UDP sockets. */
if (server->tcp_socket != -1)
if (server->tcp_socket != ARES_SOCKET_BAD)
{
closesocket(server->tcp_socket);
server->tcp_socket = -1;
server->tcp_socket = ARES_SOCKET_BAD;
}
if (server->udp_socket != -1)
if (server->udp_socket != ARES_SOCKET_BAD)
{
closesocket(server->udp_socket);
server->udp_socket = -1;
server->udp_socket = ARES_SOCKET_BAD;
}
}

View File

@@ -13,13 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#else
#if !defined(WIN32) || defined(WATT32)
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@ -45,96 +42,96 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
{
/* Skip comment lines; terminate line at comment character. */
if (*line == '#' || !*line)
continue;
continue;
p = strchr(line, '#');
if (p)
*p = 0;
*p = 0;
/* Get the address part. */
p = line;
while (*p && !isspace((unsigned char)*p))
p++;
p++;
if (!*p)
continue;
continue;
*p = 0;
addr.s_addr = inet_addr(line);
if (addr.s_addr == INADDR_NONE)
continue;
continue;
/* Get the canonical hostname. */
p++;
while (isspace((unsigned char)*p))
p++;
p++;
if (!*p)
continue;
continue;
q = p;
while (*q && !isspace((unsigned char)*q))
q++;
q++;
end_at_hostname = (*q == 0);
*q = 0;
canonical = p;
naliases = 0;
if (!end_at_hostname)
{
/* Count the aliases. */
p = q + 1;
while (isspace((unsigned char)*p))
p++;
while (*p)
{
while (*p && !isspace((unsigned char)*p))
p++;
while (isspace((unsigned char)*p))
p++;
naliases++;
}
}
{
/* Count the aliases. */
p = q + 1;
while (isspace((unsigned char)*p))
p++;
while (*p)
{
while (*p && !isspace((unsigned char)*p))
p++;
while (isspace((unsigned char)*p))
p++;
naliases++;
}
}
/* Allocate memory for the host structure. */
hostent = malloc(sizeof(struct hostent));
if (!hostent)
break;
break;
hostent->h_aliases = NULL;
hostent->h_addr_list = NULL;
hostent->h_name = strdup(canonical);
if (!hostent->h_name)
break;
break;
hostent->h_addr_list = malloc(2 * sizeof(char *));
if (!hostent->h_addr_list)
break;
break;
hostent->h_addr_list[0] = malloc(sizeof(struct in_addr));
if (!hostent->h_addr_list[0])
break;
break;
hostent->h_aliases = malloc((naliases + 1) * sizeof(char *));
if (!hostent->h_aliases)
break;
break;
/* Copy in aliases. */
naliases = 0;
if (!end_at_hostname)
{
p = canonical + strlen(canonical) + 1;
while (isspace((unsigned char)*p))
p++;
while (*p)
{
q = p;
while (*q && !isspace((unsigned char)*q))
q++;
hostent->h_aliases[naliases] = malloc(q - p + 1);
if (hostent->h_aliases[naliases] == NULL)
break;
memcpy(hostent->h_aliases[naliases], p, q - p);
hostent->h_aliases[naliases][q - p] = 0;
p = q;
while (isspace((unsigned char)*p))
p++;
naliases++;
}
if (*p)
break;
}
{
p = canonical + strlen(canonical) + 1;
while (isspace((unsigned char)*p))
p++;
while (*p)
{
q = p;
while (*q && !isspace((unsigned char)*q))
q++;
hostent->h_aliases[naliases] = malloc(q - p + 1);
if (hostent->h_aliases[naliases] == NULL)
break;
memcpy(hostent->h_aliases[naliases], p, q - p);
hostent->h_aliases[naliases][q - p] = 0;
p = q;
while (isspace((unsigned char)*p))
p++;
naliases++;
}
if (*p)
break;
}
hostent->h_aliases[naliases] = NULL;
hostent->h_addrtype = AF_INET;
@@ -145,25 +142,29 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
free(line);
return ARES_SUCCESS;
}
free(line);
if(line)
free(line);
if (status == ARES_SUCCESS)
{
/* Memory allocation failure; clean up. */
if (hostent)
{
free((char *) hostent->h_name);
if (hostent->h_aliases)
{
for (alias = hostent->h_aliases; *alias; alias++)
free(*alias);
}
free(hostent->h_aliases);
if (hostent->h_addr_list)
free(hostent->h_addr_list[0]);
free(hostent->h_addr_list);
}
free(hostent);
{
if(hostent->h_name)
free((char *) hostent->h_name);
if (hostent->h_aliases)
{
for (alias = hostent->h_aliases; *alias; alias++)
free(*alias);
}
if(hostent->h_aliases)
free(hostent->h_aliases);
if (hostent->h_addr_list && hostent->h_addr_list[0])
free(hostent->h_addr_list[0]);
if(hostent->h_addr_list)
free(hostent->h_addr_list);
free(hostent);
}
return ARES_ENOMEM;
}

View File

@@ -13,8 +13,7 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -32,32 +31,33 @@ static const char rcsid[] = "$Id$";
int ares__read_line(FILE *fp, char **buf, int *bufsize)
{
char *newbuf;
int offset = 0, len;
size_t offset = 0;
size_t len;
if (*buf == NULL)
{
*buf = malloc(128);
if (!*buf)
return ARES_ENOMEM;
return ARES_ENOMEM;
*bufsize = 128;
}
while (1)
{
if (!fgets(*buf + offset, *bufsize - offset, fp))
return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;
if (!fgets(*buf + offset, *bufsize - (int)offset, fp))
return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;
len = offset + strlen(*buf + offset);
if ((*buf)[len - 1] == '\n')
{
(*buf)[len - 1] = 0;
return ARES_SUCCESS;
}
{
(*buf)[len - 1] = 0;
return ARES_SUCCESS;
}
offset = len;
/* Allocate more space. */
newbuf = realloc(*buf, *bufsize * 2);
if (!newbuf)
return ARES_ENOMEM;
return ARES_ENOMEM;
*buf = newbuf;
*bufsize *= 2;
}

View File

@@ -14,29 +14,26 @@
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_FREE_ERRMEM 3 "23 July 1998"
.TH ARES_CANCEL 3 "31 March 2004"
.SH NAME
ares_free_errmem \- Free memory allocated by ares_strerror
ares_cancel \- Cancel a resolve
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B void ares_free_errmem(char *\fIerrmem\fP)
.B int ares_cancel(ares_channel \fIchannel\fP)
.fi
.SH DESCRIPTION
The
.B ares_free_errmem
function frees any memory which might have been allocated by the
.BR ares_strerror (3)
function. The parameter
.I errmem
should be set to the variable pointed to by the
.I memptr
argument previously passed to
.IR ares_strerror .
The \fBares_cancel\fP function cancels all lookups/requests made on the the
name service channel identified by \fIchannel\fP. \fBares_cancel\fP invokes
the callbacks for each pending query on the channel, passing a status of
.BR ARES_ETIMEOUT .
These calls give the callbacks a chance to clean up any state which
might have been stored in their arguments.
.SH SEE ALSO
.BR ares_strerror (3)
.BR ares_init (3)
.BR ares_destroy (3)
.SH NOTES
This function is not compatible with ares.
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br
Copyright 1998 by the Massachusetts Institute of Technology.
Dirk Manske

43
ares/ares_cancel.c Normal file
View File

@@ -0,0 +1,43 @@
/* Copyright (C) 2004 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. M.I.T. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#include "setup.h"
#include <stdlib.h>
#include "ares.h"
#include "ares_private.h"
/*
* ares_cancel() cancels a ongoing request/resolve that might be going on on
* the given channel. It does NOT kill the channel, use ares_destroy() for
* that.
*/
void ares_cancel(ares_channel channel)
{
struct query *query, *next;
int i;
for (query = channel->queries; query; query = next)
{
next = query->next;
query->callback(query->arg, ARES_ETIMEOUT, NULL, 0);
free(query->tcpbuf);
free(query->skip_server);
free(query);
}
channel->queries = NULL;
if (!(channel->flags & ARES_FLAG_STAYOPEN))
{
for (i = 0; i < channel->nservers; i++)
ares__close_sockets(&channel->servers[i]);
}
}

View File

@@ -14,14 +14,14 @@
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_DESTROY 3 "23 July 1998"
.TH ARES_DESTROY 3 "7 December 2004"
.SH NAME
ares_destroy \- Destroy a resolver channel
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B int ares_destroy(ares_channel \fIchannel\fP)
.B void ares_destroy(ares_channel \fIchannel\fP)
.fi
.SH DESCRIPTION
The
@@ -36,7 +36,8 @@ status of
These calls give the callbacks a chance to clean up any state which
might have been stored in their arguments.
.SH SEE ALSO
.BR ares_init (3)
.BR ares_init (3),
.BR ares_cancel (3)
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br

View File

@@ -13,8 +13,7 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <stdlib.h>
#include "ares.h"
#include "ares_private.h"
@@ -30,7 +29,8 @@ void ares_destroy(ares_channel channel)
for (i = 0; i < channel->ndomains; i++)
free(channel->domains[i]);
free(channel->domains);
free(channel->sortlist);
if(channel->sortlist)
free(channel->sortlist);
free(channel->lookups);
while (channel->queries)
{

View File

@@ -18,64 +18,64 @@
#ifndef ARES__DNS_H
#define ARES__DNS_H
#define DNS__16BIT(p) (((p)[0] << 8) | (p)[1])
#define DNS__32BIT(p) (((p)[0] << 24) | ((p)[1] << 16) | \
((p)[2] << 8) | (p)[3])
#define DNS__SET16BIT(p, v) (((p)[0] = ((v) >> 8) & 0xff), \
((p)[1] = (v) & 0xff))
#define DNS__SET32BIT(p, v) (((p)[0] = ((v) >> 24) & 0xff), \
((p)[1] = ((v) >> 16) & 0xff), \
((p)[2] = ((v) >> 8) & 0xff), \
((p)[3] = (v) & 0xff))
#define DNS__16BIT(p) (((p)[0] << 8) | (p)[1])
#define DNS__32BIT(p) (((p)[0] << 24) | ((p)[1] << 16) | \
((p)[2] << 8) | (p)[3])
#define DNS__SET16BIT(p, v) (((p)[0] = ((v) >> 8) & 0xff), \
((p)[1] = (v) & 0xff))
#define DNS__SET32BIT(p, v) (((p)[0] = ((v) >> 24) & 0xff), \
((p)[1] = ((v) >> 16) & 0xff), \
((p)[2] = ((v) >> 8) & 0xff), \
((p)[3] = (v) & 0xff))
/* Macros for parsing a DNS header */
#define DNS_HEADER_QID(h) DNS__16BIT(h)
#define DNS_HEADER_QR(h) (((h)[2] >> 7) & 0x1)
#define DNS_HEADER_OPCODE(h) (((h)[2] >> 3) & 0xf)
#define DNS_HEADER_AA(h) (((h)[2] >> 2) & 0x1)
#define DNS_HEADER_TC(h) (((h)[2] >> 1) & 0x1)
#define DNS_HEADER_RD(h) ((h)[2] & 0x1)
#define DNS_HEADER_RA(h) (((h)[3] >> 7) & 0x1)
#define DNS_HEADER_Z(h) (((h)[3] >> 4) & 0x7)
#define DNS_HEADER_RCODE(h) ((h)[3] & 0xf)
#define DNS_HEADER_QDCOUNT(h) DNS__16BIT((h) + 4)
#define DNS_HEADER_ANCOUNT(h) DNS__16BIT((h) + 6)
#define DNS_HEADER_NSCOUNT(h) DNS__16BIT((h) + 8)
#define DNS_HEADER_ARCOUNT(h) DNS__16BIT((h) + 10)
#define DNS_HEADER_QID(h) DNS__16BIT(h)
#define DNS_HEADER_QR(h) (((h)[2] >> 7) & 0x1)
#define DNS_HEADER_OPCODE(h) (((h)[2] >> 3) & 0xf)
#define DNS_HEADER_AA(h) (((h)[2] >> 2) & 0x1)
#define DNS_HEADER_TC(h) (((h)[2] >> 1) & 0x1)
#define DNS_HEADER_RD(h) ((h)[2] & 0x1)
#define DNS_HEADER_RA(h) (((h)[3] >> 7) & 0x1)
#define DNS_HEADER_Z(h) (((h)[3] >> 4) & 0x7)
#define DNS_HEADER_RCODE(h) ((h)[3] & 0xf)
#define DNS_HEADER_QDCOUNT(h) DNS__16BIT((h) + 4)
#define DNS_HEADER_ANCOUNT(h) DNS__16BIT((h) + 6)
#define DNS_HEADER_NSCOUNT(h) DNS__16BIT((h) + 8)
#define DNS_HEADER_ARCOUNT(h) DNS__16BIT((h) + 10)
/* Macros for constructing a DNS header */
#define DNS_HEADER_SET_QID(h, v) DNS__SET16BIT(h, v)
#define DNS_HEADER_SET_QR(h, v) ((h)[2] |= (((v) & 0x1) << 7))
#define DNS_HEADER_SET_OPCODE(h, v) ((h)[2] |= (((v) & 0xf) << 3))
#define DNS_HEADER_SET_AA(h, v) ((h)[2] |= (((v) & 0x1) << 2))
#define DNS_HEADER_SET_TC(h, v) ((h)[2] |= (((v) & 0x1) << 1))
#define DNS_HEADER_SET_RD(h, v) ((h)[2] |= (((v) & 0x1)))
#define DNS_HEADER_SET_RA(h, v) ((h)[3] |= (((v) & 0x1) << 7))
#define DNS_HEADER_SET_Z(h, v) ((h)[3] |= (((v) & 0x7) << 4))
#define DNS_HEADER_SET_RCODE(h, v) ((h)[3] |= (((v) & 0xf)))
#define DNS_HEADER_SET_QDCOUNT(h, v) DNS__SET16BIT((h) + 4, v)
#define DNS_HEADER_SET_ANCOUNT(h, v) DNS__SET16BIT((h) + 6, v)
#define DNS_HEADER_SET_NSCOUNT(h, v) DNS__SET16BIT((h) + 8, v)
#define DNS_HEADER_SET_ARCOUNT(h, v) DNS__SET16BIT((h) + 10, v)
#define DNS_HEADER_SET_QID(h, v) DNS__SET16BIT(h, v)
#define DNS_HEADER_SET_QR(h, v) ((h)[2] |= (((v) & 0x1) << 7))
#define DNS_HEADER_SET_OPCODE(h, v) ((h)[2] |= (((v) & 0xf) << 3))
#define DNS_HEADER_SET_AA(h, v) ((h)[2] |= (((v) & 0x1) << 2))
#define DNS_HEADER_SET_TC(h, v) ((h)[2] |= (((v) & 0x1) << 1))
#define DNS_HEADER_SET_RD(h, v) ((h)[2] |= (((v) & 0x1)))
#define DNS_HEADER_SET_RA(h, v) ((h)[3] |= (((v) & 0x1) << 7))
#define DNS_HEADER_SET_Z(h, v) ((h)[3] |= (((v) & 0x7) << 4))
#define DNS_HEADER_SET_RCODE(h, v) ((h)[3] |= (((v) & 0xf)))
#define DNS_HEADER_SET_QDCOUNT(h, v) DNS__SET16BIT((h) + 4, v)
#define DNS_HEADER_SET_ANCOUNT(h, v) DNS__SET16BIT((h) + 6, v)
#define DNS_HEADER_SET_NSCOUNT(h, v) DNS__SET16BIT((h) + 8, v)
#define DNS_HEADER_SET_ARCOUNT(h, v) DNS__SET16BIT((h) + 10, v)
/* Macros for parsing the fixed part of a DNS question */
#define DNS_QUESTION_TYPE(q) DNS__16BIT(q)
#define DNS_QUESTION_CLASS(q) DNS__16BIT((q) + 2)
#define DNS_QUESTION_TYPE(q) DNS__16BIT(q)
#define DNS_QUESTION_CLASS(q) DNS__16BIT((q) + 2)
/* Macros for constructing the fixed part of a DNS question */
#define DNS_QUESTION_SET_TYPE(q, v) DNS__SET16BIT(q, v)
#define DNS_QUESTION_SET_CLASS(q, v) DNS__SET16BIT((q) + 2, v)
#define DNS_QUESTION_SET_TYPE(q, v) DNS__SET16BIT(q, v)
#define DNS_QUESTION_SET_CLASS(q, v) DNS__SET16BIT((q) + 2, v)
/* Macros for parsing the fixed part of a DNS resource record */
#define DNS_RR_TYPE(r) DNS__16BIT(r)
#define DNS_RR_CLASS(r) DNS__16BIT((r) + 2)
#define DNS_RR_TTL(r) DNS__32BIT((r) + 4)
#define DNS_RR_LEN(r) DNS__16BIT((r) + 8)
#define DNS_RR_TYPE(r) DNS__16BIT(r)
#define DNS_RR_CLASS(r) DNS__16BIT((r) + 2)
#define DNS_RR_TTL(r) DNS__32BIT((r) + 4)
#define DNS_RR_LEN(r) DNS__16BIT((r) + 8)
/* Macros for constructing the fixed part of a DNS resource record */
#define DNS_RR_SET_TYPE(r) DNS__SET16BIT(r, v)
#define DNS_RR_SET_CLASS(r) DNS__SET16BIT((r) + 2, v)
#define DNS_RR_SET_TTL(r) DNS__SET32BIT((r) + 4, v)
#define DNS_RR_SET_LEN(r) DNS__SET16BIT((r) + 8, v)
#define DNS_RR_SET_TYPE(r) DNS__SET16BIT(r, v)
#define DNS_RR_SET_CLASS(r) DNS__SET16BIT((r) + 2, v)
#define DNS_RR_SET_TTL(r) DNS__SET32BIT((r) + 4, v)
#define DNS_RR_SET_LEN(r) DNS__SET16BIT((r) + 8, v)
#endif /* ARES__DNS_H */

View File

@@ -22,8 +22,7 @@ ares_expand_name \- Expand a DNS-encoded domain name
.B #include <ares.h>
.PP
.B int ares_expand_name(const unsigned char *\fIencoded\fP,
.B
const unsigned char *\fIabuf\fP, int \fIalen\fP, char **\fIs\fP,
.B const unsigned char *\fIabuf\fP, int \fIalen\fP, char **\fIs\fP,
.B int *\fIenclen\fP)
.fi
.SH DESCRIPTION

View File

@@ -13,11 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
@@ -26,9 +25,10 @@ static const char rcsid[] = "$Id$";
#include <stdlib.h>
#include "ares.h"
#include "ares_private.h" /* for the memdebug */
static int name_length(const unsigned char *encoded, const unsigned char *abuf,
int alen);
int alen);
/* Expand an RFC1035-encoded domain name given by encoded. The
* containing message is given by abuf and alen. The result given by
@@ -55,7 +55,7 @@ static int name_length(const unsigned char *encoded, const unsigned char *abuf,
*/
int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
int alen, char **s, int *enclen)
int alen, char **s, long *enclen)
{
int len, indir = 0;
char *q;
@@ -75,27 +75,27 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
while (*p)
{
if ((*p & INDIR_MASK) == INDIR_MASK)
{
if (!indir)
{
*enclen = p + 2 - encoded;
indir = 1;
}
p = abuf + ((*p & ~INDIR_MASK) << 8 | *(p + 1));
}
{
if (!indir)
{
*enclen = p + 2 - encoded;
indir = 1;
}
p = abuf + ((*p & ~INDIR_MASK) << 8 | *(p + 1));
}
else
{
len = *p;
p++;
while (len--)
{
if (*p == '.' || *p == '\\')
*q++ = '\\';
*q++ = *p;
p++;
}
*q++ = '.';
}
{
len = *p;
p++;
while (len--)
{
if (*p == '.' || *p == '\\')
*q++ = '\\';
*q++ = *p;
p++;
}
*q++ = '.';
}
}
if (!indir)
*enclen = p + 1 - encoded;
@@ -111,7 +111,7 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
* -1 if the encoding is invalid.
*/
static int name_length(const unsigned char *encoded, const unsigned char *abuf,
int alen)
int alen)
{
int n = 0, offset, indir = 0;
@@ -122,34 +122,34 @@ static int name_length(const unsigned char *encoded, const unsigned char *abuf,
while (*encoded)
{
if ((*encoded & INDIR_MASK) == INDIR_MASK)
{
/* Check the offset and go there. */
if (encoded + 1 >= abuf + alen)
return -1;
offset = (*encoded & ~INDIR_MASK) << 8 | *(encoded + 1);
if (offset >= alen)
return -1;
encoded = abuf + offset;
{
/* Check the offset and go there. */
if (encoded + 1 >= abuf + alen)
return -1;
offset = (*encoded & ~INDIR_MASK) << 8 | *(encoded + 1);
if (offset >= alen)
return -1;
encoded = abuf + offset;
/* If we've seen more indirects than the message length,
* then there's a loop.
*/
if (++indir > alen)
return -1;
}
/* If we've seen more indirects than the message length,
* then there's a loop.
*/
if (++indir > alen)
return -1;
}
else
{
offset = *encoded;
if (encoded + offset + 1 >= abuf + alen)
return -1;
encoded++;
while (offset--)
{
n += (*encoded == '.' || *encoded == '\\') ? 2 : 1;
encoded++;
}
n++;
}
{
offset = *encoded;
if (encoded + offset + 1 >= abuf + alen)
return -1;
encoded++;
while (offset--)
{
n += (*encoded == '.' || *encoded == '\\') ? 2 : 1;
encoded++;
}
n++;
}
}
/* If there were any labels at all, then the number of dots is one

62
ares/ares_expand_string.3 Normal file
View File

@@ -0,0 +1,62 @@
.\" $Id$
.\"
.\" Copyright 1998 by the Massachusetts Institute of Technology.
.\"
.\" Permission to use, copy, modify, and distribute this
.\" software and its documentation for any purpose and without
.\" fee is hereby granted, provided that the above copyright
.\" notice appear in all copies and that both that copyright
.\" notice and this permission notice appear in supporting
.\" documentation, and that the name of M.I.T. not be used in
.\" advertising or publicity pertaining to distribution of the
.\" software without specific, written prior permission.
.\" M.I.T. makes no representations about the suitability of
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_EXPAND_NAME 3 "23 July 1998"
.SH NAME
ares_expand_string \- Expand a length encoded string
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B int ares_expand_string(const unsigned char *\fIencoded\fP,
.B const unsigned char *\fIabuf\fP, int \fIalen\fP, unsigned char **\fIs\fP,
.B int *\fIenclen\fP)
.fi
.SH DESCRIPTION
The
.B ares_expand_string
function converts a length encoded string to a NULL terminated C
string. The argument
.I encoded
gives the beginning of the encoded string, and the arguments
.I abuf
and
.I alen
give the containing message buffer (necessary for the processing of
indirection pointers within the encoded domain name). The result is
placed in a NUL-terminated allocated buffer, a pointer to which is
stored in the variable pointed to by
.IR s .
The length of the encoded string is stored in the variable pointed to by
.I enclen
so that the caller can advance past the encoded string to read
further data in the message.
.SH RETURN VALUES
.B ares_expand_string
can return any of the following values:
.TP 15
.B ARES_SUCCESS
Expansion of the encoded string succeeded.
.TP 15
.B ARES_EBADSTR
The encoded string was malformed and could not be expanded.
.TP 15
.B ARES_ENOMEM
Memory was exhausted.
.SH SEE ALSO
.BR ares_free_string (3)
.SH AUTHOR
Dominick Meglio

66
ares/ares_expand_string.c Normal file
View File

@@ -0,0 +1,66 @@
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
#include <arpa/nameser.h>
#endif
#include <string.h>
#include <stdlib.h>
#include "ares.h"
#include "ares_private.h" /* for the memdebug */
/* Simply decodes a length-encoded character string. The first byte of the
* input is the length of the string to be returned and the bytes thereafter
* are the characters of the string. The returned result will be NULL
* terminated.
*/
int ares_expand_string(const unsigned char *encoded,
const unsigned char *abuf,
int alen,
unsigned char **s,
long *enclen)
{
unsigned char *q;
long len;
if (encoded == abuf+alen)
return ARES_EBADSTR;
len = *encoded;
if (encoded+len+1 > abuf+alen)
return ARES_EBADSTR;
encoded++;
*s = malloc(len+1);
if (*s == NULL)
return ARES_ENOMEM;
q = *s;
strncpy((char *)q, (char *)encoded, len);
q[len] = '\0';
*s = q;
*enclen = len+1;
return ARES_SUCCESS;
}

View File

@@ -13,13 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#else
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
@@ -29,7 +26,8 @@ static const char rcsid[] = "$Id$";
int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
{
struct server_state *server;
int i, nfds;
ares_socket_t nfds;
int i;
/* No queries, no file descriptors. */
if (!channel->queries)
@@ -39,20 +37,20 @@ int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
for (i = 0; i < channel->nservers; i++)
{
server = &channel->servers[i];
if (server->udp_socket != -1)
{
FD_SET(server->udp_socket, read_fds);
if (server->udp_socket >= nfds)
nfds = server->udp_socket + 1;
}
if (server->tcp_socket != -1)
{
FD_SET(server->tcp_socket, read_fds);
if (server->qhead)
FD_SET(server->tcp_socket, write_fds);
if (server->tcp_socket >= nfds)
nfds = server->tcp_socket + 1;
}
if (server->udp_socket != ARES_SOCKET_BAD)
{
FD_SET(server->udp_socket, read_fds);
if (server->udp_socket >= nfds)
nfds = server->udp_socket + 1;
}
if (server->tcp_socket != ARES_SOCKET_BAD)
{
FD_SET(server->tcp_socket, read_fds);
if (server->qhead)
FD_SET(server->tcp_socket, write_fds);
if (server->tcp_socket >= nfds)
nfds = server->tcp_socket + 1;
}
}
return nfds;
return (int)nfds;
}

View File

@@ -1,26 +0,0 @@
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "ares.h"
/* Do nothing, for now. A future implementation may want to deal with
* internationalization, in which case ares_strerror() might allocate
* memory which we would then have to free.
*/
void ares_free_errmem(char *mem)
{
}

View File

@@ -28,21 +28,16 @@ The
.I ares_free_hostent
function frees a
.B struct hostent
allocated by one of the functions
.I ares_parse_a_reply
or
.IR ares_parse_ptr_reply .
allocated by one of the functions \fIares_parse_a_reply(3)\fP or
\fIares_parse_ptr_reply(3)\fP.
.SH NOTES
It is not necessary (and is not correct) to free the host structure passed to
the callback functions for \fIares_gethostbyname(3)\fP or
\fIares_gethostbyaddr(3)\fP. The ares library will automatically free such
host structures when the callback returns.
.SH SEE ALSO
.BR ares_parse_a_reply (3),
.BR ares_parse_ptr_reply (3)
.SH NOTES
It is not necessary (and is not correct) to free the host structure
passed to the callback functions for
.I ares_gethostbyname
or
.IR ares_gethostbyaddr .
The ares library will automatically free such host structures when the
callback returns.
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br

View File

@@ -13,17 +13,15 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <stdlib.h>
#ifdef WIN32
#else
#if !defined(WIN32) || defined(WATT32)
#include <netdb.h>
#endif
#include "ares.h"
#include "ares_private.h" /* for memdebug */
void ares_free_hostent(struct hostent *host)
{

View File

@@ -14,23 +14,22 @@
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_FREE_STRING 3 "4 January 2000"
.TH ARES_FREE_STRING 3 "4 February 2004"
.SH NAME
ares_free_string \- Free strings allocated by ares functions
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B void ares_free_string(char *\fIstr\fP)
.B void ares_free_string(void *\fIstr\fP)
.fi
.SH DESCRIPTION
The
.I ares_free_string
function frees a string allocated by the
.I ares_mkquery
function.
function frees a string allocated by an ares function.
.SH SEE ALSO
.BR ares_mkquery (3)
.BR ares_expand_string (3)
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br

View File

@@ -13,12 +13,11 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <stdlib.h>
#include "ares.h"
void ares_free_string(char *str)
void ares_free_string(void *str)
{
free(str);
}

View File

@@ -40,14 +40,10 @@ and
.I addrlen
give the address as a series of bytes, and
.I family
gives the type of address. When the query is complete or has failed,
the ares library will invoke
.IR callback .
Completion or failure of the query may happen immediately, or may
happen during a later call to
.BR ares_process (3)
or
.BR ares_destroy (3).
gives the type of address. When the query is complete or has failed, the ares
library will invoke \fIcallback\fP. Completion or failure of the query may
happen immediately, or may happen during a later call to
\fIares_process(3)\fP, \fIares_destroy(3)\fP or \fIares_cancel(3)\fP.
.PP
The callback argument
.I arg
@@ -93,7 +89,8 @@ did not complete successfully,
will be
.BR NULL .
.SH SEE ALSO
.BR ares_process (3)
.BR ares_process (3),
.BR ares_gethostbyname (3)
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br

View File

@@ -13,11 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <sys/socket.h>
@@ -29,9 +28,14 @@ static const char rcsid[] = "$Id$";
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ares.h"
#include "ares_private.h"
#ifdef WATT32
#undef WIN32
#endif
struct addr_query {
/* Arguments passed to ares_gethostbyaddr() */
ares_channel channel;
@@ -44,13 +48,13 @@ struct addr_query {
static void next_lookup(struct addr_query *aquery);
static void addr_callback(void *arg, int status, unsigned char *abuf,
int alen);
int alen);
static void end_aquery(struct addr_query *aquery, int status,
struct hostent *host);
struct hostent *host);
static int file_lookup(struct in_addr *addr, struct hostent **host);
void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
int family, ares_host_callback callback, void *arg)
int family, ares_host_callback callback, void *arg)
{
struct addr_query *aquery;
@@ -86,27 +90,27 @@ static void next_lookup(struct addr_query *aquery)
for (p = aquery->remaining_lookups; *p; p++)
{
switch (*p)
{
case 'b':
addr = ntohl(aquery->addr.s_addr);
a1 = addr >> 24;
a2 = (addr >> 16) & 0xff;
a3 = (addr >> 8) & 0xff;
a4 = addr & 0xff;
sprintf(name, "%d.%d.%d.%d.in-addr.arpa", a4, a3, a2, a1);
aquery->remaining_lookups = p + 1;
ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback,
aquery);
return;
case 'f':
status = file_lookup(&aquery->addr, &host);
if (status != ARES_ENOTFOUND)
{
end_aquery(aquery, status, host);
return;
}
break;
}
{
case 'b':
addr = ntohl(aquery->addr.s_addr);
a1 = (int)((addr >> 24) & 0xff);
a2 = (int)((addr >> 16) & 0xff);
a3 = (int)((addr >> 8) & 0xff);
a4 = (int)(addr & 0xff);
sprintf(name, "%d.%d.%d.%d.in-addr.arpa", a4, a3, a2, a1);
aquery->remaining_lookups = p + 1;
ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback,
aquery);
return;
case 'f':
status = file_lookup(&aquery->addr, &host);
if (status != ARES_ENOTFOUND)
{
end_aquery(aquery, status, host);
return;
}
break;
}
}
end_aquery(aquery, ARES_ENOTFOUND, NULL);
}
@@ -119,7 +123,7 @@ static void addr_callback(void *arg, int status, unsigned char *abuf, int alen)
if (status == ARES_SUCCESS)
{
status = ares_parse_ptr_reply(abuf, alen, &aquery->addr,
sizeof(struct in_addr), AF_INET, &host);
sizeof(struct in_addr), AF_INET, &host);
end_aquery(aquery, status, host);
}
else if (status == ARES_EDESTRUCTION)
@@ -129,7 +133,7 @@ static void addr_callback(void *arg, int status, unsigned char *abuf, int alen)
}
static void end_aquery(struct addr_query *aquery, int status,
struct hostent *host)
struct hostent *host)
{
aquery->callback(aquery->arg, status, host);
if (host)
@@ -145,14 +149,31 @@ static int file_lookup(struct in_addr *addr, struct hostent **host)
#ifdef WIN32
char PATH_HOSTS[MAX_PATH];
if (IsNT) {
GetSystemDirectory(PATH_HOSTS, MAX_PATH);
strcat(PATH_HOSTS, PATH_HOSTS_NT);
} else {
GetWindowsDirectory(PATH_HOSTS, MAX_PATH);
strcat(PATH_HOSTS, PATH_HOSTS_9X);
}
if (IS_NT()) {
char tmp[MAX_PATH];
HKEY hkeyHosts;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts)
== ERROR_SUCCESS)
{
DWORD dwLength = MAX_PATH;
RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, tmp,
&dwLength);
ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH);
RegCloseKey(hkeyHosts);
}
}
else
GetWindowsDirectory(PATH_HOSTS, MAX_PATH);
strcat(PATH_HOSTS, WIN_PATH_HOSTS);
#elif defined(WATT32)
extern const char *_w32_GetHostsFile (void);
const char *PATH_HOSTS = _w32_GetHostsFile();
if (!PATH_HOSTS)
return ARES_ENOTFOUND;
#endif
fp = fopen(PATH_HOSTS, "r");
@@ -162,7 +183,7 @@ static int file_lookup(struct in_addr *addr, struct hostent **host)
while ((status = ares__get_hostent(fp, host)) == ARES_SUCCESS)
{
if (memcmp((*host)->h_addr, addr, sizeof(struct in_addr)) == 0)
break;
break;
ares_free_hostent(*host);
}
fclose(fp);

View File

@@ -37,14 +37,11 @@ The parameter
.I name
gives the hostname as a NUL-terminated C string, and
.I family
gives the desired type of address for the resulting host entry. When
the query is complete or has failed, the ares library will invoke
.IR callback .
Completion or failure of the query may happen immediately, or may
happen during a later call to
.BR ares_process (3)
or
.BR ares_destroy (3).
gives the desired type of address for the resulting host entry. When the
query is complete or has failed, the ares library will invoke \fIcallback\fP.
Completion or failure of the query may happen immediately, or may happen
during a later call to \fIares_process(3)\fP, \fIares_destroy(3)\fP or
\fIares_cancel(3)\fP.
.PP
The callback argument
.I arg
@@ -96,7 +93,8 @@ did not complete successfully,
will be
.BR NULL .
.SH SEE ALSO
.BR ares_process (3)
.BR ares_process (3),
.BR ares_gethostbyaddr (3)
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br

View File

@@ -13,11 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <sys/socket.h>
@@ -31,9 +30,14 @@ static const char rcsid[] = "$Id$";
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "ares.h"
#include "ares_private.h"
#ifdef WATT32
#undef WIN32
#endif
struct host_query {
/* Arguments passed to ares_gethostbyname() */
ares_channel channel;
@@ -46,19 +50,19 @@ struct host_query {
static void next_lookup(struct host_query *hquery);
static void host_callback(void *arg, int status, unsigned char *abuf,
int alen);
int alen);
static void end_hquery(struct host_query *hquery, int status,
struct hostent *host);
struct hostent *host);
static int fake_hostent(const char *name, ares_host_callback callback,
void *arg);
void *arg);
static int file_lookup(const char *name, struct hostent **host);
static void sort_addresses(struct hostent *host, struct apattern *sortlist,
int nsort);
int nsort);
static int get_address_index(struct in_addr *addr, struct apattern *sortlist,
int nsort);
int nsort);
void ares_gethostbyname(ares_channel channel, const char *name, int family,
ares_host_callback callback, void *arg)
ares_host_callback callback, void *arg)
{
struct host_query *hquery;
@@ -102,26 +106,26 @@ static void next_lookup(struct host_query *hquery)
struct hostent *host;
for (p = hquery->remaining_lookups; *p; p++)
{
{
switch (*p)
{
case 'b':
/* DNS lookup */
hquery->remaining_lookups = p + 1;
ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
hquery);
return;
{
case 'b':
/* DNS lookup */
hquery->remaining_lookups = p + 1;
ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
hquery);
return;
case 'f':
/* Host file lookup */
status = file_lookup(hquery->name, &host);
if (status != ARES_ENOTFOUND)
{
end_hquery(hquery, status, host);
return;
}
break;
}
case 'f':
/* Host file lookup */
status = file_lookup(hquery->name, &host);
if (status != ARES_ENOTFOUND)
{
end_hquery(hquery, status, host);
return;
}
break;
}
}
end_hquery(hquery, ARES_ENOTFOUND, NULL);
}
@@ -136,7 +140,7 @@ static void host_callback(void *arg, int status, unsigned char *abuf, int alen)
{
status = ares_parse_a_reply(abuf, alen, &host);
if (host && channel->nsort)
sort_addresses(host, channel->sortlist, channel->nsort);
sort_addresses(host, channel->sortlist, channel->nsort);
end_hquery(hquery, status, host);
}
else if (status == ARES_EDESTRUCTION)
@@ -146,7 +150,7 @@ static void host_callback(void *arg, int status, unsigned char *abuf, int alen)
}
static void end_hquery(struct host_query *hquery, int status,
struct hostent *host)
struct hostent *host)
{
hquery->callback(hquery->arg, status, host);
if (host)
@@ -159,7 +163,7 @@ static void end_hquery(struct host_query *hquery, int status,
* query immediately, and return true. Otherwise return false.
*/
static int fake_hostent(const char *name, ares_host_callback callback,
void *arg)
void *arg)
{
struct in_addr addr;
struct hostent hostent;
@@ -171,7 +175,7 @@ static int fake_hostent(const char *name, ares_host_callback callback,
for (p = name; *p; p++)
{
if (!isdigit((unsigned char)*p) && *p != '.')
return 0;
return 0;
}
/* It also only looks like an IP address if it's non-zero-length and
@@ -216,16 +220,32 @@ static int file_lookup(const char *name, struct hostent **host)
int status;
#ifdef WIN32
char PATH_HOSTS[MAX_PATH];
if (IsNT) {
GetSystemDirectory(PATH_HOSTS, MAX_PATH);
strcat(PATH_HOSTS, PATH_HOSTS_NT);
} else {
GetWindowsDirectory(PATH_HOSTS, MAX_PATH);
strcat(PATH_HOSTS, PATH_HOSTS_9X);
}
if (IS_NT()) {
char tmp[MAX_PATH];
HKEY hkeyHosts;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts)
== ERROR_SUCCESS)
{
DWORD dwLength = MAX_PATH;
RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, tmp,
&dwLength);
ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH);
RegCloseKey(hkeyHosts);
}
}
else
GetWindowsDirectory(PATH_HOSTS, MAX_PATH);
strcat(PATH_HOSTS, WIN_PATH_HOSTS);
#elif defined(WATT32)
extern const char *_w32_GetHostsFile (void);
const char *PATH_HOSTS = _w32_GetHostsFile();
if (!PATH_HOSTS)
return ARES_ENOTFOUND;
#endif
fp = fopen(PATH_HOSTS, "r");
@@ -235,14 +255,14 @@ static int file_lookup(const char *name, struct hostent **host)
while ((status = ares__get_hostent(fp, host)) == ARES_SUCCESS)
{
if (strcasecmp((*host)->h_name, name) == 0)
break;
break;
for (alias = (*host)->h_aliases; *alias; alias++)
{
if (strcasecmp(*alias, name) == 0)
break;
}
{
if (strcasecmp(*alias, name) == 0)
break;
}
if (*alias)
break;
break;
ares_free_hostent(*host);
}
fclose(fp);
@@ -254,7 +274,7 @@ static int file_lookup(const char *name, struct hostent **host)
}
static void sort_addresses(struct hostent *host, struct apattern *sortlist,
int nsort)
int nsort)
{
struct in_addr a1, a2;
int i1, i2, ind1, ind2;
@@ -269,13 +289,13 @@ static void sort_addresses(struct hostent *host, struct apattern *sortlist,
memcpy(&a1, host->h_addr_list[i1], sizeof(struct in_addr));
ind1 = get_address_index(&a1, sortlist, nsort);
for (i2 = i1 - 1; i2 >= 0; i2--)
{
memcpy(&a2, host->h_addr_list[i2], sizeof(struct in_addr));
ind2 = get_address_index(&a2, sortlist, nsort);
if (ind2 <= ind1)
break;
memcpy(host->h_addr_list[i2 + 1], &a2, sizeof(struct in_addr));
}
{
memcpy(&a2, host->h_addr_list[i2], sizeof(struct in_addr));
ind2 = get_address_index(&a2, sortlist, nsort);
if (ind2 <= ind1)
break;
memcpy(host->h_addr_list[i2 + 1], &a2, sizeof(struct in_addr));
}
memcpy(host->h_addr_list[i2 + 1], &a1, sizeof(struct in_addr));
}
}
@@ -284,14 +304,14 @@ static void sort_addresses(struct hostent *host, struct apattern *sortlist,
* if none of them match.
*/
static int get_address_index(struct in_addr *addr, struct apattern *sortlist,
int nsort)
int nsort)
{
int i;
for (i = 0; i < nsort; i++)
{
if ((addr->s_addr & sortlist[i].mask.s_addr) == sortlist[i].addr.s_addr)
break;
break;
}
return i;
}

View File

@@ -14,7 +14,7 @@
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_INIT 3 "21 July 1998"
.TH ARES_INIT 3 "7 December 2004"
.SH NAME
ares_init, ares_init_options \- Initialize a resolver channel
.SH SYNOPSIS
@@ -25,31 +25,20 @@ ares_init, ares_init_options \- Initialize a resolver channel
.B int ares_init_options(ares_channel *\fIchannel\fP,
.B struct ares_options *\fIoptions\fP, int \fIoptmask\fP)
.PP
.B cc file.c -lares
.B cc file.c -lcares
.fi
.SH DESCRIPTION
The
.B ares_init
function initializes a communications channel for name service
lookups. If it returns successfully,
.B ares_init
will set the variable pointed to by
.I channel
to a handle used to identify the name service channel. The caller
should invoke
The \fBares_init\fP function initializes a communications channel for name
service lookups. If it returns successfully, \fBares_init\fP will set the
variable pointed to by \fIchannel\fP to a handle used to identify the name
service channel. The caller should invoke
.BR ares_destroy (3)
on the handle when the channel is no longer needed.
.PP
The
.B ares_init_options
function also initializes a name service channel, with additional
options useful for applications requiring more control over name
service configuration. The
.I optmask
parameter specifies which fields in the structure pointed to by
.I options
are set, as follows:
.PP
The \fBares_init_options\fP function also initializes a name service channel,
with additional options useful for applications requiring more control over
name service configuration. The \fIoptmask\fP parameter specifies which fields
in the structure pointed to by \fIoptions\fP are set, as follows:
.TP 18
.B ARES_OPT_FLAGS
.B int \fIflags\fP;
@@ -127,9 +116,11 @@ If a truncated response to a UDP query is received, do not fall back
to TCP; simply continue on with the truncated response.
.TP 23
.B ARES_FLAG_NORECURSE
Do not set the "recursion desired" bit on outgoing queries, so that
the name server being contacted will not try to fetch the answer from
other servers if it doesn't know the answer locally.
Do not set the "recursion desired" bit on outgoing queries, so that the name
server being contacted will not try to fetch the answer from other servers if
it doesn't know the answer locally. Be aware that ares will not do the
recursion for you. Recursion must be handled by the application calling ares
if \fIARES_FLAG_NORECURSE\fP is set.
.TP 23
.B ARES_FLAG_STAYOPEN
Do not close communciations sockets when the number of active queries

View File

@@ -13,21 +13,28 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#include <iphlpapi.h>
#include <malloc.h>
#else
#include <sys/param.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <arpa/nameser.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#endif
#include <stdio.h>
#include <stdlib.h>
@@ -38,20 +45,25 @@ static const char rcsid[] = "$Id$";
#include "ares.h"
#include "ares_private.h"
#ifdef WATT32
#undef WIN32 /* Redefined in MingW/MSVC headers */
#endif
static int init_by_options(ares_channel channel, struct ares_options *options,
int optmask);
int optmask);
static int init_by_environment(ares_channel channel);
static int init_by_resolv_conf(ares_channel channel);
static int init_by_defaults(ares_channel channel);
static int config_domain(ares_channel channel, char *str);
static int config_lookup(ares_channel channel, const char *str);
static int config_lookup(ares_channel channel, const char *str,
const char *bindch, const char *filech);
static int config_nameserver(struct server_state **servers, int *nservers,
const char *str);
char *str);
static int config_sortlist(struct apattern **sortlist, int *nsort,
const char *str);
const char *str);
static int set_search(ares_channel channel, const char *str);
static int set_options(ares_channel channel, const char *str);
static char *try_config(char *s, char *opt);
static char *try_config(char *s, const char *opt);
static const char *try_option(const char *p, const char *q, const char *opt);
static int ip_addr(const char *s, int len, struct in_addr *addr);
static void natural_mask(struct apattern *pat);
@@ -62,7 +74,7 @@ int ares_init(ares_channel *channelptr)
}
int ares_init_options(ares_channel *channelptr, struct ares_options *options,
int optmask)
int optmask)
{
ares_channel channel;
int i, status;
@@ -87,6 +99,8 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
channel->nsort = -1;
channel->lookups = NULL;
channel->queries = NULL;
channel->domains = NULL;
channel->sortlist = NULL;
/* Initialize configuration by each of the four sources, from highest
* precedence to lowest.
@@ -102,16 +116,17 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
{
/* Something failed; clean up memory we may have allocated. */
if (channel->nservers != -1)
free(channel->servers);
if (channel->ndomains != -1)
{
for (i = 0; i < channel->ndomains; i++)
free(channel->domains[i]);
free(channel->domains);
}
if (channel->nsort != -1)
free(channel->sortlist);
free(channel->lookups);
free(channel->servers);
if (channel->domains)
{
for (i = 0; i < channel->ndomains; i++)
free(channel->domains[i]);
free(channel->domains);
}
if (channel->sortlist)
free(channel->sortlist);
if(channel->lookups)
free(channel->lookups);
free(channel);
return status;
}
@@ -124,8 +139,8 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
for (i = 0; i < channel->nservers; i++)
{
server = &channel->servers[i];
server->udp_socket = -1;
server->tcp_socket = -1;
server->udp_socket = ARES_SOCKET_BAD;
server->tcp_socket = ARES_SOCKET_BAD;
server->tcp_lenbuf_pos = 0;
server->tcp_buffer = NULL;
server->qhead = NULL;
@@ -138,7 +153,8 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
* field, so there's not much to be done about that.
*/
gettimeofday(&tv, NULL);
channel->next_id = (tv.tv_sec ^ tv.tv_usec ^ getpid()) & 0xffff;
channel->next_id = (unsigned short)
(tv.tv_sec ^ tv.tv_usec ^ getpid()) & 0xffff;
channel->queries = NULL;
@@ -147,7 +163,7 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
}
static int init_by_options(ares_channel channel, struct ares_options *options,
int optmask)
int optmask)
{
int i;
@@ -169,11 +185,11 @@ static int init_by_options(ares_channel channel, struct ares_options *options,
if ((optmask & ARES_OPT_SERVERS) && channel->nservers == -1)
{
channel->servers =
malloc(options->nservers * sizeof(struct server_state));
malloc(options->nservers * sizeof(struct server_state));
if (!channel->servers && options->nservers != 0)
return ARES_ENOMEM;
return ARES_ENOMEM;
for (i = 0; i < options->nservers; i++)
channel->servers[i].addr = options->servers[i];
channel->servers[i].addr = options->servers[i];
channel->nservers = options->nservers;
}
@@ -184,14 +200,14 @@ static int init_by_options(ares_channel channel, struct ares_options *options,
{
channel->domains = malloc(options->ndomains * sizeof(char *));
if (!channel->domains && options->ndomains != 0)
return ARES_ENOMEM;
return ARES_ENOMEM;
for (i = 0; i < options->ndomains; i++)
{
channel->ndomains = i;
channel->domains[i] = strdup(options->domains[i]);
if (!channel->domains[i])
return ARES_ENOMEM;
}
{
channel->ndomains = i;
channel->domains[i] = strdup(options->domains[i]);
if (!channel->domains[i])
return ARES_ENOMEM;
}
channel->ndomains = options->ndomains;
}
@@ -200,7 +216,7 @@ static int init_by_options(ares_channel channel, struct ares_options *options,
{
channel->lookups = strdup(options->lookups);
if (!channel->lookups)
return ARES_ENOMEM;
return ARES_ENOMEM;
}
return ARES_SUCCESS;
@@ -216,7 +232,7 @@ static int init_by_environment(ares_channel channel)
{
status = set_search(channel, localdomain);
if (status != ARES_SUCCESS)
return status;
return status;
}
res_options = getenv("RES_OPTIONS");
@@ -224,90 +240,167 @@ static int init_by_environment(ares_channel channel)
{
status = set_options(channel, res_options);
if (status != ARES_SUCCESS)
return status;
return status;
}
return ARES_SUCCESS;
}
#ifdef WIN32
static int get_res_size_nt(HKEY hKey, char *subkey, int *size)
{
return RegQueryValueEx(hKey, subkey, 0, NULL, NULL, size);
}
/* Warning: returns a dynamically allocated buffer, the user MUST
#ifdef WIN32
/*
* Warning: returns a dynamically allocated buffer, the user MUST
* use free() if the function returns 1
*/
static int get_res_nt(HKEY hKey, char *subkey, char **obuf)
static int get_res_nt(HKEY hKey, const char *subkey, char **obuf)
{
/* Test for the size we need */
int size = 0;
int result;
result = RegQueryValueEx(hKey, subkey, 0, NULL, NULL, &size);
if ((result != ERROR_SUCCESS && result != ERROR_MORE_DATA) || !size)
return 0;
*obuf = malloc(size+1);
/* Test for the size we need */
DWORD size = 0;
int result;
if (RegQueryValueEx(hKey, subkey, 0, NULL, *obuf, &size) != ERROR_SUCCESS)
{
free(*obuf);
return 0;
}
if (size == 1)
{
free(*obuf);
return 0;
}
return 1;
result = RegQueryValueEx(hKey, subkey, 0, NULL, NULL, &size);
if ((result != ERROR_SUCCESS && result != ERROR_MORE_DATA) || !size)
return 0;
*obuf = malloc(size+1);
if (!*obuf)
return 0;
if (RegQueryValueEx(hKey, subkey, 0, NULL, *obuf, &size) != ERROR_SUCCESS)
{
free(*obuf);
return 0;
}
if (size == 1)
{
free(*obuf);
return 0;
}
return 1;
}
static int get_res_interfaces_nt(HKEY hKey, char *subkey, char **obuf)
static int get_res_interfaces_nt(HKEY hKey, const char *subkey, char **obuf)
{
char enumbuf[39]; /* GUIDs are 38 chars + 1 for NULL */
int enum_size = 39;
int idx = 0;
HKEY hVal;
while (RegEnumKeyEx(hKey, idx++, enumbuf, &enum_size, 0, NULL, NULL, NULL) != ERROR_NO_MORE_ITEMS)
{
enum_size = 39;
if (RegOpenKeyEx(hKey, enumbuf, 0, KEY_QUERY_VALUE, &hVal) != ERROR_SUCCESS)
continue;
if (!get_res_nt(hVal, subkey, obuf))
RegCloseKey(hVal);
else
{
RegCloseKey(hVal);
return 1;
}
}
return 0;
char enumbuf[39]; /* GUIDs are 38 chars + 1 for NULL */
DWORD enum_size = 39;
int idx = 0;
HKEY hVal;
while (RegEnumKeyEx(hKey, idx++, enumbuf, &enum_size, 0,
NULL, NULL, NULL) != ERROR_NO_MORE_ITEMS)
{
int rc;
enum_size = 39;
if (RegOpenKeyEx(hKey, enumbuf, 0, KEY_QUERY_VALUE, &hVal) !=
ERROR_SUCCESS)
continue;
rc = get_res_nt(hVal, subkey, obuf);
RegCloseKey(hVal);
if (rc)
return 1;
}
return 0;
}
static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
{
FIXED_INFO *fi = alloca (sizeof(*fi));
DWORD size = sizeof (*fi);
typedef DWORD (WINAPI* get_net_param_func) (FIXED_INFO*, DWORD*);
get_net_param_func GetNetworkParams; /* available only on Win-98/2000+ */
HMODULE handle;
IP_ADDR_STRING *ipAddr;
int i, count = 0;
int debug = 0;
size_t ip_size = sizeof("255.255.255.255,")-1;
size_t left = ret_size;
char *ret = ret_buf;
if (!fi)
return (0);
handle = LoadLibrary ("iphlpapi.dll");
if (!handle)
return (0);
GetNetworkParams = (get_net_param_func) GetProcAddress (handle, "GetNetworkParams");
if (!GetNetworkParams)
goto quit;
if ((*GetNetworkParams) (fi, &size) != ERROR_BUFFER_OVERFLOW)
goto quit;
fi = alloca (size);
if (!fi || (*GetNetworkParams) (fi, &size) != ERROR_SUCCESS)
goto quit;
if (debug)
{
printf ("Host Name: %s\n", fi->HostName);
printf ("Domain Name: %s\n", fi->DomainName);
printf ("DNS Servers:\n"
" %s (primary)\n", fi->DnsServerList.IpAddress.String);
}
if (inet_addr(fi->DnsServerList.IpAddress.String) != INADDR_NONE &&
left > ip_size)
{
ret += sprintf (ret, "%s,", fi->DnsServerList.IpAddress.String);
left -= ret - ret_buf;
count++;
}
for (i = 0, ipAddr = fi->DnsServerList.Next; ipAddr && left > ip_size;
ipAddr = ipAddr->Next, i++)
{
if (inet_addr(ipAddr->IpAddress.String) != INADDR_NONE)
{
ret += sprintf (ret, "%s,", ipAddr->IpAddress.String);
left -= ret - ret_buf;
count++;
}
if (debug)
printf (" %s (secondary %d)\n", ipAddr->IpAddress.String, i+1);
}
quit:
if (handle)
FreeLibrary (handle);
if (debug && left <= ip_size)
printf ("Too many nameservers. Truncating to %d addressess", count);
if (ret > ret_buf)
ret[-1] = '\0';
return (count);
}
#endif
static int init_by_resolv_conf(ares_channel channel)
{
FILE *fp;
char *line = NULL, *p;
int linesize, status, nservers = 0, nsort = 0;
char *line = NULL;
int status = -1, nservers = 0, nsort = 0;
struct server_state *servers = NULL;
struct apattern *sortlist = NULL;
#ifdef WIN32
/*
NameServer info via IPHLPAPI (IP helper API):
GetNetworkParams() should be the trusted source for this.
Available in Win-98/2000 and later. If that fail, fall-back to
registry information.
NameServer Registry:
On Windows 9X, the DNS server can be found in:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\NameServer
On Windows NT/2000/XP/2003:
On Windows NT/2000/XP/2003:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\NameServer
or
or
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DhcpNameServer
or
or
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\{AdapterID}\
NameServer
or
or
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\{AdapterID}\
DhcpNameServer
*/
@@ -317,80 +410,84 @@ DhcpNameServer
DWORD data_type;
DWORD bytes;
DWORD result;
DWORD index;
char name[MAX_PATH];
DWORD keysize = MAX_PATH;
char buf[256];
status = ARES_EFILE;
if (channel->nservers > -1) /* don't override ARES_OPT_SERVER */
return ARES_SUCCESS;
if (IsNT)
if (get_iphlpapi_dns_info(buf,sizeof(buf)) > 0)
{
status = config_nameserver(&servers, &nservers, buf);
if (status == ARES_SUCCESS)
goto okay;
}
if (IS_NT())
{
if (RegOpenKeyEx(
HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
KEY_READ, &mykey
) == ERROR_SUCCESS)
{
RegOpenKeyEx(mykey, "Interfaces", 0, KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS, &subkey);
if (get_res_nt(mykey, NAMESERVER, &line))
{
status = config_nameserver(&servers, &nservers, line);
free(line);
}
else if (get_res_nt(mykey, DHCPNAMESERVER, &line))
{
status = config_nameserver(&servers, &nservers, line);
free(line);
}
/* Try the interfaces */
else if (get_res_interfaces_nt(subkey, NAMESERVER, &line))
{
status = config_nameserver(&servers, &nservers, line);
free(line);
}
else if (get_res_interfaces_nt(subkey, DHCPNAMESERVER, &line))
{
status = config_nameserver(&servers, &nservers, line);
free(line);
}
RegCloseKey(subkey);
RegCloseKey(mykey);
}
} else {
if (RegOpenKeyEx(
HKEY_LOCAL_MACHINE, WIN_NS_9X, 0,
KEY_READ, &mykey
HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
KEY_READ, &mykey
) == ERROR_SUCCESS)
{
RegOpenKeyEx(mykey, "Interfaces", 0,
KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS, &subkey);
if (get_res_nt(mykey, NAMESERVER, &line))
{
if ((result = RegQueryValueEx(
mykey, NAMESERVER, NULL, &data_type,
NULL, &bytes
)
) == ERROR_SUCCESS ||
result == ERROR_MORE_DATA)
{
if (bytes) {
line = (char *)malloc(bytes+1);
if (RegQueryValueEx(
mykey, NAMESERVER, NULL, &data_type,
(unsigned char *)line, &bytes
) == ERROR_SUCCESS) {
status = config_nameserver(&servers, &nservers, line);
}
free(line);
}
}
}
RegCloseKey(mykey);
}
if (status != ARES_EFILE) {
/*
if (!channel->lookups) {
status = config_lookup(channel, "file bind");
status = config_nameserver(&servers, &nservers, line);
free(line);
}
*/
status = ARES_EOF;
else if (get_res_nt(mykey, DHCPNAMESERVER, &line))
{
status = config_nameserver(&servers, &nservers, line);
free(line);
}
/* Try the interfaces */
else if (get_res_interfaces_nt(subkey, NAMESERVER, &line))
{
status = config_nameserver(&servers, &nservers, line);
free(line);
}
else if (get_res_interfaces_nt(subkey, DHCPNAMESERVER, &line))
{
status = config_nameserver(&servers, &nservers, line);
free(line);
}
RegCloseKey(subkey);
RegCloseKey(mykey);
}
}
else
{
if (RegOpenKeyEx(
HKEY_LOCAL_MACHINE, WIN_NS_9X, 0,
KEY_READ, &mykey
) == ERROR_SUCCESS)
{
if ((result = RegQueryValueEx(
mykey, NAMESERVER, NULL, &data_type,
NULL, &bytes
)
) == ERROR_SUCCESS ||
result == ERROR_MORE_DATA)
{
if (bytes)
{
line = (char *)malloc(bytes+1);
if (RegQueryValueEx(mykey, NAMESERVER, NULL, &data_type,
(unsigned char *)line, &bytes) ==
ERROR_SUCCESS)
{
status = config_nameserver(&servers, &nservers, line);
}
free(line);
}
}
}
RegCloseKey(mykey);
}
if (status == ARES_SUCCESS)
status = ARES_EOF;
#elif defined(riscos)
@@ -398,7 +495,7 @@ DhcpNameServer
system variable Inet$Resolvers, space separated. */
line = getenv("Inet$Resolvers");
status = ARES_EFILE;
status = ARES_EOF;
if (line) {
char *resolvers = strdup(line), *pos, *space;
@@ -422,44 +519,113 @@ DhcpNameServer
free(resolvers);
}
#else
#elif defined(WATT32)
int i;
fp = fopen(PATH_RESOLV_CONF, "r");
if (!fp)
return (errno == ENOENT) ? ARES_SUCCESS : ARES_EFILE;
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
sock_init();
for (i = 0; def_nameservers[i]; i++)
;
if (i == 0)
return ARES_SUCCESS; /* use localhost DNS server */
nservers = i;
servers = calloc(sizeof(*servers), i);
if (!servers)
return ARES_ENOMEM;
for (i = 0; def_nameservers[i]; i++)
servers[i].addr.s_addr = htonl(def_nameservers[i]);
status = ARES_EOF;
#else
{
char *p;
FILE *fp;
int linesize;
fp = fopen(PATH_RESOLV_CONF, "r");
if (!fp)
return (errno == ENOENT) ? ARES_SUCCESS : ARES_EFILE;
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
{
if ((p = try_config(line, "domain")) && channel->ndomains == -1)
status = config_domain(channel, p);
if ((p = try_config(line, "domain")))
status = config_domain(channel, p);
else if ((p = try_config(line, "lookup")) && !channel->lookups)
status = config_lookup(channel, p);
else if ((p = try_config(line, "search")) && channel->ndomains == -1)
status = set_search(channel, p);
status = config_lookup(channel, p, "bind", "file");
else if ((p = try_config(line, "search")))
status = set_search(channel, p);
else if ((p = try_config(line, "nameserver")) && channel->nservers == -1)
status = config_nameserver(&servers, &nservers, p);
status = config_nameserver(&servers, &nservers, p);
else if ((p = try_config(line, "sortlist")) && channel->nsort == -1)
status = config_sortlist(&sortlist, &nsort, p);
status = config_sortlist(&sortlist, &nsort, p);
else if ((p = try_config(line, "options")))
status = set_options(channel, p);
status = set_options(channel, p);
else
status = ARES_SUCCESS;
status = ARES_SUCCESS;
if (status != ARES_SUCCESS)
break;
break;
}
free(line);
fclose(fp);
fclose(fp);
if (!channel->lookups) {
/* Many systems (Solaris, Linux, BSD's) use nsswitch.conf */
fp = fopen("/etc/nsswitch.conf", "r");
if (fp) {
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
{
if ((p = try_config(line, "hosts:")) && !channel->lookups)
status = config_lookup(channel, p, "dns", "files");
}
fclose(fp);
}
}
if (!channel->lookups) {
/* Linux / GNU libc 2.x and possibly others have host.conf */
fp = fopen("/etc/host.conf", "r");
if (fp) {
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
{
if ((p = try_config(line, "order")) && !channel->lookups)
status = config_lookup(channel, p, "bind", "hosts");
}
fclose(fp);
}
}
if (!channel->lookups) {
/* Tru64 uses /etc/svc.conf */
fp = fopen("/etc/svc.conf", "r");
if (fp) {
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
{
if ((p = try_config(line, "hosts=")) && !channel->lookups)
status = config_lookup(channel, p, "bind", "local");
}
fclose(fp);
}
}
if(line)
free(line);
}
#endif
/* Handle errors. */
if (status != ARES_EOF)
{
if (servers != NULL) free(servers);
if (sortlist != NULL) free(sortlist);
if (servers != NULL)
free(servers);
if (sortlist != NULL)
free(sortlist);
return status;
}
/* If we got any name server entries, fill them in. */
#ifdef WIN32
okay:
#endif
if (servers)
{
channel->servers = servers;
@@ -498,7 +664,7 @@ static int init_by_defaults(ares_channel channel)
/* If nobody specified servers, try a local named. */
channel->servers = malloc(sizeof(struct server_state));
if (!channel->servers)
return ARES_ENOMEM;
return ARES_ENOMEM;
channel->servers[0].addr.s_addr = htonl(INADDR_LOOPBACK);
channel->nservers = 1;
}
@@ -509,22 +675,22 @@ static int init_by_defaults(ares_channel channel)
* or set it to empty if the hostname isn't helpful.
*/
if (gethostname(hostname, sizeof(hostname)) == -1
|| !strchr(hostname, '.'))
{
channel->domains = malloc(0);
channel->ndomains = 0;
}
|| !strchr(hostname, '.'))
{
channel->domains = malloc(0);
channel->ndomains = 0;
}
else
{
channel->domains = malloc(sizeof(char *));
if (!channel->domains)
return ARES_ENOMEM;
channel->ndomains = 0;
channel->domains[0] = strdup(strchr(hostname, '.') + 1);
if (!channel->domains[0])
return ARES_ENOMEM;
channel->ndomains = 1;
}
{
channel->domains = malloc(sizeof(char *));
if (!channel->domains)
return ARES_ENOMEM;
channel->ndomains = 0;
channel->domains[0] = strdup(strchr(hostname, '.') + 1);
if (!channel->domains[0])
return ARES_ENOMEM;
channel->ndomains = 1;
}
}
if (channel->nsort == -1)
@@ -535,9 +701,9 @@ static int init_by_defaults(ares_channel channel)
if (!channel->lookups)
{
channel->lookups = strdup("bf");
channel->lookups = strdup("fb");
if (!channel->lookups)
return ARES_ENOMEM;
return ARES_ENOMEM;
}
return ARES_SUCCESS;
@@ -555,7 +721,8 @@ static int config_domain(ares_channel channel, char *str)
return set_search(channel, str);
}
static int config_lookup(ares_channel channel, const char *str)
static int config_lookup(ares_channel channel, const char *str,
const char *bindch, const char *filech)
{
char lookups[3], *l;
const char *p;
@@ -568,12 +735,14 @@ static int config_lookup(ares_channel channel, const char *str)
p = str;
while (*p)
{
if ((*p == 'b' || *p == 'f') && l < lookups + 2)
*l++ = *p;
while (*p && !isspace((unsigned char)*p))
p++;
while (isspace((unsigned char)*p))
p++;
if ((*p == *bindch || *p == *filech) && l < lookups + 2) {
if (*p == *bindch) *l++ = 'b';
else *l++ = 'f';
}
while (*p && !isspace((unsigned char)*p) && (*p != ','))
p++;
while (*p && (isspace((unsigned char)*p) || (*p == ',')))
p++;
}
*l = 0;
channel->lookups = strdup(lookups);
@@ -581,11 +750,52 @@ static int config_lookup(ares_channel channel, const char *str)
}
static int config_nameserver(struct server_state **servers, int *nservers,
const char *str)
char *str)
{
struct in_addr addr;
struct server_state *newserv;
/* On Windows, there may be more than one nameserver specified in the same
* registry key, so we parse it as a space or comma seperated list.
*/
#ifdef WIN32
char *p = str;
char *begin = str;
int more = 1;
while (more)
{
more = 0;
while (*p && !isspace(*p) && *p != ',')
p++;
if (*p)
{
*p = 0;
more = 1;
}
/* Skip multiple spaces or trailing spaces */
if (!*begin)
{
begin = ++p;
continue;
}
/* This is the part that actually sets the nameserver */
addr.s_addr = inet_addr(begin);
if (addr.s_addr == INADDR_NONE)
continue;
newserv = realloc(*servers, (*nservers + 1) * sizeof(struct server_state));
if (!newserv)
return ARES_ENOMEM;
newserv[*nservers].addr = addr;
*servers = newserv;
(*nservers)++;
if (!more)
break;
begin = ++p;
}
#else
/* Add a nameserver entry, if this is a valid address. */
addr.s_addr = inet_addr(str);
if (addr.s_addr == INADDR_NONE)
@@ -596,11 +806,12 @@ static int config_nameserver(struct server_state **servers, int *nservers,
newserv[*nservers].addr = addr;
*servers = newserv;
(*nservers)++;
#endif
return ARES_SUCCESS;
}
static int config_sortlist(struct apattern **sortlist, int *nsort,
const char *str)
const char *str)
{
struct apattern pat, *newsort;
const char *q;
@@ -610,37 +821,37 @@ static int config_sortlist(struct apattern **sortlist, int *nsort,
{
q = str;
while (*q && *q != '/' && *q != ';' && !isspace((unsigned char)*q))
q++;
if (ip_addr(str, q - str, &pat.addr) == 0)
{
/* We have a pattern address; now determine the mask. */
if (*q == '/')
{
str = q + 1;
while (*q && *q != ';' && !isspace((unsigned char)*q))
q++;
if (ip_addr(str, q - str, &pat.mask) != 0)
natural_mask(&pat);
}
else
natural_mask(&pat);
q++;
if (ip_addr(str, (int)(q - str), &pat.addr) == 0)
{
/* We have a pattern address; now determine the mask. */
if (*q == '/')
{
str = q + 1;
while (*q && *q != ';' && !isspace((unsigned char)*q))
q++;
if (ip_addr(str, (int)(q - str), &pat.mask) != 0)
natural_mask(&pat);
}
else
natural_mask(&pat);
/* Add this pattern to our list. */
newsort = realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern));
if (!newsort)
return ARES_ENOMEM;
newsort[*nsort] = pat;
*sortlist = newsort;
(*nsort)++;
}
/* Add this pattern to our list. */
newsort = realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern));
if (!newsort)
return ARES_ENOMEM;
newsort[*nsort] = pat;
*sortlist = newsort;
(*nsort)++;
}
else
{
while (*q && *q != ';' && !isspace((unsigned char)*q))
q++;
}
{
while (*q && *q != ';' && !isspace((unsigned char)*q))
q++;
}
str = q;
while (isspace((unsigned char)*str))
str++;
str++;
}
return ARES_SUCCESS;
@@ -651,15 +862,23 @@ static int set_search(ares_channel channel, const char *str)
int n;
const char *p, *q;
if(channel->ndomains != -1) {
/* if we already have some domains present, free them first */
for(n=0; n < channel->ndomains; n++)
free(channel->domains[n]);
free(channel->domains);
channel->ndomains = -1;
}
/* Count the domains given. */
n = 0;
p = str;
while (*p)
{
while (*p && !isspace((unsigned char)*p))
p++;
p++;
while (isspace((unsigned char)*p))
p++;
p++;
n++;
}
@@ -675,15 +894,15 @@ static int set_search(ares_channel channel, const char *str)
channel->ndomains = n;
q = p;
while (*q && !isspace((unsigned char)*q))
q++;
q++;
channel->domains[n] = malloc(q - p + 1);
if (!channel->domains[n])
return ARES_ENOMEM;
return ARES_ENOMEM;
memcpy(channel->domains[n], p, q - p);
channel->domains[n][q - p] = 0;
p = q;
while (isspace((unsigned char)*p))
p++;
p++;
n++;
}
channel->ndomains = n;
@@ -700,27 +919,27 @@ static int set_options(ares_channel channel, const char *str)
{
q = p;
while (*q && !isspace((unsigned char)*q))
q++;
q++;
val = try_option(p, q, "ndots:");
if (val && channel->ndots == -1)
channel->ndots = atoi(val);
channel->ndots = atoi(val);
val = try_option(p, q, "retrans:");
if (val && channel->timeout == -1)
channel->timeout = atoi(val);
channel->timeout = atoi(val);
val = try_option(p, q, "retry:");
if (val && channel->tries == -1)
channel->tries = atoi(val);
channel->tries = atoi(val);
p = q;
while (isspace((unsigned char)*p))
p++;
p++;
}
return ARES_SUCCESS;
}
static char *try_config(char *s, char *opt)
static char *try_config(char *s, const char *opt)
{
int len;
size_t len;
len = strlen(opt);
if (strncmp(s, opt, len) != 0 || !isspace((unsigned char)s[len]))
@@ -733,10 +952,8 @@ static char *try_config(char *s, char *opt)
static const char *try_option(const char *p, const char *q, const char *opt)
{
int len;
len = strlen(opt);
return (q - p > len && strncmp(p, opt, len) == 0) ? p + len : NULL;
size_t len = strlen(opt);
return ((size_t)(q - p) > len && !strncmp(p, opt, len)) ? &p[len] : NULL;
}
static int ip_addr(const char *s, int len, struct in_addr *addr)

View File

@@ -21,11 +21,9 @@ ares_mkquery \- Compose a single-question DNS query buffer
.nf
.B #include <ares.h>
.PP
.B
int ares_mkquery(const char *\fIname\fP, int \fIdnsclass\fP, int \fItype\fP,
.B
unsigned short \fIid\fP, int \fIrd\fP, char **\fIbuf\fP,
int *\fIbuflen\fP)
.B int ares_mkquery(const char *\fIname\fP, int \fIdnsclass\fP, int \fItype\fP,
.B unsigned short \fIid\fP, int \fIrd\fP, char **\fIbuf\fP,
.B int *\fIbuflen\fP)
.fi
.SH DESCRIPTION
The
@@ -52,8 +50,7 @@ stored in the variable pointed to by
and the length of which will be stored in the variable pointed to by
.IR buflen .
It is the caller's responsibility to free this buffer using
.B ares_free_string
when it is no longer needed.
\fIares_free_string(3)\fP when it is no longer needed.
.SH RETURN VALUES
.B ares_mkquery
can return any of the following values:

View File

@@ -13,11 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
@@ -48,15 +47,15 @@ static const char rcsid[] = "$Id$";
*
* AA, TC, RA, and RCODE are only set in responses. Brief description
* of the remaining fields:
* ID Identifier to match responses with queries
* QR Query (0) or response (1)
* Opcode For our purposes, always QUERY
* RD Recursion desired
* Z Reserved (zero)
* QDCOUNT Number of queries
* ANCOUNT Number of answers
* NSCOUNT Number of name server records
* ARCOUNT Number of additional records
* ID Identifier to match responses with queries
* QR Query (0) or response (1)
* Opcode For our purposes, always QUERY
* RD Recursion desired
* Z Reserved (zero)
* QDCOUNT Number of queries
* ANCOUNT Number of answers
* NSCOUNT Number of name server records
* ARCOUNT Number of additional records
*
* Question format, from RFC 1035:
* 1 1 1 1 1 1
@@ -78,7 +77,7 @@ static const char rcsid[] = "$Id$";
*/
int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
int rd, unsigned char **buf, int *buflen)
int rd, unsigned char **buf, int *buflen)
{
int len;
unsigned char *q;
@@ -90,7 +89,7 @@ int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
for (p = name; *p; p++)
{
if (*p == '\\' && *(p + 1) != 0)
p++;
p++;
len++;
}
/* If there are n periods in the name, there are n + 1 labels, and
@@ -122,31 +121,31 @@ int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
while (*name)
{
if (*name == '.')
return ARES_EBADNAME;
return ARES_EBADNAME;
/* Count the number of bytes in this label. */
len = 0;
for (p = name; *p && *p != '.'; p++)
{
if (*p == '\\' && *(p + 1) != 0)
p++;
len++;
}
{
if (*p == '\\' && *(p + 1) != 0)
p++;
len++;
}
if (len > MAXLABEL)
return ARES_EBADNAME;
return ARES_EBADNAME;
/* Encode the length and copy the data. */
*q++ = len;
for (p = name; *p && *p != '.'; p++)
{
if (*p == '\\' && *(p + 1) != 0)
p++;
*q++ = *p;
}
{
if (*p == '\\' && *(p + 1) != 0)
p++;
*q++ = *p;
}
/* Go to the next label and repeat, unless we hit the end. */
if (!*p)
break;
break;
name = p + 1;
}

View File

@@ -21,9 +21,8 @@ ares_parse_a_reply \- Parse a reply to a DNS query of type A into a hostent
.nf
.B #include <ares.h>
.PP
.B
int ares_parse_a_reply(const unsigned char *\fIabuf\fB, int \fIalen\fB,
.B struct hostent **\fIhost\fB);
.B int ares_parse_a_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
.B struct hostent **\fIhost\fP);
.fi
.SH DESCRIPTION
The

View File

@@ -13,11 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <sys/socket.h>
@@ -34,11 +33,12 @@ static const char rcsid[] = "$Id$";
#include "ares_private.h"
int ares_parse_a_reply(const unsigned char *abuf, int alen,
struct hostent **host)
struct hostent **host)
{
unsigned int qdcount, ancount;
int status, i, len, rr_type, rr_class, rr_len, naddrs;
int status, i, rr_type, rr_class, rr_len, naddrs;
int naliases;
long len;
const unsigned char *aptr;
char *hostname, *rr_name, *rr_data, **aliases;
struct in_addr *addrs;
@@ -87,54 +87,54 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
naliases = 0;
/* Examine each answer resource record (RR) in turn. */
for (i = 0; i < ancount; i++)
for (i = 0; i < (int)ancount; i++)
{
/* Decode the RR up to the data field. */
status = ares_expand_name(aptr, abuf, alen, &rr_name, &len);
if (status != ARES_SUCCESS)
break;
break;
aptr += len;
if (aptr + RRFIXEDSZ > abuf + alen)
{
status = ARES_EBADRESP;
break;
}
{
status = ARES_EBADRESP;
break;
}
rr_type = DNS_RR_TYPE(aptr);
rr_class = DNS_RR_CLASS(aptr);
rr_len = DNS_RR_LEN(aptr);
aptr += RRFIXEDSZ;
if (rr_class == C_IN && rr_type == T_A
&& rr_len == sizeof(struct in_addr)
&& strcasecmp(rr_name, hostname) == 0)
{
memcpy(&addrs[naddrs], aptr, sizeof(struct in_addr));
naddrs++;
status = ARES_SUCCESS;
}
&& rr_len == sizeof(struct in_addr)
&& strcasecmp(rr_name, hostname) == 0)
{
memcpy(&addrs[naddrs], aptr, sizeof(struct in_addr));
naddrs++;
status = ARES_SUCCESS;
}
if (rr_class == C_IN && rr_type == T_CNAME)
{
/* Record the RR name as an alias. */
aliases[naliases] = rr_name;
naliases++;
{
/* Record the RR name as an alias. */
aliases[naliases] = rr_name;
naliases++;
/* Decode the RR data and replace the hostname with it. */
status = ares_expand_name(aptr, abuf, alen, &rr_data, &len);
if (status != ARES_SUCCESS)
break;
free(hostname);
hostname = rr_data;
}
/* Decode the RR data and replace the hostname with it. */
status = ares_expand_name(aptr, abuf, alen, &rr_data, &len);
if (status != ARES_SUCCESS)
break;
free(hostname);
hostname = rr_data;
}
else
free(rr_name);
free(rr_name);
aptr += rr_len;
if (aptr > abuf + alen)
{
status = ARES_EBADRESP;
break;
}
{
status = ARES_EBADRESP;
break;
}
}
if (status == ARES_SUCCESS && naddrs == 0)
@@ -145,23 +145,23 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
aliases[naliases] = NULL;
hostent = malloc(sizeof(struct hostent));
if (hostent)
{
hostent->h_addr_list = malloc((naddrs + 1) * sizeof(char *));
if (hostent->h_addr_list)
{
/* Fill in the hostent and return successfully. */
hostent->h_name = hostname;
hostent->h_aliases = aliases;
hostent->h_addrtype = AF_INET;
hostent->h_length = sizeof(struct in_addr);
for (i = 0; i < naddrs; i++)
hostent->h_addr_list[i] = (char *) &addrs[i];
hostent->h_addr_list[naddrs] = NULL;
*host = hostent;
return ARES_SUCCESS;
}
free(hostent);
}
{
hostent->h_addr_list = malloc((naddrs + 1) * sizeof(char *));
if (hostent->h_addr_list)
{
/* Fill in the hostent and return successfully. */
hostent->h_name = hostname;
hostent->h_aliases = aliases;
hostent->h_addrtype = AF_INET;
hostent->h_length = sizeof(struct in_addr);
for (i = 0; i < naddrs; i++)
hostent->h_addr_list[i] = (char *) &addrs[i];
hostent->h_addr_list[naddrs] = NULL;
*host = hostent;
return ARES_SUCCESS;
}
free(hostent);
}
status = ARES_ENOMEM;
}
for (i = 0; i < naliases; i++)

View File

@@ -21,11 +21,9 @@ ares_parse_ptr_reply \- Parse a reply to a DNS query of type PTR into a hostent
.nf
.B #include <ares.h>
.PP
.B
int ares_parse_ptr_reply(const unsigned char *\fIabuf\fB, int \fIalen\fB,
.B
const void *\fIaddr\fP, int \fIaddrlen\fP, int \fIfamily\fP,
.B struct hostent **\fIhost\fB);
.B int ares_parse_ptr_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
.B const void *\fIaddr\fP, int \fIaddrlen\fP, int \fIfamily\fP,
.B struct hostent **\fIhost\fP);
.fi
.SH DESCRIPTION
The

View File

@@ -13,11 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <sys/socket.h>
@@ -33,10 +32,11 @@ static const char rcsid[] = "$Id$";
#include "ares_private.h"
int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
int addrlen, int family, struct hostent **host)
int addrlen, int family, struct hostent **host)
{
unsigned int qdcount, ancount;
int status, i, len, rr_type, rr_class, rr_len;
int status, i, rr_type, rr_class, rr_len;
long len;
const unsigned char *aptr;
char *ptrname, *hostname, *rr_name, *rr_data;
struct hostent *hostent;
@@ -68,52 +68,52 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
/* Examine each answer resource record (RR) in turn. */
hostname = NULL;
for (i = 0; i < ancount; i++)
for (i = 0; i < (int)ancount; i++)
{
/* Decode the RR up to the data field. */
status = ares_expand_name(aptr, abuf, alen, &rr_name, &len);
if (status != ARES_SUCCESS)
break;
break;
aptr += len;
if (aptr + RRFIXEDSZ > abuf + alen)
{
status = ARES_EBADRESP;
break;
}
{
status = ARES_EBADRESP;
break;
}
rr_type = DNS_RR_TYPE(aptr);
rr_class = DNS_RR_CLASS(aptr);
rr_len = DNS_RR_LEN(aptr);
aptr += RRFIXEDSZ;
if (rr_class == C_IN && rr_type == T_PTR
&& strcasecmp(rr_name, ptrname) == 0)
{
/* Decode the RR data and set hostname to it. */
status = ares_expand_name(aptr, abuf, alen, &rr_data, &len);
if (status != ARES_SUCCESS)
break;
if (hostname)
free(hostname);
hostname = rr_data;
}
&& strcasecmp(rr_name, ptrname) == 0)
{
/* Decode the RR data and set hostname to it. */
status = ares_expand_name(aptr, abuf, alen, &rr_data, &len);
if (status != ARES_SUCCESS)
break;
if (hostname)
free(hostname);
hostname = rr_data;
}
if (rr_class == C_IN && rr_type == T_CNAME)
{
/* Decode the RR data and replace ptrname with it. */
status = ares_expand_name(aptr, abuf, alen, &rr_data, &len);
if (status != ARES_SUCCESS)
break;
free(ptrname);
ptrname = rr_data;
}
{
/* Decode the RR data and replace ptrname with it. */
status = ares_expand_name(aptr, abuf, alen, &rr_data, &len);
if (status != ARES_SUCCESS)
break;
free(ptrname);
ptrname = rr_data;
}
free(rr_name);
aptr += rr_len;
if (aptr > abuf + alen)
{
status = ARES_EBADRESP;
break;
}
{
status = ARES_EBADRESP;
break;
}
}
if (status == ARES_SUCCESS && !hostname)
@@ -123,33 +123,33 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
/* We got our answer. Allocate memory to build the host entry. */
hostent = malloc(sizeof(struct hostent));
if (hostent)
{
hostent->h_addr_list = malloc(2 * sizeof(char *));
if (hostent->h_addr_list)
{
hostent->h_addr_list[0] = malloc(addrlen);
if (hostent->h_addr_list[0])
{
hostent->h_aliases = malloc(sizeof (char *));
if (hostent->h_aliases)
{
/* Fill in the hostent and return successfully. */
hostent->h_name = hostname;
hostent->h_aliases[0] = NULL;
hostent->h_addrtype = family;
hostent->h_length = addrlen;
memcpy(hostent->h_addr_list[0], addr, addrlen);
hostent->h_addr_list[1] = NULL;
*host = hostent;
free(ptrname);
return ARES_SUCCESS;
}
free(hostent->h_addr_list[0]);
}
free(hostent->h_addr_list);
}
free(hostent);
}
{
hostent->h_addr_list = malloc(2 * sizeof(char *));
if (hostent->h_addr_list)
{
hostent->h_addr_list[0] = malloc(addrlen);
if (hostent->h_addr_list[0])
{
hostent->h_aliases = malloc(sizeof (char *));
if (hostent->h_aliases)
{
/* Fill in the hostent and return successfully. */
hostent->h_name = hostname;
hostent->h_aliases[0] = NULL;
hostent->h_addrtype = family;
hostent->h_length = addrlen;
memcpy(hostent->h_addr_list[0], addr, addrlen);
hostent->h_addr_list[1] = NULL;
*host = hostent;
free(ptrname);
return ARES_SUCCESS;
}
free(hostent->h_addr_list[0]);
}
free(hostent->h_addr_list);
}
free(hostent);
}
status = ARES_ENOMEM;
}
if (hostname)

View File

@@ -18,46 +18,61 @@
#include <stdio.h>
#include <sys/types.h>
#ifdef WIN32
#else
#if !defined(WIN32) || defined(WATT32)
#include <netinet/in.h>
/* We define closesocket() here so that we can use this function all over
the source code for closing sockets. */
#define closesocket(x) close(x)
#endif
#define DEFAULT_TIMEOUT 5
#define DEFAULT_TRIES 4
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#ifdef WATT32
#include <tcp.h>
#include <sys/ioctl.h>
#undef closesocket
#define closesocket(s) close_s(s)
#define writev(s,v,c) writev_s(s,v,c)
#endif
#ifdef WIN32
#define DEFAULT_TIMEOUT 5
#define DEFAULT_TRIES 4
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#endif
#define IsNT ((int)GetVersion()>0)
#if defined(WIN32) && !defined(WATT32)
#define IS_NT() ((int)GetVersion() > 0)
#define WIN_NS_9X "System\\CurrentControlSet\\Services\\VxD\\MSTCP"
#define WIN_NS_NT_KEY "System\\CurrentControlSet\\Services\\Tcpip\\Parameters"
#define NAMESERVER "NameServer"
#define DHCPNAMESERVER "DhcpNameServer"
#define PATH_HOSTS_NT "\\drivers\\etc\\hosts"
#define PATH_HOSTS_9X "\\hosts"
#define DATABASEPATH "DatabasePath"
#define WIN_PATH_HOSTS "\\hosts"
#elif defined(WATT32)
#define PATH_RESOLV_CONF "/dev/ENV/etc/resolv.conf"
#elif defined(NETWARE)
#define PATH_RESOLV_CONF "sys:/etc/resolv.cfg"
#define PATH_HOSTS "sys:/etc/hosts"
#else
#define PATH_RESOLV_CONF "/etc/resolv.conf"
#define PATH_RESOLV_CONF "/etc/resolv.conf"
#ifdef ETC_INET
#define PATH_HOSTS "/etc/inet/hosts"
#define PATH_HOSTS "/etc/inet/hosts"
#else
#define PATH_HOSTS "/etc/hosts"
#define PATH_HOSTS "/etc/hosts"
#endif
#endif
struct send_request {
/* Remaining data to send */
const char *data;
int len;
const unsigned char *data;
size_t len;
/* Next request in queue */
struct send_request *next;
@@ -65,8 +80,8 @@ struct send_request {
struct server_state {
struct in_addr addr;
int udp_socket;
int tcp_socket;
ares_socket_t udp_socket;
ares_socket_t tcp_socket;
/* Mini-buffer for reading the length word */
unsigned char tcp_lenbuf[2];
@@ -88,11 +103,11 @@ struct query {
time_t timeout;
/* Query buf with length at beginning, for TCP transmission */
char *tcpbuf;
unsigned char *tcpbuf;
int tcplen;
/* Arguments passed to ares_send() (qbuf points into tcpbuf) */
const char *qbuf;
const unsigned char *qbuf;
int qlen;
ares_callback callback;
void *arg;
@@ -143,3 +158,15 @@ void ares__send_query(ares_channel channel, struct query *query, time_t now);
void ares__close_sockets(struct server_state *server);
int ares__get_hostent(FILE *fp, struct hostent **host);
int ares__read_line(FILE *fp, char **buf, int *bufsize);
#ifdef CURLDEBUG
/* This is low-level hard-hacking memory leak tracking and similar. Using the
libcurl lowlevel code from within library is ugly and only works when
c-ares is built and linked with a similarly debug-build libcurl, but we do
this anyway for convenience. */
#ifndef CURL_EXTERN
/* ugly hack to make this compile */
#define CURL_EXTERN
#endif
#include "../lib/memdebug.h"
#endif

View File

@@ -35,13 +35,10 @@ The file descriptor sets pointed to by
and
.I write_fds
should have file descriptors set in them according to whether the file
descriptors specified by
.BR ares_fds (3)
are ready for reading and writing. (The easiest way to determine this
information is to invoke
descriptors specified by \fIares_fds(3)\fP are ready for reading and writing.
(The easiest way to determine this information is to invoke
.B select
with a timeout no greater than the timeout given by
.BR ares_timeout (3)).
with a timeout no greater than the timeout given by \fIares_timeout(3)\fP ).
.PP
The
.B ares_process

View File

@@ -13,46 +13,57 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <sys/socket.h>
#ifdef HAVE_SYS_UIO_H
#include <sys/uio.h>
#endif
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/nameser.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#endif
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <errno.h>
#include "ares.h"
#include "ares_dns.h"
#include "ares_private.h"
#if (defined(WIN32) || defined(WATT32)) && !defined(MSDOS)
#define GET_ERRNO() WSAGetLastError()
#else
#define GET_ERRNO() errno
#endif
static void write_tcp_data(ares_channel channel, fd_set *write_fds,
time_t now);
time_t now);
static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now);
static void read_udp_packets(ares_channel channel, fd_set *read_fds,
time_t now);
time_t now);
static void process_timeouts(ares_channel channel, time_t now);
static void process_answer(ares_channel channel, unsigned char *abuf,
int alen, int whichserver, int tcp, int now);
int alen, int whichserver, int tcp, int now);
static void handle_error(ares_channel channel, int whichserver, time_t now);
static void next_server(ares_channel channel, struct query *query, time_t now);
static struct query *next_server(ares_channel channel, struct query *query, time_t now);
static int open_tcp_socket(ares_channel channel, struct server_state *server);
static int open_udp_socket(ares_channel channel, struct server_state *server);
static int same_questions(const unsigned char *qbuf, int qlen,
const unsigned char *abuf, int alen);
static void end_query(ares_channel channel, struct query *query, int status,
unsigned char *abuf, int alen);
const unsigned char *abuf, int alen);
static struct query *end_query(ares_channel channel, struct query *query, int status,
unsigned char *abuf, int alen);
/* Something interesting happened on the wire, or there was a timeout.
* See what's up and respond accordingly.
@@ -76,95 +87,91 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
struct server_state *server;
struct send_request *sendreq;
struct iovec *vec;
int i, n, count;
int i;
ssize_t scount;
int wcount;
size_t n;
for (i = 0; i < channel->nservers; i++)
{
/* Make sure server has data to send and is selected in write_fds. */
server = &channel->servers[i];
if (!server->qhead || server->tcp_socket == -1
|| !FD_ISSET(server->tcp_socket, write_fds))
continue;
if (!server->qhead || server->tcp_socket == ARES_SOCKET_BAD
|| !FD_ISSET(server->tcp_socket, write_fds))
continue;
/* Count the number of send queue items. */
n = 0;
for (sendreq = server->qhead; sendreq; sendreq = sendreq->next)
n++;
n++;
#ifdef WIN32
vec = NULL;
#else
/* Allocate iovecs so we can send all our data at once. */
vec = malloc(n * sizeof(struct iovec));
#endif
if (vec)
{
#ifdef WIN32
#else
/* Fill in the iovecs and send. */
n = 0;
for (sendreq = server->qhead; sendreq; sendreq = sendreq->next)
{
vec[n].iov_base = (char *) sendreq->data;
vec[n].iov_len = sendreq->len;
n++;
}
count = writev(server->tcp_socket, vec, n);
free(vec);
if (count < 0)
{
handle_error(channel, i, now);
continue;
}
{
/* Fill in the iovecs and send. */
n = 0;
for (sendreq = server->qhead; sendreq; sendreq = sendreq->next)
{
vec[n].iov_base = (char *) sendreq->data;
vec[n].iov_len = sendreq->len;
n++;
}
wcount = writev(server->tcp_socket, vec, n);
free(vec);
if (wcount < 0)
{
handle_error(channel, i, now);
continue;
}
/* Advance the send queue by as many bytes as we sent. */
while (count)
{
sendreq = server->qhead;
if (count >= sendreq->len)
{
count -= sendreq->len;
server->qhead = sendreq->next;
if (server->qhead == NULL)
server->qtail = NULL;
free(sendreq);
}
else
{
sendreq->data += count;
sendreq->len -= count;
break;
}
}
#endif
}
/* Advance the send queue by as many bytes as we sent. */
while (wcount)
{
sendreq = server->qhead;
if ((size_t)wcount >= sendreq->len)
{
wcount -= sendreq->len;
server->qhead = sendreq->next;
if (server->qhead == NULL)
server->qtail = NULL;
free(sendreq);
}
else
{
sendreq->data += wcount;
sendreq->len -= wcount;
break;
}
}
}
else
{
/* Can't allocate iovecs; just send the first request. */
sendreq = server->qhead;
{
/* Can't allocate iovecs; just send the first request. */
sendreq = server->qhead;
count = send(server->tcp_socket, sendreq->data, sendreq->len, 0);
scount = send(server->tcp_socket, sendreq->data, sendreq->len, 0);
if (count < 0)
{
handle_error(channel, i, now);
continue;
}
if (scount < 0)
{
handle_error(channel, i, now);
continue;
}
/* Advance the send queue by as many bytes as we sent. */
if (count == sendreq->len)
{
server->qhead = sendreq->next;
if (server->qhead == NULL)
server->qtail = NULL;
free(sendreq);
}
else
{
sendreq->data += count;
sendreq->len -= count;
}
}
/* Advance the send queue by as many bytes as we sent. */
if ((size_t)scount == sendreq->len)
{
server->qhead = sendreq->next;
if (server->qhead == NULL)
server->qtail = NULL;
free(sendreq);
}
else
{
sendreq->data += scount;
sendreq->len -= scount;
}
}
}
}
@@ -181,68 +188,70 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now)
{
/* Make sure the server has a socket and is selected in read_fds. */
server = &channel->servers[i];
if (server->tcp_socket == -1 || !FD_ISSET(server->tcp_socket, read_fds))
continue;
if (server->tcp_socket == ARES_SOCKET_BAD ||
!FD_ISSET(server->tcp_socket, read_fds))
continue;
if (server->tcp_lenbuf_pos != 2)
{
/* We haven't yet read a length word, so read that (or
* what's left to read of it).
*/
{
/* We haven't yet read a length word, so read that (or
* what's left to read of it).
*/
count = recv(server->tcp_socket,
server->tcp_lenbuf + server->tcp_buffer_pos,
2 - server->tcp_buffer_pos, 0);
if (count <= 0)
{
handle_error(channel, i, now);
continue;
}
if (count <= 0)
{
handle_error(channel, i, now);
continue;
}
server->tcp_lenbuf_pos += count;
if (server->tcp_lenbuf_pos == 2)
{
/* We finished reading the length word. Decode the
server->tcp_lenbuf_pos += count;
if (server->tcp_lenbuf_pos == 2)
{
/* We finished reading the length word. Decode the
* length and allocate a buffer for the data.
*/
server->tcp_length = server->tcp_lenbuf[0] << 8
| server->tcp_lenbuf[1];
server->tcp_buffer = malloc(server->tcp_length);
if (!server->tcp_buffer)
handle_error(channel, i, now);
server->tcp_buffer_pos = 0;
}
}
*/
server->tcp_length = server->tcp_lenbuf[0] << 8
| server->tcp_lenbuf[1];
server->tcp_buffer = malloc(server->tcp_length);
if (!server->tcp_buffer)
handle_error(channel, i, now);
server->tcp_buffer_pos = 0;
}
}
else
{
/* Read data into the allocated buffer. */
count = recv(server->tcp_socket,
server->tcp_buffer + server->tcp_buffer_pos,
server->tcp_length - server->tcp_buffer_pos, 0);
if (count <= 0)
{
handle_error(channel, i, now);
continue;
}
{
/* Read data into the allocated buffer. */
count = recv(server->tcp_socket,
server->tcp_buffer + server->tcp_buffer_pos,
server->tcp_length - server->tcp_buffer_pos, 0);
if (count <= 0)
{
handle_error(channel, i, now);
continue;
}
server->tcp_buffer_pos += count;
if (server->tcp_buffer_pos == server->tcp_length)
{
/* We finished reading this answer; process it and
server->tcp_buffer_pos += count;
if (server->tcp_buffer_pos == server->tcp_length)
{
/* We finished reading this answer; process it and
* prepare to read another length word.
*/
process_answer(channel, server->tcp_buffer, server->tcp_length,
i, 1, now);
free(server->tcp_buffer);
server->tcp_buffer = NULL;
server->tcp_lenbuf_pos = 0;
}
}
*/
process_answer(channel, server->tcp_buffer, server->tcp_length,
i, 1, now);
if (server->tcp_buffer)
free(server->tcp_buffer);
server->tcp_buffer = NULL;
server->tcp_lenbuf_pos = 0;
}
}
}
}
/* If any UDP sockets select true for reading, process them. */
static void read_udp_packets(ares_channel channel, fd_set *read_fds,
time_t now)
time_t now)
{
struct server_state *server;
int i, count;
@@ -253,12 +262,13 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
/* Make sure the server has a socket and is selected in read_fds. */
server = &channel->servers[i];
if (server->udp_socket == -1 || !FD_ISSET(server->udp_socket, read_fds))
continue;
if (server->udp_socket == ARES_SOCKET_BAD ||
!FD_ISSET(server->udp_socket, read_fds))
continue;
count = recv(server->udp_socket, buf, sizeof(buf), 0);
if (count <= 0)
handle_error(channel, i, now);
handle_error(channel, i, now);
process_answer(channel, buf, count, i, 0, now);
}
@@ -273,16 +283,16 @@ static void process_timeouts(ares_channel channel, time_t now)
{
next = query->next;
if (query->timeout != 0 && now >= query->timeout)
{
query->error_status = ARES_ETIMEOUT;
next_server(channel, query, now);
}
{
query->error_status = ARES_ETIMEOUT;
next = next_server(channel, query, now);
}
}
}
/* Handle an answer from a server. */
static void process_answer(ares_channel channel, unsigned char *abuf,
int alen, int whichserver, int tcp, int now)
int alen, int whichserver, int tcp, int now)
{
int id, tc, rcode;
struct query *query;
@@ -301,7 +311,7 @@ static void process_answer(ares_channel channel, unsigned char *abuf,
for (query = channel->queries; query; query = query->next)
{
if (query->qid == id)
break;
break;
}
if (!query)
return;
@@ -313,10 +323,10 @@ static void process_answer(ares_channel channel, unsigned char *abuf,
if ((tc || alen > PACKETSZ) && !tcp && !(channel->flags & ARES_FLAG_IGNTC))
{
if (!query->using_tcp)
{
query->using_tcp = 1;
ares__send_query(channel, query, now);
}
{
query->using_tcp = 1;
ares__send_query(channel, query, now);
}
return;
}
@@ -332,18 +342,18 @@ static void process_answer(ares_channel channel, unsigned char *abuf,
if (!(channel->flags & ARES_FLAG_NOCHECKRESP))
{
if (rcode == SERVFAIL || rcode == NOTIMP || rcode == REFUSED)
{
query->skip_server[whichserver] = 1;
if (query->server == whichserver)
next_server(channel, query, now);
return;
}
{
query->skip_server[whichserver] = 1;
if (query->server == whichserver)
next_server(channel, query, now);
return;
}
if (!same_questions(query->qbuf, query->qlen, abuf, alen))
{
if (query->server == whichserver)
next_server(channel, query, now);
return;
}
{
if (query->server == whichserver)
next_server(channel, query, now);
return;
}
}
end_query(channel, query, ARES_SUCCESS, abuf, alen);
@@ -351,7 +361,7 @@ static void process_answer(ares_channel channel, unsigned char *abuf,
static void handle_error(ares_channel channel, int whichserver, time_t now)
{
struct query *query;
struct query *query, *next;
/* Reset communications with this server. */
ares__close_sockets(&channel->servers[whichserver]);
@@ -359,37 +369,39 @@ static void handle_error(ares_channel channel, int whichserver, time_t now)
/* Tell all queries talking to this server to move on and not try
* this server again.
*/
for (query = channel->queries; query; query = query->next)
for (query = channel->queries; query; query = next)
{
next = query->next;
if (query->server == whichserver)
{
query->skip_server[whichserver] = 1;
next_server(channel, query, now);
}
{
query->skip_server[whichserver] = 1;
next = next_server(channel, query, now);
}
}
}
static void next_server(ares_channel channel, struct query *query, time_t now)
static struct query *next_server(ares_channel channel, struct query *query, time_t now)
{
/* Advance to the next server or try. */
query->server++;
for (; query->try < channel->tries; query->try++)
{
for (; query->server < channel->nservers; query->server++)
{
if (!query->skip_server[query->server])
{
ares__send_query(channel, query, now);
return;
}
}
{
if (!query->skip_server[query->server])
{
ares__send_query(channel, query, now);
return (query->next);
}
}
query->server = 0;
/* Only one try if we're using TCP. */
if (query->using_tcp)
break;
break;
}
end_query(channel, query, query->error_status, NULL, 0);
return end_query(channel, query, query->error_status, NULL, 0);
}
void ares__send_query(ares_channel channel, struct query *query, time_t now)
@@ -403,112 +415,121 @@ void ares__send_query(ares_channel channel, struct query *query, time_t now)
/* Make sure the TCP socket for this server is set up and queue
* a send request.
*/
if (server->tcp_socket == -1)
{
if (open_tcp_socket(channel, server) == -1)
{
query->skip_server[query->server] = 1;
next_server(channel, query, now);
return;
}
}
sendreq = malloc(sizeof(struct send_request));
if (server->tcp_socket == ARES_SOCKET_BAD)
{
if (open_tcp_socket(channel, server) == -1)
{
query->skip_server[query->server] = 1;
next_server(channel, query, now);
return;
}
}
sendreq = calloc(sizeof(struct send_request), 1);
if (!sendreq)
end_query(channel, query, ARES_ENOMEM, NULL, 0);
{
end_query(channel, query, ARES_ENOMEM, NULL, 0);
return;
}
sendreq->data = query->tcpbuf;
sendreq->len = query->tcplen;
sendreq->next = NULL;
if (server->qtail)
server->qtail->next = sendreq;
server->qtail->next = sendreq;
else
server->qhead = sendreq;
server->qhead = sendreq;
server->qtail = sendreq;
query->timeout = 0;
}
else
{
if (server->udp_socket == -1)
{
if (open_udp_socket(channel, server) == -1)
{
query->skip_server[query->server] = 1;
next_server(channel, query, now);
return;
}
}
if (server->udp_socket == ARES_SOCKET_BAD)
{
if (open_udp_socket(channel, server) == -1)
{
query->skip_server[query->server] = 1;
next_server(channel, query, now);
return;
}
}
if (send(server->udp_socket, query->qbuf, query->qlen, 0) == -1)
{
query->skip_server[query->server] = 1;
next_server(channel, query, now);
return;
}
{
query->skip_server[query->server] = 1;
next_server(channel, query, now);
return;
}
query->timeout = now
+ ((query->try == 0) ? channel->timeout
: channel->timeout << query->try / channel->nservers);
+ ((query->try == 0) ? channel->timeout
: channel->timeout << query->try / channel->nservers);
}
}
static int open_tcp_socket(ares_channel channel, struct server_state *server)
{
int s, flags;
struct sockaddr_in sin;
ares_socket_t s;
int flags;
struct sockaddr_in sockin;
/* Acquire a socket. */
s = socket(AF_INET, SOCK_STREAM, 0);
if (s == -1)
if (s == ARES_SOCKET_BAD)
return -1;
/* Set the socket non-blocking. */
#ifdef WIN32
#if defined(WIN32) || defined(WATT32)
flags = 1;
ioctlsocket(s, FIONBIO, &flags);
#else
if (fcntl(s, F_GETFL, &flags) == -1)
{
close(s);
return -1;
}
flags &= O_NONBLOCK;
if (fcntl(s, F_SETFL, flags) == -1)
{
close(s);
return -1;
}
#endif
/* Connect to the server. */
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr = server->addr;
sin.sin_port = channel->tcp_port;
if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) == -1
&& errno != EINPROGRESS)
flags = fcntl(s, F_GETFL, 0);
if (flags == -1)
{
closesocket(s);
return -1;
}
flags |= O_NONBLOCK;
if (fcntl(s, F_SETFL, flags) == -1)
{
closesocket(s);
return -1;
}
#endif
/* Connect to the server. */
memset(&sockin, 0, sizeof(sockin));
sockin.sin_family = AF_INET;
sockin.sin_addr = server->addr;
sockin.sin_port = channel->tcp_port;
if (connect(s, (struct sockaddr *) &sockin, sizeof(sockin)) == -1) {
int err = GET_ERRNO();
if (err != EINPROGRESS && err != EWOULDBLOCK) {
closesocket(s);
return -1;
}
}
server->tcp_buffer_pos = 0;
server->tcp_socket = s;
return 0;
}
static int open_udp_socket(ares_channel channel, struct server_state *server)
{
int s;
struct sockaddr_in sin;
ares_socket_t s;
struct sockaddr_in sockin;
/* Acquire a socket. */
s = socket(AF_INET, SOCK_DGRAM, 0);
if (s == -1)
if (s == ARES_SOCKET_BAD)
return -1;
/* Connect to the server. */
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr = server->addr;
sin.sin_port = channel->udp_port;
if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) == -1)
memset(&sockin, 0, sizeof(sockin));
sockin.sin_family = AF_INET;
sockin.sin_addr = server->addr;
sockin.sin_port = channel->udp_port;
if (connect(s, (struct sockaddr *) &sockin, sizeof(sockin)) == -1)
{
closesocket(s);
return -1;
@@ -519,13 +540,13 @@ static int open_udp_socket(ares_channel channel, struct server_state *server)
}
static int same_questions(const unsigned char *qbuf, int qlen,
const unsigned char *abuf, int alen)
const unsigned char *abuf, int alen)
{
struct {
const unsigned char *p;
int qdcount;
char *name;
int namelen;
long namelen;
int type;
int dnsclass;
} q, a;
@@ -546,14 +567,14 @@ static int same_questions(const unsigned char *qbuf, int qlen,
{
/* Decode the question in the query. */
if (ares_expand_name(q.p, qbuf, qlen, &q.name, &q.namelen)
!= ARES_SUCCESS)
return 0;
!= ARES_SUCCESS)
return 0;
q.p += q.namelen;
if (q.p + QFIXEDSZ > qbuf + qlen)
{
free(q.name);
return 0;
}
{
free(q.name);
return 0;
}
q.type = DNS_QUESTION_TYPE(q.p);
q.dnsclass = DNS_QUESTION_CLASS(q.p);
q.p += QFIXEDSZ;
@@ -561,55 +582,59 @@ static int same_questions(const unsigned char *qbuf, int qlen,
/* Search for this question in the answer. */
a.p = abuf + HFIXEDSZ;
for (j = 0; j < a.qdcount; j++)
{
/* Decode the question in the answer. */
if (ares_expand_name(a.p, abuf, alen, &a.name, &a.namelen)
!= ARES_SUCCESS)
{
free(q.name);
return 0;
}
a.p += a.namelen;
if (a.p + QFIXEDSZ > abuf + alen)
{
free(q.name);
free(a.name);
return 0;
}
a.type = DNS_QUESTION_TYPE(a.p);
a.dnsclass = DNS_QUESTION_CLASS(a.p);
a.p += QFIXEDSZ;
{
/* Decode the question in the answer. */
if (ares_expand_name(a.p, abuf, alen, &a.name, &a.namelen)
!= ARES_SUCCESS)
{
free(q.name);
return 0;
}
a.p += a.namelen;
if (a.p + QFIXEDSZ > abuf + alen)
{
free(q.name);
free(a.name);
return 0;
}
a.type = DNS_QUESTION_TYPE(a.p);
a.dnsclass = DNS_QUESTION_CLASS(a.p);
a.p += QFIXEDSZ;
/* Compare the decoded questions. */
if (strcasecmp(q.name, a.name) == 0 && q.type == a.type
&& q.dnsclass == a.dnsclass)
{
free(a.name);
break;
}
free(a.name);
}
/* Compare the decoded questions. */
if (strcasecmp(q.name, a.name) == 0 && q.type == a.type
&& q.dnsclass == a.dnsclass)
{
free(a.name);
break;
}
free(a.name);
}
free(q.name);
if (j == a.qdcount)
return 0;
return 0;
}
return 1;
}
static void end_query(ares_channel channel, struct query *query, int status,
unsigned char *abuf, int alen)
static struct query *end_query (ares_channel channel, struct query *query, int status,
unsigned char *abuf, int alen)
{
struct query **q;
struct query **q, *next;
int i;
query->callback(query->arg, status, abuf, alen);
for (q = &channel->queries; *q; q = &(*q)->next)
{
if (*q == query)
break;
break;
}
*q = query->next;
if (*q)
next = (*q)->next;
else
next = NULL;
free(query->tcpbuf);
free(query->skip_server);
free(query);
@@ -620,6 +645,7 @@ static void end_query(ares_channel channel, struct query *query, int status,
if (!channel->queries && !(channel->flags & ARES_FLAG_STAYOPEN))
{
for (i = 0; i < channel->nservers; i++)
ares__close_sockets(&channel->servers[i]);
ares__close_sockets(&channel->servers[i]);
}
return (next);
}

View File

@@ -13,11 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
@@ -37,7 +36,7 @@ struct qquery {
static void qcallback(void *arg, int status, unsigned char *abuf, int alen);
void ares_query(ares_channel channel, const char *name, int dnsclass,
int type, ares_callback callback, void *arg)
int type, ares_callback callback, void *arg)
{
struct qquery *qquery;
unsigned char *qbuf;
@@ -46,7 +45,7 @@ void ares_query(ares_channel channel, const char *name, int dnsclass,
/* Compose the query. */
rd = !(channel->flags & ARES_FLAG_NORECURSE);
status = ares_mkquery(name, dnsclass, type, channel->next_id, rd, &qbuf,
&qlen);
&qlen);
channel->next_id++;
if (status != ARES_SUCCESS)
{
@@ -86,26 +85,26 @@ static void qcallback(void *arg, int status, unsigned char *abuf, int alen)
/* Convert errors. */
switch (rcode)
{
case NOERROR:
status = (ancount > 0) ? ARES_SUCCESS : ARES_ENODATA;
break;
case FORMERR:
status = ARES_EFORMERR;
break;
case SERVFAIL:
status = ARES_ESERVFAIL;
break;
case NXDOMAIN:
status = ARES_ENOTFOUND;
break;
case NOTIMP:
status = ARES_ENOTIMP;
break;
case REFUSED:
status = ARES_EREFUSED;
break;
}
{
case NOERROR:
status = (ancount > 0) ? ARES_SUCCESS : ARES_ENODATA;
break;
case FORMERR:
status = ARES_EFORMERR;
break;
case SERVFAIL:
status = ARES_ESERVFAIL;
break;
case NXDOMAIN:
status = ARES_ENOTFOUND;
break;
case NOTIMP:
status = ARES_ENOTIMP;
break;
case REFUSED:
status = ARES_EREFUSED;
break;
}
qquery->callback(qquery->arg, status, abuf, alen);
}
free(qquery);

View File

@@ -13,14 +13,13 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#endif
@@ -30,26 +29,26 @@ static const char rcsid[] = "$Id$";
struct search_query {
/* Arguments passed to ares_search */
ares_channel channel;
char *name; /* copied into an allocated buffer */
char *name; /* copied into an allocated buffer */
int dnsclass;
int type;
ares_callback callback;
void *arg;
int status_as_is; /* error status from trying as-is */
int next_domain; /* next search domain to try */
int trying_as_is; /* current query is for name as-is */
int status_as_is; /* error status from trying as-is */
int next_domain; /* next search domain to try */
int trying_as_is; /* current query is for name as-is */
};
static void search_callback(void *arg, int status, unsigned char *abuf,
int alen);
int alen);
static void end_squery(struct search_query *squery, int status,
unsigned char *abuf, int alen);
unsigned char *abuf, int alen);
static int cat_domain(const char *name, const char *domain, char **s);
static int single_domain(ares_channel channel, const char *name, char **s);
void ares_search(ares_channel channel, const char *name, int dnsclass,
int type, ares_callback callback, void *arg)
int type, ares_callback callback, void *arg)
{
struct search_query *squery;
char *s;
@@ -100,7 +99,7 @@ void ares_search(ares_channel channel, const char *name, int dnsclass,
for (p = name; *p; p++)
{
if (*p == '.')
ndots++;
ndots++;
}
/* If ndots is at least the channel ndots threshold (usually 1),
@@ -121,17 +120,22 @@ void ares_search(ares_channel channel, const char *name, int dnsclass,
squery->trying_as_is = 0;
status = cat_domain(name, channel->domains[0], &s);
if (status == ARES_SUCCESS)
{
ares_query(channel, s, dnsclass, type, search_callback, squery);
free(s);
}
{
ares_query(channel, s, dnsclass, type, search_callback, squery);
free(s);
}
else
callback(arg, status, NULL, 0);
{
/* failed, free the malloc()ed memory */
free(squery->name);
free(squery);
callback(arg, status, NULL, 0);
}
}
}
static void search_callback(void *arg, int status, unsigned char *abuf,
int alen)
int alen)
{
struct search_query *squery = (struct search_query *) arg;
ares_channel channel = squery->channel;
@@ -145,37 +149,37 @@ static void search_callback(void *arg, int status, unsigned char *abuf,
{
/* Save the status if we were trying as-is. */
if (squery->trying_as_is)
squery->status_as_is = status;
squery->status_as_is = status;
if (squery->next_domain < channel->ndomains)
{
/* Try the next domain. */
status = cat_domain(squery->name,
channel->domains[squery->next_domain], &s);
if (status != ARES_SUCCESS)
end_squery(squery, status, NULL, 0);
else
{
squery->trying_as_is = 0;
squery->next_domain++;
ares_query(channel, s, squery->dnsclass, squery->type,
search_callback, squery);
free(s);
}
}
{
/* Try the next domain. */
status = cat_domain(squery->name,
channel->domains[squery->next_domain], &s);
if (status != ARES_SUCCESS)
end_squery(squery, status, NULL, 0);
else
{
squery->trying_as_is = 0;
squery->next_domain++;
ares_query(channel, s, squery->dnsclass, squery->type,
search_callback, squery);
free(s);
}
}
else if (squery->status_as_is == -1)
{
/* Try the name as-is at the end. */
squery->trying_as_is = 1;
ares_query(channel, squery->name, squery->dnsclass, squery->type,
search_callback, squery);
}
{
/* Try the name as-is at the end. */
squery->trying_as_is = 1;
ares_query(channel, squery->name, squery->dnsclass, squery->type,
search_callback, squery);
}
else
end_squery(squery, squery->status_as_is, NULL, 0);
end_squery(squery, squery->status_as_is, NULL, 0);
}
}
static void end_squery(struct search_query *squery, int status,
unsigned char *abuf, int alen)
unsigned char *abuf, int alen)
{
squery->callback(squery->arg, status, abuf, alen);
free(squery->name);
@@ -185,7 +189,8 @@ static void end_squery(struct search_query *squery, int status,
/* Concatenate two domains. */
static int cat_domain(const char *name, const char *domain, char **s)
{
int nlen = strlen(name), dlen = strlen(domain);
size_t nlen = strlen(name);
size_t dlen = strlen(domain);
*s = malloc(nlen + 1 + dlen + 1);
if (!*s)
@@ -203,7 +208,7 @@ static int cat_domain(const char *name, const char *domain, char **s)
*/
static int single_domain(ares_channel channel, const char *name, char **s)
{
int len = strlen(name);
size_t len = strlen(name);
const char *hostaliases;
FILE *fp;
char *line = NULL;
@@ -224,41 +229,41 @@ static int single_domain(ares_channel channel, const char *name, char **s)
/* The name might be a host alias. */
hostaliases = getenv("HOSTALIASES");
if (hostaliases)
{
fp = fopen(hostaliases, "r");
if (fp)
{
while ((status = ares__read_line(fp, &line, &linesize))
== ARES_SUCCESS)
{
if (strncasecmp(line, name, len) != 0 ||
!isspace((unsigned char)line[len]))
continue;
p = line + len;
while (isspace((unsigned char)*p))
p++;
if (*p)
{
q = p + 1;
while (*q && !isspace((unsigned char)*q))
q++;
*s = malloc(q - p + 1);
if (*s)
{
memcpy(*s, p, q - p);
(*s)[q - p] = 0;
}
free(line);
fclose(fp);
return (*s) ? ARES_SUCCESS : ARES_ENOMEM;
}
}
free(line);
fclose(fp);
if (status != ARES_SUCCESS)
return status;
}
}
{
fp = fopen(hostaliases, "r");
if (fp)
{
while ((status = ares__read_line(fp, &line, &linesize))
== ARES_SUCCESS)
{
if (strncasecmp(line, name, len) != 0 ||
!isspace((unsigned char)line[len]))
continue;
p = line + len;
while (isspace((unsigned char)*p))
p++;
if (*p)
{
q = p + 1;
while (*q && !isspace((unsigned char)*q))
q++;
*s = malloc(q - p + 1);
if (*s)
{
memcpy(*s, p, q - p);
(*s)[q - p] = 0;
}
free(line);
fclose(fp);
return (*s) ? ARES_SUCCESS : ARES_ENOMEM;
}
}
free(line);
fclose(fp);
if (status != ARES_SUCCESS)
return status;
}
}
}
if (channel->flags & ARES_FLAG_NOSEARCH || channel->ndomains == 0)

View File

@@ -24,8 +24,7 @@ ares_send \- Initiate a DNS query
.B typedef void (*ares_callback)(void *\fIarg\fP, int \fIstatus\fP,
.B unsigned char *\fIabuf\fP, int \fIalen\fP)
.PP
.B
void ares_send(ares_channel \fIchannel\fP, const unsigned char *\fIqbuf\fP,
.B void ares_send(ares_channel \fIchannel\fP, const unsigned char *\fIqbuf\fP,
.B int \fIqlen\fP, ares_callback \fIcallback\fP, void *\fIarg\fP)
.fi
.SH DESCRIPTION

View File

@@ -13,11 +13,10 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
@@ -32,7 +31,7 @@ static const char rcsid[] = "$Id$";
#include "ares_private.h"
void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
ares_callback callback, void *arg)
ares_callback callback, void *arg)
{
struct query *query;
int i;

View File

@@ -21,23 +21,17 @@ ares_strerror \- Get the description of an ares library error code
.nf
.B #include <ares.h>
.PP
.B const char *ares_strerror(int \fIcode\fP, char **\fImemptr\fP)
.B const char *ares_strerror(int \fIcode\fP)
.fi
.SH DESCRIPTION
The
.B ares_strerror
function gets the description of the ares library error code
.IR code ,
returning the result as a NUL-terminated C string. A pointer to
allocated data necessary to compose the error description may be
stored in the variable pointed to by
.IR memptr .
It is the caller's responsibility to invoke
.BR ares_free_errmem (3)
with the value of that variable when the error description is no
longer needed.
.SH SEE ALSO
.BR ares_free_errmem (3)
returning the result as a NUL-terminated C string.
.SH NOTES
This function is not compatible with ares, it takes a different set of
arguments.
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br

View File

@@ -13,16 +13,13 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <assert.h>
#include "ares.h"
const char *ares_strerror(int code, char **memptr)
const char *ares_strerror(int code)
{
/* A future implementation may want to handle internationalization.
* For now, just return a string literal from a table.
*/
/* Return a string literal from a table. */
const char *errtext[] = {
"Successful completion",
"DNS server returned answer with no data",
@@ -39,9 +36,11 @@ const char *ares_strerror(int code, char **memptr)
"Timeout while contacting DNS servers",
"End of file",
"Error reading file",
"Out of memory"
"Out of memory",
"Channel is being destroyed",
"Misformatted string"
};
assert(code >= 0 && code < (sizeof(errtext) / sizeof(*errtext)));
assert(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext)));
return errtext[code];
}

View File

@@ -27,10 +27,8 @@ ares_fds \- Get file descriptors to select on for name service
.SH DESCRIPTION
The
.B ares_timeout
function determines the maximum time for which the caller should wait
before invoking
.BR ares_process (3)
to process timeouts. The parameter
function determines the maximum time for which the caller should wait before
invoking \fIares_process(3)\fP to process timeouts. The parameter
.I maxtv
specifies a existing maximum timeout, or
.B NULL

View File

@@ -13,22 +13,20 @@
* without express or implied warranty.
*/
static const char rcsid[] = "$Id$";
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#else
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <time.h>
#include "ares.h"
#include "ares_private.h"
struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv,
struct timeval *tvbuf)
struct timeval *tvbuf)
{
struct query *query;
time_t now;
@@ -44,12 +42,12 @@ struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv,
for (query = channel->queries; query; query = query->next)
{
if (query->timeout == 0)
continue;
continue;
offset = query->timeout - now;
if (offset < 0)
offset = 0;
offset = 0;
if (min_offset == -1 || offset < min_offset)
min_offset = offset;
min_offset = offset;
}
/* If we found a minimum timeout and it's sooner than the one

41
ares/ares_version.3 Normal file
View File

@@ -0,0 +1,41 @@
.\" $Id$
.\"
.\" Copyright 2004 by Daniel Stenberg
.\"
.\" Permission to use, copy, modify, and distribute this
.\" software and its documentation for any purpose and without
.\" fee is hereby granted, provided that the above copyright
.\" notice appear in all copies and that both that copyright
.\" notice and this permission notice appear in supporting
.\" documentation, and that the name of M.I.T. not be used in
.\" advertising or publicity pertaining to distribution of the
.\" software without specific, written prior permission.
.\" M.I.T. makes no representations about the suitability of
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_VERSION 3 "29 January 2004"
.SH NAME
ares_version \- Get the version number of the library
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B const char *ares_version(int *\fIversion\fP)
.fi
.SH DESCRIPTION
The
.B ares_version
function gets the library version as a string and optionally as an integer
stored in the
.IR version ,
argument. If you pass a NULL, no integer is attempted to be returned.
The integer is built up as 24bit number, with 8 separate bits used for major
number, minor number and patch number. This makes a version string such as
1.2.3 will be returned as the hexadecimal number 0x010203 (decimal 66051).
.SH NOTES
This function is not compatible with ares.
.SH AUTHOR
Daniel Stenberg

View File

@@ -1,8 +1,9 @@
/* $Id$ */
#include "setup.h"
#include "ares_version.h"
char *ares_version(int *version)
const char *ares_version(int *version)
{
if(version)
*version = ARES_VERSION;

View File

@@ -4,14 +4,14 @@
#define ARES__VERSION_H
#define ARES_VERSION_MAJOR 1
#define ARES_VERSION_MINOR 0
#define ARES_VERSION_MINOR 2
#define ARES_VERSION_PATCH 0
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
(ARES_VERSION_MINOR<<8)|\
(ARES_VERSION_PATCH))
#define ARES_VERSION_STR "1.0.0"
#define ARES_VERSION_STR "1.2.0"
char *ares_version(int *version);
const char *ares_version(int *version);
#endif

7
ares/buildconf Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
libtoolize --copy --automake --force
aclocal
autoheader
autoconf
automake --add-missing

1388
ares/config.guess vendored

File diff suppressed because it is too large Load Diff

1489
ares/config.sub vendored

File diff suppressed because it is too large Load Diff

66
ares/configure.ac Normal file
View File

@@ -0,0 +1,66 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(ares_init.c)
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
AM_INIT_AUTOMAKE(c-ares, CVS)
AC_PROG_CC
AC_PROG_INSTALL
case $host_os in
solaris*)
AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used])
;;
esac
# check for ssize_t
AC_CHECK_TYPE(ssize_t, ,
AC_DEFINE(ssize_t, int, [the signed version of size_t]))
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(socket, socket)
dnl ************************************************************
dnl Option to switch on debug options. This makes an assumption that
dnl this is built as an 'ares' subdir in the curl source tree. Subject for
dnl improval in the future!
dnl
AC_MSG_CHECKING([whether to enable debug options])
AC_ARG_ENABLE(debug,
AC_HELP_STRING([--enable-debug],[Enable pedantic debug options])
AC_HELP_STRING([--disable-debug],[Disable debug options]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
;;
*) AC_MSG_RESULT(yes)
dnl when doing the debug stuff, use static library only
AC_DISABLE_SHARED
dnl Checks for standard header files, to make memdebug.h inclusions bettter
AC_HEADER_STDC
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include"
CFLAGS="$CFLAGS -g"
dnl set compiler "debug" options to become more picky, and remove
dnl optimize options from CFLAGS
CURL_CC_DEBUG_OPTS
;;
esac ],
AC_MSG_RESULT(no)
)
AC_PROG_LIBTOOL
dnl check for a few basic system headers we need
AC_CHECK_HEADERS(
sys/types.h \
sys/time.h \
sys/select.h \
sys/socket.h \
)
AC_OUTPUT(Makefile)

View File

@@ -1,18 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(ares_init.c)
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_RANLIB
AC_CANONICAL_HOST
case $host_os in
solaris*)
AC_DEFINE(ETC_INET)
;;
esac
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(socket, socket)
AC_OUTPUT(Makefile)

View File

@@ -12,82 +12,47 @@ if(!-f "ares.h") {
exit;
}
my ($major, $minor, $patch)=split(/\./, $version);
$major += 0;
$minor += 0;
$patch += 0;
open(VER, "<ares_version.h") ||
die "can't open ares_version.h";
open(NEWV, ">ares_version.h.dist");
while(<VER>) {
$_ =~ s/^\#define ARES_VERSION_MAJOR .*/\#define ARES_VERSION_MAJOR $major/;
$_ =~ s/^\#define ARES_VERSION_MINOR .*/\#define ARES_VERSION_MINOR $minor/;
$_ =~ s/^\#define ARES_VERSION_PATCH .*/\#define ARES_VERSION_PATCH $patch/;
$_ =~ s/^\#define ARES_VERSION_STR .*/\#define ARES_VERSION_STR \"$version\"/;
print NEWV $_;
}
close(VER);
close(NEWV);
print "ares_version.h.dist created\n";
if(!-f "configure") {
`autoconf`;
print "running buildconf\n";
`./buildconf`;
}
print "adding $version in the configure.ac file\n";
`sed -e 's/AM_INIT_AUTOMAKE(c-ares, CVS)/AM_INIT_AUTOMAKE(c-ares, $version)/' < configure.ac > configure.ac-rel`;
@files=`find . -name FILES`;
# now make a new configure script with this
print "makes a new configure script\n";
`autoconf configure.ac-rel >configure`;
my @entries;
# now run this new configure to get a fine makefile
print "running configure\n";
`./configure`;
sub dirpart {
my ($file)=@_;
my @p=split("/", $file);
$p[$#p]=""; # blank the last one
my $dir=join("/", @p);
# now make the actual tarball
print "running make dist\n";
`make dist`;
$dir =~ s/^\.\///; # cut off ./ beginnings
print "removing temporary configure.ac file\n";
`rm configure.ac-rel`;
$dir =~ s/\/$//; # off / trailers
if(!$dir) {
$dir = ".";
}
return $dir;
}
sub add {
my ($file)=@_;
my $dir=dirpart($file);
open(FILE, "<$file");
while(<FILE>) {
if($_ =~ /^ *\#/) {
next;
}
chomp;
push @entries, "$dir/$_";
}
close(FILE);
}
for(@files) {
chomp;
add($_);
}
sub mkalldir {
my ($dir) = @_;
my @parts = split("/", $dir);
#print "IN: $dir\n";
my $sub="";
for(@parts) {
#print "PART: $_\n";
$sub .= "$_";
if($_ eq "") {
next;
}
mkdir($sub, 0777);
#print "make $sub\n";
$sub .= "/";
}
}
for(@entries) {
my $dir = dirpart("arescurl-$version/$_");
# print "Create $dir\n";
mkalldir($dir);
# print "Copy $_ to $dir\n";
`cp -p $_ $dir`;
}
`tar -cf arescurl-$version.tar arescurl-$version`;
`gzip -9 arescurl-$version.tar`;
`rm -rf arescurl-$version`;
print "NOTE: now cvs tag this release!\n";

View File

@@ -1,12 +1,21 @@
#ifndef ARES_NAMESER_H
#define ARES_NAMESER_H
/* Windows-only header file provided by liren@vivisimo.com to make his Windows
port build */
#ifndef NETWARE
#include <windows.h>
#include <process.h> /* for the _getpid() proto */
#endif /* !NETWARE */
#include <sys/types.h>
#ifndef NETWARE
#define MAXHOSTNAMELEN 256
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
/* Structure for scatter/gather I/O. */
struct iovec
@@ -17,10 +26,16 @@ struct iovec
#define getpid() _getpid()
int strcasecmp(const char *a, const char *b);
int ares_writev (SOCKET s, const struct iovec *vector, size_t count);
#define writev(s,vect,count) ares_writev(s,vect,count)
struct timezone { int dummy; };
int ares_gettimeofday(struct timeval *tv, struct timezone *tz);
#define gettimeofday(tv,tz) ares_gettimeofday(tv,tz)
#endif /* !NETWARE */
#define NS_CMPRSFLGS 0xc0
@@ -154,6 +169,7 @@ typedef enum __ns_rcode {
#define SERVFAIL ns_r_servfail
#define NOTIMP ns_r_notimpl
#define REFUSED ns_r_refused
#undef NOERROR /* it seems this is already defined in winerror.h */
#define NOERROR ns_r_noerror
#define FORMERR ns_r_formerr
#define NXDOMAIN ns_r_nxdomain
@@ -204,3 +220,5 @@ typedef enum __ns_rcode {
#define T_MAILB ns_t_mailb
#define T_MAILA ns_t_maila
#define T_ANY ns_t_any
#endif /* ARES_NAMESER_H */

72
ares/setup.h Normal file
View File

@@ -0,0 +1,72 @@
#ifndef ARES_SETUP_H
#define ARES_SETUP_H
/* Copyright (C) 2004 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. M.I.T. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#else
/* simple work-around for now, for systems without configure support */
#define ssize_t int
#endif
/* Recent autoconf versions define these symbols in config.h. We don't want
them (since they collide with the libcurl ones when we build
--enable-debug) so we undef them again here. */
#undef PACKAGE_STRING
#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION
#undef PACKAGE_BUGREPORT
#undef PACKAGE_NAME
#undef VERSION
#undef PACKAGE
/* now typedef our socket type */
#if defined(WIN32) && !defined(WATT32)
#include <winsock.h>
typedef SOCKET ares_socket_t;
#define ARES_SOCKET_BAD INVALID_SOCKET
#else
typedef int ares_socket_t;
#define ARES_SOCKET_BAD -1
#endif
/* Assume a few thing unless they're set by configure
*/
#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER)
#define HAVE_SYS_TIME_H
#endif
#if !defined(HAVE_UNISTD_H) && !defined(_MSC_VER)
#define HAVE_UNISTD_H
#endif
#if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS)
#define HAVE_SYS_UIO_H
#endif
#if (defined(WIN32) || defined(WATT32)) && \
!(defined(__MINGW32__) || defined(NETWARE))
/* protos for the functions we provide in windows_port.c */
int ares_strncasecmp(const char *s1, const char *s2, int n);
int ares_strcasecmp(const char *s1, const char *s2);
/* use this define magic to prevent us from adding symbol names to the library
that is a high-risk to collide with another libraries' attempts to do the
same */
#define strncasecmp(a,b,c) ares_strncasecmp(a,b,c)
#define strcasecmp(a,b) ares_strcasecmp(a,b)
#endif
#endif /* ARES_SETUP_H */

View File

@@ -7,19 +7,19 @@
CFG=areslib - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE
!MESSAGE NMAKE /f "areslib.mak".
!MESSAGE
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE
!MESSAGE NMAKE /f "areslib.mak" CFG="areslib - Win32 Debug"
!MESSAGE
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE
!MESSAGE "areslib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "areslib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
@@ -74,7 +74,7 @@ LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ENDIF
!ENDIF
# Begin Target
@@ -109,10 +109,6 @@ SOURCE=..\..\ares_fds.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_free_errmem.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_free_hostent.c
# End Source File
# Begin Source File
@@ -157,6 +153,14 @@ SOURCE=..\..\ares_search.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_cancel.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_version.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_send.c
# End Source File
# Begin Source File
@@ -185,6 +189,10 @@ SOURCE=..\..\ares_dns.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_version.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_private.h
# End Source File
# Begin Source File

View File

@@ -1,361 +1,367 @@
# Microsoft Developer Studio Generated NMAKE File, Based on areslib.dsp
!IF "$(CFG)" == ""
CFG=areslib - Win32 Debug
!MESSAGE No configuration specified. Defaulting to areslib - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "areslib - Win32 Release" && "$(CFG)" != "areslib - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "areslib.mak" CFG="areslib - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "areslib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "areslib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "areslib - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\areslib.lib"
CLEAN :
-@erase "$(INTDIR)\ares__close_sockets.obj"
-@erase "$(INTDIR)\ares__get_hostent.obj"
-@erase "$(INTDIR)\ares__read_line.obj"
-@erase "$(INTDIR)\ares_destroy.obj"
-@erase "$(INTDIR)\ares_expand_name.obj"
-@erase "$(INTDIR)\ares_fds.obj"
-@erase "$(INTDIR)\ares_free_errmem.obj"
-@erase "$(INTDIR)\ares_free_hostent.obj"
-@erase "$(INTDIR)\ares_free_string.obj"
-@erase "$(INTDIR)\ares_gethostbyaddr.obj"
-@erase "$(INTDIR)\ares_gethostbyname.obj"
-@erase "$(INTDIR)\ares_init.obj"
-@erase "$(INTDIR)\ares_mkquery.obj"
-@erase "$(INTDIR)\ares_parse_a_reply.obj"
-@erase "$(INTDIR)\ares_parse_ptr_reply.obj"
-@erase "$(INTDIR)\ares_process.obj"
-@erase "$(INTDIR)\ares_query.obj"
-@erase "$(INTDIR)\ares_search.obj"
-@erase "$(INTDIR)\ares_send.obj"
-@erase "$(INTDIR)\ares_strerror.obj"
-@erase "$(INTDIR)\ares_timeout.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\windows_port.obj"
-@erase "$(OUTDIR)\areslib.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\areslib.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\areslib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\areslib.lib"
LIB32_OBJS= \
"$(INTDIR)\ares__close_sockets.obj" \
"$(INTDIR)\ares__get_hostent.obj" \
"$(INTDIR)\ares__read_line.obj" \
"$(INTDIR)\ares_destroy.obj" \
"$(INTDIR)\ares_expand_name.obj" \
"$(INTDIR)\ares_fds.obj" \
"$(INTDIR)\ares_free_errmem.obj" \
"$(INTDIR)\ares_free_hostent.obj" \
"$(INTDIR)\ares_free_string.obj" \
"$(INTDIR)\ares_gethostbyaddr.obj" \
"$(INTDIR)\ares_gethostbyname.obj" \
"$(INTDIR)\ares_init.obj" \
"$(INTDIR)\ares_mkquery.obj" \
"$(INTDIR)\ares_parse_a_reply.obj" \
"$(INTDIR)\ares_parse_ptr_reply.obj" \
"$(INTDIR)\ares_process.obj" \
"$(INTDIR)\ares_query.obj" \
"$(INTDIR)\ares_search.obj" \
"$(INTDIR)\ares_send.obj" \
"$(INTDIR)\ares_strerror.obj" \
"$(INTDIR)\ares_timeout.obj" \
"$(INTDIR)\windows_port.obj"
"$(OUTDIR)\areslib.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ELSEIF "$(CFG)" == "areslib - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\areslib.lib"
CLEAN :
-@erase "$(INTDIR)\ares__close_sockets.obj"
-@erase "$(INTDIR)\ares__get_hostent.obj"
-@erase "$(INTDIR)\ares__read_line.obj"
-@erase "$(INTDIR)\ares_destroy.obj"
-@erase "$(INTDIR)\ares_expand_name.obj"
-@erase "$(INTDIR)\ares_fds.obj"
-@erase "$(INTDIR)\ares_free_errmem.obj"
-@erase "$(INTDIR)\ares_free_hostent.obj"
-@erase "$(INTDIR)\ares_free_string.obj"
-@erase "$(INTDIR)\ares_gethostbyaddr.obj"
-@erase "$(INTDIR)\ares_gethostbyname.obj"
-@erase "$(INTDIR)\ares_init.obj"
-@erase "$(INTDIR)\ares_mkquery.obj"
-@erase "$(INTDIR)\ares_parse_a_reply.obj"
-@erase "$(INTDIR)\ares_parse_ptr_reply.obj"
-@erase "$(INTDIR)\ares_process.obj"
-@erase "$(INTDIR)\ares_query.obj"
-@erase "$(INTDIR)\ares_search.obj"
-@erase "$(INTDIR)\ares_send.obj"
-@erase "$(INTDIR)\ares_strerror.obj"
-@erase "$(INTDIR)\ares_timeout.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(INTDIR)\windows_port.obj"
-@erase "$(OUTDIR)\areslib.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\areslib.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\areslib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\areslib.lib"
LIB32_OBJS= \
"$(INTDIR)\ares__close_sockets.obj" \
"$(INTDIR)\ares__get_hostent.obj" \
"$(INTDIR)\ares__read_line.obj" \
"$(INTDIR)\ares_destroy.obj" \
"$(INTDIR)\ares_expand_name.obj" \
"$(INTDIR)\ares_fds.obj" \
"$(INTDIR)\ares_free_errmem.obj" \
"$(INTDIR)\ares_free_hostent.obj" \
"$(INTDIR)\ares_free_string.obj" \
"$(INTDIR)\ares_gethostbyaddr.obj" \
"$(INTDIR)\ares_gethostbyname.obj" \
"$(INTDIR)\ares_init.obj" \
"$(INTDIR)\ares_mkquery.obj" \
"$(INTDIR)\ares_parse_a_reply.obj" \
"$(INTDIR)\ares_parse_ptr_reply.obj" \
"$(INTDIR)\ares_process.obj" \
"$(INTDIR)\ares_query.obj" \
"$(INTDIR)\ares_search.obj" \
"$(INTDIR)\ares_send.obj" \
"$(INTDIR)\ares_strerror.obj" \
"$(INTDIR)\ares_timeout.obj" \
"$(INTDIR)\windows_port.obj"
"$(OUTDIR)\areslib.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("areslib.dep")
!INCLUDE "areslib.dep"
!ELSE
!MESSAGE Warning: cannot find "areslib.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "areslib - Win32 Release" || "$(CFG)" == "areslib - Win32 Debug"
SOURCE=..\..\ares__close_sockets.c
"$(INTDIR)\ares__close_sockets.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares__get_hostent.c
"$(INTDIR)\ares__get_hostent.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares__read_line.c
"$(INTDIR)\ares__read_line.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_destroy.c
"$(INTDIR)\ares_destroy.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_expand_name.c
"$(INTDIR)\ares_expand_name.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_fds.c
"$(INTDIR)\ares_fds.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_free_errmem.c
"$(INTDIR)\ares_free_errmem.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_free_hostent.c
"$(INTDIR)\ares_free_hostent.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_free_string.c
"$(INTDIR)\ares_free_string.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_gethostbyaddr.c
"$(INTDIR)\ares_gethostbyaddr.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_gethostbyname.c
"$(INTDIR)\ares_gethostbyname.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_init.c
"$(INTDIR)\ares_init.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_mkquery.c
"$(INTDIR)\ares_mkquery.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_parse_a_reply.c
"$(INTDIR)\ares_parse_a_reply.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_parse_ptr_reply.c
"$(INTDIR)\ares_parse_ptr_reply.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_process.c
"$(INTDIR)\ares_process.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_query.c
"$(INTDIR)\ares_query.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_search.c
"$(INTDIR)\ares_search.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_send.c
"$(INTDIR)\ares_send.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_strerror.c
"$(INTDIR)\ares_strerror.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_timeout.c
"$(INTDIR)\ares_timeout.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\windows_port.c
"$(INTDIR)\windows_port.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
# Microsoft Developer Studio Generated NMAKE File, Based on areslib.dsp
!IF "$(CFG)" == ""
CFG=areslib - Win32 Debug
!MESSAGE No configuration specified. Defaulting to areslib - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "areslib - Win32 Release" && "$(CFG)" != "areslib - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "areslib.mak" CFG="areslib - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "areslib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "areslib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "areslib - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\areslib.lib"
CLEAN :
-@erase "$(INTDIR)\ares__close_sockets.obj"
-@erase "$(INTDIR)\ares__get_hostent.obj"
-@erase "$(INTDIR)\ares__read_line.obj"
-@erase "$(INTDIR)\ares_destroy.obj"
-@erase "$(INTDIR)\ares_expand_name.obj"
-@erase "$(INTDIR)\ares_fds.obj"
-@erase "$(INTDIR)\ares_free_hostent.obj"
-@erase "$(INTDIR)\ares_free_string.obj"
-@erase "$(INTDIR)\ares_gethostbyaddr.obj"
-@erase "$(INTDIR)\ares_gethostbyname.obj"
-@erase "$(INTDIR)\ares_init.obj"
-@erase "$(INTDIR)\ares_mkquery.obj"
-@erase "$(INTDIR)\ares_parse_a_reply.obj"
-@erase "$(INTDIR)\ares_parse_ptr_reply.obj"
-@erase "$(INTDIR)\ares_process.obj"
-@erase "$(INTDIR)\ares_query.obj"
-@erase "$(INTDIR)\ares_search.obj"
-@erase "$(INTDIR)\ares_send.obj"
-@erase "$(INTDIR)\ares_strerror.obj"
-@erase "$(INTDIR)\ares_timeout.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\windows_port.obj"
-@erase "$(OUTDIR)\areslib.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\areslib.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\areslib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\areslib.lib"
LIB32_OBJS= \
"$(INTDIR)\ares__close_sockets.obj" \
"$(INTDIR)\ares__get_hostent.obj" \
"$(INTDIR)\ares__read_line.obj" \
"$(INTDIR)\ares_destroy.obj" \
"$(INTDIR)\ares_expand_name.obj" \
"$(INTDIR)\ares_fds.obj" \
"$(INTDIR)\ares_free_hostent.obj" \
"$(INTDIR)\ares_free_string.obj" \
"$(INTDIR)\ares_gethostbyaddr.obj" \
"$(INTDIR)\ares_gethostbyname.obj" \
"$(INTDIR)\ares_init.obj" \
"$(INTDIR)\ares_mkquery.obj" \
"$(INTDIR)\ares_parse_a_reply.obj" \
"$(INTDIR)\ares_parse_ptr_reply.obj" \
"$(INTDIR)\ares_process.obj" \
"$(INTDIR)\ares_query.obj" \
"$(INTDIR)\ares_search.obj" \
"$(INTDIR)\ares_cancel.obj" \
"$(INTDIR)\ares_version.obj" \
"$(INTDIR)\ares_send.obj" \
"$(INTDIR)\ares_strerror.obj" \
"$(INTDIR)\ares_timeout.obj" \
"$(INTDIR)\windows_port.obj"
"$(OUTDIR)\areslib.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ELSEIF "$(CFG)" == "areslib - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\areslib.lib"
CLEAN :
-@erase "$(INTDIR)\ares__close_sockets.obj"
-@erase "$(INTDIR)\ares__get_hostent.obj"
-@erase "$(INTDIR)\ares__read_line.obj"
-@erase "$(INTDIR)\ares_destroy.obj"
-@erase "$(INTDIR)\ares_expand_name.obj"
-@erase "$(INTDIR)\ares_fds.obj"
-@erase "$(INTDIR)\ares_free_hostent.obj"
-@erase "$(INTDIR)\ares_free_string.obj"
-@erase "$(INTDIR)\ares_gethostbyaddr.obj"
-@erase "$(INTDIR)\ares_gethostbyname.obj"
-@erase "$(INTDIR)\ares_init.obj"
-@erase "$(INTDIR)\ares_mkquery.obj"
-@erase "$(INTDIR)\ares_parse_a_reply.obj"
-@erase "$(INTDIR)\ares_parse_ptr_reply.obj"
-@erase "$(INTDIR)\ares_process.obj"
-@erase "$(INTDIR)\ares_query.obj"
-@erase "$(INTDIR)\ares_search.obj"
-@erase "$(INTDIR)\ares_cancel.obj"
-@erase "$(INTDIR)\ares_version.obj"
-@erase "$(INTDIR)\ares_send.obj"
-@erase "$(INTDIR)\ares_strerror.obj"
-@erase "$(INTDIR)\ares_timeout.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(INTDIR)\windows_port.obj"
-@erase "$(OUTDIR)\areslib.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\areslib.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\areslib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\areslib.lib"
LIB32_OBJS= \
"$(INTDIR)\ares__close_sockets.obj" \
"$(INTDIR)\ares__get_hostent.obj" \
"$(INTDIR)\ares__read_line.obj" \
"$(INTDIR)\ares_destroy.obj" \
"$(INTDIR)\ares_expand_name.obj" \
"$(INTDIR)\ares_fds.obj" \
"$(INTDIR)\ares_free_hostent.obj" \
"$(INTDIR)\ares_free_string.obj" \
"$(INTDIR)\ares_gethostbyaddr.obj" \
"$(INTDIR)\ares_gethostbyname.obj" \
"$(INTDIR)\ares_init.obj" \
"$(INTDIR)\ares_mkquery.obj" \
"$(INTDIR)\ares_parse_a_reply.obj" \
"$(INTDIR)\ares_parse_ptr_reply.obj" \
"$(INTDIR)\ares_process.obj" \
"$(INTDIR)\ares_query.obj" \
"$(INTDIR)\ares_search.obj" \
"$(INTDIR)\ares_send.obj" \
"$(INTDIR)\ares_strerror.obj" \
"$(INTDIR)\ares_timeout.obj" \
"$(INTDIR)\windows_port.obj"
"$(OUTDIR)\areslib.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("areslib.dep")
!INCLUDE "areslib.dep"
!ELSE
!MESSAGE Warning: cannot find "areslib.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "areslib - Win32 Release" || "$(CFG)" == "areslib - Win32 Debug"
SOURCE=..\..\ares__close_sockets.c
"$(INTDIR)\ares__close_sockets.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares__get_hostent.c
"$(INTDIR)\ares__get_hostent.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares__read_line.c
"$(INTDIR)\ares__read_line.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_destroy.c
"$(INTDIR)\ares_destroy.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_expand_name.c
"$(INTDIR)\ares_expand_name.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_fds.c
"$(INTDIR)\ares_fds.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_free_hostent.c
"$(INTDIR)\ares_free_hostent.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_free_string.c
"$(INTDIR)\ares_free_string.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_gethostbyaddr.c
"$(INTDIR)\ares_gethostbyaddr.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_gethostbyname.c
"$(INTDIR)\ares_gethostbyname.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_init.c
"$(INTDIR)\ares_init.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_mkquery.c
"$(INTDIR)\ares_mkquery.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_parse_a_reply.c
"$(INTDIR)\ares_parse_a_reply.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_parse_ptr_reply.c
"$(INTDIR)\ares_parse_ptr_reply.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_process.c
"$(INTDIR)\ares_process.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_query.c
"$(INTDIR)\ares_query.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_search.c
"$(INTDIR)\ares_search.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_version.c
"$(INTDIR)\ares_version.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_cancel.c
"$(INTDIR)\ares_cancel.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_send.c
"$(INTDIR)\ares_send.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_strerror.c
"$(INTDIR)\ares_strerror.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_timeout.c
"$(INTDIR)\ares_timeout.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\windows_port.c
"$(INTDIR)\windows_port.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF

Binary file not shown.

Binary file not shown.

View File

@@ -1,14 +1,28 @@
#include "setup.h"
/* only do the following on windows
*/
#if (defined(WIN32) || defined(WATT32)) && !defined(MSDOS)
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <errno.h>
#include <malloc.h>
#ifdef WATT32
#include <sys/socket.h>
#else
#include "nameser.h"
#endif
#include "ares.h"
#include "ares_private.h"
#ifndef __MINGW32__
int
strncasecmp(const char *a, const char *b, size_t n)
ares_strncasecmp(const char *a, const char *b, int n)
{
size_t i;
int i;
for (i = 0; i < n; i++) {
int c1 = isupper(a[i]) ? tolower(a[i]) : a[i];
@@ -19,43 +33,73 @@ strncasecmp(const char *a, const char *b, size_t n)
}
int
strcasecmp(const char *a, const char *b)
ares_strcasecmp(const char *a, const char *b)
{
return strncasecmp(a, b, strlen(a)+1);
}
#endif
int
ares_gettimeofday(struct timeval *tv, struct timezone *tz)
/*
* Number of micro-seconds between the beginning of the Windows epoch
* (Jan. 1, 1601) and the Unix epoch (Jan. 1, 1970).
*/
#if defined(_MSC_VER) || defined(__WATCOMC__)
#define EPOCH_FILETIME 11644473600000000Ui64
#else
#define EPOCH_FILETIME 11644473600000000ULL
#endif
int
ares_gettimeofday(struct timeval *tv, struct timezone *tz)
{
FILETIME ft;
LARGE_INTEGER li;
__int64 t;
static int tzflag;
if (tv)
{
GetSystemTimeAsFileTime(&ft);
li.LowPart = ft.dwLowDateTime;
li.HighPart = ft.dwHighDateTime;
t = li.QuadPart; /* In 100-nanosecond intervals */
//t -= EPOCHFILETIME; /* Offset to the Epoch time */
t /= 10; /* In microseconds */
t = li.QuadPart / 10; /* In micro-second intervals */
t -= EPOCH_FILETIME; /* Offset to the Epoch time */
tv->tv_sec = (long)(t / 1000000);
tv->tv_usec = (long)(t % 1000000);
}
#if 0
if (tz)
{
if (!tzflag)
{
_tzset();
tzflag++;
}
tz->tz_minuteswest = _timezone / 60;
tz->tz_dsttime = _daylight;
}
#endif
(void) tz;
return 0;
}
int
ares_writev (ares_socket_t s, const struct iovec *vector, size_t count)
{
char *buffer, *bp;
size_t i, bytes = 0;
/* Find the total number of bytes to write
*/
for (i = 0; i < count; i++)
bytes += vector[i].iov_len;
if (bytes == 0) /* not an error */
return (0);
/* Allocate a temporary buffer to hold the data
*/
buffer = bp = (char*) alloca (bytes);
if (!buffer)
{
errno = ENOMEM;
return (-1);
}
/* Copy the data into buffer.
*/
for (i = 0; i < count; ++i)
{
memcpy (bp, vector[i].iov_base, vector[i].iov_len);
bp += vector[i].iov_len;
}
return send (s, (const void*)buffer, bytes, 0);
}
#endif /* WIN32 builds only */

View File

@@ -1,69 +0,0 @@
$!
$
$ on control_y then goto Common_Exit!
$ orig = f$environment("DEFAULT")
$ loc = f$environment("PROCEDURE")
$ def = f$parse("X.X;1",loc) - "X.X;1"
$
$ set def 'def'
$ cc_qual = "/define=HAVE_CONFIG_H=1/include=(""../include/"",""../"",""../../openssl-0_9_7/include/"")"
$ if p1 .eqs. "LISTING" then cc_qual = cc_qual + "/LIST/MACHINE"
$ if p1 .eqs. "DEBUG" then cc_qual = cc_qual + "/LIST/MACHINE/DEBUG"
$ msg_qual = ""
$ call build "[.lib]" "*.c"
$ call build "[.src]" "*.c"
$ call build "[.src]" "*.msg"
$ link /exe=curl.exe [.src]curl/lib/include=main,[.lib]curl/lib, -
[-.openssl-0_9_7.axp.exe.ssl]libssl/lib, -
[-.openssl-0_9_7.axp.exe.crypto]libcrypto/lib
$
$
$ goto Common_Exit
$build: subroutine
$ set noon
$ set default 'p1'
$ search = p2
$ reset = f$search("reset")
$ if f$search("CURL.OLB") .eqs. ""
$ then
$ LIB/CREATE/OBJECT CURL.OLB
$ endif
$ reset = f$search("reset",1)
$Loop:
$ file = f$search(search,1)
$ if file .eqs. "" then goto EndLoop
$ obj = f$search(f$parse(".OBJ;",file),2)
$ if (obj .nes. "")
$ then
$ if (f$cvtime(f$file(file,"rdt")) .gts. f$cvtime(f$file(obj,"rdt")))
$ then
$ call compile 'file'
$ lib/object curl.OLB 'f$parse(".obj;",file)'
$ else
$! write sys$output "File: ''file' is up to date"
$ endif
$ else
$! write sys$output "Object for file: ''file' does not exist"
$ call compile 'file'
$ lib/object curl.OLB 'f$parse(".obj;",file)'
$ endif
$ goto Loop
$EndLoop:
$ purge
$ set def 'def'
$ endsubroutine ! Build
$
$compile: subroutine
$ set noon
$ file = p1
$ qual = p2+p3+p4+p5+p6+p7+p8
$ typ = f$parse(file,,,"TYPE") - "."
$ cmd_c = "CC "+cc_qual
$ cmd_msg = "MESSAGE "+msg_qual
$ x = cmd_'typ'
$ 'x' 'file'
$ ENDSUBROUTINE ! Compile
$
$Common_Exit:
$ set default 'orig'
$ exit

View File

@@ -5,6 +5,21 @@ die(){
exit
}
# this works as 'which' but we use a different name to make it more obvious we
# aren't using 'which'! ;-)
findtool(){
file="$1"
IFS=":"
for path in $PATH
do
if test -r "$path/$file"; then
echo "$path/$file"
return
fi
done
}
#--------------------------------------------------------------------------
# autoconf 2.57 or newer
#
@@ -52,7 +67,7 @@ echo "buildconf: autoheader version $ah_version (ok)"
# automake 1.7 or newer
#
need_automake="1.7"
am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
if test -z "$am_version"; then
echo "buildconf: automake not found."
echo " You need automake version $need_automake or newer installed."
@@ -79,11 +94,17 @@ LIBTOOL_WANTED_MINOR=4
LIBTOOL_WANTED_PATCH=2
LIBTOOL_WANTED_VERSION=1.4.2
libtool=`which glibtool 2>/dev/null`
# this approach that tries 'glibtool' first is some kind of work-around for
# some BSD-systems I believe that use to provide the GNU libtool named
# glibtool, with 'libtool' being something completely different.
libtool=`findtool glibtool 2>/dev/null`
if test ! -x "$libtool"; then
libtool=`which libtool`
libtool=`findtool libtool`
fi
#lt_pversion=`${LIBTOOL:-$libtool} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
# set the LIBTOOLIZE here so that glibtoolize is used if glibtool was found
LIBTOOLIZE="${libtool}ize"
lt_pversion=`$libtool --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//g' -e 's/[- ].*//'`
if test -z "$lt_pversion"; then
echo "buildconf: libtool not found."
@@ -121,26 +142,48 @@ fi
echo "buildconf: libtool version $lt_version (ok)"
#--------------------------------------------------------------------------
# m4 check
#
m4=`${M4:-m4} --version 2>/dev/null|head -1`;
m4_version=`echo $m4 | sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
if { echo $m4 | grep "GNU" >/dev/null 2>&1; } then
echo "buildconf: GNU m4 version $m4_version (ok)"
else
echo "buildconf: m4 version $m4 found. You need a GNU m4 installed!"
exit 1
fi
# ------------------------------------------------------------
# run the correct scripts now
echo "buildconf: running libtoolize"
${LIBTOOLIZE:-libtoolize} --copy --automake || die "The command '${LIBTOOLIZE:-libtoolize} --copy --automake' failed"
${LIBTOOLIZE:-libtoolize} --copy --automake --force || die "The libtool command failed"
echo "buildconf: running aclocal"
${ACLOCAL:-aclocal} || die "The command '${AUTOHEADER:-aclocal}' failed"
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS || die "The aclocal command line failed"
echo "buildconf: running aclocal hack to convert all mv to mv -f"
perl -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4
echo "buildconf: running autoheader"
${AUTOHEADER:-autoheader} || die "The command '${AUTOHEADER:-autoheader}' failed"
${AUTOHEADER:-autoheader} || die "The autoheader command failed"
echo "buildconf: cp lib/config.h.in src/config.h.in"
cp lib/config.h.in src/config.h.in
echo "buildconf: running autoconf"
${AUTOCONF:-autoconf} || die "The command '${AUTOCONF:-autoconf}' failed"
${AUTOCONF:-autoconf} || die "The autoconf command failed"
if test -d ares; then
echo "buildconf: running autoconf in the ares directory"
cd ares
${AUTOCONF:-autoconf} || die "The command '${AUTOCONF:-autoconf}' failed"
echo "buildconf: running aclocal in the ares directory"
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS || die "The ares aclocal command failed"
echo "buildconf: running autoconf in the ares directory"
${AUTOCONF:-autoconf} || die "The ares autoconf command failed"
cd ..
fi
echo "buildconf: running automake"
${AUTOMAKE:-automake} -a || die "The command '${AUTOMAKE:-automake} -a' failed"
${AUTOMAKE:-automake} -a || die "The automake command failed"
echo "buildconf: OK"
exit 0

14
buildconf.bat Normal file
View File

@@ -0,0 +1,14 @@
@echo off
REM set up a CVS tree to build when there's no autotools
REM $Revision$
REM $Date$
REM create ca-bundle.h
echo /* This file is generated automatically */ >lib\ca-bundle.h
echo #define CURL_CA_BUNDLE getenv("CURL_CA_BUNDLE") >>lib\ca-bundle.h
REM create hugehelp.c
copy src\hugehelp.c.cvs src\hugehelp.c
REM create Makefile
copy Makefile.dist Makefile

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,8 @@ Available values for OPTION include:
--ca ca bundle install path
--cc compiler
--cflags pre-processor and compiler flags
--feature newline separated list of enabled features
--features newline separated list of enabled features
--protocols newline separated list of enabled protocols
--help display this help and exit
--libs library linking information
--prefix curl install prefix
@@ -45,19 +46,19 @@ while test $# -gt 0; do
case "$1" in
--ca)
echo @CURL_CA_BUNDLE@
echo "@CURL_CA_BUNDLE@"
;;
--cc)
echo @CC@
echo "@CC@"
;;
--prefix)
echo $prefix
echo "$prefix"
;;
--feature)
if test "@OPENSSL_ENABLED@" = "1"; then
--feature|--features)
if test "@USE_SSLEAY@" = "1"; then
echo "SSL"
fi
if test "@KRB4_ENABLED@" = "1"; then
@@ -69,32 +70,40 @@ while test $# -gt 0; do
if test "@HAVE_LIBZ@" = "1"; then
echo "libz"
fi
if test "@CURL_DISABLE_HTTP@" = "1"; then
echo "HTTP-disabled"
fi
if test "@CURL_DISABLE_FTP@" = "1"; then
echo "FTP-disabled"
fi
if test "@CURL_DISABLE_GOPHER@" = "1"; then
echo "GOPHER-disabled"
fi
if test "@CURL_DISABLE_FILE@" = "1"; then
echo "FILE-disabled"
fi
if test "@CURL_DISABLE_TELNET@" = "1"; then
echo "TELNET-disabled"
fi
if test "@CURL_DISABLE_LDAP@" = "1"; then
echo "LDAP-disabled"
fi
if test "@CURL_DISABLE_DICT@" = "1"; then
echo "DICT-disabled"
fi
if test "@HAVE_ARES@" = "1"; then
echo "AsynchDNS"
fi
;;
--protocols)
if test "@CURL_DISABLE_HTTP@" != "1"; then
echo "HTTP"
if test "@USE_SSLEAY@" = "1"; then
echo "HTTPS"
fi
fi
if test "@CURL_DISABLE_FTP@" != "1"; then
echo "FTP"
if test "@USE_SSLEAY@" = "1"; then
echo "FTPS"
fi
fi
if test "@CURL_DISABLE_GOPHER@" != "1"; then
echo "GOPHER"
fi
if test "@CURL_DISABLE_FILE@" != "1"; then
echo "FILE"
fi
if test "@CURL_DISABLE_TELNET@" != "1"; then
echo "TELNET"
fi
if test "@CURL_DISABLE_LDAP@" != "1"; then
echo "LDAP"
fi
if test "@CURL_DISABLE_DICT@" != "1"; then
echo "DICT"
fi
;;
--version)
echo libcurl @VERSION@
exit 0
@@ -123,8 +132,7 @@ while test $# -gt 0; do
*)
echo "unknown option: $1"
usage
exit 1
usage 1
;;
esac
shift

View File

@@ -2,17 +2,8 @@
;;;; $Id$
;;; The curl hacker's C conventions.
;;; After loading this file and added the mode-hook you can in C
;;; files, put something like this to use the curl style
;;; automatically:
;;
;; /* -----------------------------------------------------------------
;; * local variables:
;; * eval: (set c-file-style "curl")
;; * end:
;; */
;;
;;; See the sample.emacs file on how this file can be made to take
;;; effect automatically when editing curl source files.
(defconst curl-c-style
'((c-basic-offset . 2)
@@ -29,6 +20,13 @@
)
"Curl C Programming Style")
(defun curl-code-cleanup ()
"no docs"
(interactive)
(untabify (point-min) (point-max))
(delete-trailing-whitespace)
)
;; Customizations for all of c-mode, c++-mode, and objc-mode
(defun curl-c-mode-common-hook ()
"Curl C mode hook"
@@ -37,12 +35,15 @@
(setq tab-width 8
indent-tabs-mode nil ; Use spaces. Not tabs.
comment-column 40
c-font-lock-extra-types (append '("bool" "CURL" "CURLcode" "ssize_t" "size_t" "socklen_t" "fd_set" "time_t" "off_t"))
c-font-lock-extra-types (append '("bool" "CURL" "CURLcode" "ssize_t" "size_t" "socklen_t" "fd_set" "time_t" "curl_off_t" "curl_socket_t" "in_addr_t" "CURLSHcode" "CURLMcode" "Curl_addrinfo"))
)
;; keybindings for C, C++, and Objective-C. We can put these in
;; c-mode-base-map because of inheritance ...
(define-key c-mode-base-map "\M-q" 'c-fill-paragraph)
(define-key c-mode-base-map "\M-m" 'curl-code-cleanup)
(setq c-recognize-knr-p nil)
;;; (add-hook 'write-file-hooks 'delete-trailing-whitespace t)
(setq show-trailing-whitespace t)
)
;; Set this is in your .emacs if you want to use the c-mode-hook as

View File

@@ -1,7 +1,7 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
libcurl bindings
@@ -17,47 +17,79 @@ archives, but must be downloaded and installed separately.
Ada95
Writtten by Andreas Almroth.
Writtten by Andreas Almroth
http://www.almroth.com/adacurl/index.html
Basic
ScriptBasic bindings to libcurl. Writtten by Peter Verhas.
ScriptBasic bindings to libcurl. Writtten by Peter Verhas
http://scriptbasic.com/
C
libcurl is a C library in itself!
http://curl.haxx.se/libcurl/
C++
Written by Jean-Philippe Barrette-LaPierre.
http://www.sourceforge.net/projects/curlpp
Written by Jean-Philippe Barrette-LaPierre
http://rrette.com/curlpp.html
Ch
Written by Stephen Nestinger and Jonathan Rogado
http://chcurl.sourceforge.net/
Cocoa
Written by Dan Wood.
Written by Dan Wood
http://curlhandle.sourceforge.net/
D
Written by Charles Sanders and James Wavro
http://www.atari-soldiers.com/libcurl.html
Dylan
Written by Chris Double.
Written by Chris Double
http://dylanlibs.sourceforge.net/
Euphoria
Written by Ray Smith.
Written by Ray Smith
http://rays-web.com/eulibcurl.htm
Ferite
Written by Paul Querna
http://www.ferite.org/
Gambas
http://gambas.sourceforge.net
glib/GTK+
Written by Richard Atterer
http://atterer.net/glibcurl/
Java
Written by Daniel Stenberg.
Maintained by Vic Hanson
http://curl.haxx.se/libcurl/java/
Lua
Written by Steve Dekorte.
Written by Steve Dekorte
http://curl.haxx.se/libcurl/lua/
Mono
Written by Jeffrey Phillips
http://forge.novell.com/modules/xfmod/project/?libcurl-mono
.NET
Written by Jeffrey Phillips
http://www.seasideresearch.com/downloads.html
Object-Pascal
Free Pascal, Delphi and Kylix binding written by Christophe Espern.
@@ -65,7 +97,7 @@ Object-Pascal
O'Caml
Written by Lars Nilsson.
Written by Lars Nilsson
http://sourceforge.net/projects/ocurl/
Pascal
@@ -75,40 +107,54 @@ Pascal
Perl
Maintained by Cris Bailiff.
Maintained by Cris Bailiff
http://curl.haxx.se/libcurl/perl/
PHP
Written by Sterling Hughes.
Written by Sterling Hughes
http://curl.haxx.se/libcurl/php/
PostgreSQL
Written by Gian Paolo Ciceri.
Written by Gian Paolo Ciceri
http://gborg.postgresql.org/project/pgcurl/projdisplay.php
Python
Written by Kjetil Jacobsen.
PycURL is written by Kjetil Jacobsen
http://pycurl.sourceforge.net/
R
RCurl is written by Duncan Temple Lang
http://www.omegahat.org/RCurl/
Rexx
Written Mark Hessling.
Written Mark Hessling
http://rexxcurl.sourceforge.net/
Ruby
Written by Hirotaka Matsuyuki.
Written by Hirotaka Matsuyuki
http://www.d1.dion.ne.jp/~matuyuki/ruby.html
Scheme
Bigloo binding written by Kirill Lisovsky.
Bigloo binding written by Kirill Lisovsky
http://curl.haxx.se/libcurl/scheme/
Tcl
Written by Andr<64>s Garc<72>a.
Tclcurl is written by Andr<64>s Garc<72>a
http://personal1.iddeo.es/andresgarci/tclcurl/english/docs.html
Q
http://q-lang.sourceforge.net/
wxWidgets
Written by Casey O'Donnell
http://homepage.mac.com/codonnell/wxcurldav/

View File

@@ -1,7 +1,7 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
To Think About When Contributing Source Code
@@ -138,15 +138,15 @@ How To Make a Patch
If you have modified a single file, try something like:
diff -u undmodified-file.c my-changed-one.c > my-fixes.diff
diff -u unmodified-file.c my-changed-one.c > my-fixes.diff
If you have modified several files, possibly in different directories, you
can use diff recursively:
diff -ur curl-original-dir curl-modfied-sources-dir > my-fixes.diff
diff -ur curl-original-dir curl-modified-sources-dir > my-fixes.diff
The GNU diff and GNU patch tools exist for virtually all platforms, including
all kinds of unixes and Windows:
all kinds of Unixes and Windows:
For unix-like operating systems:

337
docs/FAQ
View File

@@ -1,8 +1,8 @@
Updated: December 22, 2003 (http://curl.haxx.se/docs/faq.html)
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
Updated: December 21, 2004 (http://curl.haxx.se/docs/faq.html)
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
FAQ
@@ -10,20 +10,20 @@ FAQ
1. Philosophy
1.1 What is cURL?
1.2 What is libcurl?
1.3 What is cURL not?
1.3 What is curl not?
1.4 When will you make curl do XXXX ?
1.5 Who makes cURL?
1.6 What do you get for making cURL?
1.5 Who makes curl?
1.6 What do you get for making curl?
1.7 What about CURL from curl.com?
1.8 I have a problem who do I mail?
2. Install Related Problems
2.1 configure doesn't find OpenSSL even when it is installed
2.1.1. native linker doesn't find openssl
2.1.2. only the libssl lib is missing
2.1.1 native linker doesn't find OpenSSL
2.1.2 only the libssl lib is missing
2.2 Does curl work/build with other SSL libraries?
2.3 Where can I find a copy of LIBEAY32.DLL?
2.4 Does cURL support Socks (RFC 1928) ?
2.4 Does curl support Socks (RFC 1928) ?
3. Usage Problems
3.1 curl: (1) SSL is disabled, https: not supported
@@ -41,6 +41,8 @@ FAQ
3.13 Why does my single/double quotes fail?
3.14 Does curl support javascript or pac (automated proxy config)?
3.15 Can I do recursive fetches with curl?
3.16 What certificates do I need when I use SSL?
3.17 How do I list the root dir of an FTP server?
4. Running Problems
4.1 Problems connecting to SSL servers.
@@ -70,6 +72,8 @@ FAQ
5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on win32 ?
5.6 What about Keep-Alive or persistent connections?
5.7 Link errors when building libcurl on Windows!
5.8 libcurl.so.3: open failed: No such file or directory
5.9 How does libcurl resolve host names?
6. License Issues
6.1 I have a GPL program, can I use the libcurl library?
@@ -79,29 +83,55 @@ FAQ
6.5 Can I modify curl/libcurl for my program and keep the changes secret?
6.6 Can you please change the curl/libcurl license to XXXX?
7. PHP/CURL Issues
7.1 What is PHP/CURL?
7.2 Who write PHP/CURL?
7.3 Can I perform multiple requests using the same handle?
==============================================================================
1. Philosophy
1.1 What is cURL?
cURL (or simply just 'curl') is a command line tool for getting or sending
files using URL syntax. The name is a play on 'Client for URLs', originally
with URL spelled in uppercase to make it obvious it deals with URLs. The
fact it can also be pronounced 'see URL' also helped, it works as an
abbrivation for "Client URL Request Library" or why not the recursive
version: "Curl is a URL Request Library".
cURL is the name of the project. The name is a play on 'Client for URLs',
originally with URL spelled in uppercase to make it obvious it deals with
URLs. The fact it can also be pronounced 'see URL' also helped, it works as
an abbrivation for "Client URL Request Library" or why not the recursive
version: "Curl URL Request Library".
Curl supports a range of common Internet protocols, currently including
HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and FILE.
The cURL project produces two products:
We spell it cURL or just curl. We pronounce it with an initial k sound:
[kurl].
libcurl
A free and easy-to-use client-side URL transfer library, supporting FTP,
FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. libcurl supports
HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, kerberos, HTTP
form based upload, proxies, cookies, user+password authentication, file
transfer resume, http proxy tunneling and more!
libcurl is highly portable, it builds and works identically on numerous
platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX,
IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac
OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS and more...
libcurl is free, thread-safe, IPv6 compatible, feature rich, well
supported and fast.
curl
A command line tool for getting or sending files using URL syntax.
Since curl uses libcurl, it supports a range of common Internet protocols,
currently including HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and
FILE.
We pronounce curl and cURL with an initial k sound: [kurl].
NOTE: there are numerous sub-projects and related projects that also use the
word curl in the project names in various combinations, but you should take
notice that this FAQ is directed at the command-line tool named curl (and
libcurl the library), and may therefore not be valid for other curl
libcurl the library), and may therefore not be valid for other curl-related
projects.
1.2 What is libcurl?
@@ -109,16 +139,16 @@ FAQ
libcurl is a reliable and portable library which provides you with an easy
interface to a range of common Internet protocols.
You can use libcurl for free in your application even if it is commercial
or closed-source.
You can use libcurl for free in your application, be it open source,
commercial or closed-source.
1.3 What is cURL not?
Curl is *not* a wget clone even though that is a very common misconception.
Never, during curl's development, have we intended curl to replace wget or
compete on its market. Curl is targeted at single-shot file transfers.
1.3 What is curl not?
Curl is not a web site mirroring program. If you wanna use curl to mirror
Curl is *not* a wget clone. That is a common misconception. Never, during
curl's development, have we intended curl to replace wget or compete on its
market. Curl is targeted at single-shot file transfers.
Curl is not a web site mirroring program. If you want to use curl to mirror
something: fine, go ahead and write a script that wraps around curl to make
it reality (like curlmirror.pl does).
@@ -127,7 +157,7 @@ FAQ
script (or write a new program that interfaces libcurl) and do it.
Curl is not a PHP tool, even though it works perfectly well when used from
or with PHP.
or with PHP (when using the PHP/CURL module).
Curl is not a single-OS program. Curl exists, compiles, builds and runs
under a wide range of operating systems, including all modern Unixes (and a
@@ -161,9 +191,9 @@ FAQ
* If you write the code, chances are bigger that it will get into curl
faster.
1.5 Who makes cURL?
1.5 Who makes curl?
cURL and libcurl are not made by any single individual. Sure, Daniel
curl and libcurl are not made by any single individual. Sure, Daniel
Stenberg writes the major parts, but other persons' submissions are
important and crucial. Anyone can contribute and post their changes and
improvements and have them inserted in the main sources (of course on the
@@ -175,15 +205,16 @@ FAQ
curl is developed by a community, with Daniel at the wheel.
1.6 What do you get for making cURL?
1.6 What do you get for making curl?
Project cURL is entirely free and open. No person gets paid for developing
curl. We do this voluntarily on our spare time.
(lib)curl. We do this voluntarily on our spare time.
We get some help from companies. Contactor Data hosts the curl web site,
Haxx owns the curl web site's domain and sourceforge.net hosts several
project services we take advantage from, like the bug tracker, mailing lists
and more.
Haxx owns the curl web site's domain and sourceforge.net hosts project
services we take advantage from, like the bug tracker. Also, some companies
have sponsored certain parts of the development in the past and I hope some
will continue to do so in the future.
If you want to support our project with a donation or similar, one way of
doing that would be to buy "gift certificates" at useful online shopping
@@ -198,7 +229,7 @@ FAQ
programming language for the web, named CURL.
We are in no way associated with curl.com or their CURL programming
language.
language.
Our project name curl has been in effective use since 1998. We were not the
first computer related project to use the name "curl" and do not claim any
@@ -224,11 +255,11 @@ FAQ
2. Install Related Problems
2.1. configure doesn't find OpenSSL even when it is installed
2.1 configure doesn't find OpenSSL even when it is installed
This may be because of several reasons.
2.1.1. native linker doesn't find openssl
2.1.1 native linker doesn't find openssl
Affected platforms:
Solaris (native cc compiler)
@@ -250,7 +281,7 @@ FAQ
Solution submitted by: Bob Allison <allisonb@users.sourceforge.net>
2.1.2. only the libssl lib is missing
2.1.2 only the libssl lib is missing
If all include files and the libcrypto lib is present, with only the
libssl being missing according to configure, this is mostly likely because
@@ -263,14 +294,14 @@ FAQ
configure. Make sure that you remove the config.cache file before you
rerun configure with the new flags.
2.2. Does curl work/build with other SSL libraries?
2.2 Does curl work/build with other SSL libraries?
Curl has been written to use OpenSSL, although there should not be much
problems using a different library. If anyone does "port" curl to use a
different SSL library, we are of course very interested in getting the
patch!
2.3. Where can I find a copy of LIBEAY32.DLL?
2.3 Where can I find a copy of LIBEAY32.DLL?
That is an OpenSSL binary built for Windows.
@@ -279,15 +310,14 @@ FAQ
accurate and up-to-date pointers to recent OpenSSL DLLs and other binary
packages.
2.4. Does cURL support Socks (RFC 1928) ?
2.4 Does curl support Socks (RFC 1928) ?
There is limited support for SOCKS5 for curl built with IPv6 support
disabled.
Yes, SOCKS5 is supported.
3. Usage problems
3.1. curl: (1) SSL is disabled, https: not supported
3.1 curl: (1) SSL is disabled, https: not supported
If you get this output when trying to get anything from a https:// server,
it means that the configure script couldn't find all libs and include files
@@ -302,13 +332,13 @@ FAQ
Also, check out the other paragraph in this FAQ labeled "configure doesn't
find OpenSSL even when it is installed".
3.2. How do I tell curl to resume a transfer?
3.2 How do I tell curl to resume a transfer?
Curl supports resumed transfers both ways on both FTP and HTTP.
Try the -C option.
3.3. Why doesn't my posting using -F work?
3.3 Why doesn't my posting using -F work?
You can't simply use -F or -d at your choice. The web server that will
receive your post assumes one of the formats. If the form you're trying to
@@ -322,7 +352,7 @@ FAQ
through the mailing list archives for old postings and questions regarding
this.
3.4. How do I tell curl to run custom FTP commands?
3.4 How do I tell curl to run custom FTP commands?
You can tell curl to perform optional commands both before and/or after a
file transfer. Study the -Q/--quote option.
@@ -331,13 +361,13 @@ FAQ
FTP commands without transferring anything. Therefore you must always specify
a URL to transfer to/from even when doing custom FTP commands.
3.5. How can I disable the Pragma: nocache header?
3.5 How can I disable the Pragma: nocache header?
You can change all internally generated headers by adding a replacement with
the -H/--header option. By adding a header with empty contents you safely
disable that one. Use -H "Pragma:" to disable that specific header.
3.6. Does curl support ASP, XML, XHTML or HTML version Y?
3.6 Does curl support ASP, XML, XHTML or HTML version Y?
To curl, all contents are alike. It doesn't matter how the page was
generated. It may be ASP, PHP, Perl, shell-script, SSI or plain
@@ -346,7 +376,7 @@ FAQ
See also item 3.14 regarding javascript.
3.7. Can I use curl to delete/rename a file through FTP?
3.7 Can I use curl to delete/rename a file through FTP?
Yes. You specify custom FTP commands with -Q/--quote.
@@ -371,8 +401,7 @@ FAQ
Find out more about which languages that support curl directly, and how to
install and use them, in the libcurl section of the curl web site:
http://curl.haxx.se/libcurl/
http://curl.haxx.se/libcurl/
In February 2003, there are interfaces available for the following
languages: Basic, C, C++, Cocoa, Dylan, Euphoria, Java, Lua, Object-Pascal,
@@ -414,7 +443,7 @@ FAQ
put the entire option within quotes. Like in:
curl -d " with spaces " url.com
or perhaps
curl -d ' with spaces ' url.com
@@ -445,28 +474,69 @@ FAQ
Some work-arounds usually suggested to overcome this javascript dependency:
- Depending on the javascript complexity, write up a script that
translates it to another language and execute that.
- Depending on the javascript complexity, write up a script that
translates it to another language and execute that.
- Read the javascript code and rewrite the same logic in another language.
- Read the javascript code and rewrite the same logic in another language.
- Implement a javascript interpreted, people have successfully used the
Mozilla javascript engine in the past.
- Implement a javascript interpreter, people have successfully used the
Mozilla javascript engine in the past.
- Ask your admins to stop this, for a static proxy setup or similar.
- Ask your admins to stop this, for a static proxy setup or similar.
3.15 Can I do recursive fetches with curl?
No. curl itself has no code that performs recursive operations, such as
those performed by wget.
those performed by wget and similar tools.
There exist wrapper scripts with that functionality (for example the
curlmirror perl script), and you can write programs based on libcurl to do
it, but the command line tool curl itself cannot.
3.16 What certificates do I need when I use SSL?
There are three different kinds of "certificates" to keep track of when we
talk about using SSL-based protocols (HTTPS or FTPS) using curl or libcurl.
- Client certificate. The server you communicate may require that you can
provide this in order to prove that you actually are who you claim to be.
If the server doesn't require this, you don't need a client certificate.
- Server certificate. The server you communicate with has a server
certificate. You can and should verify this certficate to make sure that
you are truly talking to the real server and not a server impersonating
it. The server certificate verifaction process is made by using a
Certificate Authority certificate ("CA cert") that was used to sign the
server certificate. Server certificate verification is enabled by default
in curl and libcurl and is often the reason for problems as explained in
FAQ entry 4.12 and the SSLCERTS document
(http://curl.haxx.se/docs/sslcerts.html). Server certificates that are
"self-signed" or otherwise signed by a CA that you do not have a CA cert
for, cannot be verified. If the verification during a connect fails, you
are refused access. You then need to explicitly disable the verification
to connect to the server.
- Certificate Authority certificate ("CA cert"). You often have several CA
certs in a CA cert bundle that can be used to verify a server certificate
that was signed by one of the authorities in the bundle. curl comes with a
default CA cert bundle. You can override the default.
3.17 How do I list the root dir of an FTP server?
There are two ways. The way defined in the RFC is to use an encoded slash
in the first path part. List the "/tmp" dir like this:
curl ftp://ftp.sunet.se/%2ftmp/
or the not-quite-kosher-but-more-readable way, by simply starting the path
section of the URL with a slash:
curl ftp://ftp.sunet.se//tmp/
4. Running Problems
4.1. Problems connecting to SSL servers.
4.1 Problems connecting to SSL servers.
It took a very long time before we could sort out why curl had problems to
connect to certain SSL servers when using SSLeay or OpenSSL v0.9+. The
@@ -478,10 +548,10 @@ FAQ
requests properly. To correct this problem, tell curl to select SSLv2 from
the command line (-2/--sslv2).
There has also been examples where the remote server didn't like the SSLv2
There have also been examples where the remote server didn't like the SSLv2
request and instead you had to force curl to use SSLv3 with -3/--sslv3.
4.2. Why do I get problems when I use & or % in the URL?
4.2 Why do I get problems when I use & or % in the URL?
In general unix shells, the & letter is treated special and when used, it
runs the specified command in the background. To safely send the & as a part
@@ -499,7 +569,7 @@ FAQ
pass in a POST using -d/--data you must encode it as '%25' (which then also
needs the %-letter doubled on Windows machines).
4.3. How can I use {, }, [ or ] to specify multiple URLs?
4.3 How can I use {, }, [ or ] to specify multiple URLs?
Because those letters have a special meaning to the shell, and to be used in
a URL specified to curl you must quote them.
@@ -513,7 +583,7 @@ FAQ
curl -g 'www.site.com/weirdname[].html'
4.4. Why do I get downloaded data even though the web page doesn't exist?
4.4 Why do I get downloaded data even though the web page doesn't exist?
Curl asks remote servers for the page you specify. If the page doesn't exist
at the server, the HTTP protocol defines how the server should respond and
@@ -554,7 +624,7 @@ FAQ
containing a list of valid methods for the requested resource.
4.5.6 "301 Moved Permanently"
If you get this return code and an HTML output similar to this:
<H1>Moved Permanently</H1> The document has moved <A
@@ -564,34 +634,42 @@ FAQ
slash. Try the same operation again _with_ the trailing URL, or use the
-L/--location option to follow the redirection.
4.6. Can you tell me what error code 142 means?
4.6 Can you tell me what error code 142 means?
All error codes that are larger than the highest documented error code means
All curl error codes are described at the end of the man page, in the
section called "EXIT CODES".
Error codes that are larger than the highest documented error code means
that curl has exited due to a crash. This is a serious error, and we
appreciate a detailed bug report from you that describes how we could go
ahead and repeat this!
4.7. How do I keep user names and passwords secret in Curl command lines?
4.7 How do I keep user names and passwords secret in Curl command lines?
This problem has two sides:
The first part is to avoid having clear-text passwords in the command line
so that they don't appear in 'ps' outputs and similar. That is easily
avoided by using the "-K" option to tell curl to read parameters from a
file or stdin to which you can pass the secret info.
avoided by using the "-K" option to tell curl to read parameters from a file
or stdin to which you can pass the secret info. curl itself will also
attempt to "hide" the given password by blanking out the option - this
doesn't work on all platforms.
To keep the passwords in your account secret from the rest of the world is
not a task that curl addresses. You could of course encrypt them somehow to
at least hide them from being read by human eyes, but that is not what
anyone would call security.
Also note that regular HTTP and FTP passwords are sent in clear across the
network. All it takes for anyone to fetch them is to listen on the network.
Eavesdropping is very easy.
Also note that regular HTTP (using Basic authentication) and FTP passwords
are sent in clear across the network. All it takes for anyone to fetch them
is to listen on the network. Eavesdropping is very easy. Use more secure
authentication methods (like Digest, Negotiate or even NTLM) or consider the
SSL-based alternatives HTTPS and FTPS.
4.8 I found a bug!
It is not a bug if the behavior is documented. Read the docs first.
Especially check out the KNOWN_BUGS file, it may be a documented bug!
If it is a problem with a binary you've downloaded or a package for your
particular platform, try contacting the person who built the package/archive
@@ -600,7 +678,7 @@ FAQ
If there is a bug, read the BUGS document first. Then report it as described
in there.
4.9. Curl can't authenticate to the server that requires NTLM?
4.9 Curl can't authenticate to the server that requires NTLM?
This is supported in curl 7.10.6 or later. No earlier curl version knows
of this magic.
@@ -629,7 +707,7 @@ FAQ
You invoke curl 7.10 or later to communicate on a https:// URL and get an
error back looking something similar to this:
curl: (35) SSL: error:14090086:SSL routines:
curl: (35) SSL: error:14090086:SSL routines:
SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Then it means that curl couldn't verify that the server's certificate was
@@ -648,9 +726,10 @@ FAQ
Details are also in the SSLCERTS file in the release archives, found online
here: http://curl.haxx.se/docs/sslcerts.html
5. libcurl Issues
5.1. Is libcurl thread-safe?
5.1 Is libcurl thread-safe?
Yes.
@@ -684,9 +763,9 @@ FAQ
size_t
WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
register int realsize = size * nmemb;
size_t realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)data;
mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
if (mem->memory) {
memcpy(&(mem->memory[mem->size]), ptr, realsize);
@@ -740,6 +819,63 @@ FAQ
(Provided by Andrew Francis)
When building an application that uses the static libcurl library, you must
add -DCURL_STATICLIB to your CFLAGS. Otherwise the linker will look for
dynamic import symbols. If you get linker error like "unknown symbol
__imp__curl_easy_init ..." you have linked against the wrong (static)
library. If you want to use the libcurl.dll and import lib, you don't need
any extra CFLAGS, but use one of the import libraries below. These are the
libraries produced by the various lib/Makefile.* files:
Target: static lib. import lib for libcurl*.dll.
-----------------------------------------------------------
MingW: libcurl.a libcurldll.a
MSVC (release): libcurl.lib libcurl_imp.lib
MSVC (debug): libcurld.lib libcurld_imp.lib
Borland: libcurl.lib libcurl_imp.lib
5.8 libcurl.so.3: open failed: No such file or directory
This is an error message you might get when you try to run a program linked
with a shared version of libcurl and your run-time linker (ld.so) couldn't
find the shared library named libcurl.so.3.
You need to make sure that ld.so finds libcurl.so.3. You can do that
multiple ways, and it differs somewhat between different operating systems,
but they are usually:
* Add an option to the linker command line that specify the hard-coded path
the run-time linker should check for the lib (usually -R)
* Set an environment variable (LD_LIBRARY_PATH for example) where ld.so
should check for libs
* Adjust the system's config to check for libs in the directory where you've
put the dir (like Linux's /etc/ld.so.conf)
'man ld.so' and 'man ld' will tell you more details
5.9 How does libcurl resolve host names?
libcurl includes a number of different name resolve functions:
- The non-ipv6 resolver that can use one out of four host name resolve calls
(depending on what your system supports):
A - gethostbyname()
B - gethostbyname_r() with 3 arguments
C - gethostbyname_r() with 5 arguments
D - gethostbyname_r() with 6 arguments
- The ipv6-resolver that uses getaddrinfo()
- The c-ares based name resolver that uses the c-ares library for resolves.
- The Windows threaded resolver. It use:
A - gethostbyname() on plain ipv4 windows hosts
B - getaddrinfo() on ipv6-enabled windows hosts
6. License Issues
@@ -748,32 +884,32 @@ FAQ
is just a brief summary for the cases we get the most questions. (Parts of
this section was much enhanced by Bjorn Reese.)
6.1. I have a GPL program, can I use the libcurl library?
6.1 I have a GPL program, can I use the libcurl library?
Yes!
Since libcurl may be distributed under the MIT/X derivate license, it can be
used together with GPL in any software.
6.2. I have a closed-source program, can I use the libcurl library?
6.2 I have a closed-source program, can I use the libcurl library?
Yes!
libcurl does not put any restrictions on the program that uses the library.
6.3. I have a BSD licensed program, can I use the libcurl library?
6.3 I have a BSD licensed program, can I use the libcurl library?
Yes!
libcurl does not put any restrictions on the program that uses the library.
6.4. I have a program that uses LGPL libraries, can I use libcurl?
6.4 I have a program that uses LGPL libraries, can I use libcurl?
Yes!
The LGPL license doesn't clash with other licenses.
6.5. Can I modify curl/libcurl for my program and keep the changes secret?
6.5 Can I modify curl/libcurl for my program and keep the changes secret?
Yes!
@@ -781,7 +917,7 @@ FAQ
the sources, on the condition that the copyright texts in the sources are
left intact.
6.6. Can you please change the curl/libcurl license to XXXX?
6.6 Can you please change the curl/libcurl license to XXXX?
No.
@@ -791,3 +927,26 @@ FAQ
we want on curl/libcurl and it does not spread to other programs or
libraries that use it. It should be possible for everyone to use libcurl or
curl in their projects, no matter what license they already have in use.
7. PHP/CURL Issues
7.1 What is PHP/CURL?
The module for PHP that makes it possible for PHP programs to access curl-
functions from within PHP. We often call it PHP/CURL to differentiate from
curl the command line tool and libcurl the library.
7.2 Who write PHP/CURL?
PHP/CURL is a module that comes with the regular PHP package. It depends and
uses libcurl, so you need to have libcurl installed properly first before
PHP/CURL can be used. PHP/CURL is written by Sterling Hughes.
7.3 Can I perform multiple requests using the same handle?
Yes - at least in PHP version 4.3.8 and later (this has been known to not
work in earlier versions, but the exact version when it started to work is
unknown to me).
After a transfer, you just set new options in the handle and make another
transfer. This will make libcurl to re-use the same connection if it can.

View File

@@ -6,26 +6,33 @@
FEATURES
Misc
- full URL syntax
curl tool
- config file support
- multiple URLs in a single command line
- range "globbing" support: [0-13], {one,two,three}
- multiple file upload on a single command line
- custom maximum transfer rate
- redirectable stderr
libcurl supports
- full URL syntax with no length limit
- custom maximum download time
- custom least download speed acceptable
- custom output result after completion
- multiple URLs
- guesses protocol from host name unless specified
- uses .netrc
- progress bar/time specs while downloading
- "standard" proxy environment variables support
- config file support
- compiles on win32 (reported builds on 40+ operating systems)
- redirectable stderr
- selectable network interface for outgoing traffic
- IPv6 support
- IPv6 support on unix and Windows
- persistant connections
- socks5 support
- supports user name + password in proxy environment variables
- operations through proxy "tunnel" (using CONNECT)
- supports transfers of large files (>2GB and >4GB)
- supports large files (>2GB and >4GB) both upload/download
- replacable memory functions (malloc, free, realloc, etc)
- asynchronous name resolving (*6)
HTTP
- HTTP/1.1 compliant (optionally uses 1.0)
@@ -35,7 +42,7 @@ HTTP
- POST
- multipart formpost (RFC1867-style)
- authentication: Basic, Digest, NTLM(*1), GSS-Negotiate/Negotiate(*3) and
SPNEGO (*4)
SPNEGO (*4) to server and proxy
- resume (both GET and PUT)
- follow redirects
- maximum amount of redirects to follow
@@ -80,6 +87,8 @@ FTP
- via http-proxy
- all operations can be tunneled through a http-proxy
- customizable to retrieve file modification date
- third party transfers
- no dir depth limit
FTPS (*1)
- explicit ftps:// support that use SSL on both connections
@@ -103,6 +112,8 @@ GOPHER
FILE
- URL support
- "uploads"
- resume
FOOTNOTES
=========
@@ -112,3 +123,4 @@ FOOTNOTES
*3 = requires a GSSAPI-compliant library, such as Heimdal or similar.
*4 = requires FBopenssl
*5 = requires a krb4 library, such as the MIT one or similar.
*6 = requires c-ares

View File

@@ -1,7 +1,7 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
How cURL Became Like This
@@ -124,3 +124,18 @@ November 2003: curl 7.10.8 is released. 45000 lines of code. ~55000 unique
visitors to the curl.haxx.se site. Five official web mirrors.
December 2003, full-fledged SSL for FTP is supported.
January 2004: curl 7.11.0 introduced large file support.
June 2004: curl 7.12.0 introduced IDN support. 10 official web mirrors.
August 2004:
Curl and libcurl 7.12.1
Public curl release number: 82
Releases counted from the very beginning: 109
Available command line options: 96
Available curl_easy_setopt() options: 120
Number of public functions in libcurl: 36
Amount of public web site mirrors: 12
Number of known libcurl bindings: 26

View File

@@ -1,25 +0,0 @@
Steps To Perform When Building a Public Release
* "make distcheck"
* ./maketgz
then upload the 3 curl packages maketgz created
* update these files:
www/_download.html
www/_changes.html
www/_newslog.html
www/Makefile
* commit the web changes
* 'cvs commit'
* 'cvs tag'
* write the release announcement, including:
- changes / bugfixes
- other curl-related news
- contributors
* mail release-announcement to curl-announce and curl-users

View File

@@ -1,7 +1,7 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
How To Compile
@@ -75,12 +75,22 @@ UNIX
./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:
If you have shared SSL libs installed in a directory where your run-time
linker doesn't find them (which usually causes configure failures), you can
provide the -R option to ld on some operating systems to set a hard-coded
path to the run-time linker:
LDFLAGS=-R/usr/local/ssl/lib ./configure --with-ssl
Another option to the previous trick, is to set LD_LIBRARY_PATH or edit the
/etc/ld.so.conf file.
If your SSL library was compiled with rsaref (this was common in the past
when used in the United States), you may also need to set:
LIBS=-lRSAglue -lrsaref
(as suggested by Doug Kaufman)
@@ -92,7 +102,7 @@ UNIX
CC=cc ./configure
or
env Cc=cc ./configure
env CC=cc ./configure
To force a static library compile, disable the shared library creation
by running configure like:
@@ -121,7 +131,7 @@ UNIX
Win32
=====
Without SSL:
MingW32 (GCC-2.95) style
@@ -158,17 +168,9 @@ Win32
Make the sources in the src/ drawer be a "win32 console application"
project. Name it curl.
With VC++, add 'ws2_32.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 to increase the
compiler's memory allocation limit, as the hugehelp.c won't compile
due to "too long puts string".
With SSL:
@@ -189,28 +191,33 @@ Win32
Microsoft command line style
----------------------------
Run the 'vcvars32.bat' file to get a proper environment. The
vcvars32.bat file is part of the Microsoft development environment and
you may find it in 'C:\Program Files\Microsoft Visual Studio\vc98\bin'
provided that you installed Visual C/C++ 6 in the default directory.
Then run 'nmake vc' in curl's root directory.
If you want to compile with zlib support, you will need to build
zlib (http://www.gzip.org/zlib/) as well. Please read the zlib
documentation on how to compile zlib. Define the ZLIB_PATH environment
variable to the location of zlib.h and zlib.lib, for example:
set ZLIB_PATH=c:\zlib-1.2.1
Then run 'nmake vc-zlib' in curl's root directory.
If you want to compile with SSL support you need the OpenSSL package.
Please read the OpenSSL documentation on how to compile and install
the OpenSSL libraries. The build process of OpenSSL generates the
libeay32.dll and ssleay32.dll files in the out32dll subdirectory in
the OpenSSL home directory. OpenSSL static libraries (libeay32.lib,
ssleay32.lib, RSAglue.lib) are created in the out32 subdirectory.
Run the 'vcvars32.bat' file to get a proper environment. The
vcvars32.bat file is part of the Microsoft development environment and
you may find it in 'C:\Program Files\Microsoft Visual Studio\vc98\bin'
provided that you installed Visual C/C++ 6 in the default directory.
Before running nmake define the OPENSSL_PATH environment variable with
the root/base directory of OpenSSL, for example:
set OPENSSL_PATH=c:\openssl-0.9.7a
lib/Makefile.vc6 depends on zlib (http://www.gzip.org/zlib/) as well.
Please read the zlib documentation on how to compile zlib. Define the
ZLIB_PATH environment variable to the location of zlib.h and zlib.lib,
for example:
set ZLIB_PATH=c:\zlib-1.1.4
set OPENSSL_PATH=c:\openssl-0.9.7d
Then run 'nmake vc-ssl' or 'nmake vc-ssl-dll' in curl's root
directory. 'nmake vc-ssl' will create a libcurl static and dynamic
@@ -219,10 +226,11 @@ Win32
version is a standalone executable not requiring any DLL at
runtime. This make method requires that you have the static OpenSSL
libraries available in OpenSSL's out32 subdirectory.
'nmake vc-ssl-dll' creates the libcurl dynamic library and
links curl.exe against libcurl and OpenSSL dynamically.
This executable requires libcurl.dll and the OpenSSL DLLs
at runtime.
'nmake vc-ssl-dll' creates the libcurl dynamic library and
links curl.exe against libcurl and OpenSSL dynamically.
This executable requires libcurl.dll and the OpenSSL DLLs
at runtime.
Run 'nmake vc-ssl-zlib' to build with both ssl and zlib support.
Microsoft / Borland style
-------------------------
@@ -233,27 +241,27 @@ Win32
Using Borland C++ compiler version 5.5.1 (available as free download
from Borland's site)
---------------------------------------------------------------------
compile openssl
Make sure you include the paths to curl/include and openssl/inc32 in
your bcc32.cnf file
eg : -I"c:\Bcc55\include;c:\path_curl\include;c:\path_openssl\inc32"
Check to make sure that all of the sources listed in lib/Makefile.b32
are present in the /path_to_curl/lib directory. (Check the src
directory for missing ones.)
Make sure the environment variable "BCCDIR" is set to the install
location for the compiler eg : c:\Borland\BCC55
command line:
make -f /path_to_curl/lib/Makefile-ssl.b32
compile simplessl.c with appropriate links
c:\curl\docs\examples\> bcc32 -L c:\path_to_curl\lib\libcurl.lib
-L c:\borland\bcc55\lib\psdk\ws2_32.lib
-L c:\openssl\out32\libeay32.lib
@@ -285,6 +293,13 @@ Win32
- Add defines to Project/Settings/C/C++/General/Preprocessor Definitions
in the curllib.dsw/curllib.dsp Visual C++ 6 IDE project.
Important (with SSL or not):
When building an application that uses the static libcurl library, you
must add '-DCURL_STATICLIB' to your CFLAGS. Otherwise the linker will
look for dynamic import symbols.
IBM OS/2
========
@@ -355,18 +370,18 @@ VMS
+----+------------+-------------+---+
With the Ctrl-bits an application can tell if part or the whole message has
allready been printed from the program, DCL doesn't need to print it again.
already been printed from the program, DCL doesn't need to print it again.
Facility - basicaly the program ID. A code assigned to the program
Facility - basically the program ID. A code assigned to the program
the name can be fetched from external or internal message libraries
Errorcode - the errodes assigned by the application
Sev. - severity: Even = error, off = non error
0 = Warning
1 = Success
2 = Error
3 = Information
4 = Fatal
<5-7> reserved.
0 = Warning
1 = Success
2 = Error
3 = Information
4 = Fatal
<5-7> reserved.
This all presents itself with:
%<FACILITY>-<SeV>-<Errorname>, <Error message>
@@ -379,7 +394,7 @@ VMS
This was all compiled with:
Compaq C V6.2-003 on OpenVMS Alpha V7.1-1H2
Compaq C V6.2-003 on OpenVMS Alpha V7.1-1H2
So far for porting notes as of:
13-jul-2001
@@ -389,7 +404,7 @@ QNX
===
(This section was graciously brought to us by David Bentham)
As QNX is targetted for resource constrained environments, the QNX headers
As QNX is targeted for resource constrained environments, the QNX headers
set conservative limits. This includes the FD_SETSIZE macro, set by default
to 32. Socket descriptors returned within the CURL library may exceed this,
resulting in memory faults/SIGSEGV crashes when passed into select(..)
@@ -399,44 +414,6 @@ QNX
libcurl, by overriding CFLAGS during configure, example
# configure CFLAGS='-DFD_SETSIZE=64 -g -O2'
CROSS COMPILE
=============
(This section was graciously brought to us by Jim Duey, 23-oct-2001)
Download and unpack the cURL package. Version should be 7.9.1 or later.
'cd' to the new directory. (ie. curl-7.9.1-pre4)
Set environment variables to point to the cross-compile toolchain and call
configure with any options you need. Be sure and specify the '--host' and
'--build' parameters at configuration time. The following script is an
example of cross-compiling for the IBM 405GP PowerPC processor using the
toolchain from MonteVista for Hardhat Linux.
(begin script)
#! /bin/sh
export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin
export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include"
export AR=ppc_405-ar
export AS=ppc_405-as
export LD=ppc_405-ld
export RANLIB=ppc_405-ranlib
export CC=ppc_405-gcc
export NM=ppc_405-nm
configure --target=powerpc-hardhat-linux \
--host=powerpc-hardhat-linux \
--build=i586-pc-linux-gnu \
--prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \
--exec-prefix=/usr/local
(end script)
The '--prefix' parameter specifies where cURL will be installed. If
'configure' completes successfully, do 'make' and 'make install' as usual.
RISC OS
=======
@@ -472,6 +449,115 @@ AmigaOS
you can find a precompiled package at http://amiga.sourceforge.net/OpenSSL/
NetWare
=======
To compile curl.nlm / libcurl.nlm you need:
- either any gcc / nlmconv, or CodeWarrior 7 PDK 4 or later.
- gnu make and awk running on the platform you compile on;
native Win32 versions can be downloaded from:
http://www.gknw.com/development/prgtools/
- recent Novell LibC SDK available from:
http://developer.novell.com/ndk/libc.htm
- optional zlib sources (at the moment only dynamic linking with zlib.imp);
sources with NetWare Makefile can be obtained from:
http://www.gknw.com/mirror/zlib/
Set a search path to your compiler, linker and tools; if you want to have
zlib support then set the environment var ZLIB_PATH pointing to your zlib
sources, on Linux make sure the var OSTYPE contains the string 'linux';
and finally type 'make netware' from the top source directory...
I found on some Linux systems (RH9) that OS detection didnlt work although
a 'set | grep OSTYPE' shows the var present and set; I simply overwrote it
with 'OSTYPE=linux-rh9-gnu' and the detection in the Makefile worked...;
other options are currently not supported, although partly prepared.
The Ares lib builds arlready fine, and both test tools work fine at least
when build with CodeWarrior...; don't know yet why they fail when build with
gcc though; if you want to compile with Ares support then set an env var
WITH_ARES=1; I've not tested yet including libares into curl.
Any help in testing appreciated!
Builds automatically created 4 times a day from current CVS are here:
http://www.gknw.com/mirror/curl/autobuilds/
the status of these builds can be viewed at the autobuild table:
http://curl.haxx.se/auto/
CROSS COMPILE
=============
(This section was graciously brought to us by Jim Duey, with additions by
Dan Fandrich)
Download and unpack the cURL package. Version should be 7.9.1 or later.
'cd' to the new directory. (e.g. cd curl-7.12.3)
Set environment variables to point to the cross-compile toolchain and call
configure with any options you need. Be sure and specify the '--host' and
'--build' parameters at configuration time. The following script is an
example of cross-compiling for the IBM 405GP PowerPC processor using the
toolchain from MonteVista for Hardhat Linux.
(begin script)
#! /bin/sh
export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin
export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include"
export AR=ppc_405-ar
export AS=ppc_405-as
export LD=ppc_405-ld
export RANLIB=ppc_405-ranlib
export CC=ppc_405-gcc
export NM=ppc_405-nm
./configure --target=powerpc-hardhat-linux \
--host=powerpc-hardhat-linux \
--build=i586-pc-linux-gnu \
--prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \
--exec-prefix=/usr/local
(end script)
You may also need to provide a parameter like '--with-random=/dev/urandom'
to configure as it cannot detect the presence of a random number
generating device for a target system. The '--prefix' parameter
specifies where cURL will be installed. If 'configure' completes
successfully, do 'make' and 'make install' as usual.
In some cases, you may be able to simplify the above commands to as
little as:
./configure --host=ARCH-OS
There are a number of configure options that can be used to reduce the
size of libcurl for embedded applications where binary size is an
important factor. First, be sure to set the CFLAGS environment variable
when configuring with any compiler optimization flags to reduce the
size of the binary. For gcc, this would mean at minimum:
env CFLAGS='-Os' ./configure ...
Be sure to specify as many --disable- and --without- flags on the configure
command-line as you can to disable all the libcurl features that you
know your application is not going to need. Besides specifying the
--disable-PROTOCOL flags for all the types of URLs your application
will not use, here are some other flags that can reduce the size of the
library:
--disable-ares (disables support for the ARES DNS library)
--disable-cookies (disables support for HTTP cookies)
--disable-crypto-auth (disables HTTP cryptographic authentication)
--disable-ipv6 (disables support for IPv6)
--disable-verbose (eliminates debugging strings and error code strings)
--without-libidn (disables support for the libidn DNS library)
--without-ssl (disables support for SSL/TLS)
--without-zlib (disables support for on-the-fly decompression)
You may find that statically linking libcurl to your application will
result in a lower total size.
PORTS
=====
This is a probably incomplete list of known hardware and operating systems
@@ -488,6 +574,7 @@ PORTS
- Alpha Tru64 v5.0 5.1
- HP-PA HP-UX 9.X 10.X 11.X
- HP-PA Linux
- HP3000 MPE/iX
- MIPS IRIX 6.2, 6.5
- MIPS Linux
- Pocket PC/Win CE 3.0
@@ -506,10 +593,12 @@ PORTS
- Ultrix 4.3a
- i386 BeOS
- i386 DOS
- i386 Esix 4.1
- i386 FreeBSD
- i386 HURD
- i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4
- i386 NetBSD
- i386 Novell NetWare
- i386 OS/2
- i386 OpenBSD
- i386 SCO unix
@@ -522,28 +611,13 @@ PORTS
- m68k Linux
- m68k OpenBSD
- m88k dg-dgux5.4R3.00
- s390 Linux
- s390 Linux
- XScale/PXA250 Linux 2.4
OpenSSL
=======
You'll find OpenSSL information at:
http://www.openssl.org
MingW32/Cygwin
==============
You'll find MingW32 and Cygwin information at:
http://www.mingw.org
OpenLDAP
========
You'll find OpenLDAP information at:
http://www.openldap.org
Useful URLs
===========
OpenSSL http://www.openssl.org
MingW http://www.mingw.org
OpenLDAP http://www.openldap.org
Zlib http://www.gzip.org/zlib/

View File

@@ -3,59 +3,86 @@ join in and help us correct one or more of these! Also be sure to check the
changelog of the current development status, as one or more of these problems
may have been fixed since this was written!
* Doing resumed upload over HTTP does not work with '-C -', because curl
20. valgrind errors occur too often when 'make test' is used. It is because
too many third-party libs and tools have problems. When curl is built
without --disable-shared, the testing is done with a front-end script which
makes the valgrind testing include (ba)sh as well and that often causes
valgrind errors. Either we improve the valgrind error scanner a lot to
better identify (lib)curl errors only, or we disable valgrind checking by
default.
19. FTP 3rd party transfers with the multi interface doesn't work. Test:
define CURL_MULTIEASY, rebuild curl, run test case 230 - 232.
18. test case 57 has </test> that should be </client> but when corrected, the
test case fails!
16. FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
<password>, and <fpath> components, encoded as "%00". The problem is that
curl_unescape does not detect this, but instead returns a shortened C
string. From a strict FTP protocol standpoint, NUL is a valid character
within RFC 959 <string>, so the way to handle this correctly in curl would
be to use a data structure other than a plain C string, one that can handle
embedded NUL characters. From a practical standpoint, most FTP servers
would not meaningfully support NUL characters within RFC 959 <string>,
anyway (e.g., UNIX pathnames may not contain NUL).
15. Test case 241 fails on all systems that support IPv6 but that don't have
the host name 'ip6-localhost' in /etc/hosts (or similar) since the test case
uses that host name to test the IPv6 name to address resolver.
14. Test case 165 might fail on system which has libidn present, but with an
old iconv version (2.1.3 is a known bad version), since it doesn't recognize
the charset when named ISO8859-1. Changing the name to ISO-8859-1 makes the
test pass, but instead makes it fail on Solaris hosts that use its native
iconv.
13. curl version 7.12.2 fails on AIX if compiled with --enable-ares.
The workaround is to combine --enable-ares with --disable-shared
12. When connecting to a SOCKS proxy, the (connect) timeout is not properly
acknowledged after the actual TCP connect (during the SOCKS "negotiate"
phase). Pointed out by Lucas. Fix: need to select() and timeout properly.
11. Using configure --disable-[protocol] may cause 'make test' to fail for
tests using the disabled protocol(s).
10. To get HTTP Negotiate authentication to work fine, you need to provide a
(fake) user name (this concerns both curl and the lib) because the code
wrongly only considers authentication if there's a user name provided.
Bug report #1004841. How? http://curl.haxx.se/mail/lib-2004-08/0182.html
9. --limit-rate using -d or -F does not work. This is because the limit logic
is provided by the curl app in its read/write callbacks, and when doing
-d/-F the callbacks aren't used! Bug report #921395.
8. Doing resumed upload over HTTP does not work with '-C -', because curl
doesn't do a HEAD first to get the initial size. This needs to be done
manually for HTTP PUT resume to work, and then '-C [index]'.
* CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD have no way of providing user names
7. CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD have no way of providing user names
that contain a colon. This can't be fixed easily in a backwards compatible
way without adding new options (and then, they should most probably allow
setting user name and password separately).
* libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
6. libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
such parts should be sent to the server as 'CWD ' (without an argument).
The only exception to this rule, is that we knowingly break this if the
empty part is first in the path, as then we use the double slashes to
indicate that the user wants to reach the root dir (this exception SHALL
remain even when this bug is fixed).
* 1) libcurl does a POST
2) receives a 100-continue
3) sends away the POST
Now, if nothing else is returned from the server, libcurl MUST return
CURLE_GOT_NOTHING, but it seems it returns CURLE_OK as it seems to count
the 100-continue reply as a good enough reply.
* libcurl doesn't treat the content-length of compressed data properly, as
5. libcurl doesn't treat the content-length of compressed data properly, as
it seems HTTP servers send the *uncompressed* length in that header and
libcurl thinks of it as the *compressed* lenght. Some explanations are here:
libcurl thinks of it as the *compressed* length. Some explanations are here:
http://curl.haxx.se/mail/lib-2003-06/0146.html
* Downloading 0 (zero) bytes files over FTP will not create a zero byte file
locally, which is because libcurl doesn't call the write callback with zero
bytes. Explained here: http://curl.haxx.se/mail/archive-2003-04/0143.html
* Using CURLOPT_FAILONERROR (-f/--fail) will make authentication to stop
working if you use anything but plain Basic auth.
* IPv6 support on AIX 4.3.3 doesn't work due to a missing sockaddr_storage
4. IPv6 support on AIX 4.3.3 doesn't work due to a missing sockaddr_storage
struct. It has been reported to work on AIX 5.1 though.
* Running 'make test' on Mac OS X gives 4 errors. This seems to be related
to some kind of libtool problem:
http://curl.haxx.se/mail/archive-2002-03/0029.html and
http://curl.haxx.se/mail/archive-2002-03/0033.html
3. GOPHER transfers seem broken
* libcurl does not deal nicely with files larger than 2GB
* GOPHER transfers seem broken
* configure --disable-http is not fully supported. All other protocols seem
to work to disable.
* The -m parameter does not work when using telnet with curl on Windows.
* If a HTTP server responds to a HEAD request and includes a body (thus
2. If a HTTP server responds to a HEAD request and includes a body (thus
violating the RFC2616), curl won't wait to read the response but just stop
reading and return back. If a second request (let's assume a GET) is then
immediately made to the same server again, the connection will be re-used
@@ -65,62 +92,6 @@ may have been fixed since this was written!
More details on this is found in this libcurl mailing list thread:
http://curl.haxx.se/mail/lib-2002-08/0000.html
------------------------------------------------------------------------------
Q: My program blows up when I run lots of curl_easy_perform() calls on a
single thread
Q: My program dies when a single thread re-enters the win32 select() call
via curl_easy_perform()
Q: --- add your own flavour here ---
Single Threaded Re-Entracy
--------------------------
There is a glitch / trick to using cURL on Win32 related to re-entrancy.
This experience was gained on verion 7.9.4 using Windows NT SP3 in a banking
environment (just in case you wanted to know).
If you have already called curl_easy_perform(), and *somehow* you cause your
single thread of execution to make another call to curl_easy_perform() - the
windows socket() call used to create a new socket for the second connection
can return with 10044 / 10043 error codes.
The WSA errors we experienced are:
WSAEPROTONOSUPPORT
(10043)
Protocol not supported.
The requested protocol has not been configured into the system, or no
implementation for it exists. For example, a socket call requests a
SOCK_DGRAM socket, but specifies a stream protocol.
WSAESOCKTNOSUPPORT
(10044)
Socket type not supported.
The support for the specified socket type does not exist in this address
family. For example, the optional type SOCK_RAW might be selected in a
socket call, and the implementation does not support SOCK_RAW sockets at
all.
We have experienced this by creating a timer that ticks every 20ms, and on
the tick making a curl_easy_perform() call. The call usually completed in
about 300ms. And we expected (before this test) that the timer would NOT be
fired during a call to curl_easy_perform(), howvever, while the first
curl_easy_perform() is running a tick *is* fired by the windows API somehow,
and we then call curl_easy_perform() again - thus single threaded
re-entrancy is achieved.
Notes:
* We made sure that a new CURL structure was being used for each
curl_easy_perform() request, and that the curl_global_init() had been called
beforehand.
* I'm happy to answer any questions about this problem to try to track it
down.
* Once the socket() call started failing, there is no hope - it never works
again.
* Slowing the timer down to give each request enough time to complete solves
this problem completely.
If anyone has the source code to the WinNT implementation of socket() and
can figure out WHY this can occur, more tracing can be performed.
John Clayton <John.Clayton at barclayscapital.com>
1. LDAP support requires that not only the OpenLDAP shared libraries be
present at run time, but the development libraries (liblber.so and
libldap.so) as well (not applicable to Windows).

86
docs/LICENSE-MIXING Normal file
View File

@@ -0,0 +1,86 @@
License Mixing with apps, libcurl and Third Party Libraries
===========================================================
libcurl can be built to use a fair amount of various third party libraries,
libraries that are written and provided by other parties that are distributed
using their own licenses. Even libcurl itself contains code that may cause
problems to some. This document attempts to describe what licenses libcurl and
the other libraries use and what possible dilemmas linking and mixing them all
can lead to for end users.
I am not a lawyer and this is not legal advice!
One common dilemma is that GPL[1]-licensed code is not allowed to be linked
with code licensed under the Original BSD license (with the announcement
clause, unless there's a specified exception in the GPL-licensed module). You
may still build your own copies that use them all, but distributing them as
binaries would be to violate the GPL license - unless you accompany your
license with an exception[2]. This particular problem was addressed when the
Modified BSD license was created, which does not have the annoncement clause
that collides with GPL.
libcurl http://curl.haxx.se/docs/copyright.html
Uses an MIT (or Modified BSD)-style license that is as liberal as
possible. Some of the source files that deal with KRB4 have Original
BSD-style announce-clause licenses. You may not distribute binaries
with krb4-enabled libcurl that also link with GPL-licensed code!
OpenSSL http://www.openssl.org/source/license.html
Uses an Original BSD-style license with an announement clause that
makes it "incompatible" with GPL. You are not allowed to ship binaries
that link with OpenSSL that includes GPL code (unless that specific
GPL code includes an exception for OpenSSL - a habit that is growing
more and more common).
c-ares http://daniel.haxx.se/projects/c-ares/license.html
Uses an MIT license that is very liberal and imposes no restrictions
on any other library or part you may link with.
zlib http://www.gzip.org/zlib/zlib_license.html
Uses an MIT-style license that shouldn't collide with any other
library.
krb4
While nothing in particular says that a Kerberos4 library must use any
particular license, the one I've tried and used successfully so far
(kth-krb4) is Original BSD-licensed with the announcement clause. Some
of the code in libcurl that is written to deal with Kerberos4 likewise
have such a license.
GSSAPI
While nothing in particular says that a GSS/Kerberos5 library must use
any particular license, the one I've used (Heimdal) is Original BSD-
licensed with the announcement clause.
fbopenssl
Unclear license. Based on its name, I assume that it uses the OpenSSL
license and thus shares the same issues as described for OpenSSL
above.
libidn http://www.gnu.org/licenses/lgpl.html
Uses the GNU Lesser General Public License. LGPL is a variation of GPL
with slightly less aggressive "copyleft". This license requires more
requirements to be met when distributing binaries, see the license for
details. Also note that if you distribute a binary that includes this
library, you must also include the full LGPL license text. Please
properly point out what parts of the distributed package that the
license addresses.
OpenLDAP http://www.openldap.org/software/release/license.html
Uses a Modified BSD-style license. Since libcurl uses OpenLDAP as a
shared library only, I have not heard of anyone that ships OpenLDAP
linked with libcurl in an app.
[1] = GPL - GNU General Public License: http://www.gnu.org/licenses/gpl.html
[2] = http://www.fsf.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
how to write such an exception to the GPL

View File

@@ -63,6 +63,11 @@ USING PASSWORDS
curl -u name:passwd ftp://machine.domain:port/full/path/to/file
FTPS
It is just like for FTP, but you may also want to specify and use
SSL-specific options for certificates etc.
HTTP
The HTTP URL doesn't support user and password in the URL string. Curl
@@ -75,6 +80,12 @@ USING PASSWORDS
curl -u name:passwd http://machine.domain/full/path/to/file
HTTP offers many different methods of authentication and curl supports
several: Basic, Digest, NTLM and Negotiate. Without telling which method to
use, curl defaults to Basic. You can also ask curl to pick the most secure
ones out of the ones that the server accepts for the given URL, by using
--anyauth.
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.
@@ -159,8 +170,8 @@ UPLOADING
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.
Note that the http server must have been configured to accept PUT before
this can be done successfully.
For other ways to do http data upload, see the POST section below.
@@ -359,7 +370,7 @@ COOKIES
curl -b headers www.example.com
While saving headers to a file is a working way to store cookies, it is
however error-prone and not the prefered way to do this. Instead, make curl
however error-prone and not the preferred way to do this. Instead, make curl
save the incoming cookies using the well-known netscape cookie format like
this:
@@ -377,7 +388,7 @@ COOKIES
file contents. In the above command, curl will parse the header and store
the cookies received from www.example.com. curl will send to the server the
stored cookies which match the request as it follows the location. The
file "empty.txt" may be a non-existant file.
file "empty.txt" may be a nonexistent file.
Alas, to both read and write cookies from a netscape cookie file, you can
set both -b and -c to use the same file:
@@ -406,7 +417,7 @@ PROGRESS METER
Upload - the average transfer speed of the upload
Time Total - expected time to complete the operation
Time Current - time passed since the invoke
Time Left - expected time left to completetion
Time Left - expected time left to completion
Curr.Speed - the average transfer speed the last 5 seconds (the first
5 seconds of a transfer is based on less time of course.)
@@ -426,14 +437,14 @@ SPEED LIMIT
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:
that the above operation must be completed in whole within 30 minutes:
curl -m 1800 -Y 3000 -y 60 www.far-away-site.com
Forcing curl not to transfer data faster than a given rate is also possible,
which might be useful if you're using a limited bandwidth connection and you
don't want your transfer to use all of it (sometimes referred to as
"bandwith throttle").
"bandwidth throttle").
Make curl transfer data no faster than 10 kilobytes per second:
@@ -569,17 +580,17 @@ NETWORK INTERFACE
Get a web page from a server using a specified port for the interface:
curl --interface eth0:1 http://www.netscape.com/
curl --interface eth0:1 http://www.netscape.com/
or
curl --interface 192.168.1.10 http://www.netscape.com/
curl --interface 192.168.1.10 http://www.netscape.com/
HTTPS
Secure HTTP requires SSL libraries 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.
using the HTTPS protocol.
Example:
@@ -754,7 +765,7 @@ NETRC
to specify name and password for commonly visited ftp sites in a file so
that you don't have to type them in each time you visit those sites. You
realize this is a big security risk if someone else gets hold of your
passwords, so therefor most unix programs won't read this file unless it is
passwords, so therefore most unix programs won't read this file unless it is
only readable by yourself (curl doesn't care though).
Curl supports .netrc files if told so (using the -n/--netrc and
@@ -819,30 +830,28 @@ TELNET
to track when the login prompt is received and send the username and
password accordingly.
PERSISTANT CONNECTIONS
PERSISTENT CONNECTIONS
Specifying multiple files on a single command line will make curl transfer
all of them, one after the other in the specified order.
libcurl will attempt to use persistant connections for the transfers so that
libcurl will attempt to use persistent connections for the transfers so that
the second transfer to the same host can use the same connection that was
already initiated and was left open in the previous transfer. This greatly
decreases connection time for all but the first transfer and it makes a far
better use of the network.
Note that curl cannot use persistant connections for transfers that are used
Note that curl cannot use persistent connections for transfers that are used
in subsequence curl invokes. Try to stuff as many URLs as possible on the
same command line if they are using the same host, as that'll make the
transfers faster. If you use a http proxy for file transfers, practicly
all transfers will be persistant.
Persistant connections were introduced in curl 7.7.
transfers faster. If you use a http proxy for file transfers, practically
all transfers will be persistent.
MAILING LISTS
For your convenience, we have several open mailing lists to discuss curl,
its development and things relevant to this. Get all info at
http://curl.haxx.se/mail/. The lists available are:
http://curl.haxx.se/mail/. Some of the lists available are:
curl-users
@@ -856,24 +865,18 @@ MAILING LISTS
curl-announce
Low-traffic. Only announcements of new public versions.
Low-traffic. Only receives announcements of new public versions. At worst,
that makes something like one or two mails per month, but usually only one
mail every second month.
curl-and-PHP
curl-and-php
Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP
with a curl angle.
curl-commits
curl-and-python
Receives notifications on all CVS commits done to the curl source module.
This can become quite a large amount of mails during intense development,
be aware. This is for us who like email...
curl-www-commits
Receives notifications on all CVS commits done to the curl www module
(basicly the web site). This can become quite a large amount of mails
during intense changing, be aware. This is for us who like email...
Python hackers using curl with or without the python binding pycurl.
Please direct curl questions, feature requests and trouble reports to one of
these mailing lists instead of mailing any individual.

View File

@@ -4,25 +4,20 @@
AUTOMAKE_OPTIONS = foreign no-dependencies
man_MANS = \
curl.1 \
curl-config.1
man_MANS = curl.1 curl-config.1
GENHTMLPAGES = curl.html curl-config.html
PDFPAGES = curl.pdf curl-config.pdf
HTMLPAGES = \
curl.html \
curl-config.html \
index.html
PDFPAGES = \
curl.pdf \
curl-config.pdf
HTMLPAGES = $(GENHTMLPAGES) index.html
SUBDIRS = examples libcurl
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES)
EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS \
VERSIONS KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) \
HISTORY INSTALL libcurl-the-guide $(PDFPAGES)
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
$(PDFPAGES) LICENSE-MIXING README.netware
MAN2HTML= roffit < $< >$@

Some files were not shown because too many files have changed in this diff Show More