Compare commits

...

410 Commits

Author SHA1 Message Date
Daniel Stenberg
f2f07dad34 spell and 7.20.0 2010-02-09 10:06:48 +00:00
Daniel Stenberg
06ae8ca5a6 - When downloading compressed content over HTTP and the app as asked libcurl
to automatically uncompress it with the CURLOPT_ENCODING option, libcurl
  could wrongly provide the callback with more data than what the maximum
  documented amount. An application could thus get tricked into badness if the
  maximum limit was trusted to be enforced by libcurl itself (as it is
  documented).

  This is further detailed and explained in the libcurl security advisory
  20100209 at

    http://curl.haxx.se/docs/adv_20100209.html
2010-02-09 09:35:48 +00:00
Daniel Stenberg
d33da42334 set VERSIONINFO accordingly for the 7.20.0 release 2010-02-09 09:35:07 +00:00
Yang Tse
e118cd4ca0 warning fix 2010-02-06 17:31:09 +00:00
Yang Tse
71593dfe57 OOM handling fix 2010-02-06 17:30:06 +00:00
Yang Tse
0f4a91afde OOM handling fix 2010-02-06 13:21:45 +00:00
Yang Tse
2c2464a682 fix compiler warning 2010-02-05 20:52:00 +00:00
Yang Tse
880452d2ed fix compiler warning 2010-02-05 19:24:22 +00:00
Yang Tse
e3009f2950 fix compiler warning 2010-02-05 19:19:34 +00:00
Yang Tse
cad9c3f55f Addes OOM handling for curl_easy_setopt() calls in test 2010-02-05 18:07:19 +00:00
Yang Tse
12d01bc5f7 - avoid OpenSSL 0.9.8 ENGINE_by_id memory leak
- cleanup parenthesis usage in return statements
2010-02-05 09:33:36 +00:00
Yang Tse
bc7615ae2d - attempt to workaround icc 9.1 optimizer issue 2010-02-05 09:32:11 +00:00
Yang Tse
7aef172a34 fix printf-style format strings 2010-02-04 19:44:31 +00:00
Yang Tse
f47b84b57f Validate server port argument 2010-02-04 17:17:19 +00:00
Yang Tse
1a5749424b Fix variable initialization 2010-02-04 14:50:58 +00:00
Yang Tse
a9a5a8e45c Modified test case 557 to additionally verify libcurl's internal curl_m*printf()
functions formatting functionality when handling signed and unsigned shorts.
2010-02-04 14:41:01 +00:00
Yang Tse
8044366134 Added size check for 'short' data type 2010-02-04 14:40:11 +00:00
Yang Tse
15efa262bb Fix compiler warning: unused variable 2010-02-04 10:08:39 +00:00
Yang Tse
429e544556 added an additional second to allow test to pass on heavily loaded servers 2010-02-04 09:55:45 +00:00
Dan Fandrich
680434f313 Changed the Watcom makefiles to make them easier to keep in sync with
Makefile.inc since that can't be included directly.
2010-02-03 23:07:11 +00:00
Daniel Stenberg
c9f46446d5 more symbols added in 7.20.0 2010-02-03 18:18:13 +00:00
Yang Tse
b77d0db59e Fix OOM handling 2010-02-03 13:28:47 +00:00
Yang Tse
3205ac35b0 Fix progressmode Configurable struct member data type. Changed to
'int' which fits better with existing CURL_PROGRESS_* definitions.
2010-02-03 10:57:42 +00:00
Yang Tse
381a4d6efe Fix portability issue related with unaligned memory access 2010-02-03 06:49:27 +00:00
Yang Tse
f6d288a397 Fix compiler warnings: conversion from 'const int ' to 'unsigned char ', possible loss of data 2010-02-03 06:44:18 +00:00
Yang Tse
013ec6a92f cookies with same path length might get sorted in different order when
using different qsort implementations. In order to make this test give
same results on different systems, paths now have different lengths.
2010-02-03 01:53:47 +00:00
Yang Tse
e2fc294470 added an additional second to allow test to pass on heavily loaded servers 2010-02-03 01:41:07 +00:00
Yang Tse
d1717e7c90 Fix compiler warning: conditional expression is constant 2010-02-02 16:25:07 +00:00
Yang Tse
e569ff959f Fix compiler warning: local variable may be used without having been initialized. 2010-02-02 16:23:42 +00:00
Yang Tse
839b61c32a Fix compiler warnings: conversion from 'const int ' to 'unsigned char ', possible loss of data 2010-02-02 16:23:01 +00:00
Yang Tse
d28b8d3158 Fix compiler warnings:
(1) conversion from 'const int ' to 'unsigned char ', possible loss of data
(2) conditional expression is constant
2010-02-02 16:21:37 +00:00
Yang Tse
2dfbd0d050 mention a couple of changes back from November 2010-02-02 15:23:13 +00:00
Yang Tse
54879d7763 mention run time statistics options 2010-02-02 14:46:55 +00:00
Yang Tse
49ba75af26 - Symbol CURL_FORMAT_OFF_T now obsoleted, will be removed in a future release,
symbol will not be available when building with CURL_NO_OLDIES defined. Use
  of CURL_FORMAT_CURL_OFF_T is preferred since 7.19.0
2010-02-02 12:58:49 +00:00
Yang Tse
232d17ec64 avoid possibility of using obsoleted stuff 2010-02-02 12:39:10 +00:00
Yang Tse
bafba6946c remove setup.h inclusion which is already done from test.h inclusion 2010-02-02 12:36:16 +00:00
Kamil Dudka
da23b16ad8 mention SOCKS related problems in the curl(1) man page 2010-02-02 12:27:12 +00:00
Yang Tse
46de140aca Fix compiler warning: variable was set but never used
Simplify preprocessor symbol checking
2010-02-02 09:15:52 +00:00
Daniel Stenberg
17a2c32ca9 Julien Chaffraix pointed out a comment mistake, and I re-indented the code
slightly while editing
2010-02-02 08:48:58 +00:00
Yang Tse
9f6c4daa27 include headers 2010-02-02 07:01:21 +00:00
Yang Tse
ea72194650 Conroy added a check to the coded message size since the docs stipulate
that each call will contain a full protocol packet.
2010-02-01 22:14:22 +00:00
Yang Tse
35e220606d Conroy's fix to make the code match with the RTP documentation regarding
writing out the whole header. The docs say it writes the whole header,
but the code (before this patch) did not write out the leading $.
2010-02-01 22:13:55 +00:00
Daniel Stenberg
55f1e787f3 We introduce a loop in lib/multi.c around all calls to multi_runsingle() and
simply check for CURLM_CALL_MULTI_PERFORM internally. This has the added
benefit that this goes in line with my long-term wishes to get rid of the
CURLM_CALL_MULTI_PERFORM all together from the public API.
2010-02-01 21:42:44 +00:00
Yang Tse
516cf5c8dd update rtsp server header field from SWS to RTSPD 2010-02-01 19:57:11 +00:00
Yang Tse
35fbeda003 Test suite support for RTSP 2010-02-01 12:05:08 +00:00
Yang Tse
715e3a806f Make Curl_pop3_write() additionally truncate trailing POP3_EOB from received
string buffer, otherwise Curl_client_write() call with zero size would write
to the end of string buffer including matched POP3_EOB.
2010-01-30 05:22:30 +00:00
Yang Tse
6ebd71d186 WIN32 fix, _beginthreadex() may return either 0 or -1L upon failure 2010-01-29 17:47:54 +00:00
Yang Tse
4ee4e66c4f fix errno usage for WIN32 builds 2010-01-29 16:38:43 +00:00
Yang Tse
4d19ebe738 fix printf-style format strings 2010-01-29 12:29:26 +00:00
Yang Tse
5312fdcd73 Chris Conroy fixed test #568 issues with carriage returns 2010-01-29 02:58:39 +00:00
Yang Tse
fce02e1cab RTSP followup fix. Both the pipelined and non-pipelined case need to
check for (excess > 0 && !k->ignorebody).
2010-01-29 01:16:23 +00:00
Daniel Stenberg
15ddc1f134 - Tommie Gannert pointed out a silly bug in ares_process_fd() since it didn't
check for broken connections like ares_process() did. Based on that, I
  merged the two functions into a single generic one with two front-ends.
2010-01-28 22:03:48 +00:00
Yang Tse
d65cf7889b fix printf-style format strings 2010-01-28 15:34:18 +00:00
Yang Tse
ddab9bd2ec Use 'size_t' for GETNAMEINFO_TYPE_ARG2 definition for VMS.
http://curl.haxx.se/mail/lib-2009-12/0293.html
2010-01-28 10:56:43 +00:00
Yang Tse
eff18763a1 portability fix 2010-01-28 10:27:09 +00:00
Yang Tse
3e21f1e971 fix printf-style format strings 2010-01-28 07:52:12 +00:00
Yang Tse
ccffed997e Known bug #64 fixed by Constantine Sapuntzakis and Joshua Kwan in 7.20.0 2010-01-28 05:09:19 +00:00
Yang Tse
6259bcd51f Chris Conroy provided first RTSP tests 2010-01-28 04:58:03 +00:00
Yang Tse
a4031dbd85 RTSP tests disabled until test harness RTSP support is updated 2010-01-28 04:55:19 +00:00
Yang Tse
2f3bce1193 Chris Conroy's RTSP followup fixes 2010-01-28 01:39:16 +00:00
Yang Tse
3cb76e5ebb mention asynchronous DNS lookups enhancements 2010-01-27 18:10:35 +00:00
Yang Tse
6418c0588d Restore normal operation:
c-ares is only enabled when specifically requested.

  Consequently, c-ares default setting is disabled.
2010-01-27 06:59:02 +00:00
Yang Tse
124b35aafe fix c-ares assumed check being skipped 2010-01-27 04:56:07 +00:00
Yang Tse
bbefdf88fd fix compiler warning 2010-01-27 03:43:34 +00:00
Yang Tse
06c96d01d2 fix LDFLAGS preservation in CURL_CHECK_LIB_ARES 2010-01-27 03:41:05 +00:00
Daniel Stenberg
83e91586ef no need to take precautiono for how things were before 7.16.0 since that
is now a very long time ago
2010-01-26 23:02:13 +00:00
Daniel Stenberg
c82a1f95eb - Mike Crowe made libcurl return CURLE_COULDNT_RESOLVE_PROXY when it is the
proxy that cannot be resolved when using c-ares. This matches the behaviour
  when not using c-ares.
2010-01-26 22:59:43 +00:00
Dan Fandrich
d34982bb65 Added curl_threads.c to a few more non-configure build files 2010-01-26 18:51:39 +00:00
Yang Tse
22ed0f5059 minor fixes for --enable-ares configure option 2010-01-26 15:07:40 +00:00
Daniel Stenberg
9bc897f380 Andre Guibert de Bruet improved the libssh2 error code translation 2010-01-26 12:25:03 +00:00
Yang Tse
9b0e57b0f7 resolver selection for non-configure Windows builds, default is threaded DNS 2010-01-26 12:13:39 +00:00
Yang Tse
1d86ebfc88 add curl_threads.c to non-configure target build files 2010-01-26 09:20:09 +00:00
Yang Tse
a9b860765d onstantine Sapuntzakis threaded resolver enhancements 2010-01-26 08:43:21 +00:00
Yang Tse
483ff1ca75 Constantine Sapuntzakis threaded resolver enhancements 2010-01-25 23:50:13 +00:00
Yang Tse
c054b8bfa7 Constantine Sapuntzakis provided initial thread abstraction layer 2010-01-25 23:46:27 +00:00
Yang Tse
340ab2f87f make Curl_handler_*_proxy definition static 2010-01-25 23:41:02 +00:00
Dan Fandrich
f8b16e5ccb Updated minimum library sizes 2010-01-25 23:28:09 +00:00
Yang Tse
4bb80cfd75 fix compiler warning 2010-01-25 04:36:13 +00:00
Daniel Stenberg
de2cc11a73 Julien Chaffraix corrected bad #elif lines to silence warnings 2010-01-24 22:44:10 +00:00
Yang Tse
c656098ee0 HAVE_GETADDRINFO_THREADSAFE definition for non-configure win32 builds 2010-01-24 01:13:47 +00:00
Bjorn Stenberg
94f33457d3 Mention -J change 2010-01-23 20:14:39 +00:00
Bjorn Stenberg
80675818e0 Added -J/--remote-header-name. 2010-01-23 20:07:12 +00:00
Daniel Stenberg
b0e2d47a3e "remove progress meter from libcurl" at next API break 2010-01-23 20:02:50 +00:00
Yang Tse
0abd928d3d add inclusion of curl_memory.h 2010-01-23 17:31:54 +00:00
Yang Tse
597ad5a2ce adjust preprocessor symbol definition check relative to resolver specialty 2010-01-23 13:53:33 +00:00
Yang Tse
703fa98a48 PKTSIZE might have been already defined in arpa/tftp.h 2010-01-23 13:51:53 +00:00
Dan Fandrich
ec4647c0f9 Include "curl_memory.h" to get the strdup replacement when necessary 2010-01-23 10:04:04 +00:00
Daniel Stenberg
33ce0ec1f1 wrap long lines and do some indent policing 2010-01-22 23:21:39 +00:00
Yang Tse
1435864030 Definitions of resolver specialty compile-time defines CURLRES_* moved
from hostip.h to setup.h in order to allow proper inclusion in any file.

This represents no functional change at all in which resolver is used,
everything still works as usual, internally and externally there is no
difference in behavior.
2010-01-22 20:27:48 +00:00
Yang Tse
4a8a731476 adjust rtsp protocol support in curl-config and libcurl.pc when http is disabled 2010-01-22 16:38:32 +00:00
Yang Tse
6636fbf238 deal with the possibility that CURL_DISABLE_RTSP may already be defined 2010-01-22 15:15:08 +00:00
Yang Tse
c94d44505f fix compiler warning: statement is unreachable 2010-01-22 14:21:28 +00:00
Yang Tse
0032ce762e fix compilation when http is disabled 2010-01-22 14:20:56 +00:00
Yang Tse
bdb338b3c7 disabling of rtsp when http isn't enabled required here for non-configure systems 2010-01-22 14:20:08 +00:00
Daniel Stenberg
099eed7bf1 wrap long lines, remove (very old) attribution from code 2010-01-22 13:52:35 +00:00
Daniel Stenberg
bc253a4d5f cleanups by Julien Chaffraix 2010-01-22 13:14:51 +00:00
Daniel Stenberg
a771fb0d41 alphabetically sort the list of supported protocols 2010-01-22 13:06:50 +00:00
Daniel Stenberg
c047fe8e90 In spite claiming to tbe disabled by default, RTSP is enabled and it now
also says so. I also made the list of protocols get sorted.
2010-01-22 12:52:35 +00:00
Daniel Stenberg
e45eefcb90 expanded to provide info about the newer protocols too 2010-01-22 12:27:38 +00:00
Daniel Stenberg
844c19cc5b s/RTPFUNCTION/INTERLEAVEFUNCTION/
s/RTPDATA/INTERLEAVEDATA/
2010-01-22 12:17:03 +00:00
Daniel Stenberg
4a8570313a keep lines shorter than 80 columns, and reduce/remove the use of the word
'note' in most description as it is mostly useless.
2010-01-22 09:19:10 +00:00
Yang Tse
e59a5cbe4e Julien Chaffraix adjusted "<name> section" line length 2010-01-22 07:32:09 +00:00
Yang Tse
bfc4c33985 Constantine Sapuntzakis refactoring of async callbacks, allowing
removal of Curl_addrinfo_copy(), Curl_addrinfo6_callback(), and
Curl_addrinfo4_callback()
2010-01-22 06:36:52 +00:00
Dan Fandrich
5af20c70e4 Added rtsp.c to the non-configure target build files 2010-01-21 22:03:26 +00:00
Yang Tse
bd7430c1ee fix compiler warning 2010-01-21 19:27:32 +00:00
Yang Tse
6e5acc2fc1 make tftp_translate_code() static, it is only used from within tftp.c 2010-01-21 14:44:28 +00:00
Yang Tse
abe3e6b36c fix warning triggered when debugging on cygwin 2010-01-21 14:29:04 +00:00
Yang Tse
105e430641 allow exporting of exe_ext() sub 2010-01-21 14:26:32 +00:00
Yang Tse
4a349f7a54 improve displaylogcontent() sub fixing a warning 2010-01-21 14:25:41 +00:00
Daniel Stenberg
2f9a17fc44 remove typedef we ended up not using 2010-01-21 14:05:06 +00:00
Daniel Stenberg
bc4582b68a Chris Conroy brought support for RTSP transfers, and with it comes 8(!) new
libcurl options for controlling what to get and how to receive posssibly
interleaved RTP data. Initial commit.
2010-01-21 13:58:30 +00:00
Daniel Stenberg
e09718d457 Julien Chaffraix fixed line lengths 2010-01-21 12:28:29 +00:00
Daniel Stenberg
2c0418f154 Julien Chaffraix removed an old obsolete typedef 2010-01-21 11:48:48 +00:00
Daniel Stenberg
a74e885bef Yun Fu pointed out a flaw in the loop that checks handles, and I indented
the code more curl-style
2010-01-21 09:53:30 +00:00
Daniel Stenberg
6291a1cf23 "5.3 Sort outgoing cookies" removed, we now sort them 2010-01-21 09:32:51 +00:00
Yang Tse
a872ff742c SIGTERM is the signal to trap here, SIGKILL can't be caught. 2010-01-20 21:16:32 +00:00
Yang Tse
58a1557088 Use killsockfilters() to kill sockfilter processes, this ensures that when
killing a sockfilter process the actual PID from the pid file is used and
not the one returned by open2() which might be different.
2010-01-20 20:42:21 +00:00
Yang Tse
422a7869be Allow killsockfilters() to take a 5th optional parameter that when provided
indicates that only one of the two possible sockfilter processes should be
killed.  Valid values for this parameter are 'main' and 'data'.
2010-01-20 20:39:56 +00:00
Yang Tse
471e8eefb6 Use delete() to unset environment variables instead of assigning undef which
generates warning 'Use of uninitialized value in scalar assignment' with perl
versions older than 5.10
2010-01-20 20:08:50 +00:00
Yang Tse
d2e1ec58f2 Adjust valgrind logs file name detection.
Adjust environment vars setting and restoring from test definition.

Avoid using strftime in torture sub.
2010-01-20 18:31:52 +00:00
Daniel Stenberg
48032c0880 modified test case 8 to also make sure that we deal with cookies using
identical names but different paths properly
2010-01-20 09:39:40 +00:00
Daniel Stenberg
877dad1e24 - As was pointed out on the http-state mailing list, the order of cookies in a
HTTP Cookie: header _needs_ to be sorted on the path length in the cases
  where two cookies using the same name are set more than once using
  (overlapping) paths. Realizing this, identically named cookies must be
  sorted correctly. But detecting only identically named cookies and take care
  of them individually is harder than just to blindly and unconditionally sort
  all cookies based on their path lengths. All major browsers also already do
  this, so this makes our behavior one step closer to them in the cookie area.

  Test case 8 was the only one that broke due to this change and I updated it
  accordingly.
2010-01-19 23:19:59 +00:00
Daniel Stenberg
01030e9240 oops, I forgot to cvs add this before my previous commit (Dan Fandrich
pointed it out to me)
2010-01-19 22:22:54 +00:00
Daniel Stenberg
a5ca3f1754 - David McCreedy brought a fix and a new test case (129) to make libcurl work
again when downloading files over FTP using ASCII and it turns out that the
  final size of the file is not the same as the initial size the server
  reported. This is very common since servers don't take the newline
  conversions into account.
2010-01-19 21:39:10 +00:00
Daniel Stenberg
77a17a21d1 "260 - IMAP, POP3 and SMTP support" done! 2010-01-19 21:29:29 +00:00
Daniel Stenberg
6035a4b044 avoid "Use of uninitialized value $l in concatenation" 2010-01-19 21:20:24 +00:00
Yang Tse
469d3ed591 Fail harder when curl coredumps trying to verify http and ftp servers.
Add some debug messages to see what's going on with valgrind logs.
2010-01-19 17:40:15 +00:00
Yang Tse
3afe2b65b6 prevent %runcert hash growth when clearing items 2010-01-19 02:01:01 +00:00
Yang Tse
afdc3d81e9 update copyright year notice 2010-01-19 01:30:07 +00:00
Yang Tse
ccfe279117 Constantine Sapuntzakis enhancements to make memory tracking log file writing
of messages atomic, on systems where an fwrite of a memory buffer is atomic.
2010-01-18 20:22:04 +00:00
Dan Fandrich
5b5ff41ef1 Added PEM certificate keyword 2010-01-18 20:20:07 +00:00
Yang Tse
0a713139f6 fix warnings 2010-01-18 17:47:01 +00:00
Yang Tse
0687bc6bd6 Stop ssl running server when cert file currently used by server is
different than the one specified in test definition for same server
2010-01-18 17:03:59 +00:00
Yang Tse
424a8882fb fix warnings 2010-01-18 14:49:31 +00:00
Yang Tse
3fdced357b - Remove QD restarting of https servers. Proper fixing required.
This will make tests 310 311 and 312 fail while fixing.

- Remove some debug messages
2010-01-18 02:53:25 +00:00
Yang Tse
ce2ac665e4 make verifyhttp use different file names depending on server characteristics 2010-01-18 02:36:39 +00:00
Yang Tse
0375f70b5c add serverfactors() sub which returns server characterization factors 2010-01-18 02:32:48 +00:00
Yang Tse
7f8980114b fix warnings 2010-01-17 20:28:07 +00:00
Yang Tse
312494f25f fix warnings 2010-01-17 14:47:30 +00:00
Yang Tse
8d97b33347 fix warnings 2010-01-17 14:31:13 +00:00
Yang Tse
b51b703a5b add some debug messages 2010-01-17 13:33:27 +00:00
Yang Tse
071c38988d use servername_id() from serverhelp.pm 2010-01-17 02:50:48 +00:00
Yang Tse
365e75a270 refactored stopping of test harness servers 2010-01-17 02:45:24 +00:00
Yang Tse
b992928f3d Store now this file in CVS with unix line endings.
maketgz already converts this file to DOS style with an awk filter.
2010-01-15 20:23:35 +00:00
Yang Tse
32413a8e34 Declaration of $sshdlog is done in sshhelp.pm 2010-01-15 20:14:37 +00:00
Yang Tse
ada2774ab2 Start using the centralized pidfile and logfile name generation
subroutines for ssh and socks test suite servers.
2010-01-15 18:55:01 +00:00
Dan Fandrich
a644af129e Added the new protocol source files to the non-autoconf build files 2010-01-15 06:33:46 +00:00
Yang Tse
7624527591 Squeeze slack time when killing more than one server from
the <killserver> section of test harness definition files.
2010-01-14 17:36:57 +00:00
Kamil Dudka
383bf1e476 - Suppressed side effect of OpenSSL configure checks, which prevented NSS from
being properly detected under certain circumstances. It had been caused by
  strange behavior of pkg-config when handling PKG_CONFIG_LIBDIR. pkg-config
  distinguishes among empty and non-existent environment variable in that case.
2010-01-14 01:37:55 +00:00
Yang Tse
8c8df3966b Give the test a bit mote time to run so it passes on slow machines 2010-01-13 01:21:40 +00:00
Kamil Dudka
4344215309 remove trailing spaces from configure.ac 2010-01-13 01:13:23 +00:00
Yang Tse
0643829444 Added test case #1112 which does an FTPS download with strict timeout
and slow data transfer in a similar way as test case #1086 does for FTP.

This also exercises <killserver> section for the FTPS server.
2010-01-12 22:29:18 +00:00
Yang Tse
7525670610 Make runtests.pl actually support any (valid) server specification
for the <killserver> section of test harness definition files.
2010-01-12 22:22:55 +00:00
Yang Tse
b32a96eda0 Fix tftp and sftp supported protocols in servername_str() 2010-01-12 22:11:13 +00:00
Yang Tse
82f5ffff8f Make sockfilter kill messages look alike server ones 2010-01-12 14:01:44 +00:00
Yang Tse
3fd67b5f36 Adjust vor VPATH builds 2010-01-12 03:01:00 +00:00
Daniel Stenberg
1647d64a4b - Gil Weber reported a peculiar flaw with the multi interface when doing SFTP
transfers: curl_multi_fdset() would return -1 and not set and file
  descriptors several times during a transfer of a single file. It turned out
  to be due to two different flaws now fixed. Gil's excellent recipe helped me
  nail this.
2010-01-11 23:15:10 +00:00
Daniel Stenberg
d17416190b ssh_statemach_act() is now modified to loop over the switch() to perform as
much as possible in one go, as long as it doesn't block and hasn't reached the
end of the state machine.
This avoids spurious -1 returns from curl_multi_fdset() simply because
previously it would return from this function without anything in EWOUDLBLOCK
and thus basically it wasn't actually waiting for anything!!
2010-01-11 23:10:53 +00:00
Daniel Stenberg
2158e234aa After the TCP connect is confirmed in CURLM_STATE_WAITCONNECT and it changes
state, we return CURLM_CALL_MULTI_PERFORM unconditionally then so that we
can act faster like in the case the protocol-specific connect doesn't block
on anything and we can just persue on the next action immediately. It also
then avoids a case where curl_multi_fdset() would return -1.
2010-01-11 23:05:35 +00:00
Daniel Stenberg
cb348a5b1f progress callback called repeatedly during slow connects 2010-01-11 21:38:35 +00:00
Daniel Stenberg
377b2db05b - Made sure that the progress callback is repeatedly called at a regular
interval even during very slow connects.
2010-01-11 21:38:13 +00:00
Daniel Stenberg
78b7d7f7a8 - The tests/runtests.pl script now checks to see if the test case that runs is
present in the tests/data/Makefile.am and outputs a notice message on the
  screen if not. Each test file has to be included in that Makefile.am to get
  included in release archives and forgetting to add files there is a common
  mistake. This is an attempt to make it harder to forget.
2010-01-11 15:50:30 +00:00
Yang Tse
5bec1b1cf0 secureserver.pl is now the test harness script used for SSL/TLS. 2010-01-11 04:51:14 +00:00
Yang Tse
cd7b12edff secureserver.pl is now the test harness script used for SSL/TLS.
Start using the centralized pidfile and logfile name generation
subroutines for https and ftps test suite servers.
2010-01-11 04:49:13 +00:00
Yang Tse
1103d0c718 Update error message to include port number 2010-01-10 04:24:46 +00:00
Yang Tse
aae97c998a Previous commit adjustments 2010-01-10 02:41:44 +00:00
Yang Tse
017c14cc99 Start using the centralized pidfile and logfile name generation
subroutines for ftp, pop3, imap and smtp test suite servers.
2010-01-09 18:35:59 +00:00
Daniel Stenberg
b90703f594 struct Curl_sh_entry's 'inuse' member was no longer used and is now removed 2010-01-09 00:03:33 +00:00
Daniel Stenberg
552c3de357 - Johan van Selst found and fixed a OpenSSL session ref count leak:
ossl_connect_step3() increments an SSL session handle reference counter on
  each call. When sessions are re-used this reference counter may be
  incremented many times, but it will be decremented only once when done (by
  Curl_ossl_session_free()); and the internal OpenSSL data will not be freed
  if this reference count remains positive. When a session is re-used the
  reference counter should be corrected by explicitly calling
  SSL_SESSION_free() after each consecutive SSL_get1_session() to avoid
  introducing a memory leak.

  (http://curl.haxx.se/bug/view.cgi?id=2926284)
2010-01-08 23:45:23 +00:00
Yang Tse
aa2f447400 Start using the centralized pidfile and logfile name generation
subroutines for http and tftp test suite servers.
2010-01-08 15:54:07 +00:00
Yang Tse
184f92d243 Remove extra line feed 2010-01-08 12:01:35 +00:00
Yang Tse
a1d701d05a Use '_stunnel.log' ending also for https test server log 2010-01-08 01:54:29 +00:00
Yang Tse
a114b7b1c0 sws and tftpd command line option naming adjustments 2010-01-08 01:48:54 +00:00
Daniel Stenberg
8524c04ca9 removed a parameter from the Curl_http_readwrite_headers() prototype to remove
the need for the struct forward declaration from http.h which caused problems
with gcc 2.96 and quite frankly the parameter wasn't necessary anyway
2010-01-07 22:48:28 +00:00
Claes Jakobsson
31630203b1 List fragment tests in Makefile.am and better provide better names 2010-01-07 14:44:04 +00:00
Daniel Stenberg
d37a9c4f87 removed Curl_http_header_append() prototype as it isn't used anymore, the
function was moved to http.c and was made static and renamed
2010-01-07 14:02:05 +00:00
Daniel Stenberg
88944eb13a - Make sure the progress callback is called repeatedly even during very slow
name resolves when c-ares is used for resolving.
2010-01-06 23:04:17 +00:00
Yang Tse
bd8096b42b Disable tests 802 and 803 2010-01-06 18:28:15 +00:00
Yang Tse
1e87e4bb4e Prevent detection of stdint.h on IRIX systems, even when available.
IRIX MIPSpro 7.4 C++ compiler does not tolerate inclusion of stdint.h
2010-01-06 18:25:10 +00:00
Claes Jakobsson
9bd03483ce Julien Chaffraix fixed so that the fragment part in an URL is not sent to the server anymore 2010-01-06 16:01:48 +00:00
Daniel Stenberg
2e83006603 use the modern name for this option 2010-01-04 18:43:29 +00:00
Kamil Dudka
fd903eb6be - Julien Chaffraix eliminated a duplicated initialization in singlesocket(). 2010-01-03 13:46:37 +00:00
Daniel Stenberg
2c93ec5303 - Make curl support --ssl and --ssl-reqd instead of the previous FTP-specific
versions --ftp-ssl and --ftp-ssl-reqd as these options are now used to
  control SSL/TLS for IMAP, POP3 and SMTP as well in addition to FTP. The old
  option names are still working but the new ones are the prefered ones
  (listed and documented).
2010-01-02 22:09:31 +00:00
Daniel Stenberg
d79b5a0613 stop at once if the EOB marker shows up, even if something else might get
sent afterwards
2010-01-01 19:49:44 +00:00
Daniel Stenberg
a62f32d3c2 update copyright year since we are in 2010 now 2010-01-01 14:52:50 +00:00
Daniel Stenberg
241c0ad5bd added CURLOPT_FTP_USE_PRET 2010-01-01 14:52:12 +00:00
Daniel Stenberg
605bbfc4c0 - Ingmar Runge enhanced libcurl's FTP engine to support the PRET command. This
command is a special "hack" used by the drftpd server, but even though it is
  a custom extension I've deemed it fine to add to libcurl since this server
  seems to survive and people keep using it and want libcurl to support
  it. The new libcurl option is named CURLOPT_FTP_USE_PRET, and it is also
  usable from the curl tool with --ftp-pret. Using this option on a server
  that doesn't support this command will make libcurl fail.
2010-01-01 14:44:44 +00:00
Daniel Stenberg
42d365f199 added descriptions for CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT 2009-12-31 22:38:10 +00:00
Daniel Stenberg
31266ca92a --mail-rcpt and --mail-from are starting to settle and work like this... 2009-12-31 21:59:50 +00:00
Daniel Stenberg
3f3f6be825 turned CURLOPT_MAIL_RCPT into a curl_slist list instead to support multiple
receivers, and made the command line tool thus support the option specified
many times
2009-12-31 21:52:01 +00:00
Yang Tse
01682cca55 Use '_stunnel.log' file name ending for stunneled server logs 2009-12-31 15:26:16 +00:00
Yang Tse
99a5a5a3e9 VMS adjustments by Steven M. Schweda 2009-12-31 13:35:24 +00:00
Yang Tse
eb0479575a Subs for refactoring purposes 2009-12-31 02:29:55 +00:00
Daniel Stenberg
97141d08f7 CURLOPT_HEADERDATA was added in 7.10 2009-12-30 23:14:30 +00:00
Daniel Stenberg
99e9938617 s/CURLOPT_WRITEHEADER/CURLOPT_HEADERDATA simply because it is a better name 2009-12-30 23:14:00 +00:00
Daniel Stenberg
6c6dc3f879 modified to get the EHLO domain from the path part of the URL instead of the
user name
2009-12-30 22:50:42 +00:00
Daniel Stenberg
a1311e5a24 moved the SMTP payload escape function into Curl_smtp_escape_eob and put
it in smtp.c
2009-12-30 22:09:43 +00:00
Daniel Stenberg
5e6ffe353a (SMTP) support DATA better in the server and make sure to "escape" CRLF.CRLF
sequences in uploaded data. The test server doesn't "decode" escaped dot-lines
but instead test cases must be written to take them into account. Added test
case 803 to verify dot-escaping.
2009-12-30 21:52:27 +00:00
Yang Tse
d7cd761047 Oops, should have removed 'not' in previous commit. 2009-12-30 19:43:12 +00:00
Yang Tse
05488d63d0 VMS build system enhancements by Steven M. Schweda and Craig A. Berry 2009-12-30 19:37:53 +00:00
Yang Tse
3184a91ec8 VMS specific preprocessor symbol checking adjustments 2009-12-30 17:59:56 +00:00
Yang Tse
0dde9056d7 VMS specific preprocessor symbol definition adjustments 2009-12-30 17:59:10 +00:00
Yang Tse
a487c80535 Replaced stricmp() usage with our portable strequal() 2009-12-30 15:47:23 +00:00
Daniel Stenberg
1e9a946e6d move HTTP-specific functions to http.c where they belong 2009-12-29 21:45:02 +00:00
Daniel Stenberg
7cd5ffc1bf test 802 is the first SMTP test, although not strictly SMTP yet... 2009-12-29 21:28:53 +00:00
Yang Tse
fa6631edd5 Mention last changes 2009-12-29 02:32:12 +00:00
Yang Tse
e70c0913b1 - Fix configure_socket() to use ares_socket_t instead of int data type. 2009-12-29 02:04:17 +00:00
Yang Tse
5b2a31ae41 - Where run-time error checks enabling compiler option /GZ was used it is now
replaced with equivalent /RTCsu for Visual Studio 2003 and newer versions.

- Compiler option /GX is now replaced with equivalent /EHsc for all versions.
2009-12-29 01:51:57 +00:00
Yang Tse
c796f2646e Leftover from previous commit 2009-12-28 20:10:00 +00:00
Yang Tse
d0f6bde732 Initial refactoring step for server name strings centralized generation 2009-12-28 20:00:41 +00:00
Daniel Stenberg
1bd5784a13 Julien Chaffraix's clarifications 2009-12-27 20:54:26 +00:00
Yang Tse
1f7d9f4f7b Adjust FreeBSD version check to follow FreeBSD Porter's Handbook
http://www.freebsd.org/doc/en/books/porters-handbook/porting-versions.html
2009-12-27 02:31:29 +00:00
Daniel Stenberg
b6ac8d62a1 symbols added in the CVS version meant for 7.20.0 2009-12-26 18:42:25 +00:00
Yang Tse
4ec17a08bc global variables reordering/refactoring/commenting 2009-12-26 18:32:19 +00:00
Daniel Stenberg
aefe0299e0 add pointer to the bug report 2009-12-25 23:35:16 +00:00
Daniel Stenberg
b89789d82f - Renato Botelho and Peter Pentchev brought a patch that makes the libcurl
headers work correctly even on FreeBSD systems before v8.
2009-12-25 23:32:01 +00:00
Daniel Stenberg
a218235964 first shot at actually doing the SMTP upload as well, not doing the proper
end-of-body treatment
2009-12-25 22:50:11 +00:00
Daniel Stenberg
73ad32e125 When verifying the SMTP server I had to add some hackery since SMTP in itself
doesn't really return any body data to check so I made SMTP check "headers"
as well.
2009-12-25 22:21:46 +00:00
Daniel Stenberg
77625f8560 first basic SMTP support 2009-12-25 22:20:37 +00:00
Yang Tse
1af64730e0 Adjust test number mismatch 2009-12-24 12:04:33 +00:00
Yang Tse
eacf62792f Enable warnings 2009-12-24 12:01:53 +00:00
Yang Tse
6ce407305b Fix warnings 2009-12-24 12:00:43 +00:00
Yang Tse
ae3892e8ab Fix warnings 2009-12-23 18:46:55 +00:00
Yang Tse
c74875d94e Back out some pingpong server stopping changes introduced last week in
order to re-use 'classic' stopping and allow taking test-suite run time
references from this state.
2009-12-23 15:20:20 +00:00
Yang Tse
271dc9c582 use Time::HiRes whenever available, independently of perl version 2009-12-22 13:46:06 +00:00
Yang Tse
7bede9180d log a message when continuing once sleep time is over 2009-12-22 13:45:01 +00:00
Yang Tse
f0917cabb5 - Ingmar Runge noticed that Windows config-win32.h configuration file
did not include a definition for HAVE_CLOSESOCKET which resulted in
  function close() being inappropriately used to close sockets.
2009-12-21 16:55:39 +00:00
Yang Tse
96395a908a Make 'classic' output end of a test-suite run become again the end
of output, even when run time statistics are shown.
2009-12-21 15:50:24 +00:00
Yang Tse
e9a993b9e9 Move stopping of servers instructed by test definition, after the removal of
server logs advisor read lock and before test results verifications are done.

When stopping a pingpong server, stop server before its slaves.
2009-12-21 14:53:07 +00:00
Daniel Stenberg
982fe33924 test 566 was missing 2009-12-21 14:51:07 +00:00
Yang Tse
fa188eec7b dead_child_handler also takes care of reaping pingpong server dead child processes 2009-12-21 14:43:29 +00:00
Yang Tse
bdd3763980 Reap processes dead children ASAP without blocking 2009-12-21 14:36:01 +00:00
Yang Tse
1cfa52b67d Reinstate hi resolution time logging since this is not what is
now adding 90 extra seconds to the total time some autobuilds
need to make a full test-run.
2009-12-21 14:33:01 +00:00
Patrick Monnerat
57d3488a0d Take new SMTP definitions into account in OS400 wrapper and RPG binding 2009-12-21 12:26:48 +00:00
Daniel Stenberg
83d34a246e first small steps towards smtp 2009-12-21 08:33:47 +00:00
Yang Tse
76b3c9d70f Replaced tabs with spaces 2009-12-21 02:37:23 +00:00
Daniel Stenberg
d911e22d8f remove some unused code 2009-12-20 22:11:16 +00:00
Yang Tse
efd1d9dc04 Improve delay command interruptability 2009-12-20 22:09:53 +00:00
Daniel Stenberg
88a0060b2e revert that, we already had a function named like that! 2009-12-20 22:08:06 +00:00
Daniel Stenberg
4adf7d62d4 rename the verifyftp function to verifyserver since it is used to verify
a wide variety of protocol servers
2009-12-20 22:00:23 +00:00
Daniel Stenberg
6add5baa3a free the allocated mailbox name at disconnect 2009-12-20 11:10:08 +00:00
Daniel Stenberg
2a3dafc0cd introducing the first IMAP FETCH test 2009-12-20 11:07:04 +00:00
Yang Tse
f912f8d5d2 - Attempt to fix script compilation failure on versions older than 5.007003,
corelist -a Time::HiRes lists this as the first version released with it.

- Ensure ftp check delay timer is always an integral number.
2009-12-20 03:48:32 +00:00
Daniel Stenberg
af7a5b297f support IMAP select and LOGOUT 2009-12-19 23:23:26 +00:00
Daniel Stenberg
344bbcf259 fix the ftp check delay timer to never be set below 1 to work correctly
in cases like test 190
2009-12-19 23:10:33 +00:00
Daniel Stenberg
240fa29e94 fixed a precaution check in the cookie code, pointed out by Julien Chaffraix 2009-12-19 19:20:26 +00:00
Yang Tse
010fe5acd5 Slack time reduction 2009-12-19 13:20:07 +00:00
Yang Tse
aeec8e0b38 Added runtests.pl '-r' option for run time statistics 2009-12-19 04:15:22 +00:00
Yang Tse
2d15ac3d4e server start and verification time as well as test preparation time
data is required in order to closer match total test execution time.
2009-12-18 19:17:14 +00:00
Yang Tse
53deae3781 Added test harness simple time execution stats 2009-12-18 15:23:18 +00:00
Yang Tse
39cc424e81 Comment out hi resolution time logging to verify if this is what might
be contributing 90 additional seconds to the total time some autobuilds
now need to make a full test-run.
2009-12-17 22:28:40 +00:00
Yang Tse
4d0b0cae9e Fix compilation failure 2009-12-17 20:01:24 +00:00
Yang Tse
8343cb8910 Test harness process control enhancements 2009-12-17 19:37:01 +00:00
Daniel Stenberg
a75d9d9169 uh, assign the bool it points to properly 2009-12-17 16:07:02 +00:00
Daniel Stenberg
54c60d0067 Stop overloading the conn->protocol field with the PROT_MISSING bit. It
really didn't belong there and had no real point.
2009-12-17 16:03:39 +00:00
Daniel Stenberg
91d05903b4 Remove pointless storing of the protocol as a string within the connectdata
struct, and instead use the already stored string in the handler struct.
2009-12-17 15:45:04 +00:00
Daniel Stenberg
10a11e3abe - David Byron fixed Curl_ossl_cleanup to actually call ENGINE_cleanup when
available.
2009-12-17 13:29:41 +00:00
Yang Tse
414180b363 gettimeofday() requires perl version newer than 5.6 2009-12-17 03:50:32 +00:00
Daniel Stenberg
7603a29fc3 Follow-up fix for the proxy fix I did for Jon Nelson's bug. It turned out I
was a bit too quick and broke test case 1101 with that change. The order of
some of the setups is sensitive. I now changed it slightly again.
2009-12-16 23:11:47 +00:00
Yang Tse
002ed5f298 Test harness process control enhancements 2009-12-16 19:55:35 +00:00
Yang Tse
044ba6dad2 Test #1106 needs an ftp enabled client 2009-12-16 15:24:12 +00:00
Yang Tse
3802d027cd Test harness process control enhancements 2009-12-16 15:16:06 +00:00
Daniel Stenberg
3111701c38 - Jon Nelson found a regression that turned out to be a flaw in how libcurl
detects and uses proxies based on the environment variables. If the proxy
  was given as an explicit option it worked, but due to the setup order
  mistake proxies would not be used fine for a few protocols when picked up
  from '[protocol]_proxy'. Obviously this broke after 7.19.4. I now also added
  test case 1106 that verifies this functionality.

  (http://curl.haxx.se/bug/view.cgi?id=2913886)
2009-12-14 23:16:09 +00:00
Yang Tse
2c9644b812 Fix compiler warning 2009-12-14 16:05:57 +00:00
Yang Tse
99daca5a48 Prevent perl script dying messages in output, since tearing down the pinpong
server in this way, upon sysread failures, is part of the expected behavior.
2009-12-14 15:39:15 +00:00
Yang Tse
a6abbb120e Adjust uppercase protocol string usage 2009-12-14 14:42:48 +00:00
Yang Tse
b0f548fb56 Fix compiler warnings 2009-12-14 14:02:43 +00:00
Yang Tse
364d76aca7 Fix compiler warnings 2009-12-14 13:27:50 +00:00
Yang Tse
6e9a484ea6 signal handling to cleanup on SIGINT and SIGTERM, followup 2009-12-13 03:45:32 +00:00
Yang Tse
303f74c740 reapply diff between revisions 1.103 and 1.102 2009-12-13 03:44:45 +00:00
Daniel Stenberg
4ea8ad584b updated with the new protocols 2009-12-12 22:48:11 +00:00
Daniel Stenberg
19b8a80ee9 might as well output all supported protocols at the end of configure to
make it more obvious how the output will be
2009-12-12 22:39:29 +00:00
Daniel Stenberg
30eb452adf show POP3S, IMAPS and SMTPS as protocols if SSL is enabled 2009-12-12 22:33:18 +00:00
Daniel Stenberg
92b9b46831 support disabling POP3, IMAP and SMTP and now they also appear in curl-config
--protocols output
2009-12-12 22:31:00 +00:00
Daniel Stenberg
83a6b34803 split out more protocol-specific structs from urldata.h into their own
protocol-specific header files
2009-12-12 22:17:51 +00:00
Daniel Stenberg
43fefab2a1 IMAP, POP3 and SMTP support 2009-12-12 22:05:11 +00:00
Daniel Stenberg
ec3bb8f727 introducing IMAP, POP3 and SMTP support (still lots of polish left to do) 2009-12-12 21:54:01 +00:00
Yang Tse
463d2d395c Prevent rewinding unless pipelining.
See http://curl.haxx.se/mail/lib-2009-12/0107.html
2009-12-11 18:41:29 +00:00
Yang Tse
2fc1752d6e Removed function prototype without implementation 2009-12-11 02:14:11 +00:00
Daniel Stenberg
296ebf382c - Siegfried Gyuricsko found out that the curl manual said --retry would retry
on FTP errors in the transient 5xx range. Transient FTP errors are in the
  4xx range. The code itself only tried on 5xx errors that occured _at login_.
  Now the retry code retries on all FTP transfer failures that ended with a
  4xx response.

  (http://curl.haxx.se/bug/view.cgi?id=2911279)
2009-12-10 21:02:11 +00:00
Daniel Stenberg
b91ed67276 argh, use the correct bug id 2009-12-10 20:26:44 +00:00
Daniel Stenberg
315253b367 - Constantine Sapuntzakis figured out a case which would lead to libcurl
accessing alredy freed memory and thus crash when using HTTPS (with
  OpenSSL), multi interface and the CURLOPT_DEBUGFUNCTION and a certain order
  of cleaning things up. I fixed it.

  (http://curl.haxx.se/bug/view.cgi?id=2891591)
2009-12-10 20:20:15 +00:00
Daniel Stenberg
3b1de97eaa minor indent change 2009-12-10 20:19:56 +00:00
Yang Tse
5ce6454d33 - Fixed curl erroneously reporting output stream write failures with disabled buffering 2009-12-10 16:46:21 +00:00
Yang Tse
0653fa107f signal handling to cleanup on SIGINT and SIGTERM, followup 2009-12-09 18:41:43 +00:00
Daniel Stenberg
ebe5339003 - Martin Storsjo made libcurl use the Expect: 100-continue header for posts
with unknown size. Previously it was only used for posts with a known size
  larger than 1024 bytes.
2009-12-07 20:25:17 +00:00
Daniel Stenberg
95362af43c 74. The HTTP spec allows headers to be merged and become comma-separated
instead of being repeated several times. This also include Authenticate: and
  Proxy-Authenticate: headers and while this hardly every happens in real life
  it will confuse libcurl which does not properly support it for all headers -
  like those Authenticate headers.
2009-12-04 21:52:58 +00:00
Yang Tse
d14bf09ab8 Fix 'uploaded' file descriptor leak 2009-12-03 20:37:49 +00:00
Yang Tse
636d2fe00a signal handling to cleanup on SIGINT and SIGTERM 2009-12-03 13:12:04 +00:00
Kamil Dudka
fb2425b147 lib/nss.c: avoid use of uninitialized value 2009-12-02 17:24:38 +00:00
Yang Tse
2286f566d0 signal handling to cleanup on SIGINT and SIGTERM 2009-12-02 15:02:30 +00:00
Yang Tse
ed2aa87e63 Set socket option SO_REUSEADDR=true on stunnel accept'ing port 2009-12-01 15:36:34 +00:00
Daniel Stenberg
f0826974f2 - If the Expect: 100-continue header has been set by the application through
curl_easy_setopt with CURLOPT_HTTPHEADER, the library should set
  data->state.expect100header accordingly - the current code (in 7.19.7 at
  least) doesn't handle this properly. Martin Storsjo provided the fix!
2009-12-01 12:04:54 +00:00
Daniel Stenberg
d61690ef46 start working on 1.7.1 2009-11-30 22:39:04 +00:00
Yang Tse
a72ce23f16 - In order to better reflect that the returned pid is extracted from the
given file, serverpid sub is renamed to pidfromfile. In addition it is
  enhanced to make sure that it always returns zero unless a numerical
  positive value is returned.

- To better reflect that only process existance is actually checked,
  checkserver sub is renamed to processexists. In addition it is enhanced
  making it remove the given pid file when the extracted pid is no longer
  alive.
2009-11-30 13:48:51 +00:00
Daniel Stenberg
bfae1bd999 #71 "TFTP block size / better integration in transfer" is now expected to
have been fixed!
2009-11-29 23:14:56 +00:00
Daniel Stenberg
8a7231d7ae a binding for Falcon 2009-11-29 19:12:00 +00:00
Yang Tse
4d922545d5 - Added Diffie-Hellman parameters to several test harness certificate files in
PEM format. Required by several stunnel versions used by our test harness.
2009-11-28 10:01:21 +00:00
Yang Tse
1fc32d866a Use different log files for each protocol 2009-11-28 05:06:19 +00:00
Yang Tse
230dc699e2 s/socklen_t/curl_socklen_t/g 2009-11-28 04:34:46 +00:00
Yang Tse
3f6854272f Fix compiler warning: unused variable `data' 2009-11-28 03:00:32 +00:00
Daniel Stenberg
448f6684bb 7.20.0 is the planned next version number 2009-11-27 23:53:50 +00:00
Daniel Stenberg
af06a0e497 document --tftp-blksize 2009-11-27 23:51:05 +00:00
Daniel Stenberg
6e38cc9048 - Markus Koetter provided a polished and updated version of Chad Monroe's TFTP
rework patch that now integrates TFTP properly into libcurl so that it can
  be used non-blocking with the multi interface and more. BLKSIZE also works.

  The --tftp-blksize option was added to allow setting the TFTP BLKSIZE from
  the command line.
2009-11-27 23:46:29 +00:00
Yang Tse
a240f4d1df Attempt to enhance stunnel 3.X logging 2009-11-27 19:52:56 +00:00
Yang Tse
6f273b1a5f Prevent running stunnel unless its version can be determined. 2009-11-27 13:01:10 +00:00
Yang Tse
f07f17f2a4 Log sws IPv version, port and pid when exiting due to SIGINT or SIGTERM. 2009-11-27 12:01:25 +00:00
Yang Tse
c713627412 To allow remote log inspection avoid redirecting messages to stderr.
Set 0600 file permissions on certificate pem files.
2009-11-27 12:00:53 +00:00
Yang Tse
b1a35cd3ac Preserve empty line following last target 2009-11-27 05:24:44 +00:00
Yang Tse
9cbf69ca0b Log info for start up failures. 2009-11-26 22:07:47 +00:00
Daniel Stenberg
c7d2e4c1e1 - Extended and fixed the change I did on Dec 11 for the the progress
meter/callback during FTP command/response sequences. It turned out it was
   really lame before and now the progress meter SHOULD get called at least
   once per second.
2009-11-26 19:07:54 +00:00
Yang Tse
cbd527843b Only attempt to clear the server-logs lock when previously set by this same server. 2009-11-26 10:15:08 +00:00
Yang Tse
fba233bb34 signal handling to cleanup on SIGINT and SIGTERM 2009-11-26 04:38:29 +00:00
Yang Tse
8b49428298 - Larry Lansing fixed ares_parse_srv_reply to properly parse replies
which might contain non-SRV answers, skipping over potential non-SRV
  ones such as CNAMEs.
2009-11-26 01:21:21 +00:00
Yang Tse
19f79e5a79 When using icc, compile with -fpic and link with intel dynamic libraries. 2009-11-24 16:12:22 +00:00
Daniel Stenberg
e20f3ecd7e clarify what a modern version of libcurl means 2009-11-24 10:10:59 +00:00
Yang Tse
c83f7ede26 Added 'currently' in italics to insist on transient situation. 2009-11-24 10:08:45 +00:00
Yang Tse
f385fdefbe Fix language 2009-11-24 09:48:32 +00:00
Daniel Stenberg
88fe6557e9 refreshed 2009-11-24 07:40:43 +00:00
Yang Tse
405e18571e - David Byron modified Makefile.dist vc8 and vc9 targets in order to allow
finer granularity control when generating src and lib makefiles.
2009-11-23 16:48:31 +00:00
Yang Tse
094afbeb56 Enhance some debug messages for initialization failures.
Fix compiler warning: conditional expression is constant.
2009-11-23 16:11:50 +00:00
Daniel Stenberg
1fddcb3f88 - Bjorn Augustsson reported a bug which made curl not report any problems even
though it failed to write a very small download to disk (done in a single
  fwrite call). It turned out to be because fwrite() returned success, but
  there was insufficient error-checking for the fclose() call which tricked
  curl to believe things were fine.
2009-11-23 13:56:45 +00:00
Yang Tse
b723500af0 Daniel wants upcoming release to be 1.7.0 2009-11-23 12:03:32 +00:00
Yang Tse
4bfa0b08de Mention last changes 2009-11-23 11:35:53 +00:00
Yang Tse
e536cb085f - Removed from external interface preprocessor symbol definition for
CARES_HAVE_ARES_FREE_DATA. Current functionality of ares_free_data()
  makes it unnecessary.
2009-11-23 11:26:29 +00:00
Yang Tse
083e2df4ed Added README.msvc 2009-11-23 11:07:16 +00:00
Yang Tse
b7997d8a3b Changed c-ares naming conventions when using MSVC as described in README.msvc 2009-11-23 11:05:47 +00:00
Daniel Stenberg
c80b593e5b fixed CURLOPT_TFTP_BLKSIZE typo 2009-11-23 09:31:55 +00:00
Yang Tse
e37f8164a9 - Mention other recent changes 2009-11-23 01:54:55 +00:00
Yang Tse
35d4c57051 - Jakub Hrozek renamed addrttl and addr6ttl structs to ares_addrttl and
ares_addr6ttl in order to prevent name space pollution, along with
  necessary changes to code base and man pages.This change does not break
  ABI, there is no need to recompile existing applications. But existing
  applications using these structs with the old name will need source code
  adjustments when recompiled using c-ares 1.6.1.
2009-11-23 01:24:17 +00:00
Yang Tse
f6114f2ec4 - Jakub Hrozek fixed more function prototypes in man pages to sync them
with the ones declared in ares.h
2009-11-23 00:57:50 +00:00
Yang Tse
f9e55c9908 Make configure remove the curlbuild.h file included in distribution tarballs
for use by non-configure systems. As intended, configure would overwrite the
distributed one when doing in-tree builds. But VPATH builds would end having
two curlbuild.h files, one in the source tree and another in the build tree.
2009-11-22 05:31:57 +00:00
Yang Tse
3005e63b02 Make configure remove the ares_build.h file included in distribution tarballs. 2009-11-22 05:31:31 +00:00
Yang Tse
65e628cc97 Fix macro redefinition. 2009-11-22 03:51:07 +00:00
Yang Tse
738e547815 Fix name space pollution. 2009-11-22 03:41:26 +00:00
Yang Tse
5ec8a3ae06 Allow using different extra import libraries for debug and release builds. 2009-11-22 03:40:42 +00:00
Yang Tse
fdfbc5d8da Add manifest stuff to msvc makefile 2009-11-21 13:28:07 +00:00
Daniel Stenberg
504e6d7ae6 - Constantine Sapuntzakis identified a write after close, as the sockets were
closed by libcurl before the SSL lib were shutdown and they may write to its
  socket. Detected to at least happen with OpenSSL builds.
2009-11-20 19:32:49 +00:00
Yang Tse
c3266a5eb1 Sync man page with reality 2009-11-20 14:15:05 +00:00
Yang Tse
ced1e1e726 Add missing external API decoration for ares_set_socket_callback() 2009-11-20 14:11:06 +00:00
Daniel Stenberg
a41493b3b0 - Jad Chamcham pointed out a bug with connection re-use. If a connection had
CURLOPT_HTTPPROXYTUNNEL enabled over a proxy, a subsequent request using the
  same proxy with the tunnel option disabled would still wrongly re-use that
  previous connection and the outcome would only be badness.
2009-11-20 13:27:21 +00:00
Yang Tse
6da73d09f1 Add ares_free_data() man page. 2009-11-20 13:02:41 +00:00
Yang Tse
4c0ffd33f5 - Provide in external interface preprocessor symbol definitions for
CARES_HAVE_ARES_FREE_DATA as an indication of function availability.
2009-11-20 13:01:35 +00:00
Yang Tse
99363a0ee1 Remove typecast 2009-11-20 09:57:25 +00:00
Yang Tse
71260534f9 Fix comment 2009-11-20 09:54:15 +00:00
Yang Tse
5e62be1d8c Add ares_data.c and ares_data.h 2009-11-20 09:14:37 +00:00
Yang Tse
7e6a67b436 Jakub Hrozek modified ares_parse_srv_reply() and ares_parse_txt_reply() API
to return a linked lists of results. These were also modified to internally
use the ares_data memory struct and as such its result must be free'ed with
ares_free_data().
2009-11-20 09:06:33 +00:00
Yang Tse
5a0a473c30 Initial support for the generic ares_free_data() function that will allow
applications to free memory allocated and returned by some c-ares funtions.
2009-11-20 08:50:03 +00:00
Yang Tse
5129442ee7 Explicit initialization of all FTP struct members in ftp_init() 2009-11-19 17:21:56 +00:00
Yang Tse
e8fd5d8062 Fix compiler warning: ISO C90 forbids mixed declarations and code 2009-11-18 11:53:31 +00:00
Yang Tse
2f6dcaa644 Make memory tracking system intolerant with zero sized malloc(),
calloc() and realloc() function calls.
2009-11-18 11:21:58 +00:00
Yang Tse
59939313f8 Make usage of calloc()'s arguments consistent with rest of code base 2009-11-18 10:33:54 +00:00
Yang Tse
961c504ca5 workaround icc 9.1 optimizer issue 2009-11-18 02:57:34 +00:00
Daniel Stenberg
b32d1a9a1d - Constantine Sapuntzakis provided another fix for the DNS cache that could
end up with entries that wouldn't time-out:

  1. Set up a first web server that redirects (307) to a http://server:port
     that's down
  2. Have curl connect to the first web server using curl multi

  After the curl_easy_cleanup call, there will be curl dns entries hanging
  around with in_use != 0.

  (http://curl.haxx.se/bug/view.cgi?id=2891591)
2009-11-17 22:53:55 +00:00
Daniel Stenberg
4c8adc8fee - Marc Kleine-Budde fixed: curl saved the LDFLAGS set during configure into
its pkg-config file.  So -Wl stuff ended up in the .pc file, which is really
  bad, and breaks if there are multiple -Wl in our LDFLAGS (which are in
  PTXdist). bug #2893592 (http://curl.haxx.se/bug/view.cgi?id=2893592)
2009-11-17 18:11:06 +00:00
Yang Tse
69ac7b0cf8 Add icc fvisibility bug test 2009-11-16 23:01:37 +00:00
Yang Tse
09526fc9e9 Fix icc 9.0 compiler warning: external definition with no prior declaration 2009-11-16 20:02:12 +00:00
Yang Tse
f0068267ee Update serial number 2009-11-16 01:56:45 +00:00
Yang Tse
7db7c0af4f Fix three var names 2009-11-16 01:56:16 +00:00
Yang Tse
6bf10a111f Add check for assert.h header file 2009-11-16 01:55:48 +00:00
Kamil Dudka
530fde3a22 - David Byron improved the configure script to use pkg-config to find OpenSSL
(and in particular the list of required libraries) even if a path is given
  as argument to --with-ssl
2009-11-15 15:23:43 +00:00
Yang Tse
5b3be2ee35 getaddrinfo is fully thread safe on solaris versions which
implement the function even when h_errno is not a macro.

The h_errno macro test now only done on systems for which there
is no hard coded knowledge about getaddrinfo's thread safeness.
2009-11-15 13:43:15 +00:00
Yang Tse
3b8d7fddf7 Client certificate ENG file type requires OpenSSL 0.9.7 or newer 2009-11-15 12:58:50 +00:00
Yang Tse
0e80f0e4c4 Remove files generated on previous buildconf/configure run 2009-11-15 03:47:13 +00:00
Yang Tse
a2ddb0a61b Add a couple of renamed files to the removal list 2009-11-15 03:46:14 +00:00
Yang Tse
581ce03345 Remove enable-thread / disable-thread configure option. These were only placebo
options. The library is always built as thread safe as possible on every system.
2009-11-15 02:45:23 +00:00
Claes Jakobsson
f7f76e17c3 Added '--configure' option to curl-config to display original configure arguments when curl was built 2009-11-14 19:23:26 +00:00
Yang Tse
1cbc93fb54 Refactor how preprocessor symbol _THREAD_SAFE definition is done. 2009-11-14 18:51:37 +00:00
Yang Tse
a8ddd6ce31 OpenSSL 0.9.7 or newer required for ENGINE_CTRL_GET_CMD_FROM_NAME definition 2009-11-14 11:33:49 +00:00
Daniel Stenberg
eb16c0e1eb - Claes Jakobsson restored the configure functionality to detect NSS when
--with-nss is set but not "yes".

  I think we can still improve that to check for pkg-config in that path etc,
  but at least this patch brings back the same functionality we had before.
2009-11-14 09:13:47 +00:00
Daniel Stenberg
9c49e51f7e - Camille Moncelier added support for the file type SSL_FILETYPE_ENGINE for
the client certificate. It also disable the key name test as some engines
  can select a private key/cert automatically (When there is only one key
  and/or certificate on the hardware device used by the engine)
2009-11-14 07:53:34 +00:00
Yang Tse
90bc6ee8f3 - Constantine Sapuntzakis provided the fix that ensures that an SSL connection
won't be reused unless protection level for peer and host verification match.
2009-11-14 02:30:30 +00:00
Yang Tse
5e75817d44 Assume that getaddrinfo is thread safe, unless hard coded
knowledge says the contrary or h_errno is not defined.
2009-11-13 20:03:45 +00:00
Yang Tse
a7e4022d6b Related with the threadsafe capability of getaddrinfo:
- Constantine Sapuntzakis reported that Darwin 6.0 a.k.a. MAC OS X 10.2
  and newer have a threadsafe getaddrinfo.

- Fix Dragonfly BSD triplet detection.

- In case the hard-coded knowledge says that getaddrinfo is threadsafe,
  an additional check is done to verify that h_errno is also defined.
  If h_errno isn't defined, we finally assume that it isn't threadsafe.
  Jamie Lokier provided the inspiration for this extra check.
2009-11-13 05:01:51 +00:00
Yang Tse
4999847625 AIX 5.2 and newer have threadsafe getaddrinfo.
Add some comments to better understand what the regex's pretend to achieve.
2009-11-12 22:48:40 +00:00
Yang Tse
d26a92493a HP-UX 11.11 and later have threadsafe getaddrinfo 2009-11-12 20:29:28 +00:00
Yang Tse
05a4abea04 Constantine Sapuntzakis patch for hostip.c
No need for a separate variable ndns.

The memory leak detection will detect code that fails to release a dns reference.

The DEBUGASSERT will detect code that releases too many references.
2009-11-12 19:28:43 +00:00
Yang Tse
c1f9440aca Check if getaddrinfo is threadsafe when function check allows it to be used 2009-11-12 18:31:33 +00:00
Yang Tse
011a2818db Add missing variable initialization 2009-11-12 14:36:34 +00:00
Kamil Dudka
571309dc3e - libcurl-NSS now tries to reconnect with TLS disabled in case it detects
a broken TLS server. However it does not happen if SSL version is selected
  manually. The approach was originally taken from PSM. Kaspar Brand helped me
  to complete the patch. Original bug reports:
  https://bugzilla.redhat.com/525496
  https://bugzilla.redhat.com/527771
2009-11-12 11:16:31 +00:00
Kamil Dudka
d547d00f2c - Kevin Baughman provided a fix preventing libcurl-NSS from crash on doubly
closed NSPR descriptor. The issue was hard to find, reported several times
  before and always closed unresolved. More info at the RH bug:
  https://bugzilla.redhat.com/534176
2009-11-12 10:54:10 +00:00
Yang Tse
668dc0ad87 Make hostip.c compile again 2009-11-12 04:32:08 +00:00
Dan Fandrich
0b7e0eed49 Made the path to the binaries absolute 2009-11-11 22:15:33 +00:00
Yang Tse
9b7e45e874 Add last change credit 2009-11-11 21:19:49 +00:00
Yang Tse
40c2c3270d - Marco Maggi reported that compilation failed when configured --with-gssapi
and GNU GSS installed due to a missing mutual exclusion of header files in
  the Kerberos 5 code path. He also verified that my patch worked for him.
2009-11-11 21:15:34 +00:00
Daniel Stenberg
b3e8cf539d NSS SSL connections are also blocking 2009-11-11 14:54:45 +00:00
Daniel Stenberg
fb5f332834 - Constantine Sapuntzakis posted bug #2891595
(http://curl.haxx.se/bug/view.cgi?id=2891595) which identified how an entry
  in the DNS cache would linger too long if the request that added it was in
  use that long. He also provided the patch that now makes libcurl capable of
  still doing a request while the DNS hash entry may get timed out.
2009-11-11 09:31:37 +00:00
Daniel Stenberg
107c4d878a - Christian Schmitz noticed that the progress meter/callback was not properly
used during the FTP connection phase (after the actual TCP connect), while
  it of course should be. I also made the speed check get called correctly so
  that really slow servers will trigger that properly too.
2009-11-11 09:01:43 +00:00
Yang Tse
5d786d0e97 Renamed fpGetNetworkParams and fpSystemFunction036 to avoid namespace pollution with static library 2009-11-11 08:56:46 +00:00
Yang Tse
5f77eea408 Add kernel32.lib 2009-11-11 08:51:31 +00:00
Yang Tse
a0905ec0ab Mention last changes 2009-11-10 22:07:32 +00:00
Yang Tse
d7470a3629 Reinstate copyright symbol lost in previous commit 2009-11-10 22:04:51 +00:00
Yang Tse
2287e7ba8b Make some strings different in resource file for debug or release builds 2009-11-10 20:20:13 +00:00
Yang Tse
16a1e251cd Ignore more subdirs 2009-11-10 20:05:10 +00:00
Yang Tse
1aa320dedb Fix compiler warning: conditional expression is constant 2009-11-10 18:41:03 +00:00
Yang Tse
d17ce4e9f1 Sync linker and resource compiler options with Makefile.msvc 2009-11-10 18:26:09 +00:00
Yang Tse
50c3417686 Follow Makefile.msvc subdirectory naming scheme, and sync compiler options 2009-11-09 19:34:30 +00:00
Yang Tse
46f294dbb0 Updated MSVC makefile that allows building dynamic and static
c-ares libraries in debug and release flavours.

Additionally each of the three sample programs is built against
each of the four possible c-ares libraries, generating all this
a total number of 12 executables and 4 libraries.
2009-11-09 13:24:11 +00:00
Yang Tse
d7231f54d7 Test for USE_WINSOCK since it is more restrictive than WIN32 2009-11-09 12:57:26 +00:00
Yang Tse
809f2a190c Make header inclusion depend on HAVE_*_H definition 2009-11-09 12:56:50 +00:00
Yang Tse
4f62cdf6f9 Remove unneeded preprocessor directives 2009-11-09 12:56:11 +00:00
Daniel Stenberg
b8012ea251 Joshua Kwan added paragraph 4.18 about file:// URLs on windows etc 2009-11-07 21:52:41 +00:00
Yang Tse
02673a8900 Adjust c-ares include paths for memory tracking enabled (--enable-curldebug) builds 2009-11-05 17:44:29 +00:00
Kamil Dudka
676e0c28e7 - Dropped misleading timeouts in libcurl-NSS and made sure the SSL socket works
in non-blocking mode.
2009-11-05 15:41:31 +00:00
Yang Tse
55e68ba333 I removed leading 'curl' path on the 'curlbuild.h' include statement in
curl.h, adjusting auto-makefiles include path, to enhance portability to
OS's without an orthogonal directory tree structure such as OS/400.
2009-11-05 15:04:03 +00:00
Yang Tse
3f56d12830 avoid division by zero 2009-11-05 15:00:28 +00:00
Daniel Stenberg
257f2376d5 - I fixed several problems with the transfer progress meter. It showed the
wrong percentage for small files, most notable for <1000 bytes and could
  easily end up showing more than 100% at the end. It also didn't show any
  percentage, transfer size or estimated transfer times when transferring
  less than 100 bytes.
2009-11-04 23:09:17 +00:00
Yang Tse
1d8d389bce source files used by sample programs 2009-11-04 14:24:47 +00:00
Daniel Stenberg
99e43046a7 start over towards 7.19.8 2009-11-04 13:11:43 +00:00
Daniel Stenberg
a5460f2431 updated with names from the 7.19.7 release notes 2009-11-04 13:10:07 +00:00
334 changed files with 23234 additions and 8266 deletions

425
CHANGES
View File

@@ -6,6 +6,431 @@
Changelog Changelog
Version 7.20.0 (9 February 2010)
Daniel Stenberg (9 Feb 2010)
- When downloading compressed content over HTTP and the app asked libcurl to
automatically uncompress it with the CURLOPT_ENCODING option, libcurl could
wrongly provide the callback with more data than the maximum documented
amount. An application could thus get tricked into badness if the maximum
limit was trusted to be enforced by libcurl itself (as it is documented).
This is further detailed and explained in the libcurl security advisory
20100209 at
http://curl.haxx.se/docs/adv_20100209.html
Daniel Fandrich (3 Feb 2010)
- Changed the Watcom makefiles to make them easier to keep in sync with
Makefile.inc since that can't be included directly.
Yang Tse (2 Feb 2010)
- Symbol CURL_FORMAT_OFF_T now obsoleted, will be removed in a future release,
symbol will not be available when building with CURL_NO_OLDIES defined. Use
of CURL_FORMAT_CURL_OFF_T is preferred since 7.19.0
Daniel Stenberg (1 Feb 2010)
- Using the multi_socket API, it turns out at times it seemed to "forget"
connections (which caused a hang). It turned out to be an existing (7.19.7)
bug in libcurl (that's been around for a long time) and it happened like
this:
The app calls curl_multi_add_handle() to add a new easy handle, libcurl will
then set it to timeout in 1 millisecond so libcurl will tell the app about
it.
The app's timeout fires off that there's a timeout, the app calls libcurl as
we so often document it:
do {
res = curl_multi_socket_action(... TIMEOUT ...);
} while(CURLM_CALL_MULTI_PERFORM == res);
And this is the problem number one:
When curl_multi_socket_action() is called with no specific handle, but only
a timeout-action, it will *only* perform actions within libcurl that are
marked to run at this time. In this case, the request would go from INIT to
CONNECT and return CURLM_CALL_MULTI_PERFORM. When the app then calls libcurl
again, there's no timer set for this handle so it remains in the CONNECT
state. The CONNECT state is a transitional state in libcurl so it reports no
sockets there, and thus libcurl never tells the app anything more about that
easy handle/connection.
libcurl _does_ set a 1ms timeout for the handle at the end of
multi_runsingle() if it returns CURLM_CALL_MULTI_PERFORM, but since the loop
is instant the new job is not ready to run at that point (and there's no
code that makes libcurl call the app to update the timout for this new
timeout). It will simply rely on that some other timeout will trigger later
on or that something else will update the timeout callback. This makes the
bug fairly hard to repeat.
The fix made to adress this issue:
We introduce a loop in lib/multi.c around all calls to multi_runsingle() and
simply check for CURLM_CALL_MULTI_PERFORM internally. This has the added
benefit that this goes in line with my long-term wishes to get rid of the
CURLM_CALL_MULTI_PERFORM all together from the public API.
The downside of this fix, is that the counter we return in 'running_handles'
in several of our public functions then gets a slightly new and possibly
confusing behavior during times:
If an app adds a handle that fails to connect (very quickly) it may just
as well never appear as a 'running_handle' with this fix. Previously it
would first bump the counter only to get it decreased again at next call.
Even I have used that change in handle counter to signal "end of a
transfer". The only *good* way to find the end of a individual transfer
is calling curl_multi_info_read() to see if it returns one.
Of course, if the app previously did the looping before it checked the
counter, it really shouldn't be any new effect.
Yang Tse (26 Jan 2010)
- Constantine Sapuntzakis' and Joshua Kwan's work done in the last four months
relative to the asynchronous DNS lookups, along with with some integration
adjustments I have done are finally committed to CVS.
Currently these enhancements will benefit builds done using c-ares on any
platform as well as Windows builds using the default threaded resolver.
This release does not make generally available POSIX threaded DNS lookups
yet. There is no configure option to enable this feature yet. It is possible
to experimantally try this feature running configure with compiler flags that
make simultaneous definition of preprocessor symbols USE_THREADS_POSIX and
HAVE_PTHREAD_H, as well as whatever reentrancy compiler flags and linker ones
are required to link and properly use pthread_* functions on each platform.
Daniel Stenberg (26 Jan 2010)
- Mike Crowe made libcurl return CURLE_COULDNT_RESOLVE_PROXY when it is the
proxy that cannot be resolved when using c-ares. This matches the behaviour
when not using c-ares.
Bj<EFBFBD>rn Stenberg (23 Jan 2010)
- Added a new flag: -J/--remote-header-name. This option tells the
-O/--remote-name option to use the server-specified Content-Disposition
filename instead of extracting a filename from the URL.
Daniel Stenberg (21 Jan 2010)
- Chris Conroy brought support for RTSP transfers, and with it comes 8(!) new
libcurl options for controlling what to get and how to receive posssibly
interleaved RTP data.
Daniel Stenberg (20 Jan 2010)
- As was pointed out on the http-state mailing list, the order of cookies in a
HTTP Cookie: header _needs_ to be sorted on the path length in the cases
where two cookies using the same name are set more than once using
(overlapping) paths. Realizing this, identically named cookies must be
sorted correctly. But detecting only identically named cookies and take care
of them individually is harder than just to blindly and unconditionally sort
all cookies based on their path lengths. All major browsers also already do
this, so this makes our behavior one step closer to them in the cookie area.
Test case 8 was the only one that broke due to this change and I updated it
accordingly.
Daniel Stenberg (19 Jan 2010)
- David McCreedy brought a fix and a new test case (129) to make libcurl work
again when downloading files over FTP using ASCII and it turns out that the
final size of the file is not the same as the initial size the server
reported. This is very common since servers don't take the newline
conversions into account.
Kamil Dudka (14 Jan 2010)
- Suppressed side effect of OpenSSL configure checks, which prevented NSS from
being properly detected under certain circumstances. It had been caused by
strange behavior of pkg-config when handling PKG_CONFIG_LIBDIR. pkg-config
distinguishes among empty and non-existent environment variable in that case.
Daniel Stenberg (12 Jan 2010)
- Gil Weber reported a peculiar flaw with the multi interface when doing SFTP
transfers: curl_multi_fdset() would return -1 and not set and file
descriptors several times during a transfer of a single file. It turned out
to be due to two different flaws now fixed. Gil's excellent recipe helped me
nail this.
Daniel Stenberg (11 Jan 2010)
- Made sure that the progress callback is repeatedly called at a regular
interval even during very slow connects.
- The tests/runtests.pl script now checks to see if the test case that runs is
present in the tests/data/Makefile.am and outputs a notice message on the
screen if not. Each test file has to be included in that Makefile.am to get
included in release archives and forgetting to add files there is a common
mistake. This is an attempt to make it harder to forget.
Daniel Stenberg (9 Jan 2010)
- Johan van Selst found and fixed a OpenSSL session ref count leak:
ossl_connect_step3() increments an SSL session handle reference counter on
each call. When sessions are re-used this reference counter may be
incremented many times, but it will be decremented only once when done (by
Curl_ossl_session_free()); and the internal OpenSSL data will not be freed
if this reference count remains positive. When a session is re-used the
reference counter should be corrected by explicitly calling
SSL_SESSION_free() after each consecutive SSL_get1_session() to avoid
introducing a memory leak.
(http://curl.haxx.se/bug/view.cgi?id=2926284)
Daniel Stenberg (7 Jan 2010)
- Make sure the progress callback is called repeatedly even during very slow
name resolves when c-ares is used for resolving.
Claes Jakobsson (6 Jan 2010)
- Julien Chaffraix fixed so that the fragment part in an URL is not sent
to the server anymore.
Kamil Dudka (3 Jan 2010)
- Julien Chaffraix eliminated a duplicated initialization in singlesocket().
Daniel Stenberg (2 Jan 2010)
- Make curl support --ssl and --ssl-reqd instead of the previous FTP-specific
versions --ftp-ssl and --ftp-ssl-reqd as these options are now used to
control SSL/TLS for IMAP, POP3 and SMTP as well in addition to FTP. The old
option names are still working but the new ones are the ones listed and
documented.
Daniel Stenberg (1 Jan 2010)
- Ingmar Runge enhanced libcurl's FTP engine to support the PRET command. This
command is a special "hack" used by the drftpd server, but even though it is
a custom extension I've deemed it fine to add to libcurl since this server
seems to survive and people keep using it and want libcurl to support
it. The new libcurl option is named CURLOPT_FTP_USE_PRET, and it is also
usable from the curl tool with --ftp-pret. Using this option on a server
that doesn't support this command will make libcurl fail.
I added test cases 1107 and 1108 to verify the functionality.
The PRET command is documented at
http://www.drftpd.org/index.php/Distributed_PASV
Yang Tse (30 Dec 2009)
- Steven M. Schweda improved VMS build system, and Craig A. Berry helped
with the patch and testing.
Daniel Stenberg (26 Dec 2009)
- Renato Botelho and Peter Pentchev brought a patch that makes the libcurl
headers work correctly even on FreeBSD systems before v8.
(http://curl.haxx.se/bug/view.cgi?id=2916915)
Daniel Stenberg (17 Dec 2009)
- David Byron fixed Curl_ossl_cleanup to actually call ENGINE_cleanup when
available.
- Follow-up fix for the proxy fix I did for Jon Nelson's bug. It turned out I
was a bit too quick and broke test case 1101 with that change. The order of
some of the setups is sensitive. I now changed it slightly again to make
sure we do them in this order:
1 - parse URL and figure out what protocol is used in the URL
2 - prepend protocol:// to URL if missing
3 - parse name+password off URL, which needs to know what protocol is used
(since only some allows for name+password in the URL)
4 - figure out if a proxy should be used set by an option
5 - if no proxy option, check proxy environment variables
6 - run the protocol-specific setup function, which needs to have the proxy
already set
Daniel Stenberg (15 Dec 2009)
- Jon Nelson found a regression that turned out to be a flaw in how libcurl
detects and uses proxies based on the environment variables. If the proxy
was given as an explicit option it worked, but due to the setup order
mistake proxies would not be used fine for a few protocols when picked up
from '[protocol]_proxy'. Obviously this broke after 7.19.4. I now also added
test case 1106 that verifies this functionality.
(http://curl.haxx.se/bug/view.cgi?id=2913886)
Daniel Stenberg (12 Dec 2009)
- IMAP, POP3 and SMTP support and their TLS versions (including IMAPS, POP3S
and SMTPS) are now supported. The current state may not yet be solid, but
the foundation is in place and the test suite has some initial support for
these protocols. Work will now persue to make them nice libcurl citizens
until release.
The work with supporting these new protocols was sponsored by
networking4all.com - thanks!
Daniel Stenberg (10 Dec 2009)
- Siegfried Gyuricsko found out that the curl manual said --retry would retry
on FTP errors in the transient 5xx range. Transient FTP errors are in the
4xx range. The code itself only tried on 5xx errors that occured _at login_.
Now the retry code retries on all FTP transfer failures that ended with a
4xx response.
(http://curl.haxx.se/bug/view.cgi?id=2911279)
- Constantine Sapuntzakis figured out a case which would lead to libcurl
accessing alredy freed memory and thus crash when using HTTPS (with
OpenSSL), multi interface and the CURLOPT_DEBUGFUNCTION and a certain order
of cleaning things up. I fixed it.
(http://curl.haxx.se/bug/view.cgi?id=2905220)
Daniel Stenberg (7 Dec 2009)
- Martin Storsjo made libcurl use the Expect: 100-continue header for posts
with unknown size. Previously it was only used for posts with a known size
larger than 1024 bytes.
Daniel Stenberg (1 Dec 2009)
- If the Expect: 100-continue header has been set by the application through
curl_easy_setopt with CURLOPT_HTTPHEADER, the library should set
data->state.expect100header accordingly - the current code (in 7.19.7 at
least) doesn't handle this properly. Martin Storsjo provided the fix!
Yang Tse (28 Nov 2009)
- Added Diffie-Hellman parameters to several test harness certificate files in
PEM format. Required by several stunnel versions used by our test harness.
Daniel Stenberg (28 Nov 2009)
- Markus Koetter provided a polished and updated version of Chad Monroe's TFTP
rework patch that now integrates TFTP properly into libcurl so that it can
be used non-blocking with the multi interface and more. BLKSIZE also works.
The --tftp-blksize option was added to allow setting the TFTP BLKSIZE from
the command line.
Daniel Stenberg (26 Nov 2009)
- Extended and fixed the change I did on Dec 11 for the the progress
meter/callback during FTP command/response sequences. It turned out it was
really lame before and now the progress meter SHOULD get called at least
once per second.
Daniel Stenberg (23 Nov 2009)
- Bjorn Augustsson reported a bug which made curl not report any problems even
though it failed to write a very small download to disk (done in a single
fwrite call). It turned out to be because fwrite() returned success, but
there was insufficient error-checking for the fclose() call which tricked
curl to believe things were fine.
Yang Tse (23 Nov 2009)
- David Byron modified Makefile.dist vc8 and vc9 targets in order to allow
finer granularity control when generating src and lib makefiles.
Yang Tse (22 Nov 2009)
- I modified configure to force removal of the curlbuild.h file included in
distribution tarballs for use by non-configure systems. As intended, this
would get overwriten when doing in-tree builds. But VPATH builds would end
having two curlbuild.h files, one in the source tree and another in the
build tree. With the modification I introduced 5 Nov 2009 this could become
an issue when running libcurl's test suite.
Daniel Stenberg (20 Nov 2009)
- Constantine Sapuntzakis identified a write after close, as the sockets were
closed by libcurl before the SSL lib were shutdown and they may write to its
socket. Detected to at least happen with OpenSSL builds.
- Jad Chamcham pointed out a bug with connection re-use. If a connection had
CURLOPT_HTTPPROXYTUNNEL enabled over a proxy, a subsequent request using the
same proxy with the tunnel option disabled would still wrongly re-use that
previous connection and the outcome would only be badness.
Yang Tse (18 Nov 2009)
- I modified the memory tracking system to make it intolerant with zero sized
malloc(), calloc() and realloc() function calls.
Daniel Stenberg (17 Nov 2009)
- Constantine Sapuntzakis provided another fix for the DNS cache that could
end up with entries that wouldn't time-out:
1. Set up a first web server that redirects (307) to a http://server:port
that's down
2. Have curl connect to the first web server using curl multi
After the curl_easy_cleanup call, there will be curl dns entries hanging
around with in_use != 0.
(http://curl.haxx.se/bug/view.cgi?id=2891591)
- Marc Kleine-Budde fixed: curl saved the LDFLAGS set during configure into
its pkg-config file. So -Wl stuff ended up in the .pc file, which is really
bad, and breaks if there are multiple -Wl in our LDFLAGS (which are in
PTXdist). bug #2893592 (http://curl.haxx.se/bug/view.cgi?id=2893592)
Kamil Dudka (15 Nov 2009)
- David Byron improved the configure script to use pkg-config to find OpenSSL
(and in particular the list of required libraries) even if a path is given
as argument to --with-ssl
Yang Tse (15 Nov 2009)
- I removed enable-thread / disable-thread configure option. These were only
placebo options. The library is always built as thread safe as possible on
every system.
Claes Jakobsson (14 Nov 2009)
- curl-config now accepts '--configure' to see what arguments was
passed to the configure script when building curl.
Daniel Stenberg (14 Nov 2009)
- Claes Jakobsson restored the configure functionality to detect NSS when
--with-nss is set but not "yes".
I think we can still improve that to check for pkg-config in that path etc,
but at least this patch brings back the same functionality we had before.
- Camille Moncelier added support for the file type SSL_FILETYPE_ENGINE for
the client certificate. It also disable the key name test as some engines
can select a private key/cert automatically (When there is only one key
and/or certificate on the hardware device used by the engine)
Yang Tse (14 Nov 2009)
- Constantine Sapuntzakis provided the fix that ensures that an SSL connection
won't be reused unless protection level for peer and host verification match.
I refactored how preprocessor symbol _THREAD_SAFE definition is done.
Kamil Dudka (12 Nov 2009)
- Kevin Baughman provided a fix preventing libcurl-NSS from crash on doubly
closed NSPR descriptor. The issue was hard to find, reported several times
before and always closed unresolved. More info at the RH bug:
https://bugzilla.redhat.com/534176
- libcurl-NSS now tries to reconnect with TLS disabled in case it detects
a broken TLS server. However it does not happen if SSL version is selected
manually. The approach was originally taken from PSM. Kaspar Brand helped me
to complete the patch. Original bug reports:
https://bugzilla.redhat.com/525496
https://bugzilla.redhat.com/527771
Yang Tse (12 Nov 2009)
- I modified configure script to make the getaddrinfo function check also
verify if the function is thread safe.
Yang Tse (11 Nov 2009)
- Marco Maggi reported that compilation failed when configured --with-gssapi
and GNU GSS installed due to a missing mutual exclusion of header files in
the Kerberos 5 code path. He also verified that my patch worked for him.
Daniel Stenberg (11 Nov 2009)
- Constantine Sapuntzakis posted bug #2891595
(http://curl.haxx.se/bug/view.cgi?id=2891595) which identified how an entry
in the DNS cache would linger too long if the request that added it was in
use that long. He also provided the patch that now makes libcurl capable of
still doing a request while the DNS hash entry may get timed out.
- Christian Schmitz noticed that the progress meter/callback was not properly
used during the FTP connection phase (after the actual TCP connect), while
it of course should be. I also made the speed check get called correctly so
that really slow servers will trigger that properly too.
Kamil Dudka (5 Nov 2009)
- Dropped misleading timeouts in libcurl-NSS and made sure the SSL socket works
in non-blocking mode.
Yang Tse (5 Nov 2009)
- I removed leading 'curl' path on the 'curlbuild.h' include statement in
curl.h, adjusting auto-makefiles include path, to enhance portability to
OS's without an orthogonal directory tree structure such as OS/400.
Daniel Stenberg (4 Nov 2009)
- I fixed several problems with the transfer progress meter. It showed the
wrong percentage for small files, most notable for <1000 bytes and could
easily end up showing more than 100% at the end. It also didn't show any
percentage, transfer size or estimated transfer times when transferring
less than 100 bytes.
Version 7.19.7 (4 November 2009) Version 7.19.7 (4 November 2009)
Daniel Stenberg (2 Nov 2009) Daniel Stenberg (2 Nov 2009)

View File

@@ -263,15 +263,25 @@ linux: all
linux-ssl: ssl linux-ssl: ssl
vc8: vc8: lib/Makefile.vc8 src/Makefile.vc8
@echo "generate VC8 makefiles"
lib/Makefile.vc8: lib/Makefile.vc6
@echo "generate $@"
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/wsock32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" lib/Makefile.vc6 > lib/Makefile.vc8 @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/wsock32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" lib/Makefile.vc6 > lib/Makefile.vc8
src/Makefile.vc8: src/Makefile.vc6
@echo "generate $@"
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/wsock32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" src/Makefile.vc6 > src/Makefile.vc8 @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/wsock32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" src/Makefile.vc6 > src/Makefile.vc8
# VC9 makefiles are for use with VS2008 # VC9 makefiles are for use with VS2008
vc9: vc9: lib/Makefile.vc9 src/Makefile.vc9
@echo "generate VC9 makefiles"
lib/Makefile.vc9: lib/Makefile.vc6
@echo "generate $@"
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" lib/Makefile.vc6 > lib/Makefile.vc9 @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" lib/Makefile.vc6 > lib/Makefile.vc9
src/Makefile.vc9: src/Makefile.vc6
@echo "generate $@"
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" src/Makefile.vc6 > src/Makefile.vc9 @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" src/Makefile.vc6 > src/Makefile.vc9
ca-bundle: lib/mk-ca-bundle.pl ca-bundle: lib/mk-ca-bundle.pl

View File

@@ -1,51 +1,59 @@
Curl and libcurl 7.19.7 Curl and libcurl 7.20.0
Public curl releases: 113 Public curl releases: 114
Command line options: 132 Command line options: 136
curl_easy_setopt() options: 163 curl_easy_setopt() options: 174
Public functions in libcurl: 58 Public functions in libcurl: 58
Known libcurl bindings: 38 Known libcurl bindings: 39
Contributors: 732 Contributors: 761
This release includes the following changes: This release includes the following changes:
o -T. is now for non-blocking uploading from stdin o support SSL_FILETYPE_ENGINE for client certificate
o SYST handling on FTP for OS/400 FTP server cases o curl-config can now show the arguments used when building curl
o libcurl refuses to read a single HTTP header longer than 100K o non-blocking TFTP
o added the --crlfile option to curl o send Expect: 100-continue for POSTs with unknown sizes
o added support for IMAP(S), POP3(S), SMTP(S) and RTSP
o added new curl_easy_setopt() options for SMTP and RTSP
o added --mail-from and --mail-rcpt for SMTP
o VMS build system enhancements
o added support for the PRET ftp command
o curl supports --ssl and --ssl-reqd
o added -J/--remote-header-name for using server-provided filename with -O
o enhanced asynchronous DNS lookups
o symbol CURL_FORMAT_OFF_T is obsoleted
This release includes the following bugfixes: This release includes the following bugfixes:
o The windows makefiles work again o progress meter percentage and transfer time estimates fixes
o libcurl-NSS acknowledges verifyhost o portability enhancement for OS's without orthogonal directory tree structure
o SIGSEGV when pipelined pipe unexpectedly breaks o progress meter/callback during FTP connection
o data corruption issue with re-connected transfers o DNS cache timeout while transfer in progress
o use after free if we're completed but easy_conn not NULL (pipelined) o compilation when configured --with-gssapi having GNU GSS installed
o missing strdup() return code check o SSL connection reused with mismatched protection level
o CURLOPT_PROXY_TRANSFER_MODE could pass along wrong syntax o configure --with-nss is set but not "yes"
o configure --with-gnutls=PATH fixed o don't store LDFLAGS in pkg-config file
o ftp response reader bug on failed control connections o never-pruned DNS cached entries
o improved NSS error message on failed host name verifications o HTTP proxy tunnel re-used connection even if tunnel got disabled
o ftp NOBODY on re-used connection hang o SSL lib post-close write
o configure uses pkg-config for cross-compiles as well o curl failed to report write errors for tiny failed downloads
o improved NSS detection in configure o TFTP BLKSIZE
o cookie expiry date at 1970-jan-1 00:00:00 o Expect: 100-continue handling when set by the application
o libcurl-OpenSSL failed to verify some certs with Subject Alternative Name o multi interface with OpenSSL read already freed memory when closing down
o libcurl-OpenSSL can load CRL files with more than one certificate inside o --retry didn't do right for FTP transient errors
o received cookies without explicit path got saved wrong if the URL had a o some *_proxy environment variables didn't function
query part o libcurl-OpenSSL engine cleanup
o don't shrink SO_SNDBUF on windows for those who have it set large already o header include fix for FreeBSD versions before v8
o connect next bug o fragment part of URLs are no longer sent to the server
o invalid file name characters handling on Windows o progress callback called repeatedly with c-ares for resolving
o double close() on the primary socket with libcurl-NSS o OpenSSL session id ref count leak
o GSS negotiate infinite loop on bad credentials o progress callback called repeatedly during slow connects
o memory leak in SCP/SFTP connections o curl_multi_fdset() would return -1 too often during SCP/SFTP transfers
o use pkg-config to find out libssh2 installation details in configure o FTP file size checks with ASCII transfers
o unparsable cookie expire dates make cookies get treated as session coookies o HTTP Cookie: headers sort cookies based on specified path lengths
o POST with Digest authentication and "Transfer-Encoding: chunked" o CURLM_CALL_MULTI_PERFORM fix for multi socket timeout calls
o SCP connection re-use with wrong auth o libcurl data callback excessive length:
o CURLINFO_CONTENT_LENGTH_DOWNLOAD for 0 bytes transfers http://curl.haxx.se/docs/adv_20100209.html
o CURLINFO_SIZE_DOWNLOAD for ldap transfers (-w size_download)
This release includes the following known bugs: This release includes the following known bugs:
@@ -54,11 +62,12 @@ This release includes the following known bugs:
This release would not have looked like this without help, code, reports and This release would not have looked like this without help, code, reports and
advice from friends like these: advice from friends like these:
Karl Moerder, Kamil Dudka, Krister Johansen, Andre Guibert de Bruet, Yang Tse, Kamil Dudka, Christian Schmitz, Constantine Sapuntzakis,
Michal Marek, Eric Wong, Guenter Knauf, Peter Sylvester, Daniel Johnson, Marco Maggi, Camille Moncelier, Claes Jakobsson, Kevin Baughman,
Claes Jakobsson, Sven Anders, Chris Mumford, John P. McCaskey, Marc Kleine-Budde, Jad Chamcham, Bjorn Augustsson, David Byron,
Constantine Sapuntzakis, Michael Stillwell, Tom Mueller, Dan Fandrich, Markus Koetter, Chad Monroe, Martin Storsjo, Siegfried Gyuricsko,
Kevin Baughman, John Dennis, Ray Dassen, Johan van Selst, Dima Barsky, Jon Nelson, Julien Chaffraix, Renato Botelho, Peter Pentchev, Ingmar Runge,
Liza Alenchery, Gabriel Kuri, Stan van de Burgt, Didier Brisebourg Johan van Selst, Charles Kerr, Gil Weber, David McCreedy, Chris Conroy,
Bjorn Stenberg, Mike Crowe, Joshua Kwan, Daniel Fandrich, Wesley Miaw
Thanks! (and sorry if I forgot to mention someone) Thanks! (and sorry if I forgot to mention someone)

View File

@@ -1,4 +1,4 @@
To be addressed in 7.19.8 (planned release: January 2010) To be addressed in 7.20.0 (planned release: January 2010)
========================= =========================
244 - patch for [out] parameters 244 - patch for [out] parameters
@@ -12,11 +12,4 @@ To be addressed in 7.19.8 (planned release: January 2010)
253 - add option to disable SNI for TLS handshakes 253 - add option to disable SNI for TLS handshakes
257 - bug #2891595 DNS cache 261 -
258 - bug #2891591 Curl_dns_entry
259 - Avoding connection re-use when using CURLOPT_HTTPPROXYTUNNEL
260 -

View File

@@ -3190,7 +3190,22 @@ AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
esac esac
]) ])
dnl CURL_CHECK_PKGCONFIG ($module) dnl CURL_EXPORT_PCDIR ($pcdir)
dnl ------------------------
dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export
dnl
dnl we need this macro since pkg-config distinguishes among empty and unset
dnl variable while checking PKG_CONFIG_LIBDIR
dnl
AC_DEFUN([CURL_EXPORT_PCDIR], [
if test -n "$1"; then
PKG_CONFIG_LIBDIR="$1"
export PKG_CONFIG_LIBDIR
fi
])
dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir])
dnl ------------------------ dnl ------------------------
dnl search for the pkg-config tool (if not cross-compiling). Set the PKGCONFIG dnl search for the pkg-config tool (if not cross-compiling). Set the PKGCONFIG
dnl variable to hold the path to it, or 'no' if not found/present. dnl variable to hold the path to it, or 'no' if not found/present.
@@ -3198,6 +3213,8 @@ dnl
dnl If pkg-config is present, check that it has info about the $module or dnl If pkg-config is present, check that it has info about the $module or
dnl return "no" anyway! dnl return "no" anyway!
dnl dnl
dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir.
dnl
AC_DEFUN([CURL_CHECK_PKGCONFIG], [ AC_DEFUN([CURL_CHECK_PKGCONFIG], [
@@ -3216,8 +3233,10 @@ AC_DEFUN([CURL_CHECK_PKGCONFIG], [
if test x$PKGCONFIG != xno; then if test x$PKGCONFIG != xno; then
AC_MSG_CHECKING([for $1 options with pkg-config]) AC_MSG_CHECKING([for $1 options with pkg-config])
dnl ask pkg-config about $1 dnl ask pkg-config about $1
$PKGCONFIG --exists $1 itexists=`CURL_EXPORT_PCDIR([$2]) dnl
if test "$?" -ne "0"; then $PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1`
if test -z "$itexists"; then
dnl pkg-config does not have info about the given module! set the dnl pkg-config does not have info about the given module! set the
dnl variable to 'no' dnl variable to 'no'
PKGCONFIG="no" PKGCONFIG="no"

View File

@@ -3,6 +3,7 @@
*.pdf *.pdf
.deps .deps
.libs .libs
MSVC*
Makefile Makefile
Makefile.in Makefile.in
aclocal.m4 aclocal.m4
@@ -30,4 +31,5 @@ libtool
ltmain.sh ltmain.sh
man3 man3
missing missing
msvc*
stamp-h* stamp-h*

View File

@@ -1,5 +1,64 @@
Changelog for the c-ares project Changelog for the c-ares project
* January 28, 2010 (Daniel Stenberg)
- Tommie Gannert pointed out a silly bug in ares_process_fd() since it didn't
check for broken connections like ares_process() did. Based on that, I
merged the two functions into a single generic one with two front-ends.
* December 29, 2009 (Yang Tse)
- Laszlo Tamas Szabo adjusted Makefile.msvc compiler options so that where
run-time error checks enabling compiler option /GZ was used it is replaced
with equivalent /RTCsu for Visual Studio 2003 and newer versions. Option
/GX is replaced with equivalent /EHsc for all versions. Also fixed socket
data type for internal configure_socket function.
* December 21, 2009 (Yang Tse)
- Ingmar Runge noticed that Windows config-win32.h configuration file
did not include a definition for HAVE_CLOSESOCKET which resulted in
function close() being inappropriately used to close sockets.
Version 1.7.0 (Nov 30, 2009)
* November 26, 2009 (Yang Tse)
- Larry Lansing fixed ares_parse_srv_reply to properly parse replies
which might contain non-SRV answers, skipping over potential non-SRV
ones such as CNAMEs.
* November 23, 2009 (Yang Tse)
- Changed naming convention for c-ares libraries built with MSVC, details
and build instructions provided in README.msvc file.
* November 22, 2009 (Yang Tse)
- Jakub Hrozek fixed more function prototypes in man pages to sync them
with the ones declared in ares.h
- Jakub Hrozek renamed addrttl and addr6ttl structs to ares_addrttl and
ares_addr6ttl in order to prevent name space pollution, along with
necessary changes to code base and man pages.This change does not break
ABI, there is no need to recompile existing applications. But existing
applications using these structs with the old name will need source code
adjustments when recompiled using c-ares 1.7.0.
* November 21, 2009 (Yang Tse)
- Added manifest stuff to Makefile.msvc.
* November 20, 2009 (Yang Tse)
- Fixed several function prototypes in man pages that were out of sync
with the ones declared in ares.h. Added ares_free_data() along with
man page. Updated ares_parse_srv_reply() and ares_parse_txt_reply()
with changes from Jakub Hrozek making these now return linked lists
instead of arrays, and merging the ares_free_data() adjustments.
* November 10, 2009 (Yang Tse)
- Updated MSVC 6.0 project files to match settings from Makefile.msvc.
* November 9, 2009 (Yang Tse)
- Makefile.msvc is now the reference method to build c-ares and sample
programs with any MSVC compiler or MS Visual Studio version. If no
option or target are specified it builds dynamic and static c-ares
libraries in debug and release flavours and also builds all sample
programs using each of the different c-ares libraries.
* November 2, 2009 (Yang Tse) * November 2, 2009 (Yang Tse)
- Renamed c-ares setup.h to ares_setup.h - Renamed c-ares setup.h to ares_setup.h
@@ -117,15 +176,15 @@
- Introduced ares_library_init() and ares_library_cleanup() functions. - Introduced ares_library_init() and ares_library_cleanup() functions.
This is an API and ABI break for Win32/64 systems. Non-Win32/64 build targets This is an API and ABI break for Win32/64 systems. Non-Win32/64 build targets
using c-ares 1.6.1 can still survive without calling these functions. Read all using c-ares 1.7.0 can still survive without calling these functions. Read all
the details on ares_library_init(3) and ares_library_cleanup(3) man pages that the details on ares_library_init(3) and ares_library_cleanup(3) man pages that
are included. are included.
curl/libcurl 7.19.5 is fully compatible with c-ares 1.6.1 on all systems. curl/libcurl 7.19.5 is fully compatible with c-ares 1.7.0 on all systems.
In order to use c-ares 1.6.1 with curl/libcurl on Win32/64 systems it is In order to use c-ares 1.7.0 with curl/libcurl on Win32/64 systems it is
required that curl/libcurl is 7.19.5 or newer. In other words, it is not required that curl/libcurl is 7.19.5 or newer. In other words, it is not
possible on Win32/64 to use c-ares 1.6.1 with a curl/libcurl version less possible on Win32/64 to use c-ares 1.7.0 with a curl/libcurl version less
than 7.19.5 than 7.19.5
* May 11 2009 (Daniel Stenberg) * May 11 2009 (Daniel Stenberg)

View File

@@ -13,6 +13,7 @@ ACLOCAL_AMFLAGS = -I m4
# only works when c-ares is built and linked with a similarly debug-build # only works when c-ares is built and linked with a similarly debug-build
# libcurl, but we do this anyway for convenience. # libcurl, but we do this anyway for convenience.
# #
# $(top_builddir)/../include/curl for generated curlbuild.h included from curl.h
# $(top_builddir)/../include is for libcurl's generated curl/curlbuild.h file # $(top_builddir)/../include is for libcurl's generated curl/curlbuild.h file
# $(top_srcdir)/../include is for libcurl's external include files # $(top_srcdir)/../include is for libcurl's external include files
# $(top_builddir)/../lib is for libcurl's generated lib/curl_config.h file # $(top_builddir)/../lib is for libcurl's generated lib/curl_config.h file
@@ -21,11 +22,12 @@ ACLOCAL_AMFLAGS = -I m4
# $(top_srcdir) is for c-ares's ares_setup.h and other "c-ares-private" files # $(top_srcdir) is for c-ares's ares_setup.h and other "c-ares-private" files
if CURLDEBUG if CURLDEBUG
INCLUDES = -I$(top_builddir)/../include \ INCLUDES = -I$(top_builddir)/../include/curl \
-I$(top_srcdir)/../include \ -I$(top_builddir)/../include \
-I$(top_builddir)/../lib \ -I$(top_srcdir)/../include \
-I$(top_srcdir)/../lib \ -I$(top_builddir)/../lib \
-I$(top_builddir) \ -I$(top_srcdir)/../lib \
-I$(top_builddir) \
-I$(top_srcdir) -I$(top_srcdir)
else else
INCLUDES = -I$(top_builddir) \ INCLUDES = -I$(top_builddir) \
@@ -50,9 +52,9 @@ noinst_PROGRAMS =$(PROGS)
# adig and ahost are just sample programs and thus not mentioned with the # adig and ahost are just sample programs and thus not mentioned with the
# regular sources and headers # regular sources and headers
EXTRA_DIST = AUTHORS CHANGES README.cares Makefile.inc Makefile.dj \ EXTRA_DIST = AUTHORS CHANGES README.cares Makefile.inc Makefile.dj \
Makefile.m32 Makefile.netware Makefile.vc6 $(man_MANS) $(MSVCFILES) \ Makefile.m32 Makefile.netware Makefile.msvc $(man_MANS) $(MSVCFILES) \
config-win32.h RELEASE-NOTES libcares.pc.in buildconf get_ver.awk maketgz \ config-win32.h RELEASE-NOTES libcares.pc.in buildconf get_ver.awk maketgz \
TODO ares_build.h.in $(PDFPAGES) cares.rc TODO ares_build.h.in $(PDFPAGES) cares.rc README.msvc
CLEANFILES = $(PDFPAGES) $(HTMLPAGES) CLEANFILES = $(PDFPAGES) $(HTMLPAGES)
@@ -108,14 +110,17 @@ libcares_ladir = $(includedir)
libcares_la_HEADERS = ares.h ares_version.h ares_dns.h \ libcares_la_HEADERS = ares.h ares_version.h ares_dns.h \
ares_build.h ares_rules.h ares_build.h ares_rules.h
ahost_SOURCES = ahost.c ares_getopt.c ares_getopt.h ahost_SOURCES = ahost.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
ahost_LDADD = $(top_builddir)/libcares.la ahost_LDADD = $(top_builddir)/libcares.la
ahost_CFLAGS = $(AM_CFLAGS)
adig_SOURCES = adig.c ares_getopt.c ares_getopt.h adig_SOURCES = adig.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
adig_LDADD = $(top_builddir)/libcares.la adig_LDADD = $(top_builddir)/libcares.la
adig_CFLAGS = $(AM_CFLAGS)
acountry_SOURCES = acountry.c ares_getopt.c ares_getopt.h acountry_SOURCES = acountry.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
acountry_LDADD = $(top_builddir)/libcares.la acountry_LDADD = $(top_builddir)/libcares.la
acountry_CFLAGS = $(AM_CFLAGS)
SOURCEDMANDIR = man3 SOURCEDMANDIR = man3
SOURCEDMANPAGES = ares_init.3 SOURCEDMANPAGES = ares_init.3

View File

@@ -4,6 +4,7 @@ CSOURCES = ares__close_sockets.c \
ares__read_line.c \ ares__read_line.c \
ares__timeval.c \ ares__timeval.c \
ares_cancel.c \ ares_cancel.c \
ares_data.c \
ares_destroy.c \ ares_destroy.c \
ares_expand_name.c \ ares_expand_name.c \
ares_expand_string.c \ ares_expand_string.c \
@@ -41,6 +42,7 @@ CSOURCES = ares__close_sockets.c \
HHEADERS = ares.h \ HHEADERS = ares.h \
ares_build.h \ ares_build.h \
ares_data.h \
ares_dns.h \ ares_dns.h \
ares_ipv6.h \ ares_ipv6.h \
ares_library_init.h \ ares_library_init.h \
@@ -65,6 +67,7 @@ MANPAGES = ares_cancel.3 \
ares_expand_name.3 \ ares_expand_name.3 \
ares_expand_string.3 \ ares_expand_string.3 \
ares_fds.3 \ ares_fds.3 \
ares_free_data.3 \
ares_free_hostent.3 \ ares_free_hostent.3 \
ares_free_string.3 \ ares_free_string.3 \
ares_gethostbyaddr.3 \ ares_gethostbyaddr.3 \
@@ -100,6 +103,7 @@ HTMLPAGES = ares_cancel.html \
ares_expand_name.html \ ares_expand_name.html \
ares_expand_string.html \ ares_expand_string.html \
ares_fds.html \ ares_fds.html \
ares_free_data.html \
ares_free_hostent.html \ ares_free_hostent.html \
ares_free_string.html \ ares_free_string.html \
ares_gethostbyaddr.html \ ares_gethostbyaddr.html \
@@ -135,6 +139,7 @@ PDFPAGES = ares_cancel.pdf \
ares_expand_name.pdf \ ares_expand_name.pdf \
ares_expand_string.pdf \ ares_expand_string.pdf \
ares_fds.pdf \ ares_fds.pdf \
ares_free_data.pdf \
ares_free_hostent.pdf \ ares_free_hostent.pdf \
ares_free_string.pdf \ ares_free_string.pdf \
ares_gethostbyaddr.pdf \ ares_gethostbyaddr.pdf \
@@ -163,3 +168,12 @@ PDFPAGES = ares_cancel.pdf \
ares_timeout.pdf \ ares_timeout.pdf \
ares_version.pdf ares_version.pdf
SAMPLESOURCES = ares_getopt.c \
ares_strcasecmp.c \
inet_net_pton.c \
inet_ntop.c
SAMPLEHEADERS = ares_getopt.h \
ares_strcasecmp.h \
inet_net_pton.h \
inet_ntop.h

473
ares/Makefile.msvc Normal file
View File

@@ -0,0 +1,473 @@
# $Id$
# Copyright (C) 2009 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.
# ------------------------------------------------------------------------------
#
# Makefile for building c-ares libraries and sample programs with MSVC.
#
# Usage: nmake /f makefile.msvc CFG=<config> <target>
#
# <config> must be one of: [ lib-release | lib-debug | dll-release | dll-debug }
# <target> must be one of: [ ALL | c-ares | acountry | adig | ahost | clean }
#
# If a <target> other than ALL or clean is given, <config> becomes mandatory.
#
# If neither <config> nor <target> are specified this results in
# all targets being built for all <config> c-ares library types.
#
# This makefile must be processed from the subdir where it is located.
#
# All results are generated below a subdirectory named msvcXXX.
#
# ------------------------------------------------------------------------------
NAME = cares
# ------------------------------------------------
# c-ares static and dynamic libraries common base
# file names for release and debug configurations
# ------------------------------------------------
STA_LIB_REL = lib$(NAME)
DYN_LIB_REL = $(NAME)
STA_LIB_DBG = $(STA_LIB_REL)d
DYN_LIB_DBG = $(DYN_LIB_REL)d
# -------------------------------------------
# Base names for c-ares DLL import libraries
# -------------------------------------------
IMP_LIB_REL = $(DYN_LIB_REL)
IMP_LIB_DBG = $(DYN_LIB_DBG)
# --------------------------
# Runtime library selection
# --------------------------
RTLIB = /MD
RTLIBD = /MDd
!IF "$(RTLIBCFG)" == "static"
RTLIB = /MT
RTLIBD = /MTd
!ENDIF
# --------------------------------------------------------
# Define USE_WATT32 to 1 to use the Watt-32 tcp/ip stack,
# otherwise Winsock tcp/ip stack will be used as default.
# --------------------------------------------------------
USE_WATT32 = 0
# -------------------------------------------
# Detect NMAKE version deducing MSVC version
# -------------------------------------------
!IFNDEF _NMAKE_VER
! MESSAGE Macro _NMAKE_VER not defined.
! MESSAGE Use MSVC's NMAKE to process this makefile.
! ERROR See previous message.
!ENDIF
!IF "$(_NMAKE_VER)" == "6.00.8168.0"
CC_VERS_NUM = 60
!ELSEIF "$(_NMAKE_VER)" == "6.00.9782.0"
CC_VERS_NUM = 60
!ELSEIF "$(_NMAKE_VER)" == "7.00.9466"
CC_VERS_NUM = 70
!ELSEIF "$(_NMAKE_VER)" == "7.00.9955"
CC_VERS_NUM = 70
!ELSEIF "$(_NMAKE_VER)" == "7.10.3077"
CC_VERS_NUM = 71
!ELSEIF "$(_NMAKE_VER)" == "8.00.40607.16"
CC_VERS_NUM = 80
!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.42"
CC_VERS_NUM = 80
!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.762"
CC_VERS_NUM = 80
!ELSEIF "$(_NMAKE_VER)" == "9.00.21022.08"
CC_VERS_NUM = 90
!ELSEIF "$(_NMAKE_VER)" == "9.00.30729.01"
CC_VERS_NUM = 90
!ELSEIF "$(_NMAKE_VER)" == "10.00.20506.01"
CC_VERS_NUM = 100
!ELSE
! MESSAGE Unknown value for _NMAKE_VER macro: "$(_NMAKE_VER)"
! MESSAGE Please, report this condition on the c-ares development
! MESSAGE mailing list: http://cool.haxx.se/mailman/listinfo/c-ares/
! ERROR See previous message.
!ENDIF
CC_VERS_STR = msvc$(CC_VERS_NUM)
# ----------------------------------------------------
# Verify that current subdir is the c-ares source one
# ----------------------------------------------------
!IF ! EXIST(.\ares_init.c)
! MESSAGE Can not process Makefile.msvc from outside of c-ares source subdirectory.
! MESSAGE Change to the subdirectory where Makefile.msvc is found, and try again.
! ERROR See previous message.
!ENDIF
# ------------------------------------------------------------------
# Base subdir is the common root from which other subdirs will hang,
# the name depends on MSVC version being used when building c-ares.
# ------------------------------------------------------------------
BASE_DIR = .\$(CC_VERS_STR)
# ----------------------------------------
# Subdir holding sources for all projects
# ----------------------------------------
SRCDIR = .
# -------------------------
# Configuration validation
# -------------------------
VALID_CFGSET = FALSE
!IF "$(CFG)" == "lib-release" || "$(CFG)" == "lib-debug" || \
"$(CFG)" == "dll-release" || "$(CFG)" == "dll-debug"
VALID_CFGSET = TRUE
!ENDIF
!IF "$(VALID_CFGSET)" == "FALSE" && "$(CFG)" != ""
! MESSAGE MSVC c-ares makefile
! MESSAGE
! MESSAGE Usage: nmake /f makefile.msvc CFG=<config> <target>
! MESSAGE
! MESSAGE <config> must be one of: [ lib-release | lib-debug | dll-release | dll-debug }
! MESSAGE <target> must be one of: [ ALL | c-ares | acountry | adig | ahost | clean }
! MESSAGE
! MESSAGE If a <target> other than ALL or clean is given, <config> becomes mandatory.
! MESSAGE
! MESSAGE If neither <config> nor <target> are specified this results in
! MESSAGE all targets being built for all <config> c-ares library types.
! MESSAGE
! ERROR Choose a valid configuration.
!ENDIF
# --------------------------------------------------------
# Project subdirs independent of configuration being used
# --------------------------------------------------------
CARES_DIR = $(BASE_DIR)\cares
PROG1_DIR = $(BASE_DIR)\acountry
PROG2_DIR = $(BASE_DIR)\adig
PROG3_DIR = $(BASE_DIR)\ahost
# ---------------------------------------------------
# Subdirs which are configuration dependent are only
# defined when a valid configuration has been given.
# ---------------------------------------------------
!IF "$(VALID_CFGSET)" == "TRUE"
CARES_OUTDIR = $(CARES_DIR)\$(CFG)
PROG1_OUTDIR = $(PROG1_DIR)\$(CFG)
PROG2_OUTDIR = $(PROG2_DIR)\$(CFG)
PROG3_OUTDIR = $(PROG3_DIR)\$(CFG)
CARES_OBJDIR = $(CARES_OUTDIR)\obj
PROG1_OBJDIR = $(PROG1_OUTDIR)\obj
PROG2_OBJDIR = $(PROG2_OUTDIR)\obj
PROG3_OBJDIR = $(PROG3_OUTDIR)\obj
!ELSE
!UNDEF CARES_OUTDIR
!UNDEF PROG1_OUTDIR
!UNDEF PROG2_OUTDIR
!UNDEF PROG3_OUTDIR
!UNDEF CARES_OBJDIR
!UNDEF PROG1_OBJDIR
!UNDEF PROG2_OBJDIR
!UNDEF PROG3_OBJDIR
!ENDIF
# -------------------------------------
# Settings that depend on tcp/ip stack
# -------------------------------------
!IF "$(USE_WATT32)" == "1"
CFLAGS = /UWIN32 /DWATT32 /I$(WATT_ROOT)\inc
EX_LIBS_REL = $(WATT_ROOT)\lib\wattcpvc_imp.lib
EX_LIBS_DBG = $(WATT_ROOT)\lib\wattcpvc_imp_d.lib
!ELSE
CFLAGS = /DWIN32
EX_LIBS_REL = ws2_32.lib advapi32.lib kernel32.lib
EX_LIBS_DBG = ws2_32.lib advapi32.lib kernel32.lib
!ENDIF
# -----------------------------------------
# Switches that depend on compiler version
# -----------------------------------------
!IF $(CC_VERS_NUM) == 60
PDB_NONE = /pdb:none
PDBTYPE_CONSOLIDATE = /pdbtype:consolidate
!ELSE
!UNDEF PDB_NONE
!UNDEF PDBTYPE_CONSOLIDATE
!ENDIF
!IF $(CC_VERS_NUM) <= 70
RT_ERROR_CHECKING = /GZ
!ELSE
RT_ERROR_CHECKING = /RTCsu
!ENDIF
# ----------------------------
# Assorted commands and flags
# ----------------------------
CC_CMD_REL = cl.exe /nologo $(RTLIB) /DNDEBUG /O2
CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi $(RT_ERROR_CHECKING)
CC_CFLAGS = $(CFLAGS) /I. /W3 /EHsc /FD
RC_CMD_REL = rc.exe /l 0x409 /d "NDEBUG"
RC_CMD_DBG = rc.exe /l 0x409 /d "_DEBUG"
LINK_CMD_LIB = link.exe /lib /nologo
LINK_CMD_DLL = link.exe /dll /nologo /incremental:no /fixed:no
LINK_CMD_EXE = link.exe /nologo /incremental:no /fixed:no /subsystem:console
LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release $(PDB_NONE)
LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug $(PDBTYPE_CONSOLIDATE)
# ---------------------------------
# Configuration dependent settings
# ---------------------------------
!IF "$(CFG)" == "lib-release"
CARES_TARGET = $(STA_LIB_REL).lib
CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB
CARES_LFLAGS =
SPROG_CFLAGS = /DCARES_STATICLIB
SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(STA_LIB_REL).lib
CARES_LINK = $(LINK_CMD_LIB)
SPROG_LINK = $(LINK_CMD_EXE_REL)
CC_CMD = $(CC_CMD_REL)
!ENDIF
!IF "$(CFG)" == "lib-debug"
CARES_TARGET = $(STA_LIB_DBG).lib
CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB /DDEBUGBUILD
CARES_LFLAGS =
SPROG_CFLAGS = /DCARES_STATICLIB
SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(STA_LIB_DBG).lib
CARES_LINK = $(LINK_CMD_LIB)
SPROG_LINK = $(LINK_CMD_EXE_DBG)
CC_CMD = $(CC_CMD_DBG)
!ENDIF
!IF "$(CFG)" == "dll-release"
CARES_TARGET = $(DYN_LIB_REL).dll
CARES_CFLAGS = /DCARES_BUILDING_LIBRARY
CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(CARES_OUTDIR)\$(IMP_LIB_REL).lib $(PDB_NONE)
SPROG_CFLAGS =
SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(IMP_LIB_REL).lib
CARES_LINK = $(LINK_CMD_DLL)
SPROG_LINK = $(LINK_CMD_EXE_REL)
CC_CMD = $(CC_CMD_REL)
USE_RES_FILE = TRUE
RC_CMD = $(RC_CMD_REL)
!ENDIF
!IF "$(CFG)" == "dll-debug"
CARES_TARGET = $(DYN_LIB_DBG).dll
CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DDEBUGBUILD
CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(CARES_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(CARES_OUTDIR)\$(DYN_LIB_DBG).pdb $(PDBTYPE_CONSOLIDATE)
SPROG_CFLAGS =
SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(IMP_LIB_DBG).lib
CARES_LINK = $(LINK_CMD_DLL)
SPROG_LINK = $(LINK_CMD_EXE_DBG)
CC_CMD = $(CC_CMD_DBG)
USE_RES_FILE = TRUE
RC_CMD = $(RC_CMD_DBG)
!ENDIF
# --------------------------------------------
# Makefile.inc provides lists of source files
# --------------------------------------------
!INCLUDE .\Makefile.inc
# ----------------------------
# Build lists of object files
# ----------------------------
!IF "$(VALID_CFGSET)" == "TRUE"
!IF [ECHO CARES_OBJS=^$(CARES_OBJDIR)\$(CSOURCES: = $(CARES_OBJDIR^)\) > .\cares_objs.inc] == 0
!INCLUDE .\cares_objs.inc
!IF [DEL .\cares_objs.inc]
!ENDIF
!ELSE
!ERROR Problem generating CARES_OBJS list.
!ENDIF
CARES_OBJS = $(CARES_OBJS:.c=.obj)
!IF "$(USE_RES_FILE)" == "TRUE"
CARES_OBJS = $(CARES_OBJS) $(CARES_OBJDIR)\cares.res
!ENDIF
!IF [ECHO PROG1_OBJS=^$(PROG1_OBJDIR)\$(SAMPLESOURCES: = $(PROG1_OBJDIR^)\) > .\prog1_objs.inc] == 0
!INCLUDE .\prog1_objs.inc
!IF [DEL .\prog1_objs.inc]
!ENDIF
!ELSE
!ERROR Problem generating PROG1_OBJS list.
!ENDIF
PROG1_OBJS = $(PROG1_OBJS:.c=.obj)
PROG1_OBJS = $(PROG1_OBJS) $(PROG1_OBJDIR)\acountry.obj
!IF [ECHO PROG2_OBJS=^$(PROG2_OBJDIR)\$(SAMPLESOURCES: = $(PROG2_OBJDIR^)\) > .\prog2_objs.inc] == 0
!INCLUDE .\prog2_objs.inc
!IF [DEL .\prog2_objs.inc]
!ENDIF
!ELSE
!ERROR Problem generating PROG2_OBJS list.
!ENDIF
PROG2_OBJS = $(PROG2_OBJS:.c=.obj)
PROG2_OBJS = $(PROG2_OBJS) $(PROG2_OBJDIR)\adig.obj
!IF [ECHO PROG3_OBJS=^$(PROG3_OBJDIR)\$(SAMPLESOURCES: = $(PROG3_OBJDIR^)\) > .\prog3_objs.inc] == 0
!INCLUDE .\prog3_objs.inc
!IF [DEL .\prog3_objs.inc]
!ENDIF
!ELSE
!ERROR Problem generating PROG3_OBJS list.
!ENDIF
PROG3_OBJS = $(PROG3_OBJS:.c=.obj)
PROG3_OBJS = $(PROG3_OBJS) $(PROG3_OBJDIR)\ahost.obj
!ENDIF
# --------------------------------
# Only our custom inference rules
# --------------------------------
.SUFFIXES:
.SUFFIXES: .c .rc
{$(SRCDIR)}.rc{$(CARES_OBJDIR)}.res:
$(RC_CMD) /Fo $@ $<
{$(SRCDIR)}.c{$(CARES_OBJDIR)}.obj:
$(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
{$(SRCDIR)}.c{$(PROG1_OBJDIR)}.obj:
$(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
{$(SRCDIR)}.c{$(PROG2_OBJDIR)}.obj:
$(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
{$(SRCDIR)}.c{$(PROG3_OBJDIR)}.obj:
$(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
# ------------------------------------------------------------- #
# ------------------------------------------------------------- #
# Default target when no CFG library type has been specified, #
# results in building target ALL for all c-ares library types. #
# ------------------------------------------------------------- #
# ------------------------------------------------------------- #
!IF "$(VALID_CFGSET)" == "FALSE"
ALL:
$(MAKE) /f .\Makefile.msvc CFG=lib-release ALL
$(MAKE) /f .\Makefile.msvc CFG=lib-debug ALL
$(MAKE) /f .\Makefile.msvc CFG=dll-release ALL
$(MAKE) /f .\Makefile.msvc CFG=dll-debug ALL
clean:
@-RMDIR /S /Q $(BASE_DIR) >NUL 2>&1
!ENDIF
# ---------------------------------------------------------------------
# Targets only available when a proper CFG library type has been given
# ---------------------------------------------------------------------
!IF "$(VALID_CFGSET)" == "TRUE"
ALL: c-ares acountry adig ahost
@
c-ares: $(HHEADERS) $(CSOURCES) $(CARES_OBJDIR) $(CARES_OBJS) $(CARES_OUTDIR)
$(CARES_LINK) $(CARES_LFLAGS) /out:$(CARES_OUTDIR)\$(CARES_TARGET) $(CARES_OBJS)
! IF "$(USE_RES_FILE)" == "TRUE"
@if exist $(CARES_OUTDIR)\$(CARES_TARGET).manifest mt -nologo -manifest $(CARES_OUTDIR)\$(CARES_TARGET).manifest -outputresource:$(CARES_OUTDIR)\$(CARES_TARGET);2
! ENDIF
acountry: c-ares acountry.c $(SAMPLESOURCES) $(SAMPLEHEADERS) $(PROG1_OBJDIR) $(PROG1_OBJS) $(PROG1_OUTDIR)
$(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG1_OUTDIR)\acountry.exe $(PROG1_OBJS)
@if exist $(PROG1_OUTDIR)\acountry.exe.manifest mt -nologo -manifest $(PROG1_OUTDIR)\acountry.exe.manifest -outputresource:$(PROG1_OUTDIR)\acountry.exe;1
adig: c-ares adig.c $(SAMPLESOURCES) $(SAMPLEHEADERS) $(PROG2_OBJDIR) $(PROG2_OBJS) $(PROG2_OUTDIR)
$(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG2_OUTDIR)\adig.exe $(PROG2_OBJS)
@if exist $(PROG2_OUTDIR)\adig.exe.manifest mt -nologo -manifest $(PROG2_OUTDIR)\adig.exe.manifest -outputresource:$(PROG2_OUTDIR)\adig.exe;1
ahost: c-ares ahost.c $(SAMPLESOURCES) $(SAMPLEHEADERS) $(PROG3_OBJDIR) $(PROG3_OBJS) $(PROG3_OUTDIR)
$(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG3_OUTDIR)\ahost.exe $(PROG3_OBJS)
@if exist $(PROG3_OUTDIR)\ahost.exe.manifest mt -nologo -manifest $(PROG3_OUTDIR)\ahost.exe.manifest -outputresource:$(PROG3_OUTDIR)\ahost.exe;1
$(CARES_OUTDIR): $(CARES_DIR)
@if not exist $(CARES_OUTDIR) mkdir $(CARES_OUTDIR)
$(PROG1_OUTDIR): $(PROG1_DIR)
@if not exist $(PROG1_OUTDIR) mkdir $(PROG1_OUTDIR)
$(PROG2_OUTDIR): $(PROG2_DIR)
@if not exist $(PROG2_OUTDIR) mkdir $(PROG2_OUTDIR)
$(PROG3_OUTDIR): $(PROG3_DIR)
@if not exist $(PROG3_OUTDIR) mkdir $(PROG3_OUTDIR)
$(CARES_OBJDIR): $(CARES_OUTDIR)
@if not exist $(CARES_OBJDIR) mkdir $(CARES_OBJDIR)
$(PROG1_OBJDIR): $(PROG1_OUTDIR)
@if not exist $(PROG1_OBJDIR) mkdir $(PROG1_OBJDIR)
$(PROG2_OBJDIR): $(PROG2_OUTDIR)
@if not exist $(PROG2_OBJDIR) mkdir $(PROG2_OBJDIR)
$(PROG3_OBJDIR): $(PROG3_OUTDIR)
@if not exist $(PROG3_OBJDIR) mkdir $(PROG3_OBJDIR)
clean:
@-RMDIR /S /Q $(CARES_OUTDIR) >NUL 2>&1
@-RMDIR /S /Q $(PROG1_OUTDIR) >NUL 2>&1
@-RMDIR /S /Q $(PROG2_OUTDIR) >NUL 2>&1
@-RMDIR /S /Q $(PROG3_OUTDIR) >NUL 2>&1
!ENDIF
$(BASE_DIR):
@if not exist $(BASE_DIR) mkdir $(BASE_DIR)
$(CARES_DIR): $(BASE_DIR)
@if not exist $(CARES_DIR) mkdir $(CARES_DIR)
$(PROG1_DIR): $(BASE_DIR)
@if not exist $(PROG1_DIR) mkdir $(PROG1_DIR)
$(PROG2_DIR): $(BASE_DIR)
@if not exist $(PROG2_DIR) mkdir $(PROG2_DIR)
$(PROG3_DIR): $(BASE_DIR)
@if not exist $(PROG3_DIR) mkdir $(PROG3_DIR)
# End of Makefile.msvc

View File

@@ -1,275 +0,0 @@
# $Id$
#
# C-ares makefile for MSVC6+
# G. Vanem <gvanem@broadpark.no>.
#
CFG_MODEL = MD
DEBUG_MODEL = d
USE_WATT32 = 0
#
# Configurations:
# -MD - msvcrt.dll, threads, release (normal)
# -MDd - msvcrtd.dll, threads, debug
# -ML - libc, no threads, release (not available on VC-2008+)
# -MLd - libc, no threads, debug (not available on VC-2008+)
# -MT - libc, threads, release
# -MTd - libc, threads, debug
CC = cl
CFLAGS = -nologo -$(CFG_MODEL)$(DEBUG_MODEL) -W3 -Yd -Zi
LDFLAGS = -machine:i386 -map
OBJ_DIR = VC6_obj
DEF_FILE = cares.def
!if "$(USE_WATT32)" == "1"
CFLAGS = $(CFLAGS) -UWIN32 -DWATT32 -I$(WATT_ROOT)\inc
EX_LIBS = $(WATT_ROOT)\lib\wattcpvc_imp.lib
!else
CFLAGS = $(CFLAGS) -DWIN32 -DWIN32_LEAN_AND_MEAN
EX_LIBS = advapi32.lib ws2_32.lib
!endif
!if "$(DEBUG_MODEL)" == "d"
CFLAGS = $(CFLAGS) -DDEBUGBUILD -D_DEBUG -GZ
LDFLAGS = $(LDFLAGS) -debug -fixed:no
!else
CFLAGS = $(CFLAGS) -O2 -Og
LDFLAGS = $(LDFLAGS) -release
!endif
CFLAGS = $(CFLAGS) -I.\.
OBJECTS = $(OBJ_DIR)\ares_fds.obj \
$(OBJ_DIR)\ares_process.obj \
$(OBJ_DIR)\ares_free_hostent.obj \
$(OBJ_DIR)\ares_query.obj \
$(OBJ_DIR)\ares__close_sockets.obj \
$(OBJ_DIR)\ares_free_string.obj \
$(OBJ_DIR)\ares_search.obj \
$(OBJ_DIR)\ares__get_hostent.obj \
$(OBJ_DIR)\ares_gethostbyaddr.obj \
$(OBJ_DIR)\ares_getsock.obj \
$(OBJ_DIR)\ares_send.obj \
$(OBJ_DIR)\ares__read_line.obj \
$(OBJ_DIR)\ares_gethostbyname.obj \
$(OBJ_DIR)\ares_getnameinfo.obj \
$(OBJ_DIR)\ares_strcasecmp.obj \
$(OBJ_DIR)\ares_strerror.obj \
$(OBJ_DIR)\ares_cancel.obj \
$(OBJ_DIR)\ares_init.obj \
$(OBJ_DIR)\ares_library_init.obj \
$(OBJ_DIR)\ares_llist.obj \
$(OBJ_DIR)\ares_timeout.obj \
$(OBJ_DIR)\ares__timeval.obj \
$(OBJ_DIR)\ares_destroy.obj \
$(OBJ_DIR)\ares_mkquery.obj \
$(OBJ_DIR)\ares_version.obj \
$(OBJ_DIR)\ares_expand_name.obj \
$(OBJ_DIR)\ares_parse_a_reply.obj \
$(OBJ_DIR)\ares_parse_aaaa_reply.obj \
$(OBJ_DIR)\ares_parse_ns_reply.obj \
$(OBJ_DIR)\ares_parse_srv_reply.obj \
$(OBJ_DIR)\windows_port.obj \
$(OBJ_DIR)\ares_expand_string.obj \
$(OBJ_DIR)\ares_parse_ptr_reply.obj \
$(OBJ_DIR)\ares_writev.obj \
$(OBJ_DIR)\bitncmp.obj \
$(OBJ_DIR)\inet_net_pton.obj \
$(OBJ_DIR)\inet_ntop.obj
all: $(OBJ_DIR) cares.lib cares.dll cares_imp.lib ahost.exe adig.exe acountry.exe
@echo Welcome to c-ares library and examples
$(OBJ_DIR):
mkdir $(OBJ_DIR)
cares.lib: $(OBJ_DIR) $(OBJECTS)
lib -nologo -out:$@ $(OBJECTS)
cares_imp.lib cares.dll: $(OBJ_DIR) $(DEF_FILE) $(OBJECTS)
link $(LDFLAGS) -dll -implib:cares_imp.lib -out:cares.dll \
-def:$(DEF_FILE) $(OBJECTS) $(EX_LIBS)
$(DEF_FILE): $(OBJECTS) Makefile.VC6
@echo ; Generated. DO NOT EDIT > $@
@echo LIBRARY cares.dll >> $@
@echo EXPORTS >> $@
@echo ares_cancel >> $@
@echo ares_destroy >> $@
@echo ares_expand_name >> $@
@echo ares_expand_string >> $@
@echo ares_fds >> $@
@echo ares_free_hostent >> $@
@echo ares_free_string >> $@
@echo ares_gethostbyaddr >> $@
@echo ares_gethostbyname >> $@
@echo ares_getsock >> $@
@echo ares_init >> $@
@echo ares_init_options >> $@
@echo ares_library_init >> $@
@echo ares_library_cleanup >> $@
@echo ares_mkquery >> $@
@echo ares_parse_a_reply >> $@
@echo ares_parse_ptr_reply >> $@
@echo ares_parse_ns_reply >> $@
@echo ares_process >> $@
@echo ares_process_fd >> $@
@echo ares_query >> $@
@echo ares_search >> $@
@echo ares_strerror >> $@
@echo ares_strncasecmp >> $@
@echo ares_strcasecmp >> $@
@echo ares_timeout >> $@
@echo ares_version >> $@
@echo ares_inet_net_pton >> $@
@echo ares_inet_ntop >> $@
@echo ares_inet_pton >> $@
@echo ares_getnameinfo >> $@
@echo ares_parse_aaaa_reply >> $@
!if "$(USE_WATT32)" == "0"
@echo ares_writev >> $@
!endif
ahost.exe: $(OBJ_DIR) $(OBJ_DIR)\ahost.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib
link $(LDFLAGS) -out:$@ $(OBJ_DIR)\ahost.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib $(EX_LIBS)
adig.exe: $(OBJ_DIR) $(OBJ_DIR)\adig.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib
link $(LDFLAGS) -out:$@ $(OBJ_DIR)\adig.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib $(EX_LIBS)
acountry.exe: $(OBJ_DIR) $(OBJ_DIR)\acountry.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib
link $(LDFLAGS) -out:$@ $(OBJ_DIR)\acountry.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib $(EX_LIBS)
clean:
- del $(OBJ_DIR)\*.obj *.ilk *.pdb *.pbt *.pbi *.pbo *._xe *.map
vclean realclean: clean
- del $(DEF_FILE) cares.lib cares_imp.* cares.dll
- del ahost.exe adig.exe acountry.exe
- rd $(OBJ_DIR)
.c{$(OBJ_DIR)}.obj:
$(CC) $(CFLAGS) -Fo$*.obj -c $<
#
# Copyright "gcc -MM .."
#
$(OBJ_DIR)\ares_fds.obj: ares_fds.c ares_setup.h setup_once.h ares.h ares_private.h \
ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_process.obj: ares_process.c ares_setup.h setup_once.h nameser.h \
ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_free_hostent.obj: ares_free_hostent.c ares_setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_query.obj: ares_query.c ares_setup.h setup_once.h nameser.h \
ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares__close_sockets.obj: ares__close_sockets.c ares_setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_free_string.obj: ares_free_string.c ares_setup.h setup_once.h \
ares.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_search.obj: ares_search.c ares_setup.h setup_once.h nameser.h \
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares__get_hostent.obj: ares__get_hostent.c ares_setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_gethostbyaddr.obj: ares_gethostbyaddr.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h \
ares_rules.h
$(OBJ_DIR)\ares_send.obj: ares_send.c ares_setup.h setup_once.h nameser.h ares.h \
ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares__read_line.obj: ares__read_line.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_gethostbyname.obj: ares_gethostbyname.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h bitncmp.h \
ares_build.h ares_rules.h
$(OBJ_DIR)\ares_strcasecmp.obj: ares_strcasecmp.c ares_setup.h setup_once.h ares.h \
ares_build.h ares_rules.h
$(OBJ_DIR)\ares_strerror.obj: ares_strerror.c ares_setup.h setup_once.h ares.h \
ares_build.h ares_rules.h
$(OBJ_DIR)\ares_cancel.obj: ares_cancel.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_init.obj: ares_init.c ares_setup.h setup_once.h nameser.h ares.h \
ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h \
ares_library_init.h
$(OBJ_DIR)\ares_timeout.obj: ares_timeout.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares__timeval.obj: ares__timeval.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_destroy.obj: ares_destroy.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_mkquery.obj: ares_mkquery.c ares_setup.h setup_once.h nameser.h \
ares.h ares_dns.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_version.obj: ares_version.c ares_setup.h setup_once.h ares.h \
ares_version.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_expand_name.obj: ares_expand_name.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_parse_a_reply.obj: ares_parse_a_reply.c ares_setup.h setup_once.h \
nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h \
ares_rules.h
$(OBJ_DIR)\windows_port.obj: windows_port.c ares_setup.h setup_once.h nameser.h \
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_expand_string.obj: ares_expand_string.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_parse_ptr_reply.obj: ares_parse_ptr_reply.c ares_setup.h \
setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h \
ares_build.h ares_rules.h
$(OBJ_DIR)\ares_parse_aaaa_reply.obj: ares_parse_aaaa_reply.c ares_setup.h \
setup_once.h nameser.h ares.h ares_dns.h inet_net_pton.h ares_private.h \
ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_parse_ns_reply.obj: ares_parse_ns_reply.c ares_setup.h \
setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h \
ares_build.h ares_rules.h
$(OBJ_DIR)\ares_getnameinfo.obj: ares_getnameinfo.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_ntop.h ares_build.h \
ares_rules.h
$(OBJ_DIR)\inet_net_pton.obj: inet_net_pton.c ares_setup.h setup_once.h nameser.h \
ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h
$(OBJ_DIR)\bitncmp.obj: bitncmp.c bitncmp.h ares_build.h ares_rules.h
$(OBJ_DIR)\inet_ntop.obj: inet_ntop.c ares_setup.h setup_once.h nameser.h \
ares_ipv6.h inet_ntop.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_getopt.obj: ares_getopt.c ares_getopt.h ares_build.h \
ares_rules.h
$(OBJ_DIR)\ares_library_init.obj: ares_library_init.c ares_setup.h setup_once.h \
ares.h ares_private.h ares_library_init.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_llist.obj: ares_llist.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_llist.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_writev.obj: ares_writev.c ares_setup.h setup_once.h ares.h \
ares_writev.h ares_build.h ares_rules.h

View File

@@ -27,7 +27,7 @@ You'll find all c-ares details and news here:
NOTES FOR C-ARES HACKERS NOTES FOR C-ARES HACKERS
The following notes apply to c-ares version 1.6.1 and later. The following notes apply to c-ares version 1.7.0 and later.
* The distributed ares_build.h file is only intended to be used on systems * The distributed ares_build.h file is only intended to be used on systems
which can not run the also distributed configure script. which can not run the also distributed configure script.

119
ares/README.msvc Normal file
View File

@@ -0,0 +1,119 @@
$Id$
___ __ _ _ __ ___ ___
/ __| ___ / _` | '__/ _ \/ __|
| (_ |___| (_| | | | __/\__ \
\___| \__,_|_| \___||___/
How to build c-ares using MSVC or Visual Studio
=================================================
How to build using MSVC from the command line
---------------------------------------------
Open a command prompt window and ensure that the environment is properly
set up in order to use MSVC or Visual Studio compiler tools.
Change to c-ares source folder where Makefile.msvc file is located and run:
> nmake -f Makefile.msvc
This will build all c-ares libraries as well as three sample programs.
Once the above command has finished a new folder named MSVCXX will exist
below the folder where makefile.msvc is found. The name of the folder
depends on the MSVC compiler version being used to build c-ares.
Below the MSVCXX folder there will exist four folders named 'cares',
'ahost', 'acountry', and 'adig'. The 'cares' folder is the one that
holds the c-ares libraries you have just generated, the other three
hold sample programs that use the libraries.
The above command builds four versions of the c-ares library, dynamic
and static versions and each one in release and debug flavours. Each
of these is found in folders named dll-release, dll-debug, lib-release,
and lib-debug, which hang from the 'cares' folder mentioned above. Each
sample program also has folders with the same names to reflect which
library version it is using.
How to build using Visual Studio 6 IDE
--------------------------------------
A VC++ 6.0 reference workspace (vc6aws.dsw) is available within the 'vc'
folder to allow proper building of the library and sample programs.
1) Open the vc6aws.dsw workspace with MSVC6's IDE.
2) Select 'Build' from top menu.
3) Select 'Batch Build' from dropdown menu.
4) Make sure that the sixteen project configurations are 'checked'.
5) Click on the 'Build' button.
6) Once the sixteen project configurations are built you are done.
Dynamic and static c-ares libraries are built in debug and release flavours,
and can be located each one in its own subdirectory, dll-debug, dll-release,
lib-debug and lib-release, all of them below the 'vc\cares' subdirectory.
In the same way four executable versions of each sample program are built,
each using its respective library. The resulting sample executables are
located in its own subdirectory, dll-debug, dll-release, lib-debug and
lib-release, below the 'vc\acountry', 'vc\adig' and 'vc\ahost'folders.
These reference VC++ 6.0 configurations are generated using the dynamic CRT.
How to build using Visual Studio 2003 or newer IDE
--------------------------------------------------
First you have to convert the VC++ 6.0 reference workspace and project files
to the Visual Studio IDE version you are using, following next steps:
1) Open vc\vc6aws.dsw with VS20XX.
2) Allow VS20XX to update all projects and workspaces.
3) Save ALL and close VS20XX.
4) Open vc\vc6aws.sln with VS20XX.
5) Select batch build, check 'all' projects and click 'build' button.
Same comments relative to generated files and folders as done above for
Visual Studio 6 IDE apply here.
Relationship between c-ares library file names and versions
-----------------------------------------------------------
c-ares static release library version files:
libcares.lib -> static release library
c-ares static debug library version files:
libcaresd.lib -> static debug library
c-ares dynamic release library version files:
cares.dll -> dynamic release library
cares.lib -> import library for the dynamic release library
cares.exp -> export file for the dynamic release library
c-ares dynamic debug library version files:
caresd.dll -> dynamic debug library
caresd.lib -> import library for the dynamic debug library
caresd.exp -> export file for the dynamic debug library
caresd.pdb -> debug symbol file for the dynamic debug library
How to use c-ares static libraries
----------------------------------
When using the c-ares static library in your program, you will have to
define preprocessor symbol CARES_STATICLIB while building your program,
otherwise you will get errors at linkage stage.
Have Fun!

View File

@@ -1,31 +1,17 @@
This is what's new and changed in the c-ares 1.7.0 release: This is what's new and changed in the c-ares 1.7.1 release:
Changed: Changed:
o in6_addr is not used in ares.h anymore, but a private ares_in6_addr is o
instead declared and used
o ares_gethostbyname() now supports 'AF_UNSPEC' as a family for resolving
either AF_INET6 or AF_INET
o a build-time configured ares_socklen_t is now used instead of socklen_t
o new ares_library_init() and ares_library_cleanup() functions
o new --enable-curldebug configure option
o ARES_ECANCELLED is now sent as reason for ares_cancel()
o added ares_parse_srv_reply()
o added ares_parse_txt_reply()
o new --enable-symbol-hiding configure option
Fixed: Fixed:
o ares_parse_*_reply() functions now return ARES_EBADRESP instead of o closing of sockets on Windows systems
ARES_EBADNAME if the name in the response failed to decode o MSVC deprecated compiler options warnings
o only expose/export symbols starting with 'ares_' o ares_process_fd() didn't check broken connections
o fix \Device\TCP handle leaks triggered by buggy iphlpapi.dll
o init without internet gone no longer fails
o out of bounds memory overwrite triggered with malformed /etc/hosts file
Thanks go to these friendly people for their efforts and contributions: Thanks go to these friendly people for their efforts and contributions:
Phil Blundell, Japheth Cleaver, Yang Tse, Gregor Jasny, Joshua Kwan, Ingmar Runge, Laszlo Tamas Szabo, Yang Tse, Tommie Gannert
Timo Teras, Jakub Hrozek, John Engelhart
Have fun! Have fun!

View File

@@ -199,7 +199,7 @@ int main(int argc, char **argv)
*/ */
static void wait_ares(ares_channel channel) static void wait_ares(ares_channel channel)
{ {
while (1) for (;;)
{ {
struct timeval *tvp, tv; struct timeval *tvp, tv;
fd_set read_fds, write_fds; fd_set read_fds, write_fds;

View File

@@ -157,7 +157,6 @@ static const char *opcodes[] = {
"UPDATEA", "UPDATED", "UPDATEDA", "UPDATEM", "UPDATEMA", "UPDATEA", "UPDATED", "UPDATEDA", "UPDATEM", "UPDATEMA",
"ZONEINIT", "ZONEREF" "ZONEINIT", "ZONEREF"
}; };
struct in_addr inaddr;
static const char *rcodes[] = { static const char *rcodes[] = {
"NOERROR", "FORMERR", "SERVFAIL", "NXDOMAIN", "NOTIMP", "REFUSED", "NOERROR", "FORMERR", "SERVFAIL", "NXDOMAIN", "NOTIMP", "REFUSED",
@@ -165,6 +164,8 @@ static const char *rcodes[] = {
"(unknown)", "(unknown)", "(unknown)", "(unknown)", "NOCHANGE" "(unknown)", "(unknown)", "(unknown)", "(unknown)", "NOCHANGE"
}; };
static struct in_addr inaddr;
static void callback(void *arg, int status, int timeouts, static void callback(void *arg, int status, int timeouts,
unsigned char *abuf, int alen); unsigned char *abuf, int alen);
static const unsigned char *display_question(const unsigned char *aptr, static const unsigned char *display_question(const unsigned char *aptr,
@@ -321,7 +322,7 @@ int main(int argc, char **argv)
} }
/* Wait for all queries to complete. */ /* Wait for all queries to complete. */
while (1) for (;;)
{ {
FD_ZERO(&read_fds); FD_ZERO(&read_fds);
FD_ZERO(&write_fds); FD_ZERO(&write_fds);

View File

@@ -140,7 +140,7 @@ int main(int argc, char **argv)
} }
/* Wait for all queries to complete. */ /* Wait for all queries to complete. */
while (1) for (;;)
{ {
FD_ZERO(&read_fds); FD_ZERO(&read_fds);
FD_ZERO(&write_fds); FD_ZERO(&write_fds);

View File

@@ -119,14 +119,14 @@ extern "C" {
#define ARES_EBADHINTS 20 #define ARES_EBADHINTS 20
/* Uninitialized library error code */ /* Uninitialized library error code */
#define ARES_ENOTINITIALIZED 21 /* introduced in 1.6.1 */ #define ARES_ENOTINITIALIZED 21 /* introduced in 1.7.0 */
/* ares_library_init error codes */ /* ares_library_init error codes */
#define ARES_ELOADIPHLPAPI 22 /* introduced in 1.6.1 */ #define ARES_ELOADIPHLPAPI 22 /* introduced in 1.7.0 */
#define ARES_EADDRGETNETWORKPARAMS 23 /* introduced in 1.6.1 */ #define ARES_EADDRGETNETWORKPARAMS 23 /* introduced in 1.7.0 */
/* More error codes */ /* More error codes */
#define ARES_ECANCELLED 24 /* introduced in 1.6.1 */ #define ARES_ECANCELLED 24 /* introduced in 1.7.0 */
/* Flag values */ /* Flag values */
#define ARES_FLAG_USEVC (1 << 0) #define ARES_FLAG_USEVC (1 << 0)
@@ -314,9 +314,9 @@ CARES_EXTERN void ares_destroy(ares_channel channel);
CARES_EXTERN void ares_cancel(ares_channel channel); CARES_EXTERN void ares_cancel(ares_channel channel);
void ares_set_socket_callback(ares_channel channel, CARES_EXTERN void ares_set_socket_callback(ares_channel channel,
ares_sock_create_callback callback, ares_sock_create_callback callback,
void *user_data); void *user_data);
CARES_EXTERN void ares_send(ares_channel channel, CARES_EXTERN void ares_send(ares_channel channel,
const unsigned char *qbuf, const unsigned char *qbuf,
@@ -404,10 +404,10 @@ CARES_EXTERN int ares_expand_string(const unsigned char *encoded,
long *enclen); long *enclen);
/* /*
* NOTE: before c-ares 1.6.1 we would most often use the system in6_addr * NOTE: before c-ares 1.7.0 we would most often use the system in6_addr
* struct below when ares itself was built, but many apps would use this * struct below when ares itself was built, but many apps would use this
* private version since the header checked a HAVE_* define for it. Starting * private version since the header checked a HAVE_* define for it. Starting
* with 1.6.1 we always declare and use our own to stop relying on the * with 1.7.0 we always declare and use our own to stop relying on the
* system's one. * system's one.
*/ */
struct ares_in6_addr { struct ares_in6_addr {
@@ -416,29 +416,28 @@ struct ares_in6_addr {
} _S6_un; } _S6_un;
}; };
/* struct ares_addrttl {
* TODO: the structs 'addrttl' and 'addr6ttl' really should get their names
* prefixed with ares_ to keep them in our own "name space".
*/
struct addrttl {
struct in_addr ipaddr; struct in_addr ipaddr;
int ttl; int ttl;
}; };
struct addr6ttl {
struct ares_addr6ttl {
struct ares_in6_addr ip6addr; struct ares_in6_addr ip6addr;
int ttl; int ttl;
}; };
struct ares_srv_reply { struct ares_srv_reply {
unsigned short weight; struct ares_srv_reply *next;
unsigned short priority; char *host;
unsigned short port; unsigned short priority;
char *host; unsigned short weight;
unsigned short port;
}; };
struct ares_txt_reply { struct ares_txt_reply {
size_t length; /* length excludes null termination */ struct ares_txt_reply *next;
unsigned char *txt; unsigned char *txt;
size_t length; /* length excludes null termination */
}; };
/* /*
@@ -452,13 +451,13 @@ struct ares_txt_reply {
CARES_EXTERN int ares_parse_a_reply(const unsigned char *abuf, CARES_EXTERN int ares_parse_a_reply(const unsigned char *abuf,
int alen, int alen,
struct hostent **host, struct hostent **host,
struct addrttl *addrttls, struct ares_addrttl *addrttls,
int *naddrttls); int *naddrttls);
CARES_EXTERN int ares_parse_aaaa_reply(const unsigned char *abuf, CARES_EXTERN int ares_parse_aaaa_reply(const unsigned char *abuf,
int alen, int alen,
struct hostent **host, struct hostent **host,
struct addr6ttl *addrttls, struct ares_addr6ttl *addrttls,
int *naddrttls); int *naddrttls);
CARES_EXTERN int ares_parse_ptr_reply(const unsigned char *abuf, CARES_EXTERN int ares_parse_ptr_reply(const unsigned char *abuf,
@@ -474,18 +473,18 @@ CARES_EXTERN int ares_parse_ns_reply(const unsigned char *abuf,
CARES_EXTERN int ares_parse_srv_reply(const unsigned char* abuf, CARES_EXTERN int ares_parse_srv_reply(const unsigned char* abuf,
int alen, int alen,
struct ares_srv_reply** srv_out, struct ares_srv_reply** srv_out);
int *nsrvreply);
CARES_EXTERN int ares_parse_txt_reply(const unsigned char* abuf, CARES_EXTERN int ares_parse_txt_reply(const unsigned char* abuf,
int alen, int alen,
struct ares_txt_reply** txt_out, struct ares_txt_reply** txt_out);
int *nsrvreply);
CARES_EXTERN void ares_free_string(void *str); CARES_EXTERN void ares_free_string(void *str);
CARES_EXTERN void ares_free_hostent(struct hostent *host); CARES_EXTERN void ares_free_hostent(struct hostent *host);
CARES_EXTERN void ares_free_data(void *dataptr);
CARES_EXTERN const char *ares_strerror(int code); CARES_EXTERN const char *ares_strerror(int code);
#ifdef __cplusplus #ifdef __cplusplus

View File

@@ -44,7 +44,7 @@ int ares__read_line(FILE *fp, char **buf, size_t *bufsize)
*bufsize = 128; *bufsize = 128;
} }
while (1) for (;;)
{ {
if (!fgets(*buf + offset, (int)(*bufsize - offset), fp)) if (!fgets(*buf + offset, (int)(*bufsize - offset), fp))
return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF; return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;

View File

@@ -21,7 +21,7 @@ ares_cancel \- Cancel a resolve
.nf .nf
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B int ares_cancel(ares_channel \fIchannel\fP) .B void ares_cancel(ares_channel \fIchannel\fP)
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The \fBares_cancel\fP function cancels all lookups/requests made on the the The \fBares_cancel\fP function cancels all lookups/requests made on the the

143
ares/ares_data.c Normal file
View File

@@ -0,0 +1,143 @@
/* $Id$ */
/* Copyright (C) 2009 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.
*/
#include "ares_setup.h"
#include <stddef.h>
#include "ares.h"
#include "ares_data.h"
#include "ares_private.h"
/*
** ares_free_data() - c-ares external API function.
**
** This function must be used by the application to free data memory that
** has been internally allocated by some c-ares function and for which a
** pointer has already been returned to the calling application. The list
** of c-ares functions returning pointers that must be free'ed using this
** function is:
**
** ares_parse_srv_reply()
** ares_parse_txt_reply()
*/
void ares_free_data(void *dataptr)
{
struct ares_data *ptr;
if (!dataptr)
return;
ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
if (ptr->mark != ARES_DATATYPE_MARK)
return;
switch (ptr->type)
{
case ARES_DATATYPE_SRV_REPLY:
if (ptr->data.srv_reply.next)
ares_free_data(ptr->data.srv_reply.next);
if (ptr->data.srv_reply.host)
free(ptr->data.srv_reply.host);
break;
case ARES_DATATYPE_TXT_REPLY:
if (ptr->data.txt_reply.next)
ares_free_data(ptr->data.txt_reply.next);
if (ptr->data.txt_reply.txt)
free(ptr->data.txt_reply.txt);
break;
default:
return;
}
free(ptr);
}
/*
** ares_malloc_data() - c-ares internal helper function.
**
** This function allocates memory for a c-ares private ares_data struct
** for the specified ares_datatype, initializes c-ares private fields
** and zero initializes those which later might be used from the public
** API. It returns an interior pointer which can be passed by c-ares
** functions to the calling application, and that must be free'ed using
** c-ares external API function ares_free_data().
*/
void *ares_malloc_data(ares_datatype type)
{
struct ares_data *ptr;
ptr = malloc(sizeof(struct ares_data));
if (!ptr)
return NULL;
switch (type)
{
case ARES_DATATYPE_SRV_REPLY:
ptr->data.srv_reply.next = NULL;
ptr->data.srv_reply.host = NULL;
ptr->data.srv_reply.priority = 0;
ptr->data.srv_reply.weight = 0;
ptr->data.srv_reply.port = 0;
break;
case ARES_DATATYPE_TXT_REPLY:
ptr->data.txt_reply.next = NULL;
ptr->data.txt_reply.txt = NULL;
ptr->data.txt_reply.length = 0;
break;
default:
free(ptr);
return NULL;
}
ptr->mark = ARES_DATATYPE_MARK;
ptr->type = type;
return &ptr->data;
}
/*
** ares_get_datatype() - c-ares internal helper function.
**
** This function returns the ares_datatype of the data stored in a
** private ares_data struct when given the public API pointer.
*/
ares_datatype ares_get_datatype(void * dataptr)
{
struct ares_data *ptr;
ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
if (ptr->mark == ARES_DATATYPE_MARK)
return ptr->type;
return ARES_DATATYPE_UNKNOWN;
}

62
ares/ares_data.h Normal file
View File

@@ -0,0 +1,62 @@
/* $Id$ */
/* Copyright (C) 2009 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.
*/
typedef enum {
ARES_DATATYPE_UNKNOWN = 1, /* unknown data type - introduced in 1.7.0 */
ARES_DATATYPE_SRV_REPLY, /* struct ares_srv_reply - introduced in 1.7.0 */
ARES_DATATYPE_TXT_REPLY, /* struct ares_txt_reply - introduced in 1.7.0 */
#if 0
ARES_DATATYPE_ADDR6TTL, /* struct ares_addrttl */
ARES_DATATYPE_ADDRTTL, /* struct ares_addr6ttl */
ARES_DATATYPE_HOSTENT, /* struct hostent */
ARES_DATATYPE_OPTIONS, /* struct ares_options */
#endif
ARES_DATATYPE_LAST /* not used - introduced in 1.7.0 */
} ares_datatype;
#define ARES_DATATYPE_MARK 0xbead
/*
* ares_data struct definition is internal to c-ares and shall not
* be exposed by the public API in order to allow future changes
* and extensions to it without breaking ABI. This will be used
* internally by c-ares as the container of multiple types of data
* dynamically allocated for which a reference will be returned
* to the calling application.
*
* c-ares API functions returning a pointer to c-ares internally
* allocated data will actually be returning an interior pointer
* into this ares_data struct.
*
* All this is 'invisible' to the calling application, the only
* requirement is that this kind of data must be free'ed by the
* calling application using ares_free_data() with the pointer
* it has received from a previous c-ares function call.
*/
struct ares_data {
ares_datatype type; /* Actual data type identifier. */
unsigned int mark; /* Private ares_data signature. */
union {
struct ares_txt_reply txt_reply;
struct ares_srv_reply srv_reply;
} data;
};
void *ares_malloc_data(ares_datatype type);
ares_datatype ares_get_datatype(void * dataptr);

View File

@@ -21,12 +21,12 @@ ares_dup \- Duplicate a resolver channel
.nf .nf
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B int ares_dup(ares_channel *\fIchannel\fP, ares_channel \fIsource\fP) .B int ares_dup(ares_channel *\fIdest\fP, ares_channel \fIsource\fP)
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The \fBares_dup(3)\fP function duplicates an existing communications channel The \fBares_dup(3)\fP function duplicates an existing communications channel
for name service lookups. If it returns successfully, \fBares_dup(3)\fP will for name service lookups. If it returns successfully, \fBares_dup(3)\fP will
set the variable pointed to by \fIchannel\fP to a handle used to identify the set the variable pointed to by \fIdest\fP to a handle used to identify the
name service channel. The caller should invoke \fIares_destroy(3)\fP on the name service channel. The caller should invoke \fIares_destroy(3)\fP on the
handle when the channel is no longer needed. handle when the channel is no longer needed.

View File

@@ -14,7 +14,7 @@
.\" this software for any purpose. It is provided "as is" .\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty. .\" without express or implied warranty.
.\" .\"
.TH ARES_EXPAND_NAME 3 "23 July 1998" .TH ARES_EXPAND_NAME 3 "20 Nov 2009"
.SH NAME .SH NAME
ares_expand_name \- Expand a DNS-encoded domain name ares_expand_name \- Expand a DNS-encoded domain name
.SH SYNOPSIS .SH SYNOPSIS
@@ -23,7 +23,7 @@ ares_expand_name \- Expand a DNS-encoded domain name
.PP .PP
.B int ares_expand_name(const unsigned char *\fIencoded\fP, .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) .B long *\fIenclen\fP)
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The The

View File

@@ -14,7 +14,7 @@
.\" this software for any purpose. It is provided "as is" .\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty. .\" without express or implied warranty.
.\" .\"
.TH ARES_EXPAND_NAME 3 "23 July 1998" .TH ARES_EXPAND_NAME 3 "20 Nov 2009"
.SH NAME .SH NAME
ares_expand_string \- Expand a length encoded string ares_expand_string \- Expand a length encoded string
.SH SYNOPSIS .SH SYNOPSIS
@@ -23,7 +23,7 @@ ares_expand_string \- Expand a length encoded string
.PP .PP
.B int ares_expand_string(const unsigned char *\fIencoded\fP, .B int ares_expand_string(const unsigned char *\fIencoded\fP,
.B const unsigned char *\fIabuf\fP, int \fIalen\fP, unsigned char **\fIs\fP, .B const unsigned char *\fIabuf\fP, int \fIalen\fP, unsigned char **\fIs\fP,
.B int *\fIenclen\fP) .B long *\fIenclen\fP)
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The The

60
ares/ares_free_data.3 Normal file
View File

@@ -0,0 +1,60 @@
.\" $Id$
.\"
.\" Copyright 1998 by the Massachusetts Institute of Technology.
.\" Copyright (C) 2004-2009 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_FREE_DATA 3 "23 Nov 2009"
.SH NAME
ares_free_data \- Free data allocated by several c-ares functions
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B void ares_free_data(void *\fIdataptr\fP)
.PP
.B cc file.c -lcares
.fi
.SH DESCRIPTION
.PP
The
.B ares_free_data(3)
function frees one or more data structures allocated and returned
by several c-ares functions. Specifically the data returned by the
following list of functions must be deallocated using this function.
.TP 5
.B ares_parse_srv_reply(3)
When used to free the data returned by ares_parse_srv_reply(3) this
will free the whole linked list of ares_srv_reply structures returned
by ares_parse_srv_reply(3), along with any additional storage
associated with those structures.
.TP
.B ares_parse_txt_reply(3)
When used to free the data returned by ares_parse_txt_reply(3) this
will free the whole linked list of ares_txt_reply structures returned
by ares_parse_txt_reply(3), along with any additional storage
associated with those structures.
.SH RETURN VALUE
The ares_free_data() function does not return a value.
.SH AVAILABILITY
This function was first introduced in c-ares version 1.7.0.
.SH SEE ALSO
.BR ares_parse_srv_reply(3),
.BR ares_parse_txt_reply(3)
.SH AUTHOR
Yang Tse
.PP
Copyright 1998 by the Massachusetts Institute of Technology.
.br
Copyright (C) 2004-2009 by Daniel Stenberg.

View File

@@ -18,7 +18,7 @@
#include "ares_setup.h" #include "ares_setup.h"
#include <stdlib.h> #include <stdlib.h>
#if !defined(WIN32) || defined(WATT32) #ifdef HAVE_NETDB_H
#include <netdb.h> #include <netdb.h>
#endif #endif

View File

@@ -21,7 +21,7 @@ ares_gethostbyname_file \- Lookup a name in the system's hosts file
.nf .nf
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B void ares_gethostbyname_file(ares_channel \fIchannel\fP, const char *\fIname\fP, .B int ares_gethostbyname_file(ares_channel \fIchannel\fP, const char *\fIname\fP,
.B int \fIfamily\fP, struct hostent **host) .B int \fIfamily\fP, struct hostent **host)
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION

View File

@@ -61,10 +61,6 @@
#include "inet_ntop.h" #include "inet_ntop.h"
#include "ares_private.h" #include "ares_private.h"
#ifdef WATT32
#undef WIN32
#endif
struct nameinfo_query { struct nameinfo_query {
ares_nameinfo_callback callback; ares_nameinfo_callback callback;
void *arg; void *arg;

View File

@@ -50,9 +50,9 @@
#include "ares_getopt.h" #include "ares_getopt.h"
int opterr = 1, /* if error message should be printed */ int opterr = 1, /* if error message should be printed */
optind = 1, /* index into parent argv vector */ optind = 1; /* index into parent argv vector */
optopt, /* character checked for validity */ int optopt = 0; /* character checked for validity */
optreset; /* reset getopt */ static int optreset; /* reset getopt */
char *optarg; /* argument associated with option */ char *optarg; /* argument associated with option */
#define BADCH (int)'?' #define BADCH (int)'?'

View File

@@ -33,15 +33,21 @@
int ares_getopt(int nargc, char * const nargv[], const char *ostr); int ares_getopt(int nargc, char * const nargv[], const char *ostr);
#if defined(WATT32)
#undef optarg #undef optarg
#undef optind #undef optind
#undef opterr #undef opterr
#endif #undef optopt
#undef optreset
#define optarg ares_optarg
#define optind ares_optind
#define opterr ares_opterr
#define optopt ares_optopt
#define optreset ares_optreset
extern char *optarg; extern char *optarg;
extern int optind; extern int optind;
extern int opterr; extern int opterr;
extern int optopt;
#endif /* ARES_GETOPT_H */ #endif /* ARES_GETOPT_H */

View File

@@ -22,8 +22,8 @@ ares_init, ares_init_options \- Initialize a resolver channel
.nf .nf
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B int ares_init(ares_channel *\fIchannel\fP) .B int ares_init(ares_channel *\fIchannelptr\fP)
.B int ares_init_options(ares_channel *\fIchannel\fP, .B int ares_init_options(ares_channel *\fIchannelptr\fP,
.B struct ares_options *\fIoptions\fP, int \fIoptmask\fP) .B struct ares_options *\fIoptions\fP, int \fIoptmask\fP)
.PP .PP
.B cc file.c -lcares .B cc file.c -lcares
@@ -31,7 +31,7 @@ ares_init, ares_init_options \- Initialize a resolver channel
.SH DESCRIPTION .SH DESCRIPTION
The \fBares_init\fP function initializes a communications channel for name The \fBares_init\fP function initializes a communications channel for name
service lookups. If it returns successfully, \fBares_init\fP will set the 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 variable pointed to by \fIchannelptr\fP to a handle used to identify the name
service channel. The caller should invoke service channel. The caller should invoke
.BR ares_destroy (3) .BR ares_destroy (3)
on the handle when the channel is no longer needed. on the handle when the channel is no longer needed.

View File

@@ -18,7 +18,7 @@
#include "ares_setup.h" #include "ares_setup.h"
#if defined(WIN32) && !defined(WATT32) #ifdef USE_WINSOCK
#include <iphlpapi.h> #include <iphlpapi.h>
#endif #endif
@@ -581,7 +581,7 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
if (!fi) if (!fi)
return 0; return 0;
res = (*fpGetNetworkParams) (fi, &size); res = (*ares_fpGetNetworkParams) (fi, &size);
if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS)) if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS))
goto quit; goto quit;
@@ -590,7 +590,7 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
goto quit; goto quit;
fi = newfi; fi = newfi;
res = (*fpGetNetworkParams) (fi, &size); res = (*ares_fpGetNetworkParams) (fi, &size);
if (res != ERROR_SUCCESS) if (res != ERROR_SUCCESS)
goto quit; goto quit;
@@ -797,7 +797,7 @@ DhcpNameServer
return ARES_SUCCESS; /* use localhost DNS server */ return ARES_SUCCESS; /* use localhost DNS server */
nservers = i; nservers = i;
servers = calloc(sizeof(*servers), i); servers = calloc(i, sizeof(struct server_state));
if (!servers) if (!servers)
return ARES_ENOMEM; return ARES_ENOMEM;
@@ -1108,11 +1108,19 @@ static int config_domain(ares_channel channel, char *str)
return set_search(channel, str); return set_search(channel, str);
} }
#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 910) && \
defined(__OPTIMIZE__) && defined(__unix__) && defined(__i386__)
/* workaround icc 9.1 optimizer issue */
# define vqualifier volatile
#else
# define vqualifier
#endif
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) const char *bindch, const char *filech)
{ {
char lookups[3], *l; char lookups[3], *l;
const char *p; const char *vqualifier p;
/* Set the lookup order. Only the first letter of each work /* Set the lookup order. Only the first letter of each work
* is relevant, and it has to be "b" for DNS or "f" for the * is relevant, and it has to be "b" for DNS or "f" for the
@@ -1503,9 +1511,9 @@ static void randomize_key(unsigned char* key,int key_data_len)
int counter=0; int counter=0;
#ifdef WIN32 #ifdef WIN32
BOOLEAN res; BOOLEAN res;
if (fpSystemFunction036) if (ares_fpSystemFunction036)
{ {
res = (*fpSystemFunction036) (key, key_data_len); res = (*ares_fpSystemFunction036) (key, key_data_len);
if (res) if (res)
randomized = 1; randomized = 1;
} }

View File

@@ -53,16 +53,16 @@ conflict with any other thread that is already using these other libraries.
Win32/64 application DLLs shall not call \fIares_library_cleanup(3)\fP from Win32/64 application DLLs shall not call \fIares_library_cleanup(3)\fP from
the DllMain function. Doing so will produce deadlocks and other problems. the DllMain function. Doing so will produce deadlocks and other problems.
.SH AVAILABILITY .SH AVAILABILITY
This function was first introduced in c-ares version 1.6.1 along with the This function was first introduced in c-ares version 1.7.0 along with the
definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_CLEANUP\fP as an definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_CLEANUP\fP as an
indication of the availability of this function. indication of the availability of this function.
.PP .PP
Since the introduction of this function, it is absolutely mandatory to call it Since the introduction of this function, it is absolutely mandatory to call it
for any Win32/64 program using c-ares. for any Win32/64 program using c-ares.
.PP .PP
Non-Win32/64 systems can still use c-ares version 1.6.1 without calling Non-Win32/64 systems can still use c-ares version 1.7.0 without calling
\fIares_library_cleanup(3)\fP due to the fact that it is nearly a do-nothing \fIares_library_cleanup(3)\fP due to the fact that \fIcurrently\fP it is nearly
function on non-Win32/64 platforms. a do-nothing function on non-Win32/64 platforms.
.SH SEE ALSO .SH SEE ALSO
.BR ares_library_init(3), .BR ares_library_init(3),
.BR ares_cancel(3) .BR ares_cancel(3)

View File

@@ -76,16 +76,16 @@ non-zero error number will be returned to indicate the error. Except for
\fIares_strerror(3)\fP, you shall not call any other c-ares function upon \fIares_strerror(3)\fP, you shall not call any other c-ares function upon
\fIares_library_init(3)\fP failure. \fIares_library_init(3)\fP failure.
.SH AVAILABILITY .SH AVAILABILITY
This function was first introduced in c-ares version 1.6.1 along with the This function was first introduced in c-ares version 1.7.0 along with the
definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_INIT\fP as an definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_INIT\fP as an
indication of the availability of this function. indication of the availability of this function.
.PP .PP
Since the introduction of this function it is absolutely mandatory to Since the introduction of this function it is absolutely mandatory to
call it for any Win32/64 program using c-ares. call it for any Win32/64 program using c-ares.
.PP .PP
Non-Win32/64 systems can still use c-ares version 1.6.1 without calling Non-Win32/64 systems can still use c-ares version 1.7.0 without calling
\fIares_library_init(3)\fP due to the fact that it is nearly a do-nothing \fIares_library_init(3)\fP due to the fact that \fIcurrently\fP it is nearly
function on non-Win32/64 platforms at this point. a do-nothing function on non-Win32/64 platforms at this point.
.SH SEE ALSO .SH SEE ALSO
.BR ares_library_cleanup(3), .BR ares_library_cleanup(3),
.BR ares_strerror(3) .BR ares_strerror(3)

View File

@@ -24,9 +24,9 @@
/* library-private global and unique instance vars */ /* library-private global and unique instance vars */
#ifdef WIN32 #ifdef USE_WINSOCK
fpGetNetworkParams_t fpGetNetworkParams = ZERO_NULL; fpGetNetworkParams_t ares_fpGetNetworkParams = ZERO_NULL;
fpSystemFunction036_t fpSystemFunction036 = ZERO_NULL; fpSystemFunction036_t ares_fpSystemFunction036 = ZERO_NULL;
#endif #endif
/* library-private global vars with source visibility restricted to this file */ /* library-private global vars with source visibility restricted to this file */
@@ -34,7 +34,7 @@ fpSystemFunction036_t fpSystemFunction036 = ZERO_NULL;
static unsigned int ares_initialized; static unsigned int ares_initialized;
static int ares_init_flags; static int ares_init_flags;
#ifdef WIN32 #ifdef USE_WINSOCK
static HMODULE hnd_iphlpapi; static HMODULE hnd_iphlpapi;
static HMODULE hnd_advapi32; static HMODULE hnd_advapi32;
#endif #endif
@@ -42,16 +42,16 @@ static HMODULE hnd_advapi32;
static int ares_win32_init(void) static int ares_win32_init(void)
{ {
#ifdef WIN32 #ifdef USE_WINSOCK
hnd_iphlpapi = 0; hnd_iphlpapi = 0;
hnd_iphlpapi = LoadLibrary("iphlpapi.dll"); hnd_iphlpapi = LoadLibrary("iphlpapi.dll");
if (!hnd_iphlpapi) if (!hnd_iphlpapi)
return ARES_ELOADIPHLPAPI; return ARES_ELOADIPHLPAPI;
fpGetNetworkParams = (fpGetNetworkParams_t) ares_fpGetNetworkParams = (fpGetNetworkParams_t)
GetProcAddress(hnd_iphlpapi, "GetNetworkParams"); GetProcAddress(hnd_iphlpapi, "GetNetworkParams");
if (!fpGetNetworkParams) if (!ares_fpGetNetworkParams)
{ {
FreeLibrary(hnd_iphlpapi); FreeLibrary(hnd_iphlpapi);
return ARES_EADDRGETNETWORKPARAMS; return ARES_EADDRGETNETWORKPARAMS;
@@ -67,7 +67,7 @@ static int ares_win32_init(void)
hnd_advapi32 = LoadLibrary("advapi32.dll"); hnd_advapi32 = LoadLibrary("advapi32.dll");
if (hnd_advapi32) if (hnd_advapi32)
{ {
fpSystemFunction036 = (fpSystemFunction036_t) ares_fpSystemFunction036 = (fpSystemFunction036_t)
GetProcAddress(hnd_advapi32, "SystemFunction036"); GetProcAddress(hnd_advapi32, "SystemFunction036");
} }
@@ -78,7 +78,7 @@ static int ares_win32_init(void)
static void ares_win32_cleanup(void) static void ares_win32_cleanup(void)
{ {
#ifdef WIN32 #ifdef USE_WINSOCK
if (hnd_advapi32) if (hnd_advapi32)
FreeLibrary(hnd_advapi32); FreeLibrary(hnd_advapi32);
if (hnd_iphlpapi) if (hnd_iphlpapi)
@@ -123,7 +123,7 @@ void ares_library_cleanup(void)
int ares_library_initialized(void) int ares_library_initialized(void)
{ {
#ifdef WIN32 #ifdef USE_WINSOCK
if (!ares_initialized) if (!ares_initialized)
return ARES_ENOTINITIALIZED; return ARES_ENOTINITIALIZED;
#endif #endif

View File

@@ -21,7 +21,7 @@
#include "ares_setup.h" #include "ares_setup.h"
#ifdef WIN32 #ifdef USE_WINSOCK
#include <iphlpapi.h> #include <iphlpapi.h>
@@ -31,10 +31,10 @@ typedef BOOLEAN (APIENTRY *fpSystemFunction036_t) (void*, ULONG);
/* Forward-declaration of variables defined in ares_library_init.c */ /* Forward-declaration of variables defined in ares_library_init.c */
/* that are global and unique instances for whole c-ares library. */ /* that are global and unique instances for whole c-ares library. */
extern fpGetNetworkParams_t fpGetNetworkParams; extern fpGetNetworkParams_t ares_fpGetNetworkParams;
extern fpSystemFunction036_t fpSystemFunction036; extern fpSystemFunction036_t ares_fpSystemFunction036;
#endif /* WIN32 */ #endif /* USE_WINSOCK */
#endif /* HEADER_CARES_LIBRARY_INIT_H */ #endif /* HEADER_CARES_LIBRARY_INIT_H */

View File

@@ -14,7 +14,7 @@
.\" this software for any purpose. It is provided "as is" .\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty. .\" without express or implied warranty.
.\" .\"
.TH ARES_MKQUERY 3 "4 January 2000" .TH ARES_MKQUERY 3 "20 Nov 2009"
.SH NAME .SH NAME
ares_mkquery \- Compose a single-question DNS query buffer ares_mkquery \- Compose a single-question DNS query buffer
.SH SYNOPSIS .SH SYNOPSIS
@@ -22,7 +22,7 @@ ares_mkquery \- Compose a single-question DNS query buffer
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B int ares_mkquery(const char *\fIname\fP, int \fIdnsclass\fP, int \fItype\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 unsigned short \fIid\fP, int \fIrd\fP, unsigned char **\fIbuf\fP,
.B int *\fIbuflen\fP) .B int *\fIbuflen\fP)
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION

View File

@@ -23,7 +23,7 @@ ares_parse_a_reply \- Parse a reply to a DNS query of type A
.PP .PP
.B int ares_parse_a_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP, .B int ares_parse_a_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
.B struct hostent **\fIhost\fP, .B struct hostent **\fIhost\fP,
.B struct addrttl *\fIaddrttls\fB, int *\fInaddrttls\fB); .B struct ares_addrttl *\fIaddrttls\fB, int *\fInaddrttls\fB);
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The The
@@ -31,7 +31,7 @@ The
function parses the response to a query of type A into a function parses the response to a query of type A into a
.BR "struct hostent" .BR "struct hostent"
and/or an array of and/or an array of
.BR "struct addrttls" . .BR "struct ares_addrttls" .
The parameters The parameters
.I abuf .I abuf
and and
@@ -51,7 +51,7 @@ and
.IR naddrttls .IR naddrttls
are both nonnull, are both nonnull,
then up to *naddrttls then up to *naddrttls
.BR "struct addrttl" .BR "struct ares_addrttl"
records are stored in the array pointed to by addrttls, records are stored in the array pointed to by addrttls,
and then *naddrttls is set to the number of records so stored. and then *naddrttls is set to the number of records so stored.
Note that the memory for these records is supplied by the caller. Note that the memory for these records is supplied by the caller.

View File

@@ -54,7 +54,7 @@
int ares_parse_a_reply(const unsigned char *abuf, int alen, int ares_parse_a_reply(const unsigned char *abuf, int alen,
struct hostent **host, struct hostent **host,
struct addrttl *addrttls, int *naddrttls) struct ares_addrttl *addrttls, int *naddrttls)
{ {
unsigned int qdcount, ancount; unsigned int qdcount, ancount;
int status, i, rr_type, rr_class, rr_len, rr_ttl, naddrs; int status, i, rr_type, rr_class, rr_len, rr_ttl, naddrs;
@@ -157,7 +157,7 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
} }
if (naddrs < max_addr_ttls) if (naddrs < max_addr_ttls)
{ {
struct addrttl * const at = &addrttls[naddrs]; struct ares_addrttl * const at = &addrttls[naddrs];
if (aptr + sizeof(struct in_addr) > abuf + alen) if (aptr + sizeof(struct in_addr) > abuf + alen)
{ {
status = ARES_EBADRESP; status = ARES_EBADRESP;

View File

@@ -14,7 +14,7 @@
.\" this software for any purpose. It is provided "as is" .\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty. .\" without express or implied warranty.
.\" .\"
.TH ARES_PARSE_AAAA_REPLY 3 "10 March 2005" .TH ARES_PARSE_AAAA_REPLY 3 "20 Nov 2009"
.SH NAME .SH NAME
ares_parse_aaaa_reply \- Parse a reply to a DNS query of type AAAA ares_parse_aaaa_reply \- Parse a reply to a DNS query of type AAAA
.SH SYNOPSIS .SH SYNOPSIS
@@ -23,7 +23,7 @@ ares_parse_aaaa_reply \- Parse a reply to a DNS query of type AAAA
.PP .PP
.B int ares_parse_aaaa_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP, .B int ares_parse_aaaa_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
.B struct hostent **\fIhost\fP, .B struct hostent **\fIhost\fP,
.B struct addrttl *\fIaddrttls\fB, int *\fInaddrttls\fB); .B struct ares_addr6ttl *\fIaddrttls\fB, int *\fInaddrttls\fB);
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The The
@@ -31,7 +31,7 @@ The
function parses the response to a query of type AAAA into a function parses the response to a query of type AAAA into a
.BR "struct hostent" .BR "struct hostent"
and/or an array of and/or an array of
.BR "struct addrttls" . .BR "struct ares_addr6ttl" .
The parameters The parameters
.I abuf .I abuf
and and
@@ -51,7 +51,7 @@ and
.IR naddrttls .IR naddrttls
are both nonnull, are both nonnull,
then up to *naddrttls then up to *naddrttls
.BR "struct addr6ttl" .BR "struct ares_addr6ttl"
records are stored in the array pointed to by addrttls, records are stored in the array pointed to by addrttls,
and then *naddrttls is set to the number of records so stored. and then *naddrttls is set to the number of records so stored.
Note that the memory for these records is supplied by the caller. Note that the memory for these records is supplied by the caller.

View File

@@ -55,7 +55,7 @@
#include "ares_private.h" #include "ares_private.h"
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
struct hostent **host, struct addr6ttl *addrttls, struct hostent **host, struct ares_addr6ttl *addrttls,
int *naddrttls) int *naddrttls)
{ {
unsigned int qdcount, ancount; unsigned int qdcount, ancount;
@@ -157,7 +157,7 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
} }
if (naddrs < max_addr_ttls) if (naddrs < max_addr_ttls)
{ {
struct addr6ttl * const at = &addrttls[naddrs]; struct ares_addr6ttl * const at = &addrttls[naddrs];
if (aptr + sizeof(struct in6_addr) > abuf + alen) if (aptr + sizeof(struct in6_addr) > abuf + alen)
{ {
status = ARES_EBADRESP; status = ARES_EBADRESP;

View File

@@ -21,12 +21,13 @@ ares_parse_srv_reply \- Parse a reply to a DNS query of type SRV
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B int ares_parse_srv_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP, .B int ares_parse_srv_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP,
.B struct ares_srv_reply** \fIsrv_out\fP, int *\fInsrvreply\fP); .B struct ares_srv_reply** \fIsrv_out\fP);
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The The
.B ares_parse_srv_reply .B ares_parse_srv_reply
function parses the response to a query of type SRV into a function parses the response to a query of type SRV into a
linked list of
.I struct ares_srv_reply .I struct ares_srv_reply
The parameters The parameters
.I abuf .I abuf
@@ -35,11 +36,10 @@ and
give the contents of the response. The result is stored in allocated give the contents of the response. The result is stored in allocated
memory and a pointer to it stored into the variable pointed to by memory and a pointer to it stored into the variable pointed to by
.IR srv_out . .IR srv_out .
The number of responses is stored into the variable pointed to by
.IR nsrvreply .
It is the caller's responsibility to free the resulting It is the caller's responsibility to free the resulting
.IR srv_out .IR srv_out
structure when it is no longer needed. structure when it is no longer needed using the function
.B ares_free_data
.PP .PP
The structure The structure
.I ares_srv_reply .I ares_srv_reply
@@ -48,6 +48,7 @@ contains the following fields:
.in +4n .in +4n
.nf .nf
struct ares_srv_reply { struct ares_srv_reply {
struct ares_srv_reply *next;
unsigned short weight; unsigned short weight;
unsigned short priority; unsigned short priority;
unsigned short port; unsigned short port;
@@ -71,7 +72,10 @@ The response did not contain an answer to the query.
.TP 15 .TP 15
.B ARES_ENOMEM .B ARES_ENOMEM
Memory was exhausted. Memory was exhausted.
.SH AVAILABILITY
This function was first introduced in c-ares version 1.7.0.
.SH SEE ALSO .SH SEE ALSO
.BR ares_query (3) .BR ares_query (3)
.BR ares_free_data (3)
.SH AUTHOR .SH AUTHOR
Written by Jakub Hrozek <jhrozek@redhat.com>, on behalf of Red Hat, Inc http://www.redhat.com Written by Jakub Hrozek <jhrozek@redhat.com>, on behalf of Red Hat, Inc http://www.redhat.com

View File

@@ -1,6 +1,7 @@
/* Id$ */ /* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology. /* Copyright 1998 by the Massachusetts Institute of Technology.
* Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com>
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without * software and its documentation for any purpose and without
@@ -15,11 +16,6 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
/*
* ares_parse_srv_reply created by Jakub Hrozek <jhrozek@redhat.com>
* on behalf of Red Hat - http://www.redhat.com
*/
#include "ares_setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
@@ -47,6 +43,7 @@
#include <string.h> #include <string.h>
#include "ares.h" #include "ares.h"
#include "ares_dns.h" #include "ares_dns.h"
#include "ares_data.h"
#include "ares_private.h" #include "ares_private.h"
/* AIX portability check */ /* AIX portability check */
@@ -56,21 +53,20 @@
int int
ares_parse_srv_reply (const unsigned char *abuf, int alen, ares_parse_srv_reply (const unsigned char *abuf, int alen,
struct ares_srv_reply **srv_out, int *nsrvreply) struct ares_srv_reply **srv_out)
{ {
unsigned int qdcount, ancount; unsigned int qdcount, ancount, i;
const unsigned char *aptr; const unsigned char *aptr, *vptr;
int status, i, rr_type, rr_class, rr_len; int status, rr_type, rr_class, rr_len;
long len; long len;
char *hostname = NULL, *rr_name = NULL; char *hostname = NULL, *rr_name = NULL;
struct ares_srv_reply *srv = NULL; struct ares_srv_reply *srv_head = NULL;
struct ares_srv_reply *srv_last = NULL;
struct ares_srv_reply *srv_curr;
/* Set *srv_out to NULL for all failure cases. */ /* Set *srv_out to NULL for all failure cases. */
*srv_out = NULL; *srv_out = NULL;
/* Same with *nsrvreply. */
*nsrvreply = 0;
/* Give up if abuf doesn't have room for a header. */ /* Give up if abuf doesn't have room for a header. */
if (alen < HFIXEDSZ) if (alen < HFIXEDSZ)
return ARES_EBADRESP; return ARES_EBADRESP;
@@ -96,16 +92,8 @@ ares_parse_srv_reply (const unsigned char *abuf, int alen,
} }
aptr += len + QFIXEDSZ; aptr += len + QFIXEDSZ;
/* Allocate ares_srv_reply array; ancount gives an upper bound */
srv = malloc ((ancount) * sizeof (struct ares_srv_reply));
if (!srv)
{
free (hostname);
return ARES_ENOMEM;
}
/* Examine each answer resource record (RR) in turn. */ /* Examine each answer resource record (RR) in turn. */
for (i = 0; i < (int) ancount; i++) for (i = 0; i < ancount; i++)
{ {
/* Decode the RR up to the data field. */ /* Decode the RR up to the data field. */
status = ares_expand_name (aptr, abuf, alen, &rr_name, &len); status = ares_expand_name (aptr, abuf, alen, &rr_name, &len);
@@ -134,40 +122,59 @@ ares_parse_srv_reply (const unsigned char *abuf, int alen,
break; break;
} }
srv[i].priority = ntohs (*((unsigned short *)aptr)); /* Allocate storage for this SRV answer appending it to the list */
aptr += sizeof(unsigned short); srv_curr = ares_malloc_data(ARES_DATATYPE_SRV_REPLY);
srv[i].weight = ntohs (*((unsigned short *)aptr)); if (!srv_curr)
aptr += sizeof(unsigned short); {
srv[i].port = ntohs (*((unsigned short *)aptr)); status = ARES_ENOMEM;
aptr += sizeof(unsigned short); break;
}
if (srv_last)
{
srv_last->next = srv_curr;
}
else
{
srv_head = srv_curr;
}
srv_last = srv_curr;
status = ares_expand_name (aptr, abuf, alen, &srv[i].host, &len); vptr = aptr;
srv_curr->priority = ntohs (*((unsigned short *)vptr));
vptr += sizeof(unsigned short);
srv_curr->weight = ntohs (*((unsigned short *)vptr));
vptr += sizeof(unsigned short);
srv_curr->port = ntohs (*((unsigned short *)vptr));
vptr += sizeof(unsigned short);
status = ares_expand_name (vptr, abuf, alen, &srv_curr->host, &len);
if (status != ARES_SUCCESS) if (status != ARES_SUCCESS)
break; break;
/* Move on to the next record */
aptr += len;
/* Don't lose memory in the next iteration */
free (rr_name);
rr_name = NULL;
} }
/* Don't lose memory in the next iteration */
free (rr_name);
rr_name = NULL;
/* Move on to the next record */
aptr += rr_len;
} }
if (hostname)
free (hostname);
if (rr_name)
free (rr_name);
/* clean up on error */ /* clean up on error */
if (status != ARES_SUCCESS) if (status != ARES_SUCCESS)
{ {
free (srv); if (srv_head)
free (hostname); ares_free_data (srv_head);
free (rr_name);
return status; return status;
} }
/* everything looks fine, return the data */ /* everything looks fine, return the data */
*srv_out = srv; *srv_out = srv_head;
*nsrvreply = ancount;
free (hostname); return ARES_SUCCESS;
free (rr_name);
return status;
} }

View File

@@ -21,12 +21,13 @@ ares_parse_txt_reply \- Parse a reply to a DNS query of type TXT
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B int ares_parse_txt_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP, .B int ares_parse_txt_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP,
.B struct ares_txt_reply **\fItxt_out\fP, int *\fIntxtreply\fP); .B struct ares_txt_reply **\fItxt_out\fP);
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The The
.B ares_parse_txt_reply .B ares_parse_txt_reply
function parses the response to a query of type TXT into a function parses the response to a query of type TXT into a
linked list of
.I struct ares_txt_reply .I struct ares_txt_reply
The parameters The parameters
.I abuf .I abuf
@@ -35,11 +36,10 @@ and
give the contents of the response. The result is stored in allocated give the contents of the response. The result is stored in allocated
memory and a pointer to it stored into the variable pointed to by memory and a pointer to it stored into the variable pointed to by
.IR txt_out . .IR txt_out .
The number of responses is stored into the variable pointed to by
.IR ntxtreply .
It is the caller's responsibility to free the resulting It is the caller's responsibility to free the resulting
.IR txt_out .IR txt_out
structure when it is no longer needed. structure when it is no longer needed using the function
.B ares_free_data
.PP .PP
The structure The structure
.I ares_txt_reply .I ares_txt_reply
@@ -48,6 +48,7 @@ contains the following fields:
.in +4n .in +4n
.nf .nf
struct ares_txt_reply { struct ares_txt_reply {
struct ares_txt_reply *next;
unsigned int length; unsigned int length;
unsigned char *txt; unsigned char *txt;
}; };
@@ -69,8 +70,11 @@ The response did not contain an answer to the query.
.TP 15 .TP 15
.B ARES_ENOMEM .B ARES_ENOMEM
Memory was exhausted. Memory was exhausted.
.SH AVAILABILITY
This function was first introduced in c-ares version 1.7.0.
.SH SEE ALSO .SH SEE ALSO
.BR ares_query (3) .BR ares_query (3)
.BR ares_free_data (3)
.SH AUTHOR .SH AUTHOR
Written by Jakub Hrozek <jhrozek@redhat.com>, on behalf of Red Hat, Inc http://www.redhat.com Written by Jakub Hrozek <jhrozek@redhat.com>, on behalf of Red Hat, Inc http://www.redhat.com

View File

@@ -1,8 +1,7 @@
/* $Id$ */ /* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology. /* Copyright 1998 by the Massachusetts Institute of Technology.
* Copyright (C) 2009 Jakub Hrozek <jhrozek@redhat.com> * Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com>
* Copyright (C) 2009 Yang Tse <yangsita@gmail.com>
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without * software and its documentation for any purpose and without
@@ -49,11 +48,12 @@
#include "ares.h" #include "ares.h"
#include "ares_dns.h" #include "ares_dns.h"
#include "ares_data.h"
#include "ares_private.h" #include "ares_private.h"
int int
ares_parse_txt_reply (const unsigned char *abuf, int alen, ares_parse_txt_reply (const unsigned char *abuf, int alen,
struct ares_txt_reply **txt_out, int *ntxtreply) struct ares_txt_reply **txt_out)
{ {
size_t substr_len, str_len; size_t substr_len, str_len;
unsigned int qdcount, ancount, i; unsigned int qdcount, ancount, i;
@@ -62,14 +62,13 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
int status, rr_type, rr_class, rr_len; int status, rr_type, rr_class, rr_len;
long len; long len;
char *hostname = NULL, *rr_name = NULL; char *hostname = NULL, *rr_name = NULL;
struct ares_txt_reply *txt = NULL; struct ares_txt_reply *txt_head = NULL;
struct ares_txt_reply *txt_last = NULL;
struct ares_txt_reply *txt_curr;
/* Set *txt_out to NULL for all failure cases. */ /* Set *txt_out to NULL for all failure cases. */
*txt_out = NULL; *txt_out = NULL;
/* Same with *ntxtreply. */
*ntxtreply = 0;
/* Give up if abuf doesn't have room for a header. */ /* Give up if abuf doesn't have room for a header. */
if (alen < HFIXEDSZ) if (alen < HFIXEDSZ)
return ARES_EBADRESP; return ARES_EBADRESP;
@@ -95,21 +94,6 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
} }
aptr += len + QFIXEDSZ; aptr += len + QFIXEDSZ;
/* Allocate ares_txt_reply array; ancount gives an upper bound */
txt = malloc ((ancount) * sizeof (struct ares_txt_reply));
if (!txt)
{
free (hostname);
return ARES_ENOMEM;
}
/* Initialize ares_txt_reply array */
for (i = 0; i < ancount; i++)
{
txt[i].txt = NULL;
txt[i].length = 0;
}
/* Examine each answer resource record (RR) in turn. */ /* Examine each answer resource record (RR) in turn. */
for (i = 0; i < ancount; i++) for (i = 0; i < ancount; i++)
{ {
@@ -133,6 +117,23 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
/* Check if we are really looking at a TXT record */ /* Check if we are really looking at a TXT record */
if (rr_class == C_IN && rr_type == T_TXT) if (rr_class == C_IN && rr_type == T_TXT)
{ {
/* Allocate storage for this TXT answer appending it to the list */
txt_curr = ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
if (!txt_curr)
{
status = ARES_ENOMEM;
break;
}
if (txt_last)
{
txt_last->next = txt_curr;
}
else
{
txt_head = txt_curr;
}
txt_last = txt_curr;
/* /*
* There may be multiple substrings in a single TXT record. Each * There may be multiple substrings in a single TXT record. Each
* substring may be up to 255 characters in length, with a * substring may be up to 255 characters in length, with a
@@ -146,13 +147,13 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
while (strptr < (aptr + rr_len)) while (strptr < (aptr + rr_len))
{ {
substr_len = (unsigned char)*strptr; substr_len = (unsigned char)*strptr;
txt[i].length += substr_len; txt_curr->length += substr_len;
strptr += substr_len + 1; strptr += substr_len + 1;
} }
/* Including null byte */ /* Including null byte */
txt[i].txt = malloc (txt[i].length + 1); txt_curr->txt = malloc (txt_curr->length + 1);
if (txt[i].txt == NULL) if (txt_curr->txt == NULL)
{ {
status = ARES_ENOMEM; status = ARES_ENOMEM;
break; break;
@@ -165,20 +166,20 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
{ {
substr_len = (unsigned char)*strptr; substr_len = (unsigned char)*strptr;
strptr++; strptr++;
memcpy ((char *) txt[i].txt + str_len, strptr, substr_len); memcpy ((char *) txt_curr->txt + str_len, strptr, substr_len);
str_len += substr_len; str_len += substr_len;
strptr += substr_len; strptr += substr_len;
} }
/* Make sure we NULL-terminate */ /* Make sure we NULL-terminate */
txt[i].txt[txt[i].length] = '\0'; *((char *) txt_curr->txt + txt_curr->length) = '\0';
/* Move on to the next record */
aptr += rr_len;
} }
/* Don't lose memory in the next iteration */ /* Don't lose memory in the next iteration */
free (rr_name); free (rr_name);
rr_name = NULL; rr_name = NULL;
/* Move on to the next record */
aptr += rr_len;
} }
if (hostname) if (hostname)
@@ -189,17 +190,13 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
/* clean up on error */ /* clean up on error */
if (status != ARES_SUCCESS) if (status != ARES_SUCCESS)
{ {
for (i = 0; i < ancount; i++) if (txt_head)
{ ares_free_data (txt_head);
if (txt[i].txt)
free (txt[i].txt);
}
return status; return status;
} }
/* everything looks fine, return the data */ /* everything looks fine, return the data */
*txt_out = txt; *txt_out = txt_head;
*ntxtreply = ancount;
return ARES_SUCCESS; return ARES_SUCCESS;
} }

View File

@@ -30,7 +30,7 @@
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>
#if !defined(WIN32) || defined(WATT32) #ifdef HAVE_NETINET_IN_H
#include <netinet/in.h> #include <netinet/in.h>
#endif #endif

View File

@@ -1,7 +1,7 @@
/* $Id$ */ /* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology. /* Copyright 1998 by the Massachusetts Institute of Technology.
* Copyright (C) 2004-2009 by Daniel Stenberg * Copyright (C) 2004-2010 by Daniel Stenberg
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without * software and its documentation for any purpose and without
@@ -92,7 +92,7 @@ static void skip_server(ares_channel channel, struct query *query,
int whichserver); int whichserver);
static void next_server(ares_channel channel, struct query *query, static void next_server(ares_channel channel, struct query *query,
struct timeval *now); struct timeval *now);
static int configure_socket(int s, ares_channel channel); static int configure_socket(ares_socket_t s, ares_channel channel);
static int open_tcp_socket(ares_channel channel, struct server_state *server); 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 open_udp_socket(ares_channel channel, struct server_state *server);
static int same_questions(const unsigned char *qbuf, int qlen, static int same_questions(const unsigned char *qbuf, int qlen,
@@ -139,18 +139,28 @@ long ares__timeoffset(struct timeval *now,
} }
/*
* generic process function
*/
static void processfds(ares_channel channel,
fd_set *read_fds, ares_socket_t read_fd,
fd_set *write_fds, ares_socket_t write_fd)
{
struct timeval now = ares__tvnow();
write_tcp_data(channel, write_fds, write_fd, &now);
read_tcp_data(channel, read_fds, read_fd, &now);
read_udp_packets(channel, read_fds, read_fd, &now);
process_timeouts(channel, &now);
process_broken_connections(channel, &now);
}
/* Something interesting happened on the wire, or there was a timeout. /* Something interesting happened on the wire, or there was a timeout.
* See what's up and respond accordingly. * See what's up and respond accordingly.
*/ */
void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds) void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
{ {
struct timeval now = ares__tvnow(); processfds(channel, read_fds, ARES_SOCKET_BAD, write_fds, ARES_SOCKET_BAD);
write_tcp_data(channel, write_fds, ARES_SOCKET_BAD, &now);
read_tcp_data(channel, read_fds, ARES_SOCKET_BAD, &now);
read_udp_packets(channel, read_fds, ARES_SOCKET_BAD, &now);
process_timeouts(channel, &now);
process_broken_connections(channel, &now);
} }
/* Something interesting happened on the wire, or there was a timeout. /* Something interesting happened on the wire, or there was a timeout.
@@ -161,12 +171,7 @@ void ares_process_fd(ares_channel channel,
file descriptors */ file descriptors */
ares_socket_t write_fd) ares_socket_t write_fd)
{ {
struct timeval now = ares__tvnow(); processfds(channel, NULL, read_fd, NULL, write_fd);
write_tcp_data(channel, NULL, write_fd, &now);
read_tcp_data(channel, NULL, read_fd, &now);
read_udp_packets(channel, NULL, read_fd, &now);
process_timeouts(channel, &now);
} }
@@ -174,7 +179,8 @@ void ares_process_fd(ares_channel channel,
* otherwise. This is mostly for HP-UX, which could return EAGAIN or * otherwise. This is mostly for HP-UX, which could return EAGAIN or
* EWOULDBLOCK. See this man page * EWOULDBLOCK. See this man page
* *
* http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html?manpage=/usr/share/man/man2.Z/send.2 * http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html?
* manpage=/usr/share/man/man2.Z/send.2
*/ */
static int try_again(int errnum) static int try_again(int errnum)
{ {
@@ -732,7 +738,7 @@ void ares__send_query(ares_channel channel, struct query *query,
return; return;
} }
} }
sendreq = calloc(sizeof(struct send_request), 1); sendreq = calloc(1, sizeof(struct send_request));
if (!sendreq) if (!sendreq)
{ {
end_query(channel, query, ARES_ENOMEM, NULL, 0); end_query(channel, query, ARES_ENOMEM, NULL, 0);
@@ -802,8 +808,9 @@ void ares__send_query(ares_channel channel, struct query *query,
} }
/* /*
* setsocknonblock sets the given socket to either blocking or non-blocking mode * setsocknonblock sets the given socket to either blocking or non-blocking
* based on the 'nonblock' boolean argument. This function is highly portable. * mode based on the 'nonblock' boolean argument. This function is highly
* portable.
*/ */
static int setsocknonblock(ares_socket_t sockfd, /* operate on this */ static int setsocknonblock(ares_socket_t sockfd, /* operate on this */
int nonblock /* TRUE or FALSE */) int nonblock /* TRUE or FALSE */)
@@ -856,7 +863,7 @@ static int setsocknonblock(ares_socket_t sockfd, /* operate on this */
#endif #endif
} }
static int configure_socket(int s, ares_channel channel) static int configure_socket(ares_socket_t s, ares_channel channel)
{ {
setsocknonblock(s, TRUE); setsocknonblock(s, TRUE);
@@ -902,10 +909,10 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
#ifdef TCP_NODELAY #ifdef TCP_NODELAY
/* /*
* Disable the Nagle algorithm (only relevant for TCP sockets, and thus not in * Disable the Nagle algorithm (only relevant for TCP sockets, and thus not
* configure_socket). In general, in DNS lookups we're pretty much interested * in configure_socket). In general, in DNS lookups we're pretty much
* in firing off a single request and then waiting for a reply, so batching * interested in firing off a single request and then waiting for a reply,
* isn't very interesting in general. * so batching isn't very interesting in general.
*/ */
opt = 1; opt = 1;
if (setsockopt(s, IPPROTO_TCP, TCP_NODELAY, if (setsockopt(s, IPPROTO_TCP, TCP_NODELAY,

View File

@@ -21,7 +21,7 @@ ares_save_options \- Save configuration values obtained from initialized ares_ch
.nf .nf
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B void ares_save_options(ares_channel \fIchannel\fP, struct ares_options *\fIoptions\fP, int *\fIoptmask\fP) .B int ares_save_options(ares_channel \fIchannel\fP, struct ares_options *\fIoptions\fP, int *\fIoptmask\fP)
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The \fBares_save_options(3)\fP function saves the channel data identified by The \fBares_save_options(3)\fP function saves the channel data identified by
@@ -36,6 +36,20 @@ The resultant options and optmask are then able to be
passed directly to ares_init_options. When the options passed directly to ares_init_options. When the options
are no longer needed, ares_destroy_options should be called are no longer needed, ares_destroy_options should be called
to free any associated memory. to free any associated memory.
.SH RETURN VALUES
.B ares_save_options(3)
can return any of the following values:
.TP 15
.B ARES_SUCCESS
The channel data was successfuly stored
.TP 15
.B ARES_ENOMEM
The memory was exhausted
.TP 15
.B ARES_ENODATA
The channel data identified by
.IR channel
were invalid.
.SH NOTE .SH NOTE
Since c-ares 1.6.0 the ares_options struct has been "locked" meaning that it Since c-ares 1.6.0 the ares_options struct has been "locked" meaning that it
won't be extended to cover new funtions. This function will remain won't be extended to cover new funtions. This function will remain

View File

@@ -1,15 +1,20 @@
.\" $Id$ .\" $Id$
.\" .\"
.TH ARES_SET_SOCKET_CALLBACK 3 "2 Dec 2008" .TH ARES_SET_SOCKET_CALLBACK 3 "20 Nov 2009"
.SH NAME .SH NAME
ares_set_socket_callback \- Set a socket creation callback ares_set_socket_callback \- Set a socket creation callback
.SH SYNOPSIS .SH SYNOPSIS
.nf .nf
int ares_set_socket_callback(ares_channel \fIchannel\fP, .B #include <ares.h>
.PP
.B void ares_set_socket_callback(ares_channel \fIchannel\fP,
ares_sock_create_callback \fIcallback\fP, ares_sock_create_callback \fIcallback\fP,
void *\fIuserdata\fP) void *\fIuserdata\fP)
.PP
.B cc file.c -lcares
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
.PP
This function sets a \fIcallback\fP in the given ares channel handle. This This function sets a \fIcallback\fP in the given ares channel handle. This
callback function will be invoked after the socket has been created, and callback function will be invoked after the socket has been created, and
connected to the remote server. The callback must return ARES_SUCCESS if connected to the remote server. The callback must return ARES_SUCCESS if

View File

@@ -48,6 +48,17 @@
/* system header files in our config files, avoid this at any cost. */ /* system header files in our config files, avoid this at any cost. */
/* ================================================================ */ /* ================================================================ */
/*
* AIX 4.3 and newer needs _THREAD_SAFE defined to build
* proper reentrant code. Others may also need it.
*/
#ifdef NEED_THREAD_SAFE
# ifndef _THREAD_SAFE
# define _THREAD_SAFE
# endif
#endif
/* /*
* Tru64 needs _REENTRANT set for a few function prototypes and * Tru64 needs _REENTRANT set for a few function prototypes and
* things to appear in the system header files. Unixware needs it * things to appear in the system header files. Unixware needs it

View File

@@ -22,7 +22,7 @@ ares_fds \- Get file descriptors to select on for name service
.B #include <ares.h> .B #include <ares.h>
.PP .PP
.B struct timeval *ares_timeout(ares_channel \fIchannel\fP, .B struct timeval *ares_timeout(ares_channel \fIchannel\fP,
.B struct timeval *\fImaxtv\fP, struct timeval *\fItvbuf\fP) .B struct timeval *\fImaxtv\fP, struct timeval *\fItv\fP)
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
The The
@@ -33,13 +33,13 @@ invoking \fIares_process(3)\fP to process timeouts. The parameter
specifies a existing maximum timeout, or specifies a existing maximum timeout, or
.B NULL .B NULL
if the caller does not wish to apply a maximum timeout. The parameter if the caller does not wish to apply a maximum timeout. The parameter
.I tvbuf .I tv
must point to a writable buffer of type must point to a writable buffer of type
.BR "struct timeval" . .BR "struct timeval" .
It is valid for It is valid for
.I maxtv .I maxtv
and and
.I tvbuf .I tv
to have the same value. to have the same value.
.PP .PP
If no queries have timeouts pending sooner than the given maximum If no queries have timeouts pending sooner than the given maximum
@@ -50,9 +50,9 @@ returns the value of
otherwise otherwise
.B ares_timeout .B ares_timeout
stores the appropriate timeout value into the buffer pointed to by stores the appropriate timeout value into the buffer pointed to by
.I tvbuf .I tv
and returns the value of and returns the value of
.IR tvbuf . .IR tv .
.SH SEE ALSO .SH SEE ALSO
.BR ares_fds (3), .BR ares_fds (3),
.BR ares_process (3) .BR ares_process (3)

View File

@@ -4,14 +4,14 @@
#define ARES__VERSION_H #define ARES__VERSION_H
#define ARES_VERSION_MAJOR 1 #define ARES_VERSION_MAJOR 1
#define ARES_VERSION_MINOR 6 #define ARES_VERSION_MINOR 7
#define ARES_VERSION_PATCH 1 #define ARES_VERSION_PATCH 1
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\ #define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
(ARES_VERSION_MINOR<<8)|\ (ARES_VERSION_MINOR<<8)|\
(ARES_VERSION_PATCH)) (ARES_VERSION_PATCH))
#define ARES_VERSION_STR "1.6.1-CVS" #define ARES_VERSION_STR "1.7.1-CVS"
#if (ARES_VERSION >= 0x010601) #if (ARES_VERSION >= 0x010700)
# define CARES_HAVE_ARES_LIBRARY_INIT 1 # define CARES_HAVE_ARES_LIBRARY_INIT 1
# define CARES_HAVE_ARES_LIBRARY_CLEANUP 1 # define CARES_HAVE_ARES_LIBRARY_CLEANUP 1
#else #else

View File

@@ -1,7 +1,5 @@
#!/bin/sh #!/bin/sh
# The logic for finding the right libtoolize is taken from libcurl's buildconf
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# findtool works as 'which' but we use a different name to make it more # findtool works as 'which' but we use a different name to make it more
# obvious we aren't using 'which'! ;-) # obvious we aren't using 'which'! ;-)
@@ -22,6 +20,37 @@ findtool(){
IFS=$old_IFS IFS=$old_IFS
} }
#--------------------------------------------------------------------------
# removethis() removes all files and subdirectories with the given name,
# inside and below the current subdirectory at invocation time.
#
removethis(){
if test "$#" = "1"; then
find . -depth -name $1 -print > buildconf.tmp.$$
while read fdname
do
if test -f "$fdname"; then
rm -f "$fdname"
elif test -d "$fdname"; then
rm -f -r "$fdname"
fi
done < buildconf.tmp.$$
rm -f buildconf.tmp.$$
fi
}
#--------------------------------------------------------------------------
# Ensure that buildconf runs from the subdirectory where configure.ac lives
#
if test ! -f configure.ac ||
test ! -f ares_init.c ||
test ! -f m4/cares-functions.m4; then
echo "Can not run buildconf from outside of c-ares source subdirectory!"
echo "Change to the subdirectory where buildconf is found, and try again."
exit 1
fi
#--------------------------------------------------------------------------
# this approach that tries 'glibtool' first is some kind of work-around for # 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 # some BSD-systems I believe that use to provide the GNU libtool named
# glibtool, with 'libtool' being something completely different. # glibtool, with 'libtool' being something completely different.
@@ -38,6 +67,49 @@ else
libtoolize=`findtool $LIBTOOLIZE` libtoolize=`findtool $LIBTOOLIZE`
fi fi
#--------------------------------------------------------------------------
# Remove files generated on previous buildconf/configure run.
#
for fname in .deps \
.libs \
*.la \
*.lo \
*.a \
*.o \
Makefile \
Makefile.in \
aclocal.m4 \
aclocal.m4.bak \
ares_build.h \
ares_config.h \
ares_config.h.in \
autom4te.cache \
compile \
config.guess \
config.log \
config.lt \
config.status \
config.sub \
configure \
depcomp \
libcares.pc \
libtool \
libtool.m4 \
ltmain.sh \
ltoptions.m4 \
ltsugar.m4 \
ltversion.m4 \
lt~obsolete.m4 \
missing \
stamp-h1 \
stamp-h2 ; do
removethis "$fname"
done
#--------------------------------------------------------------------------
# run the correct scripts now
#
${libtoolize} --copy --automake --force ${libtoolize} --copy --automake --force
${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS ${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS
${AUTOHEADER:-autoheader} ${AUTOHEADER:-autoheader}

View File

@@ -41,10 +41,17 @@ BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "CompanyName", "The c-ares library, http://c-ares.haxx.se/\0" VALUE "CompanyName", "The c-ares library, http://c-ares.haxx.se/\0"
#if defined(DEBUGBUILD) || defined(_DEBUG)
VALUE "FileDescription", "c-ares Debug Shared Library\0"
VALUE "FileVersion", ARES_VERSION_STR "\0"
VALUE "InternalName", "c-ares\0"
VALUE "OriginalFilename", "caresd.dll\0"
#else
VALUE "FileDescription", "c-ares Shared Library\0" VALUE "FileDescription", "c-ares Shared Library\0"
VALUE "FileVersion", ARES_VERSION_STR "\0" VALUE "FileVersion", ARES_VERSION_STR "\0"
VALUE "InternalName", "c-ares\0" VALUE "InternalName", "c-ares\0"
VALUE "OriginalFilename", "cares.dll\0" VALUE "OriginalFilename", "cares.dll\0"
#endif
VALUE "ProductName", "The c-ares library\0" VALUE "ProductName", "The c-ares library\0"
VALUE "ProductVersion", ARES_VERSION_STR "\0" VALUE "ProductVersion", ARES_VERSION_STR "\0"
VALUE "LegalCopyright", "<22> 2004 - 2009 Daniel Stenberg, <daniel@haxx.se>.\0" VALUE "LegalCopyright", "<22> 2004 - 2009 Daniel Stenberg, <daniel@haxx.se>.\0"

View File

@@ -85,6 +85,9 @@
/* FUNCTIONS */ /* FUNCTIONS */
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
/* Define if you have the closesocket function. */
#define HAVE_CLOSESOCKET 1
/* Define if you have the gethostname function. */ /* Define if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1 #define HAVE_GETHOSTNAME 1

View File

@@ -60,6 +60,11 @@ if test -z "$AR" || test "$AR" = "not_found"; then
fi fi
AC_SUBST([AR]) AC_SUBST([AR])
dnl Remove non-configure distributed ares_build.h
if test -f ${srcdir}/ares_build.h; then
rm -f ${srcdir}/ares_build.h
fi
dnl Fetch c-ares version from ares_version.h dnl Fetch c-ares version from ares_version.h
VERSION=`$SED -ne 's/^#define ARES_VERSION_STR "\(.*\)"/\1/p' ${srcdir}/ares_version.h` VERSION=`$SED -ne 's/^#define ARES_VERSION_STR "\(.*\)"/\1/p' ${srcdir}/ares_version.h`
AM_INIT_AUTOMAKE([c-ares], [$VERSION]) AM_INIT_AUTOMAKE([c-ares], [$VERSION])
@@ -82,6 +87,7 @@ dnl This defines _ALL_SOURCE for AIX
CARES_CHECK_AIX_ALL_SOURCE CARES_CHECK_AIX_ALL_SOURCE
dnl Our configure and build reentrant settings dnl Our configure and build reentrant settings
CARES_CONFIGURE_THREAD_SAFE
CARES_CONFIGURE_REENTRANT CARES_CONFIGURE_REENTRANT
dnl check for how to do large files dnl check for how to do large files
@@ -108,6 +114,17 @@ case $host in
;; ;;
esac esac
AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
case $CC in
icc | */icc)
AC_MSG_RESULT([yes])
with_pic=yes
;;
*)
AC_MSG_RESULT([no])
;;
esac
dnl libtool setup dnl libtool setup
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
@@ -140,27 +157,17 @@ CARES_SET_COMPILER_DEBUG_OPTS
CARES_SET_COMPILER_OPTIMIZE_OPTS CARES_SET_COMPILER_OPTIMIZE_OPTS
CARES_SET_COMPILER_WARNING_OPTS CARES_SET_COMPILER_WARNING_OPTS
case $host in if test "$compiler_id" = "INTEL_UNIX_C"; then
# #
x86_64*linux*|amd64*freebsd*|ia64*freebsd*) if test "$compiler_num" -ge "1000"; then
# dnl icc 10.X or later
if test "$compiler_id" = "INTEL_UNIX_C"; then CFLAGS="$CFLAGS -shared-intel"
# elif test "$compiler_num" -ge "900"; then
if test "$compiler_num" -ge "900" && dnl icc 9.X specific
test "$compiler_num" -lt "1000"; then CFLAGS="$CFLAGS -i-dynamic"
dnl icc 9.X specific fi
CFLAGS="$CFLAGS -i-dynamic"
fi
#
if test "$compiler_num" -ge "1000"; then
dnl icc 10.X or later
CFLAGS="$CFLAGS -shared-intel"
fi
#
fi
;;
# #
esac fi
CARES_CHECK_COMPILER_HALT_ON_ERROR CARES_CHECK_COMPILER_HALT_ON_ERROR
CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
@@ -381,58 +388,10 @@ AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
) )
dnl Default is to try the thread-safe versions of a few functions
OPT_THREAD=on
dnl detect AIX 4.3 or later
AC_MSG_CHECKING([AIX 4.3 or later])
AC_PREPROC_IFELSE([
#if defined(_AIX) && defined(_AIX43)
printf("just fine");
#else
#error "this is not AIX 4.3 or later"
#endif
],
[ AC_MSG_RESULT([yes])
RECENTAIX=yes
OPT_THREAD=off ],
[ AC_MSG_RESULT([no]) ]
)
AC_ARG_ENABLE(thread,dnl
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
AC_HELP_STRING([--enable-thread],[look for thread-safe functions]),
[ case "$enableval" in
no)
OPT_THREAD=off
AC_MSG_WARN(c-ares will not get built using thread-safe functions)
;;
*)
;;
esac
]
)
if test X"$OPT_THREAD" = Xoff
then
AC_DEFINE(DISABLED_THREADSAFE, 1,
[Set to explicitly specify we don't want to use thread-safe functions])
fi
dnl for recent AIX versions, we skip all the thread-safe checks above since
dnl they claim a thread-safe libc using the standard API. But there are
dnl some functions still not thread-safe. Check for these!
dnl Let's hope this split URL remains working: dnl Let's hope this split URL remains working:
dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \ dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
dnl genprogc/thread_quick_ref.htm dnl genprogc/thread_quick_ref.htm
if test "x$RECENTAIX" = "xyes"; then
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
fi
dnl ********************************************************************** dnl **********************************************************************
dnl Back to "normal" configuring dnl Back to "normal" configuring
@@ -453,6 +412,7 @@ AC_CHECK_HEADERS(
sys/ioctl.h \ sys/ioctl.h \
sys/param.h \ sys/param.h \
sys/uio.h \ sys/uio.h \
assert.h \
netdb.h \ netdb.h \
netinet/in.h \ netinet/in.h \
netinet/tcp.h \ netinet/tcp.h \

View File

@@ -16,7 +16,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 61 # serial 63
dnl CARES_CHECK_COMPILER dnl CARES_CHECK_COMPILER
@@ -1340,9 +1340,20 @@ AC_DEFUN([CARES_CHECK_COMPILER_SYMBOL_HIDING], [
dnl Only icc 9.0 or later dnl Only icc 9.0 or later
if test "$compiler_num" -ge "900"; then if test "$compiler_num" -ge "900"; then
if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
tmp_EXTERN="__attribute__ ((visibility (\"default\")))" tmp_save_CFLAGS="$CFLAGS"
tmp_CFLAGS="-fvisibility=hidden" CFLAGS="$CFLAGS -fvisibility=hidden"
supports_symbol_hiding="yes" AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
# include <stdio.h>
]],[[
printf("icc fvisibility bug test");
]])
],[
tmp_EXTERN="__attribute__ ((visibility (\"default\")))"
tmp_CFLAGS="-fvisibility=hidden"
supports_symbol_hiding="yes"
])
CFLAGS="$tmp_save_CFLAGS"
fi fi
fi fi
;; ;;

View File

@@ -16,7 +16,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 32 # serial 39
dnl CARES_INCLUDES_ARPA_INET dnl CARES_INCLUDES_ARPA_INET
@@ -873,7 +873,10 @@ dnl Verify if getaddrinfo is available, prototyped, can
dnl be compiled and seems to work. If all of these are dnl be compiled and seems to work. If all of these are
dnl true, and usage has not been previously disallowed dnl true, and usage has not been previously disallowed
dnl with shell variable cares_disallow_getaddrinfo, then dnl with shell variable cares_disallow_getaddrinfo, then
dnl HAVE_GETADDRINFO will be defined. dnl HAVE_GETADDRINFO will be defined. Additionally when
dnl HAVE_GETADDRINFO gets defined this will also attempt
dnl to find out if getaddrinfo happens to be threadsafe,
dnl defining HAVE_GETADDRINFO_THREADSAFE when true.
AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
AC_REQUIRE([CARES_INCLUDES_WS2TCPIP])dnl AC_REQUIRE([CARES_INCLUDES_WS2TCPIP])dnl
@@ -887,6 +890,7 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
tst_compi_getaddrinfo="unknown" tst_compi_getaddrinfo="unknown"
tst_works_getaddrinfo="unknown" tst_works_getaddrinfo="unknown"
tst_allow_getaddrinfo="unknown" tst_allow_getaddrinfo="unknown"
tst_tsafe_getaddrinfo="unknown"
# #
AC_MSG_CHECKING([if getaddrinfo can be linked]) AC_MSG_CHECKING([if getaddrinfo can be linked])
AC_LINK_IFELSE([ AC_LINK_IFELSE([
@@ -1001,6 +1005,82 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
else else
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
ac_cv_func_getaddrinfo="no" ac_cv_func_getaddrinfo="no"
ac_cv_func_getaddrinfo_threadsafe="no"
fi
#
if test "$ac_cv_func_getaddrinfo" = "yes"; then
AC_MSG_CHECKING([if getaddrinfo is threadsafe])
case $host_os in
aix[[1234]].* | aix5.[[01]].*)
dnl aix 5.1 and older
tst_tsafe_getaddrinfo="no"
;;
aix*)
dnl aix 5.2 and newer
tst_tsafe_getaddrinfo="yes"
;;
darwin[[12345]].*)
dnl darwin 5.0 and mac os x 10.1.X and older
tst_tsafe_getaddrinfo="no"
;;
darwin*)
dnl darwin 6.0 and mac os x 10.2.X and newer
tst_tsafe_getaddrinfo="yes"
;;
freebsd[[1234]].* | freebsd5.[[1234]]*)
dnl freebsd 5.4 and older
tst_tsafe_getaddrinfo="no"
;;
freebsd*)
dnl freebsd 5.5 and newer
tst_tsafe_getaddrinfo="yes"
;;
hpux[[123456789]].* | hpux10.* | hpux11.0* | hpux11.10*)
dnl hpux 11.10 and older
tst_tsafe_getaddrinfo="no"
;;
hpux*)
dnl hpux 11.11 and newer
tst_tsafe_getaddrinfo="yes"
;;
netbsd[[123]].*)
dnl netbsd 3.X and older
tst_tsafe_getaddrinfo="no"
;;
netbsd*)
dnl netbsd 4.X and newer
tst_tsafe_getaddrinfo="yes"
;;
*bsd*)
dnl All other bsd's
tst_tsafe_getaddrinfo="no"
;;
solaris2*)
dnl solaris which have it
tst_tsafe_getaddrinfo="yes"
;;
esac
if test "$tst_tsafe_getaddrinfo" = "unknown"; then
CURL_CHECK_DEF_CC([h_errno], [
$cares_includes_ws2tcpip
$cares_includes_sys_socket
$cares_includes_netdb
], [silent])
if test "$curl_cv_have_def_h_errno" = "no"; then
tst_tsafe_getaddrinfo="no"
fi
fi
if test "$tst_tsafe_getaddrinfo" = "unknown"; then
tst_tsafe_getaddrinfo="yes"
fi
AC_MSG_RESULT([$tst_tsafe_getaddrinfo])
if test "$tst_tsafe_getaddrinfo" = "yes"; then
AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_THREADSAFE, 1,
[Define to 1 if the getaddrinfo function is threadsafe.])
ac_cv_func_getaddrinfo_threadsafe="yes"
else
ac_cv_func_getaddrinfo_threadsafe="no"
fi
fi fi
]) ])

View File

@@ -422,8 +422,8 @@ dnl must be unconditionally done for this platform.
dnl Internal macro for CARES_CONFIGURE_REENTRANT. dnl Internal macro for CARES_CONFIGURE_REENTRANT.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [ AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [
case $host in case $host_os in
*-*-solaris*) solaris*)
tmp_need_reentrant="yes" tmp_need_reentrant="yes"
;; ;;
*) *)
@@ -433,6 +433,29 @@ AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [
]) ])
dnl CARES_CHECK_NEED_THREAD_SAFE_SYSTEM
dnl -------------------------------------------------
dnl Checks if the preprocessor _THREAD_SAFE definition
dnl must be unconditionally done for this platform.
dnl Internal macro for CARES_CONFIGURE_THREAD_SAFE.
AC_DEFUN([CARES_CHECK_NEED_THREAD_SAFE_SYSTEM], [
case $host_os in
aix[[123]].* | aix4.[[012]].*)
dnl aix 4.2 and older
tmp_need_thread_safe="no"
;;
aix*)
dnl AIX 4.3 and newer
tmp_need_thread_safe="yes"
;;
*)
tmp_need_thread_safe="no"
;;
esac
])
dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl This macro ensures that configuration tests done dnl This macro ensures that configuration tests done
@@ -453,6 +476,26 @@ _EOF
]) ])
dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE
dnl -------------------------------------------------
dnl This macro ensures that configuration tests done
dnl after this will execute with preprocessor symbol
dnl _THREAD_SAFE defined. This macro also ensures that
dnl the generated config file defines NEED_THREAD_SAFE
dnl and that in turn setup.h will define _THREAD_SAFE.
dnl Internal macro for CARES_CONFIGURE_THREAD_SAFE.
AC_DEFUN([CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE], [
AC_DEFINE(NEED_THREAD_SAFE, 1,
[Define to 1 if _THREAD_SAFE preprocessor symbol must be defined.])
cat >>confdefs.h <<_EOF
#ifndef _THREAD_SAFE
# define _THREAD_SAFE
#endif
_EOF
])
dnl CARES_CONFIGURE_REENTRANT dnl CARES_CONFIGURE_REENTRANT
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl This first checks if the preprocessor _REENTRANT dnl This first checks if the preprocessor _REENTRANT
@@ -513,3 +556,56 @@ AC_DEFUN([CARES_CONFIGURE_REENTRANT], [
# #
]) ])
dnl CARES_CONFIGURE_THREAD_SAFE
dnl -------------------------------------------------
dnl This first checks if the preprocessor _THREAD_SAFE
dnl symbol is already defined. If it isn't currently
dnl defined a set of checks are performed to verify
dnl if its definition is required. Finally, if
dnl _THREAD_SAFE is already defined or needed it takes
dnl care of making adjustments necessary to ensure
dnl that it is defined equally for further configure
dnl tests and generated config file.
AC_DEFUN([CARES_CONFIGURE_THREAD_SAFE], [
AC_PREREQ([2.50])dnl
#
AC_MSG_CHECKING([if _THREAD_SAFE is already defined])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
]],[[
#ifdef _THREAD_SAFE
int dummy=1;
#else
force compilation error
#endif
]])
],[
AC_MSG_RESULT([yes])
tmp_thread_safe_initially_defined="yes"
],[
AC_MSG_RESULT([no])
tmp_thread_safe_initially_defined="no"
])
#
if test "$tmp_thread_safe_initially_defined" = "no"; then
AC_MSG_CHECKING([if _THREAD_SAFE is actually needed])
CARES_CHECK_NEED_THREAD_SAFE_SYSTEM
if test "$tmp_need_thread_safe" = "yes"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
#
AC_MSG_CHECKING([if _THREAD_SAFE is onwards defined])
if test "$tmp_thread_safe_initially_defined" = "yes" ||
test "$tmp_need_thread_safe" = "yes"; then
CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
#
])

View File

@@ -415,7 +415,7 @@ typedef int sig_atomic_t;
* Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid() * Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid()
*/ */
#if defined(VMS) && \ #if defined(__VMS) && \
defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64) defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64)
#define getpwuid __32_getpwuid #define getpwuid __32_getpwuid
#endif #endif
@@ -425,7 +425,7 @@ typedef int sig_atomic_t;
* Macro argv_item_t hides platform details to code using it. * Macro argv_item_t hides platform details to code using it.
*/ */
#ifdef VMS #ifdef __VMS
#define argv_item_t __char_ptr32 #define argv_item_t __char_ptr32
#else #else
#define argv_item_t char * #define argv_item_t char *

View File

@@ -5,6 +5,8 @@ Release
acountry.dep acountry.dep
acountry.mak acountry.mak
acountry.plg acountry.plg
dll-*
lib-*
vc6acountry.dep vc6acountry.dep
vc6acountry.mak vc6acountry.mak
vc6acountry.plg vc6acountry.plg

View File

@@ -34,97 +34,97 @@ RSC=rc.exe
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "DLL-Debug" # PROP BASE Output_Dir "dll-debug"
# PROP BASE Intermediate_Dir "DLL-Debug" # PROP BASE Intermediate_Dir "dll-debug/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "DLL-Debug" # PROP Output_Dir "dll-debug"
# PROP Intermediate_Dir "DLL-Debug" # PROP Intermediate_Dir "dll-debug/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug" # ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/acountry.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug" # ADD LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/acountry.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
!ELSEIF "$(CFG)" == "acountry - Win32 using cares DLL Release" !ELSEIF "$(CFG)" == "acountry - Win32 using cares DLL Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DLL-Release" # PROP BASE Output_Dir "dll-release"
# PROP BASE Intermediate_Dir "DLL-Release" # PROP BASE Intermediate_Dir "dll-release/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "DLL-Release" # PROP Output_Dir "dll-release"
# PROP Intermediate_Dir "DLL-Release" # PROP Intermediate_Dir "dll-release/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/acountry.exe" /libpath:"..\cares\DLL-Release" # ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/acountry.exe" /libpath:"..\cares\dll-release" /fixed:no
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/acountry.exe" /libpath:"..\cares\DLL-Release" # ADD LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/acountry.exe" /libpath:"..\cares\dll-release" /fixed:no
!ELSEIF "$(CFG)" == "acountry - Win32 using cares LIB Debug" !ELSEIF "$(CFG)" == "acountry - Win32 using cares LIB Debug"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "LIB-Debug" # PROP BASE Output_Dir "lib-debug"
# PROP BASE Intermediate_Dir "LIB-Debug" # PROP BASE Intermediate_Dir "lib-debug/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "LIB-Debug" # PROP Output_Dir "lib-debug"
# PROP Intermediate_Dir "LIB-Debug" # PROP Intermediate_Dir "lib-debug/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug" # ADD BASE LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/acountry.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug" # ADD LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/acountry.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
!ELSEIF "$(CFG)" == "acountry - Win32 using cares LIB Release" !ELSEIF "$(CFG)" == "acountry - Win32 using cares LIB Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "LIB-Release" # PROP BASE Output_Dir "lib-release"
# PROP BASE Intermediate_Dir "LIB-Release" # PROP BASE Intermediate_Dir "lib-release/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "LIB-Release" # PROP Output_Dir "lib-release"
# PROP Intermediate_Dir "LIB-Release" # PROP Intermediate_Dir "lib-release/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/acountry.exe" /libpath:"..\cares\LIB-Release" # ADD BASE LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/acountry.exe" /libpath:"..\cares\lib-release" /fixed:no
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/acountry.exe" /libpath:"..\cares\LIB-Release" # ADD LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/acountry.exe" /libpath:"..\cares\lib-release" /fixed:no
!ENDIF !ENDIF

View File

@@ -3,6 +3,8 @@ LIB-*
adig.dep adig.dep
adig.mak adig.mak
adig.plg adig.plg
dll-*
lib-*
vc6adig.dep vc6adig.dep
vc6adig.mak vc6adig.mak
vc6adig.plg vc6adig.plg

View File

@@ -34,97 +34,97 @@ RSC=rc.exe
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "DLL-Debug" # PROP BASE Output_Dir "dll-debug"
# PROP BASE Intermediate_Dir "DLL-Debug" # PROP BASE Intermediate_Dir "dll-debug/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "DLL-Debug" # PROP Output_Dir "dll-debug"
# PROP Intermediate_Dir "DLL-Debug" # PROP Intermediate_Dir "dll-debug/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug" # ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/adig.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug" # ADD LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/adig.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
!ELSEIF "$(CFG)" == "adig - Win32 using cares DLL Release" !ELSEIF "$(CFG)" == "adig - Win32 using cares DLL Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DLL-Release" # PROP BASE Output_Dir "dll-release"
# PROP BASE Intermediate_Dir "DLL-Release" # PROP BASE Intermediate_Dir "dll-release/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "DLL-Release" # PROP Output_Dir "dll-release"
# PROP Intermediate_Dir "DLL-Release" # PROP Intermediate_Dir "dll-release/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/adig.exe" /libpath:"..\cares\DLL-Release" # ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/adig.exe" /libpath:"..\cares\dll-release" /fixed:no
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/adig.exe" /libpath:"..\cares\DLL-Release" # ADD LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/adig.exe" /libpath:"..\cares\dll-release" /fixed:no
!ELSEIF "$(CFG)" == "adig - Win32 using cares LIB Debug" !ELSEIF "$(CFG)" == "adig - Win32 using cares LIB Debug"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "LIB-Debug" # PROP BASE Output_Dir "lib-debug"
# PROP BASE Intermediate_Dir "LIB-Debug" # PROP BASE Intermediate_Dir "lib-debug/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "LIB-Debug" # PROP Output_Dir "lib-debug"
# PROP Intermediate_Dir "LIB-Debug" # PROP Intermediate_Dir "lib-debug/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug" # ADD BASE LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/adig.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug" # ADD LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/adig.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
!ELSEIF "$(CFG)" == "adig - Win32 using cares LIB Release" !ELSEIF "$(CFG)" == "adig - Win32 using cares LIB Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "LIB-Release" # PROP BASE Output_Dir "lib-release"
# PROP BASE Intermediate_Dir "LIB-Release" # PROP BASE Intermediate_Dir "lib-release/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "LIB-Release" # PROP Output_Dir "lib-release"
# PROP Intermediate_Dir "LIB-Release" # PROP Intermediate_Dir "lib-release/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/adig.exe" /libpath:"..\cares\LIB-Release" # ADD BASE LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/adig.exe" /libpath:"..\cares\lib-release" /fixed:no
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/adig.exe" /libpath:"..\cares\LIB-Release" # ADD LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/adig.exe" /libpath:"..\cares\lib-release" /fixed:no
!ENDIF !ENDIF

View File

@@ -3,6 +3,8 @@ LIB-*
ahost.dep ahost.dep
ahost.mak ahost.mak
ahost.plg ahost.plg
dll-*
lib-*
vc6ahost.dep vc6ahost.dep
vc6ahost.mak vc6ahost.mak
vc6ahost.plg vc6ahost.plg

View File

@@ -34,97 +34,97 @@ RSC=rc.exe
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "DLL-Debug" # PROP BASE Output_Dir "dll-debug"
# PROP BASE Intermediate_Dir "DLL-Debug" # PROP BASE Intermediate_Dir "dll-debug/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "DLL-Debug" # PROP Output_Dir "dll-debug"
# PROP Intermediate_Dir "DLL-Debug" # PROP Intermediate_Dir "dll-debug/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug" # ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/ahost.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug" # ADD LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/ahost.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
!ELSEIF "$(CFG)" == "ahost - Win32 using cares DLL Release" !ELSEIF "$(CFG)" == "ahost - Win32 using cares DLL Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DLL-Release" # PROP BASE Output_Dir "dll-release"
# PROP BASE Intermediate_Dir "DLL-Release" # PROP BASE Intermediate_Dir "dll-release/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "DLL-Release" # PROP Output_Dir "dll-release"
# PROP Intermediate_Dir "DLL-Release" # PROP Intermediate_Dir "dll-release/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/ahost.exe" /libpath:"..\cares\DLL-Release" # ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/ahost.exe" /libpath:"..\cares\dll-release" /fixed:no
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/ahost.exe" /libpath:"..\cares\DLL-Release" # ADD LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/ahost.exe" /libpath:"..\cares\dll-release" /fixed:no
!ELSEIF "$(CFG)" == "ahost - Win32 using cares LIB Debug" !ELSEIF "$(CFG)" == "ahost - Win32 using cares LIB Debug"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "LIB-Debug" # PROP BASE Output_Dir "lib-debug"
# PROP BASE Intermediate_Dir "LIB-Debug" # PROP BASE Intermediate_Dir "lib-debug/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "LIB-Debug" # PROP Output_Dir "lib-debug"
# PROP Intermediate_Dir "LIB-Debug" # PROP Intermediate_Dir "lib-debug/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug" # ADD BASE LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/ahost.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug" # ADD LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/ahost.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
!ELSEIF "$(CFG)" == "ahost - Win32 using cares LIB Release" !ELSEIF "$(CFG)" == "ahost - Win32 using cares LIB Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "LIB-Release" # PROP BASE Output_Dir "lib-release"
# PROP BASE Intermediate_Dir "LIB-Release" # PROP BASE Intermediate_Dir "lib-release/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "LIB-Release" # PROP Output_Dir "lib-release"
# PROP Intermediate_Dir "LIB-Release" # PROP Intermediate_Dir "lib-release/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/ahost.exe" /libpath:"..\cares\LIB-Release" # ADD BASE LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/ahost.exe" /libpath:"..\cares\lib-release" /fixed:no
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/ahost.exe" /libpath:"..\cares\LIB-Release" # ADD LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/ahost.exe" /libpath:"..\cares\lib-release" /fixed:no
!ENDIF !ENDIF

View File

@@ -1,5 +1,7 @@
DLL-* DLL-*
LIB-* LIB-*
dll-*
lib-*
vc6cares.dep vc6cares.dep
vc6cares.mak vc6cares.mak
vc6cares.ncb vc6cares.ncb

View File

@@ -33,109 +33,109 @@ CFG=cares - Win32 LIB Debug
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "DLL-Debug" # PROP BASE Output_Dir "dll-debug"
# PROP BASE Intermediate_Dir "DLL-Debug" # PROP BASE Intermediate_Dir "dll-debug/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "DLL-Debug" # PROP Output_Dir "dll-debug"
# PROP Intermediate_Dir "DLL-Debug" # PROP Intermediate_Dir "dll-debug/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
CPP=cl.exe CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c
MTL=midl.exe MTL=midl.exe
# ADD BASE MTL /nologo /D "DEBUGBUILD" /mktyplib203 /win32 # ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "DEBUGBUILD" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /win32
RSC=rc.exe RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "DEBUGBUILD" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "DEBUGBUILD" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"DLL-Debug/caresd.dll" /implib:"DLL-Debug/caresd_imp.lib" /pdbtype:sept # ADD BASE LINK32 ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"dll-debug/caresd.dll" /implib:"dll-debug/caresd.lib" /pdbtype:con /fixed:no
# ADD LINK32 ws2_32.lib advapi32.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"DLL-Debug/caresd.dll" /implib:"DLL-Debug/caresd_imp.lib" /pdbtype:sept # ADD LINK32 ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"dll-debug/caresd.dll" /implib:"dll-debug/caresd.lib" /pdbtype:con /fixed:no
!ELSEIF "$(CFG)" == "cares - Win32 DLL Release" !ELSEIF "$(CFG)" == "cares - Win32 DLL Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DLL-Release" # PROP BASE Output_Dir "dll-release"
# PROP BASE Intermediate_Dir "DLL-Release" # PROP BASE Intermediate_Dir "dll-release/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "DLL-Release" # PROP Output_Dir "dll-release"
# PROP Intermediate_Dir "DLL-Release" # PROP Intermediate_Dir "dll-release/obj"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
CPP=cl.exe CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c
MTL=midl.exe MTL=midl.exe
# ADD BASE MTL /nologo /mktyplib203 /win32 # ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /win32
RSC=rc.exe RSC=rc.exe
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib /nologo /dll /pdb:none /machine:I386 /out:"DLL-Release/cares.dll" /implib:"DLL-Release/cares_imp.lib" # ADD BASE LINK32 ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /pdb:none /machine:I386 /out:"dll-release/cares.dll" /implib:"dll-release/cares.lib" /fixed:no /release /incremental:no
# ADD LINK32 ws2_32.lib advapi32.lib /nologo /dll /pdb:none /machine:I386 /out:"DLL-Release/cares.dll" /implib:"DLL-Release/cares_imp.lib" # ADD LINK32 ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /pdb:none /machine:I386 /out:"dll-release/cares.dll" /implib:"dll-release/cares.lib" /fixed:no /release /incremental:no
!ELSEIF "$(CFG)" == "cares - Win32 LIB Debug" !ELSEIF "$(CFG)" == "cares - Win32 LIB Debug"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "LIB-Debug" # PROP BASE Output_Dir "lib-debug"
# PROP BASE Intermediate_Dir "LIB-Debug" # PROP BASE Intermediate_Dir "lib-debug/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "LIB-Debug" # PROP Output_Dir "lib-debug"
# PROP Intermediate_Dir "LIB-Debug" # PROP Intermediate_Dir "lib-debug/obj"
# PROP Target_Dir "" # PROP Target_Dir ""
CPP=cl.exe CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c
RSC=rc.exe RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "DEBUGBUILD" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "DEBUGBUILD" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LIB32=link.exe -lib LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"LIB-Debug/caresd.lib" /machine:I386 # ADD BASE LIB32 /nologo /out:"lib-debug/libcaresd.lib" /machine:I386
# ADD LIB32 /nologo /out:"LIB-Debug/caresd.lib" /machine:I386 # ADD LIB32 /nologo /out:"lib-debug/libcaresd.lib" /machine:I386
!ELSEIF "$(CFG)" == "cares - Win32 LIB Release" !ELSEIF "$(CFG)" == "cares - Win32 LIB Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "LIB-Release" # PROP BASE Output_Dir "lib-release"
# PROP BASE Intermediate_Dir "LIB-Release" # PROP BASE Intermediate_Dir "lib-release/obj"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "LIB-Release" # PROP Output_Dir "lib-release"
# PROP Intermediate_Dir "LIB-Release" # PROP Intermediate_Dir "lib-release/obj"
# PROP Target_Dir "" # PROP Target_Dir ""
CPP=cl.exe CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c
RSC=rc.exe RSC=rc.exe
# ADD BASE RSC /l 0x409 # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LIB32=link.exe -lib LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"LIB-Release/cares.lib" /machine:I386 # ADD BASE LIB32 /nologo /out:"lib-release/libcares.lib" /machine:I386
# ADD LIB32 /nologo /out:"LIB-Release/cares.lib" /machine:I386 # ADD LIB32 /nologo /out:"lib-release/libcares.lib" /machine:I386
!ENDIF !ENDIF
@@ -170,6 +170,10 @@ SOURCE=..\..\ares_cancel.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\ares_data.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_destroy.c SOURCE=..\..\ares_destroy.c
# End Source File # End Source File
# Begin Source File # Begin Source File
@@ -310,6 +314,10 @@ SOURCE=..\..\ares_build.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\ares_data.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_dns.h SOURCE=..\..\ares_dns.h
# End Source File # End Source File
# Begin Source File # Begin Source File
@@ -361,13 +369,13 @@ SOURCE=..\..\inet_ntop.h
SOURCE=..\..\nameser.h SOURCE=..\..\nameser.h
# End Source File # End Source File
# End Group # End Group
# Begin Group "Resource Files" # Begin Group "Resource Files"
# PROP Default_Filter ""
# Begin Source File
# PROP Default_Filter ""
SOURCE=..\..\cares.rc
# Begin Source File # End Source File
# End Group
# End Target
# End Project

View File

@@ -267,6 +267,8 @@ for fname in .deps \
aclocal.m4 \ aclocal.m4 \
aclocal.m4.bak \ aclocal.m4.bak \
ares_build.h \ ares_build.h \
ares_config.h \
ares_config.h.in \
autom4te.cache \ autom4te.cache \
compile \ compile \
config.guess \ config.guess \

View File

@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___ # | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____| # \___|\___/|_| \_\_____|
# #
# Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. # Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
# #
# This software is licensed as described in the file COPYING, which # This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms # you should have received as part of this distribution. The terms
@@ -42,9 +42,16 @@ CURL_CHECK_OPTION_DEBUG
CURL_CHECK_OPTION_OPTIMIZE CURL_CHECK_OPTION_OPTIMIZE
CURL_CHECK_OPTION_WARNINGS CURL_CHECK_OPTION_WARNINGS
CURL_CHECK_OPTION_CURLDEBUG CURL_CHECK_OPTION_CURLDEBUG
CURL_CHECK_OPTION_ARES
CURL_CHECK_PATH_SEPARATOR_REQUIRED CURL_CHECK_PATH_SEPARATOR_REQUIRED
#
# save the configure arguments
#
CONFIGURE_OPTIONS="\"$ac_configure_args\""
AC_SUBST(CONFIGURE_OPTIONS)
dnl SED is mandatory for configure process and libtool. dnl SED is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later. dnl Set it now, allowing it to be changed later.
AC_PATH_PROG([SED], [sed], [not_found], AC_PATH_PROG([SED], [sed], [not_found],
@@ -89,6 +96,11 @@ AC_SUBST([AR])
AC_SUBST(libext) AC_SUBST(libext)
dnl Remove non-configure distributed curlbuild.h
if test -f ${srcdir}/include/curl/curlbuild.h; then
rm -f ${srcdir}/include/curl/curlbuild.h
fi
dnl figure out the libcurl version dnl figure out the libcurl version
VERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h` VERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
AM_INIT_AUTOMAKE(curl,$VERSION) AM_INIT_AUTOMAKE(curl,$VERSION)
@@ -124,6 +136,7 @@ curl_verbose_msg="enabled (--disable-verbose)"
curl_sspi_msg="no (--enable-sspi)" curl_sspi_msg="no (--enable-sspi)"
curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)" curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
curl_ldaps_msg="no (--enable-ldaps)" curl_ldaps_msg="no (--enable-ldaps)"
curl_rtsp_msg="no (--enable-rtsp)"
dnl dnl
dnl Save anything in $LIBS for later dnl Save anything in $LIBS for later
@@ -148,6 +161,7 @@ dnl This defines _ALL_SOURCE for AIX
CURL_CHECK_AIX_ALL_SOURCE CURL_CHECK_AIX_ALL_SOURCE
dnl Our configure and build reentrant settings dnl Our configure and build reentrant settings
CURL_CONFIGURE_THREAD_SAFE
CURL_CONFIGURE_REENTRANT CURL_CONFIGURE_REENTRANT
dnl check for how to do large files dnl check for how to do large files
@@ -168,6 +182,17 @@ case $host in
;; ;;
esac esac
AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
case $CC in
icc | */icc)
AC_MSG_RESULT([yes])
with_pic=yes
;;
*)
AC_MSG_RESULT([no])
;;
esac
dnl libtool setup dnl libtool setup
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
@@ -232,27 +257,17 @@ CURL_SET_COMPILER_DEBUG_OPTS
CURL_SET_COMPILER_OPTIMIZE_OPTS CURL_SET_COMPILER_OPTIMIZE_OPTS
CURL_SET_COMPILER_WARNING_OPTS CURL_SET_COMPILER_WARNING_OPTS
case $host in if test "$compiler_id" = "INTEL_UNIX_C"; then
# #
x86_64*linux*|amd64*freebsd*|ia64*freebsd*) if test "$compiler_num" -ge "1000"; then
# dnl icc 10.X or later
if test "$compiler_id" = "INTEL_UNIX_C"; then CFLAGS="$CFLAGS -shared-intel"
# elif test "$compiler_num" -ge "900"; then
if test "$compiler_num" -ge "900" && dnl icc 9.X specific
test "$compiler_num" -lt "1000"; then CFLAGS="$CFLAGS -i-dynamic"
dnl icc 9.X specific fi
CFLAGS="$CFLAGS -i-dynamic"
fi
#
if test "$compiler_num" -ge "1000"; then
dnl icc 10.X or later
CFLAGS="$CFLAGS -shared-intel"
fi
#
fi
;;
# #
esac fi
CURL_CHECK_COMPILER_HALT_ON_ERROR CURL_CHECK_COMPILER_HALT_ON_ERROR
CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
@@ -305,8 +320,10 @@ AC_HELP_STRING([--disable-http],[Disable HTTP support]),
no) no)
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP]) AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
AC_MSG_WARN([disable HTTP disables FTP over proxy]) AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
AC_SUBST(CURL_DISABLE_HTTP, [1]) AC_SUBST(CURL_DISABLE_HTTP, [1])
AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
AC_SUBST(CURL_DISABLE_RTSP, [1])
;; ;;
*) AC_MSG_RESULT(yes) *) AC_MSG_RESULT(yes)
;; ;;
@@ -403,6 +420,32 @@ AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
AC_SUBST(CURL_DISABLE_LDAPS, [1]) AC_SUBST(CURL_DISABLE_LDAPS, [1])
) )
AC_MSG_CHECKING([whether to support rtsp])
AC_ARG_ENABLE(rtsp,
AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
AC_SUBST(CURL_DISABLE_RTSP, [1])
;;
*) if test x$CURL_DISABLE_HTTP = x1 ; then
AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
else
AC_MSG_RESULT(yes)
curl_rtsp_msg="enabled"
fi
;;
esac ],
if test "x$CURL_DISABLE_HTTP" != "x1"; then
AC_MSG_RESULT(yes)
curl_rtsp_msg="enabled"
else
AC_MSG_RESULT(no)
fi
)
AC_MSG_CHECKING([whether to support proxies]) AC_MSG_CHECKING([whether to support proxies])
AC_ARG_ENABLE(proxy, AC_ARG_ENABLE(proxy,
AC_HELP_STRING([--enable-proxy],[Enable proxy support]) AC_HELP_STRING([--enable-proxy],[Enable proxy support])
@@ -465,6 +508,57 @@ AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
) )
AC_MSG_CHECKING([whether to support pop3])
AC_ARG_ENABLE(pop3,
AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
AC_SUBST(CURL_DISABLE_POP3, [1])
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support imap])
AC_ARG_ENABLE(imap,
AC_HELP_STRING([--enable-imap],[Enable IMAP support])
AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
AC_SUBST(CURL_DISABLE_IMAP, [1])
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support smtp])
AC_ARG_ENABLE(smtp,
AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
AC_SUBST(CURL_DISABLE_SMTP, [1])
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
dnl ********************************************************************** dnl **********************************************************************
dnl Check for built-in manual dnl Check for built-in manual
dnl ********************************************************************** dnl **********************************************************************
@@ -1164,33 +1258,61 @@ if test X"$OPT_SSL" != Xno; then
dnl check the given --with-ssl spot dnl check the given --with-ssl spot
PKGTEST="no" PKGTEST="no"
PREFIX_OPENSSL=$OPT_SSL PREFIX_OPENSSL=$OPT_SSL
dnl Try pkg-config even when cross-compiling. Since we
dnl specify PKG_CONFIG_LIBDIR we're only looking where
dnl the user told us to look
OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
if test -e "$OPENSSL_PCDIR/openssl.pc"; then
PKGTEST="yes"
fi
dnl in case pkg-config comes up empty, use what we got
dnl via --with-ssl
LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff" LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
if test "$PREFIX_OPENSSL" != "/usr" ; then if test "$PREFIX_OPENSSL" != "/usr" ; then
LDFLAGS="$LDFLAGS -L$LIB_OPENSSL" SSL_LDFLAGS="-L$LIB_OPENSSL"
CPPFLAGS="$CPPFLAGS -I$PREFIX_OPENSSL/include" SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
fi fi
CPPFLAGS="$CPPFLAGS -I$PREFIX_OPENSSL/include/openssl" SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
;; ;;
esac esac
if test "$PKGTEST" = "yes"; then if test "$PKGTEST" = "yes"; then
CURL_CHECK_PKGCONFIG(openssl) CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
if test "$PKGCONFIG" != "no" ; then if test "$PKGCONFIG" != "no" ; then
SSL_LIBS=`$PKGCONFIG --libs-only-l openssl 2>/dev/null` SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
SSL_LDFLAGS=`$PKGCONFIG --libs-only-L openssl 2>/dev/null` $PKGCONFIG --libs-only-l openssl 2>/dev/null`
SSL_CPPFLAGS=`$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
$PKGCONFIG --libs-only-L openssl 2>/dev/null`
SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'` LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
dnl use the values pkg-config reported dnl use the values pkg-config reported. This is here
dnl instead of below with CPPFLAGS and LDFLAGS because we only
dnl learn about this via pkg-config. If we only have
dnl the argument to --with-ssl we don't know what
dnl additional libs may be necessary. Hope that we
dnl don't need any.
LIBS="$LIBS $SSL_LIBS" LIBS="$LIBS $SSL_LIBS"
CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
fi fi
fi fi
dnl finally, set flags to use SSL
CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
dnl This is for Msys/Mingw dnl This is for Msys/Mingw
case $host in case $host in
*-*-msys* | *-*-mingw*) *-*-msys* | *-*-mingw*)
@@ -1304,6 +1426,7 @@ if test X"$OPT_SSL" != Xno; then
AC_CHECK_FUNCS( RAND_status \ AC_CHECK_FUNCS( RAND_status \
RAND_screen \ RAND_screen \
RAND_egd \ RAND_egd \
ENGINE_cleanup \
CRYPTO_cleanup_all_ex_data \ CRYPTO_cleanup_all_ex_data \
SSL_get_shutdown ) SSL_get_shutdown )
@@ -1612,6 +1735,12 @@ if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then
version="unknown" version="unknown"
fi fi
fi fi
else
# Without pkg-config, we'll kludge in some defaults
addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
addcflags="-I$OPT_NSS/include"
version="unknown"
nssprefix=$OPT_NSS
fi fi
dnl Check for functionPK11_CreateGenericObject dnl Check for functionPK11_CreateGenericObject
@@ -1707,7 +1836,7 @@ if test X"$OPT_LIBSSH2" != Xno; then
version=`$PKGCONFIG --modversion libssh2` version=`$PKGCONFIG --modversion libssh2`
DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'` DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
fi fi
;; ;;
off) off)
dnl no --with-libssh2 option given, just check default places dnl no --with-libssh2 option given, just check default places
@@ -1814,85 +1943,11 @@ case "$LIBIDN" in
;; ;;
esac esac
dnl Default is to try the thread-safe versions of a few functions
OPT_THREAD=on
dnl detect AIX 4.3 or later
dnl see full docs on this reasoning in the lib/hostip.c source file
AC_MSG_CHECKING([AIX 4.3 or later])
AC_PREPROC_IFELSE([
#if defined(_AIX) && defined(_AIX43)
printf("just fine");
#else
#error "this is not AIX 4.3 or later"
#endif
],
[ AC_MSG_RESULT([yes])
RECENTAIX=yes
OPT_THREAD=off ],
[ AC_MSG_RESULT([no]) ]
)
AC_ARG_ENABLE(thread,dnl
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
AC_HELP_STRING([--enable-thread],[look for thread-safe functions]),
[ case "$enableval" in
no)
OPT_THREAD=off
AC_MSG_WARN(libcurl will not get built using thread-safe functions)
;;
*)
;;
esac
]
)
if test X"$OPT_THREAD" = Xoff
then
AC_DEFINE(DISABLED_THREADSAFE, 1,
[Set to explicitly specify we don't want to use thread-safe functions])
else
dnl if test "$ipv6" != "yes"; then
dnl dig around for gethostbyname_r()
dnl the old gethostbyname_r check was done here
dnl dig around for gethostbyaddr_r()
dnl the old gethostbyaddr_r check was here BUT COMMENTED OUT
dnl fi
dnl poke around for inet_ntoa_r()
dnl the old inet_ntoa_r check was done here
dnl is there a localtime_r()
dnl the old localtime_r check was done here
dnl is there a strerror_r()
dnl the old strerror_r check was done here
checkfor_gmtime_r="yes"
fi
dnl for recent AIX versions, we skip all the thread-safe checks above since
dnl they claim a thread-safe libc using the standard API. But there are
dnl some functions still not thread-safe. Check for these!
dnl Let's hope this split URL remains working: dnl Let's hope this split URL remains working:
dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \ dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
dnl genprogc/thread_quick_ref.htm dnl genprogc/thread_quick_ref.htm
if test "x$RECENTAIX" = "xyes"; then
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
dnl is there a localtime_r()
dnl the old localtime_r check was done here
dnl is there a strerror_r()
dnl the old strerror_r check was done here
checkfor_gmtime_r="yes"
fi
dnl ********************************************************************** dnl **********************************************************************
dnl Back to "normal" configuring dnl Back to "normal" configuring
@@ -1983,8 +2038,9 @@ CURL_CHECK_STRUCT_TIMEVAL
CURL_VERIFY_RUNTIMELIBS CURL_VERIFY_RUNTIMELIBS
AC_CHECK_SIZEOF(size_t) AC_CHECK_SIZEOF(size_t)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(short)
CURL_CONFIGURE_LONG CURL_CONFIGURE_LONG
AC_CHECK_SIZEOF(time_t) AC_CHECK_SIZEOF(time_t)
AC_CHECK_SIZEOF(off_t) AC_CHECK_SIZEOF(off_t)
@@ -2220,81 +2276,8 @@ fi
dnl set variable for use in automakefile(s) dnl set variable for use in automakefile(s)
AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1) AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
aresembedded="unknown" CURL_CHECK_LIB_ARES
configure_rundir=`pwd` AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
embedded_ares_builddir="$configure_rundir/ares"
AC_MSG_CHECKING([whether to enable c-ares])
AC_ARG_ENABLE(ares,
AC_HELP_STRING([--enable-ares=PATH],[Enable c-ares for name lookups])
AC_HELP_STRING([--disable-ares],[Disable c-ares for name lookups]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
;;
*) AC_MSG_RESULT(yes)
if test "x$IPV6_ENABLED" = "x1"; then
AC_MSG_NOTICE([c-ares may not work properly with ipv6])
fi
AC_DEFINE(USE_ARES, 1, [Define if you want to enable c-ares support])
dnl substitute HAVE_ARES for curl-config and similar
HAVE_ARES="1"
AC_SUBST(HAVE_ARES)
curl_ares_msg="enabled"
LIBS="-lcares $LIBS"
dnl For backwards compatibility default to includes/lib in srcdir/ares
dnl If a value is specified it is assumed that the libs are in $val/lib
dnl and the includes are in $val/include. This is the default setup for
dnl ares so it should not be a problem.
if test "x$enableval" = "xyes" ; then
if test -d "$srcdir/ares"; then
aresembedded="yes"
AC_CONFIG_SUBDIRS(ares)
dnl Since c-ares has installable configured header files, path
dnl inclusion is fully done in makefiles for in-tree builds.
LDFLAGS="$LDFLAGS -L$embedded_ares_builddir"
fi
else
CPPFLAGS="$CPPFLAGS -I$enableval/include"
LDFLAGS="$LDFLAGS -L$enableval/lib"
fi
if test -z "$aresembedded"; then
dnl verify that a sufficient c-ares is here if we have pointed one
dnl out and don't use the "embedded" ares dir (in which case we don't
dnl check it because it might not have been built yet)
AC_MSG_CHECKING([that c-ares is good and recent enough])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
#include <ares.h>
/* set of dummy functions in case c-ares was built with debug */
void curl_dofree() { }
void curl_sclose() { }
void curl_domalloc() { }
void curl_docalloc() { }
void curl_socket() { }
]],[[
ares_channel channel;
ares_cancel(channel); /* added in 1.2.0 */
ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
]])
],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
AC_MSG_ERROR([c-ares library defective or too old])
])
fi
;;
esac ],
AC_MSG_RESULT(no)
)
dnl set variable for use in automakefile(s)
AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$aresembedded = xyes)
dnl ************************************************************ dnl ************************************************************
dnl disable verbose text strings dnl disable verbose text strings
@@ -2328,7 +2311,7 @@ AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support]) AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
AC_SUBST(USE_WINDOWS_SSPI, [1]) AC_SUBST(USE_WINDOWS_SSPI, [1])
curl_sspi_msg="yes" curl_sspi_msg="enabled"
else else
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.]) AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
@@ -2486,7 +2469,7 @@ fi
if test "x$HAVE_LIBZ" = "x1"; then if test "x$HAVE_LIBZ" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES libz" SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
fi fi
if test "x$HAVE_ARES" = "x1"; then if test "x$USE_ARES" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS" SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
fi fi
if test "x$IDN_ENABLED" = "x1"; then if test "x$IDN_ENABLED" = "x1"; then
@@ -2532,10 +2515,36 @@ fi
if test "x$CURL_DISABLE_TFTP" != "x1"; then if test "x$CURL_DISABLE_TFTP" != "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP" SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
fi fi
if test "x$CURL_DISABLE_POP3" != "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
if test "x$SSL_ENABLED" = "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
fi
fi
if test "x$CURL_DISABLE_IMAP" != "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
if test "x$SSL_ENABLED" = "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
fi
fi
if test "x$CURL_DISABLE_SMTP" != "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
if test "x$SSL_ENABLED" = "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
fi
fi
if test "x$USE_LIBSSH2" = "x1"; then if test "x$USE_LIBSSH2" = "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
fi fi
if test "x$CURL_DISABLE_RTSP" != "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
fi
dnl replace spaces with newlines
dnl sort the lines
dnl replace the newlines back to spaces
SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
AC_SUBST(SUPPORT_PROTOCOLS) AC_SUBST(SUPPORT_PROTOCOLS)
@@ -2551,8 +2560,11 @@ squeeze CURL_LIBS
squeeze LIBCURL_LIBS squeeze LIBCURL_LIBS
squeeze TEST_SERVER_LIBS squeeze TEST_SERVER_LIBS
squeeze SUPPORT_FEATURES
squeeze SUPPORT_PROTOCOLS
if test "x$want_curldebug_assumed" = "xyes" && if test "x$want_curldebug_assumed" = "xyes" &&
test "x$want_curldebug" = "xyes" && test "x$HAVE_ARES" = "x1"; then test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
ac_configure_args="$ac_configure_args --enable-curldebug" ac_configure_args="$ac_configure_args --enable-curldebug"
fi fi
@@ -2610,6 +2622,8 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
ca cert path: ${capath} ca cert path: ${capath}
LDAP support: ${curl_ldap_msg} LDAP support: ${curl_ldap_msg}
LDAPS support: ${curl_ldaps_msg} LDAPS support: ${curl_ldaps_msg}
RTSP support: ${curl_rtsp_msg}
Protocols: ${SUPPORT_PROTOCOLS}
]) ])
if test "x$soname_bump" = "xyes"; then if test "x$soname_bump" = "xyes"; then

View File

@@ -37,6 +37,7 @@ Available values for OPTION include:
--cc compiler --cc compiler
--cflags pre-processor and compiler flags --cflags pre-processor and compiler flags
--checkfor [version] check for (lib)curl of the specified version --checkfor [version] check for (lib)curl of the specified version
--configure the arguments given to configure when building curl
--features newline separated list of enabled features --features newline separated list of enabled features
--help display this help and exit --help display this help and exit
--libs library linking information --libs library linking information
@@ -146,6 +147,10 @@ while test $# -gt 0; do
echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@ @LIBS@ echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@ @LIBS@
;; ;;
--configure)
echo @CONFIGURE_OPTIONS@
;;
*) *)
echo "unknown option: $1" echo "unknown option: $1"
usage 1 usage 1

View File

@@ -63,6 +63,10 @@ Euphoria
Written by Ray Smith Written by Ray Smith
http://rays-web.com/eulibcurl.htm http://rays-web.com/eulibcurl.htm
Falcon
http://www.falconpl.org/index.ftd?page_id=prjs&prj_id=curl
Ferite Ferite
Written by Paul Querna Written by Paul Querna

View File

@@ -1,4 +1,4 @@
Updated: Nov 3, 2009 (http://curl.haxx.se/docs/faq.html) Updated: Nov 7, 2009 (http://curl.haxx.se/docs/faq.html)
_ _ ____ _ _ _ ____ _
___| | | | _ \| | ___| | | | _ \| |
/ __| | | | |_) | | / __| | | | |_) | |
@@ -73,6 +73,7 @@ FAQ
4.15 FTPS doesn't work 4.15 FTPS doesn't work
4.16 My HTTP POST or PUT requests are slow! 4.16 My HTTP POST or PUT requests are slow!
4.17 Non-functional connect timeouts on Windows 4.17 Non-functional connect timeouts on Windows
4.18 file:// URLs containing drive letters (Windows, NetWare)
5. libcurl Issues 5. libcurl Issues
5.1 Is libcurl thread-safe? 5.1 Is libcurl thread-safe?
@@ -915,6 +916,33 @@ FAQ
anything else. This will make (lib)curl to consider the connection connected anything else. This will make (lib)curl to consider the connection connected
and thus the connect timeout won't trigger. and thus the connect timeout won't trigger.
4.18 file:// URLs containing drive letters (Windows, NetWare)
When using cURL to try to download a local file, one might use a URL
in this format:
file://D:/blah.txt
You'll find that even if D:\blah.txt does exist, cURL returns a 'file
not found' error.
According to RFC 1738 (http://www.faqs.org/rfcs/rfc1738.html),
file:// URLs must contain a host component, but it is ignored by
most implementations. In the above example, 'D:' is treated as the
host component, and is taken away. Thus, cURL tries to open '/blah.txt'.
If your system is installed to drive C:, that will resolve to 'C:\blah.txt',
and if that doesn't exist you will get the not found error.
To fix this problem, use file:// URLs with *three* leading slashes:
file:///D:/blah.txt
Alternatively, if it makes more sense, specify 'localhost' as the host
component:
file://localhost/D:/blah.txt
In either case, cURL should now be looking for the correct file.
5. libcurl Issues 5. libcurl Issues

View File

@@ -874,9 +874,9 @@ REDUCING SIZE
.comment section). .comment section).
Using these techniques it is possible to create a basic HTTP-only shared Using these techniques it is possible to create a basic HTTP-only shared
libcurl library for i386 Linux platforms that is only 94 KiB in size, and libcurl library for i386 Linux platforms that is only 98 KiB in size, and
an FTP-only library that is 87 KiB in size (as of libcurl version 7.19.1, an FTP-only library that is 94 KiB in size (as of libcurl version 7.20.0,
using gcc 4.2.2). using gcc 4.3.3).
You may find that statically linking libcurl to your application will You may find that statically linking libcurl to your application will
result in a lower total size than dynamically linking. result in a lower total size than dynamically linking.

View File

@@ -3,6 +3,12 @@ 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 changelog of the current development status, as one or more of these problems
may have been fixed since this was written! may have been fixed since this was written!
74. The HTTP spec allows headers to be merged and become comma-separated
instead of being repeated several times. This also include Authenticate: and
Proxy-Authenticate: headers and while this hardly every happens in real life
it will confuse libcurl which does not properly support it for all headers -
like those Authenticate headers.
73. if a connection is made to a FTP server but the server then just never 73. if a connection is made to a FTP server but the server then just never
sends the 220 response or otherwise is dead slow, libcurl will not sends the 220 response or otherwise is dead slow, libcurl will not
acknowledge the connection timeout during that phase but only the "real" acknowledge the connection timeout during that phase but only the "real"
@@ -13,12 +19,6 @@ may have been fixed since this was written!
72. "Pausing pipeline problems." 72. "Pausing pipeline problems."
http://curl.haxx.se/mail/lib-2009-07/0214.html http://curl.haxx.se/mail/lib-2009-07/0214.html
71. TFTP block size / better integration in transfer
http://curl.haxx.se/mail/lib-2009-08/0028.html
Related problems with TFTP is also that currently (7.19.6) upload file sizes
are limited to 32MB (http://curl.haxx.se/bug/view.cgi?id=2848436)
70. Problem re-using easy handle after call to curl_multi_remove_handle 70. Problem re-using easy handle after call to curl_multi_remove_handle
http://curl.haxx.se/mail/lib-2009-07/0249.html http://curl.haxx.se/mail/lib-2009-07/0249.html
@@ -40,11 +40,6 @@ may have been fixed since this was written!
properly wait for the connect to be confirmed. See test case 564 for a first properly wait for the connect to be confirmed. See test case 564 for a first
shot at a test case. shot at a test case.
64. The threaded resolver used in libcurl on Windows has some kind of race
problem when multiple simultanoes resolves are done, like with the multi
interface transferring many files in parallell:
http://curl.haxx.se/mail/lib-2009-04/0028.html
63. When CURLOPT_CONNECT_ONLY is used, the handle cannot reliably be re-used 63. When CURLOPT_CONNECT_ONLY is used, the handle cannot reliably be re-used
for any further requests or transfers. The work-around is then to close that for any further requests or transfers. The work-around is then to close that
handle with curl_easy_cleanup() and create a new. Some more details: handle with curl_easy_cleanup() and create a new. Some more details:

View File

@@ -106,6 +106,7 @@ Chris Deidun
Chris Flerackers Chris Flerackers
Chris Gaukroger Chris Gaukroger
Chris Maltby Chris Maltby
Chris Mumford
Christian Krause Christian Krause
Christian Kurz Christian Kurz
Christian Robottom Reis Christian Robottom Reis
@@ -176,6 +177,7 @@ David Wright
David Yan David Yan
Dengminwen Dengminwen
Detlef Schmier Detlef Schmier
Didier Brisebourg
Diego Casorran Diego Casorran
Dima Barsky Dima Barsky
Dimitris Sarris Dimitris Sarris
@@ -241,6 +243,7 @@ Fred Machado
Fred New Fred New
Fred Noz Fred Noz
Frederic Lepied Frederic Lepied
Gabriel Kuri
Gary Maxwell Gary Maxwell
Gautam Kachroo Gautam Kachroo
Gautam Mani Gautam Mani
@@ -270,11 +273,11 @@ Greg Onufer
Greg Zavertnik Greg Zavertnik
Grigory Entin Grigory Entin
Guenole Bescon Guenole Bescon
Guenter Knauf
Guillaume Arluison Guillaume Arluison
Gustaf Hui Gustaf Hui
Gwenole Beauchesne Gwenole Beauchesne
G<EFBFBD>tz Babin-Ebell G<EFBFBD>tz Babin-Ebell
G<EFBFBD>nter Knauf
Hamish Mackenzie Hamish Mackenzie
Hang Kin Lau Hang Kin Lau
Hanno Kranzhoff Hanno Kranzhoff
@@ -350,12 +353,14 @@ Johan Anderson
Johan Nilsson Johan Nilsson
Johan van Selst Johan van Selst
John Crow John Crow
John Dennis
John E. Malmberg John E. Malmberg
John Janssen John Janssen
John Kelly John Kelly
John Lask John Lask
John Lightsey John Lightsey
John McGowan John McGowan
John P. McCaskey
John Wilkinson John Wilkinson
Johnny Luong Johnny Luong
Jon Grubbs Jon Grubbs
@@ -374,6 +379,7 @@ Judson Bishop
Juergen Wilke Juergen Wilke
Jukka Pihl Jukka Pihl
Julian Noble Julian Noble
Julien Chaffraix
Jun-ichiro itojun Hagino Jun-ichiro itojun Hagino
Jurij Smakov Jurij Smakov
Justin Fletcher Justin Fletcher
@@ -395,6 +401,7 @@ Ken Hirsch
Ken Rastatter Ken Rastatter
Kent Boortz Kent Boortz
Keshav Krity Keshav Krity
Kevin Baughman
Kevin Fisk Kevin Fisk
Kevin Lussier Kevin Lussier
Kevin Reed Kevin Reed
@@ -406,6 +413,7 @@ Kjetil Jacobsen
Klevtsov Vadim Klevtsov Vadim
Kris Kennaway Kris Kennaway
Krishnendu Majumdar Krishnendu Majumdar
Krister Johansen
Kristian Gunstone Kristian Gunstone
Kristian K<>hntopp Kristian K<>hntopp
Kyle Sallee Kyle Sallee
@@ -428,6 +436,7 @@ Linas Vepstas
Ling Thio Ling Thio
Linus Nielsen Feltzing Linus Nielsen Feltzing
Lisa Xu Lisa Xu
Liza Alenchery
Loic Dachary Loic Dachary
Loren Kirkby Loren Kirkby
Luca Altea Luca Altea
@@ -486,6 +495,7 @@ Michael Jahn
Michael Jerris Michael Jerris
Michael Mealling Michael Mealling
Michael Smith Michael Smith
Michael Stillwell
Michael Wallner Michael Wallner
Michal Bonino Michal Bonino
Michal Marek Michal Marek
@@ -587,6 +597,7 @@ Ralph Mitchell
Ramana Mokkapati Ramana Mokkapati
Randy McMurchy Randy McMurchy
Ravi Pratap Ravi Pratap
Ray Dassen
Ray Pekowski Ray Pekowski
Reinout van Schouwen Reinout van Schouwen
Renaud Chaillat Renaud Chaillat
@@ -661,6 +672,7 @@ Sonia Subramanian
Spacen Jasset Spacen Jasset
Spiridonoff A.V Spiridonoff A.V
Stadler Stephan Stadler Stephan
Stan van de Burgt
Stefan Esser Stefan Esser
Stefan Krause Stefan Krause
Stefan Teleman Stefan Teleman
@@ -679,6 +691,7 @@ Steve Roskowski
Steven Bazyl Steven Bazyl
Steven G. Johnson Steven G. Johnson
Stoned Elipot Stoned Elipot
Sven Anders
Sven Neuhaus Sven Neuhaus
Sven Wegener Sven Wegener
S<EFBFBD>bastien Willemijns S<EFBFBD>bastien Willemijns
@@ -704,6 +717,7 @@ Tom Benoist
Tom Lee Tom Lee
Tom Mattison Tom Mattison
Tom Moers Tom Moers
Tom Mueller
Tom Regner Tom Regner
Tom Zerucha Tom Zerucha
Tomas Pospisek Tomas Pospisek

View File

@@ -37,8 +37,7 @@
5. HTTP 5. HTTP
5.1 Better persistency for HTTP 1.0 5.1 Better persistency for HTTP 1.0
5.2 support FF3 sqlite cookie files 5.2 support FF3 sqlite cookie files
5.3 Sort outgoing cookies 5.3 Rearrange request header order
5.4 Rearrange request header order
6. TELNET 6. TELNET
6.1 ditch stdin 6.1 ditch stdin
@@ -105,6 +104,7 @@
15.4 remove several functions 15.4 remove several functions
15.5 remove CURLOPT_FAILONERROR 15.5 remove CURLOPT_FAILONERROR
15.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE 15.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
15.7 remove progress meter from libcurl
============================================================================== ==============================================================================
@@ -237,14 +237,7 @@
We should consider how (lib)curl can/should support this. We should consider how (lib)curl can/should support this.
http://curl.haxx.se/bug/feature.cgi?id=1871388 http://curl.haxx.se/bug/feature.cgi?id=1871388
5.3 Sort outgoing cookies 5.3 Rearrange request header order
All the major browsers sort the cookies sent in the Cookie: header based on
the length of the path for which the cookie is set with. This could lead to
a small fraction of servers to not play well with curl:
http://www.ietf.org/mail-archive/web/http-state/current/msg00150.html
5.4 Rearrange request header order
Server implementors often make an effort to detect browser and to reject Server implementors often make an effort to detect browser and to reject
clients it can detect to not match. One of the last details we cannot yet clients it can detect to not match. One of the last details we cannot yet
@@ -585,3 +578,13 @@ to provide the data to send.
Remove support for a global DNS cache. Anything global is silly, and we Remove support for a global DNS cache. Anything global is silly, and we
already offer the share interface for the same functionality but done already offer the share interface for the same functionality but done
"right". "right".
15.7 remove progress meter from libcurl
The internally provided progress meter output doesn't belong in the library.
Basically no application wants it (apart from curl) but instead applications
can and should do their own progress meters using the progress callback.
The progress callback should then be bumped as well to get proper 64bit
variable types passed to it instead of doubles so that big files work
correctly.

View File

@@ -42,6 +42,8 @@ Specify the oldest possible libcurl version string you want, and this
script will return 0 if the current installation is new enough or it script will return 0 if the current installation is new enough or it
returns 1 and outputs a text saying that the current version is not new returns 1 and outputs a text saying that the current version is not new
enough. (Added in 7.15.4) enough. (Added in 7.15.4)
.IP "--configure"
Displays the arguments given to configure when building curl.
.IP "--feature" .IP "--feature"
Lists what particular main features the installed libcurl was built with. At Lists what particular main features the installed libcurl was built with. At
the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -21,7 +21,7 @@
.\" * $Id$ .\" * $Id$
.\" ************************************************************************** .\" **************************************************************************
.\" .\"
.TH curl 1 "10 July 2008" "Curl 7.19.0" "Curl Manual" .TH curl 1 "28 November 2009" "Curl 7.20.0" "Curl Manual"
.SH NAME .SH NAME
curl \- transfer a URL curl \- transfer a URL
.SH SYNOPSIS .SH SYNOPSIS
@@ -461,19 +461,29 @@ will re-use the same IP address it already uses for the control
connection. (Added in 7.14.2) connection. (Added in 7.14.2)
This option has no effect if PORT, EPRT or EPSV is used instead of PASV. This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
.IP "--ftp-ssl" .IP "--ftp-pret"
(FTP) Try to use SSL/TLS for the FTP connection. Reverts to a non-secure (FTP) Tell curl to send a PRET command before PASV (and EPSV). Certain
connection if the server doesn't support SSL/TLS. See also FTP servers, mainly drftpd, require this non-standard command for
\fI--ftp-ssl-control\fP and \fI--ftp-ssl-reqd\fP for different levels of directory listings as well as up and downloads in PASV mode.
encryption required. (Added in 7.11.0) (Added in 7.20.x)
.IP "--ssl"
(FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for the connection. Reverts to a
non-secure connection if the server doesn't support SSL/TLS. See also
\fI--ftp-ssl-control\fP and \fI--ssl-reqd\fP for different levels of
encryption required. (Added in 7.20.0)
This option was formerly known as \fI--ftp-ssl\fP (Added in 7.11.0) and that
can still be used but will be removed in a future version.
.IP "--ftp-ssl-control" .IP "--ftp-ssl-control"
(FTP) Require SSL/TLS for the FTP login, clear for transfer. Allows secure (FTP) Require SSL/TLS for the FTP login, clear for transfer. Allows secure
authentication, but non-encrypted data transfers for efficiency. Fails the authentication, but non-encrypted data transfers for efficiency. Fails the
transfer if the server doesn't support SSL/TLS. (Added in 7.16.0) transfer if the server doesn't support SSL/TLS. (Added in 7.16.0)
.IP "--ftp-ssl-reqd" .IP "--ssl-reqd"
(FTP) Require SSL/TLS for the FTP connection. (FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connection. Terminates the
Terminates the connection if the server doesn't support SSL/TLS. connection if the server doesn't support SSL/TLS. (Added in 7.20.0)
(Added in 7.15.5)
This option was formerly known as \fI--ftp-ssl-reqd\fP (added in 7.15.5) and
that can still be used but will be removed in a future version.
.IP "--ftp-ssl-ccc" .IP "--ftp-ssl-ccc"
(FTP) Use CCC (Clear Command Channel) (FTP) Use CCC (Clear Command Channel)
Shuts down the SSL/TLS layer after authenticating. The rest of the Shuts down the SSL/TLS layer after authenticating. The rest of the
@@ -598,6 +608,9 @@ time only.
make it discard all "session cookies". This will basically have the same effect make it discard all "session cookies". This will basically have the same effect
as if a new session is started. Typical browsers always discard session as if a new session is started. Typical browsers always discard session
cookies when they're closed down. cookies when they're closed down.
.IP "-J/--remote-header-name"
(HTTP) This option tells the -O/--remote-name option to use the server-specified
Content-Disposition filename instead of extracting a filename from the URL.
.IP "-k/--insecure" .IP "-k/--insecure"
(SSL) This option explicitly allows curl to perform "insecure" SSL connections (SSL) This option explicitly allows curl to perform "insecure" SSL connections
and transfers. All SSL connections are attempted to be made secure by using and transfers. All SSL connections are attempted to be made secure by using
@@ -756,7 +769,15 @@ password to all hosts that the site may redirect to. This may or may not
introduce a security breach if the site redirects you to a site to which introduce a security breach if the site redirects you to a site to which
you'll send your authentication info (which is plaintext in the case of HTTP you'll send your authentication info (which is plaintext in the case of HTTP
Basic authentication). Basic authentication).
.IP "--mail-rcpt <address>"
(SMTP) Specify a single address that the given mail should get sent to. This
option can be used multiple times to specify many recipients.
(Added in 7.20.0)
.IP "--mail-from <address>"
(SMTP) Specify a single address that the given mail should get sent from.
(Added in 7.20.0)
.IP "--max-filesize <bytes>" .IP "--max-filesize <bytes>"
Specify the maximum size (in bytes) of a file to download. If the file Specify the maximum size (in bytes) of a file to download. If the file
requested is larger than this value, the transfer will not start and curl will requested is larger than this value, the transfer will not start and curl will
@@ -1079,7 +1100,7 @@ timestamp.
If a transient error is returned when curl tries to perform a transfer, it If a transient error is returned when curl tries to perform a transfer, it
will retry this number of times before giving up. Setting the number to 0 will retry this number of times before giving up. Setting the number to 0
makes curl do no retries (which is the default). Transient error means either: makes curl do no retries (which is the default). Transient error means either:
a timeout, an FTP 5xx response code or an HTTP 5xx response code. a timeout, an FTP 4xx response code or an HTTP 5xx response code.
When curl is about to retry a transfer, it will first wait one second and then When curl is about to retry a transfer, it will first wait one second and then
for all forthcoming retries it will double the waiting time until it reaches for all forthcoming retries it will double the waiting time until it reaches
@@ -1149,6 +1170,8 @@ mutually exclusive.
If this option is used several times, the last one will be used. (This option If this option is used several times, the last one will be used. (This option
was previously wrongly documented and used as --socks without the number was previously wrongly documented and used as --socks without the number
appended.) appended.)
This option (as well as \fI--socks4\fP) does not work with IPV6, FTPS or LDAP.
.IP "--socks5-gssapi-service <servicename>" .IP "--socks5-gssapi-service <servicename>"
The default service name for a socks server is rcmd/server-fqdn. This option The default service name for a socks server is rcmd/server-fqdn. This option
allows you to change it. allows you to change it.
@@ -1181,6 +1204,14 @@ TTYPE=<term> Sets the terminal type.
XDISPLOC=<X display> Sets the X display location. XDISPLOC=<X display> Sets the X display location.
NEW_ENV=<var,val> Sets an environment variable. NEW_ENV=<var,val> Sets an environment variable.
.IP "--tftp-blksize <value>"
(TFTP) Set TFTP BLKSIZE option (must be >512). This is the block size that
curl will try to use when tranferring data to or from a TFTP server. By
default 512 bytes will be used.
If this option is used several times, the last one will be used.
(Added in 7.20.0)
.IP "-T/--upload-file <file>" .IP "-T/--upload-file <file>"
This transfers the specified local file to the remote URL. If there is no file This transfers the specified local file to the remote URL. If there is no file
part in the specified URL, Curl will append the local file name. NOTE that you part in the specified URL, Curl will append the local file name. NOTE that you

View File

@@ -12,10 +12,12 @@ EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
# being currently built and tested are searched before the library which # being currently built and tested are searched before the library which
# might possibly already be installed in the system. # might possibly already be installed in the system.
# #
# $(top_builddir)/include is for libcurl's generated curl/curlbuild.h file # $(top_builddir)/include/curl for generated curlbuild.h included from curl.h
# $(top_builddir)/include for generated curlbuild.h included from lib/setup.h
# $(top_srcdir)/include is for libcurl's external include files # $(top_srcdir)/include is for libcurl's external include files
INCLUDES = -I$(top_builddir)/include \ INCLUDES = -I$(top_builddir)/include/curl \
-I$(top_builddir)/include \
-I$(top_srcdir)/include -I$(top_srcdir)/include
LIBDIR = $(top_builddir)/lib LIBDIR = $(top_builddir)/lib

View File

@@ -453,7 +453,7 @@ int main(int argc, char **argv) {
{ {
FILE *outfp; FILE *outfp;
BIO_get_fp(out,&outfp); BIO_get_fp(out,&outfp);
curl_easy_setopt(p.curl, CURLOPT_FILE,outfp); curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
} }
res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun) ; res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun) ;

View File

@@ -105,20 +105,23 @@ int main(int argc, char **argv)
/* See how the transfers went */ /* See how the transfers went */
while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) { while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
if (msg->msg == CURLMSG_DONE) { if (msg->msg == CURLMSG_DONE) {
int idx, found = 0;
int idx, found = 0; /* Find out which handle this message is about */
for (idx=0; idx<HANDLECOUNT; idx++) {
found = (msg->easy_handle == handles[idx]);
if(found)
break;
}
/* Find out which handle this message is about */ switch (idx) {
for (idx=0; (!found && (idx<HANDLECOUNT)); idx++) found = (msg->easy_handle == handles[idx]); case HTTP_HANDLE:
printf("HTTP transfer completed with status %d\n", msg->data.result);
switch (idx) { break;
case HTTP_HANDLE: case FTP_HANDLE:
printf("HTTP transfer completed with status %d\n", msg->data.result); printf("FTP transfer completed with status %d\n", msg->data.result);
break; break;
case FTP_HANDLE: }
printf("FTP transfer completed with status %d\n", msg->data.result);
break;
}
} }
} }

View File

@@ -209,6 +209,28 @@ the previous request didn't match (see \fICURLOPT_TIMECONDITION\fP). Alas, if
this returns a 1 you know that the reason you didn't get data in return is this returns a 1 you know that the reason you didn't get data in return is
because it didn't fulfill the condition. The long ths argument points to will because it didn't fulfill the condition. The long ths argument points to will
get a zero stored if the condition instead was met. (Added in 7.19.4) get a zero stored if the condition instead was met. (Added in 7.19.4)
.IP CURLINFO_RTSP_SESSION_ID
Pass a pointer to a char pointer to receive a pointer to a string holding the
most recent RTSP Session ID.
Applications wishing to resume an RTSP session on another connection should
retreive this info before closing the active connection.
.IP CURLINFO_RTSP_CLIENT_CSEQ
Pass a pointer to a long to receive the next CSeq that will be used by the
application.
.IP CURLINFO_RTSP_SERVER_CSEQ
Pass a pointer to a long to receive the next server CSeq that will be expected
by the application.
\fI(NOTE: listening for server initiated requests is currently
unimplemented).\fP
Applications wishing to resume an RTSP session on another connection should
retreive this info before closing the active connection.
.IP CURLINFO_RTSP_CSEQ_RECV
Pass a pointer to a long to receive the most recently received CSeq from the
server. If your application encounters a \fICURLE_RTSP_CSEQ_ERROR\fP then you
may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this value.
.SH TIMES .SH TIMES
.nf .nf
An overview of the six time values available from curl_easy_getinfo() An overview of the six time values available from curl_easy_getinfo()

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -21,7 +21,7 @@
.\" * $Id$ .\" * $Id$
.\" ************************************************************************** .\" **************************************************************************
.\" .\"
.TH curl_easy_setopt 3 "11 Dec 2008" "libcurl 7.19.3" "libcurl Manual" .TH curl_easy_setopt 3 "1 Jan 2010" "libcurl 7.20.0" "libcurl Manual"
.SH NAME .SH NAME
curl_easy_setopt \- set options for a curl easy handle curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS .SH SYNOPSIS
@@ -49,8 +49,8 @@ thus the string storage associated to the pointer argument may be overwritten
after curl_easy_setopt() returns. Exceptions to this rule are described in after curl_easy_setopt() returns. Exceptions to this rule are described in
the option details below. the option details below.
NOTE: before 7.17.0 strings were not copied. Instead the user was forced keep Before version 7.17.0, strings were not copied. Instead the user was forced
them available until libcurl no longer needed them. keep them available until libcurl no longer needed them.
The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
\fIcurl_easy_duphandle(3)\fP call. \fIcurl_easy_duphandle(3)\fP call.
@@ -347,9 +347,9 @@ This function will get called on all new connections made to a server, during
the SSL negotiation. The SSL_CTX pointer will be a new one every time. the SSL negotiation. The SSL_CTX pointer will be a new one every time.
To use this properly, a non-trivial amount of knowledge of the openssl To use this properly, a non-trivial amount of knowledge of the openssl
libraries is necessary. For example, using this function allows you to use openssl libraries is necessary. For example, using this function allows you to use
callbacks to add additional validation code for certificates, and even to openssl callbacks to add additional validation code for certificates, and even
change the actual URI of an HTTPS request (example used in the lib509 test to change the actual URI of an HTTPS request (example used in the lib509 test
case). See also the example section for a replacement of the key, certificate case). See also the example section for a replacement of the key, certificate
and trust file settings. and trust file settings.
.IP CURLOPT_SSL_CTX_DATA .IP CURLOPT_SSL_CTX_DATA
@@ -401,6 +401,30 @@ follows:
You will need to override these definitions if they are different on your You will need to override these definitions if they are different on your
system. system.
.IP CURLOPT_INTERLEAVEFUNCTION
Function pointer that should match the following prototype: \fIsize_t
function( void *ptr, size_t size, size_t nmemb, void *stream)\fP. This
function gets called by libcurl as soon as it has received interleaved RTP
data. This function gets called for each $ block and therefore contains
exactly one upper-layer protocol unit (e.g. one RTP packet). Curl writes the
interleaved header as well as the included data for each call. The first byte
is always an ASCII dollar sign. The dollar sign is followed by a one byte
channel identifier and then a 2 byte integer length in network byte order. See
\fIRFC 2326 Section 10.12\fP for more information on how RTP interleaving
behaves. If unset or set to NULL, curl will use the default write function.
Interleaved RTP poses some challeneges for the client application. Since the
stream data is sharing the RTSP control connection, it is critical to service
the RTP in a timely fashion. If the RTP data is not handled quickly,
subsequent response processing may become unreasonably delayed and the
connection may close. The application may use \fICURL_RTSPREQ_RECEIVE\fP to
service RTP data when no requests are desired. If the application makes a
request, (e.g. \fICURL_RTSPREQ_PAUSE\fP) then the response handler will
process any pending RTP data before marking the request as finished. (Added
in 7.20.0)
.IP CURLOPT_INTERLEAVEDATA
This is the stream that will be passed to \fICURLOPT_INTERLEAVEFUNCTION\fP when
interleaved RTP data is received. (Added in 7.20.0)
.SH ERROR OPTIONS .SH ERROR OPTIONS
.IP CURLOPT_ERRORBUFFER .IP CURLOPT_ERRORBUFFER
Pass a char * to a buffer that the libcurl may store human readable error Pass a char * to a buffer that the libcurl may store human readable error
@@ -449,6 +473,9 @@ on which protocols are supported.
The string given to CURLOPT_URL must be url-encoded and follow RFC 2396 The string given to CURLOPT_URL must be url-encoded and follow RFC 2396
(http://curl.haxx.se/rfc/rfc2396.txt). (http://curl.haxx.se/rfc/rfc2396.txt).
Starting with version 7.20.0, the fragment part of the URI will not be send as
part of the path, which was the case previously.
\fICURLOPT_URL\fP is the only option that \fBmust\fP be set before \fICURLOPT_URL\fP is the only option that \fBmust\fP be set before
\fIcurl_easy_perform(3)\fP is called. \fIcurl_easy_perform(3)\fP is called.
@@ -537,23 +564,23 @@ name.
Pass a long. This sets the local port number of the socket used for Pass a long. This sets the local port number of the socket used for
connection. This can be used in combination with \fICURLOPT_INTERFACE\fP and connection. This can be used in combination with \fICURLOPT_INTERFACE\fP and
you are recommended to use \fICURLOPT_LOCALPORTRANGE\fP as well when this is you are recommended to use \fICURLOPT_LOCALPORTRANGE\fP as well when this is
set. Note that the only valid port numbers are 1 - 65535. (Added in 7.15.2) set. Valid port numbers are 1 - 65535. (Added in 7.15.2)
.IP CURLOPT_LOCALPORTRANGE .IP CURLOPT_LOCALPORTRANGE
Pass a long. This is the number of attempts libcurl should make to find a Pass a long. This is the number of attempts libcurl should make to find a
working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP
and adds one to the number for each retry. Setting this to 1 or below will and adds one to the number for each retry. Setting this to 1 or below will
make libcurl do only one try for the exact port number. Note that port numbers make libcurl do only one try for the exact port number. Port numbers by nature
by nature are scarce resources that will be busy at times so setting this are scarce resources that will be busy at times so setting this value to
value to something too low might cause unnecessary connection setup something too low might cause unnecessary connection setup failures. (Added in
failures. (Added in 7.15.2) 7.15.2)
.IP CURLOPT_DNS_CACHE_TIMEOUT .IP CURLOPT_DNS_CACHE_TIMEOUT
Pass a long, this sets the timeout in seconds. Name resolves will be kept in Pass a long, this sets the timeout in seconds. Name resolves will be kept in
memory for this number of seconds. Set to zero to completely disable memory for this number of seconds. Set to zero to completely disable
caching, or set to -1 to make the cached entries remain forever. By default, caching, or set to -1 to make the cached entries remain forever. By default,
libcurl caches this info for 60 seconds. libcurl caches this info for 60 seconds.
NOTE: the name resolve functions of various libc implementations don't re-read The name resolve functions of various libc implementations don't re-read name
name server information unless explicitly told so (for example, by calling server information unless explicitly told so (for example, by calling
\fIres_init(3)\fP). This may cause libcurl to keep using the older server even \fIres_init(3)\fP). This may cause libcurl to keep using the older server even
if DHCP has updated the server info, and this may look like a DNS cache issue if DHCP has updated the server info, and this may look like a DNS cache issue
to the casual libcurl-app user. to the casual libcurl-app user.
@@ -674,12 +701,12 @@ Pass a char * as parameter, which should be pointing to the zero terminated
user name to use for the transfer while connecting to Proxy. user name to use for the transfer while connecting to Proxy.
The CURLOPT_PROXYUSERNAME option should be used in same way as the The CURLOPT_PROXYUSERNAME option should be used in same way as the
\fICURLOPT_PROXYUSERPWD\fP is used. In comparison to \fICURLOPT_PROXYUSERPWD\fP \fICURLOPT_PROXYUSERPWD\fP is used. In comparison to
the CURLOPT_PROXYUSERNAME allows the username to contain a colon, \fICURLOPT_PROXYUSERPWD\fP the CURLOPT_PROXYUSERNAME allows the username to
like in the following example: "sip:user@example.com". contain a colon, like in the following example: "sip:user@example.com". The
Note the CURLOPT_PROXYUSERNAME option is an alternative way to set the user name CURLOPT_PROXYUSERNAME option is an alternative way to set the user name while
while connecting to Proxy. There is no meaning to use it together connecting to Proxy. There is no meaning to use it together with the
with the \fICURLOPT_PROXYUSERPWD\fP option. \fICURLOPT_PROXYUSERPWD\fP option.
In order to specify the password to be used in conjunction with the user name In order to specify the password to be used in conjunction with the user name
use the \fICURLOPT_PROXYPASSWORD\fP option. (Added in 7.19.1) use the \fICURLOPT_PROXYPASSWORD\fP option. (Added in 7.19.1)
@@ -736,8 +763,8 @@ it finds suitable. libcurl will automatically select the one it finds most
secure. secure.
.IP CURLAUTH_ANYSAFE .IP CURLAUTH_ANYSAFE
This is a convenience macro that sets all bits except Basic and thus makes This is a convenience macro that sets all bits except Basic and thus makes
libcurl pick any it finds suitable. libcurl will automatically select the one it libcurl pick any it finds suitable. libcurl will automatically select the one
finds most secure. it finds most secure.
.RE .RE
.IP CURLOPT_PROXYAUTH .IP CURLOPT_PROXYAUTH
Pass a long as parameter, which is set to a bitmask, to tell libcurl which Pass a long as parameter, which is set to a bitmask, to tell libcurl which
@@ -775,7 +802,7 @@ and follow new Location: headers all the way until no more such headers are
returned. \fICURLOPT_MAXREDIRS\fP can be used to limit the number of redirects returned. \fICURLOPT_MAXREDIRS\fP can be used to limit the number of redirects
libcurl will follow. libcurl will follow.
NOTE: since 7.19.4, libcurl can limit to what protocols it will automatically Since 7.19.4, libcurl can limit what protocols it will automatically
follow. The accepted protocols are set with \fICURLOPT_REDIR_PROTOCOLS\fP and follow. The accepted protocols are set with \fICURLOPT_REDIR_PROTOCOLS\fP and
it excludes the FILE protocol by default. it excludes the FILE protocol by default.
.IP CURLOPT_UNRESTRICTED_AUTH .IP CURLOPT_UNRESTRICTED_AUTH
@@ -851,7 +878,7 @@ re-used handle, you must explicitly set the new request type using
Pass a void * as parameter, which should be the full data to post in an HTTP Pass a void * as parameter, which should be the full data to post in an HTTP
POST operation. You must make sure that the data is formatted the way you want POST operation. You must make sure that the data is formatted the way you want
the server to receive it. libcurl will not convert or encode it for you. Most the server to receive it. libcurl will not convert or encode it for you. Most
web servers will assume this data to be url-encoded. Take note. web servers will assume this data to be url-encoded.
The pointed data are NOT copied by the library: as a consequence, they must The pointed data are NOT copied by the library: as a consequence, they must
be preserved by the calling application until the transfer finishes. be preserved by the calling application until the transfer finishes.
@@ -970,9 +997,9 @@ option and thus you need to concatenate them all in one single string. Set
multiple cookies in one string like this: "name1=content1; name2=content2;" multiple cookies in one string like this: "name1=content1; name2=content2;"
etc. etc.
Note that this option sets the cookie header explictly in the outgoing This option sets the cookie header explictly in the outgoing request(s). If
request(s). If multiple requests are done due to authentication, followed multiple requests are done due to authentication, followed redirections or
redirections or similar, they will all get this cookie passed on. similar, they will all get this cookie passed on.
Using this option multiple times will only make the latest string override the Using this option multiple times will only make the latest string override the
previous ones. previous ones.
@@ -1045,16 +1072,29 @@ progress, and will simply stop the download when the server ends the
connection. (added in 7.14.1) connection. (added in 7.14.1)
.IP CURLOPT_HTTP_CONTENT_DECODING .IP CURLOPT_HTTP_CONTENT_DECODING
Pass a long to tell libcurl how to act on content decoding. If set to zero, Pass a long to tell libcurl how to act on content decoding. If set to zero,
content decoding will be disabled. If set to 1 it is enabled. Note however content decoding will be disabled. If set to 1 it is enabled. Libcurl has no
that libcurl has no default content decoding but requires you to use default content decoding but requires you to use \fICURLOPT_ENCODING\fP for
\fICURLOPT_ENCODING\fP for that. (added in 7.16.2) that. (added in 7.16.2)
.IP CURLOPT_HTTP_TRANSFER_DECODING .IP CURLOPT_HTTP_TRANSFER_DECODING
Pass a long to tell libcurl how to act on transfer decoding. If set to zero, Pass a long to tell libcurl how to act on transfer decoding. If set to zero,
transfer decoding will be disabled, if set to 1 it is enabled transfer decoding will be disabled, if set to 1 it is enabled
(default). libcurl does chunked transfer decoding by default unless this (default). libcurl does chunked transfer decoding by default unless this
option is set to zero. (added in 7.16.2) option is set to zero. (added in 7.16.2)
.SH SMTP OPTIONS
.IP CURLOPT_MAIL_FROM
Pass a pointer to a zero terminated string as parameter. It will be used to
specify the sender address in a mail when sending an SMTP mail with libcurl.
(Added in 7.20.0)
.IP CURLOPT_MAIL_RCPT
Pass a pointer to a linked list of recipients to pass to the server in your
SMTP mail request. The linked list should be a fully valid list of \fBstruct
curl_slist\fP structs properly filled in. Use \fIcurl_slist_append(3)\fP to
create the list and \fIcurl_slist_free_all(3)\fP to clean up an entire list.
(Added in 7.20.0)
.SH TFTP OPTIONS .SH TFTP OPTIONS
.IP CURLOPT_TFTPBLKSIZE .IP CURLOPT_TFTP_BLKSIZE
Specify block size to use for TFTP data transmission. Valid range as per RFC Specify block size to use for TFTP data transmission. Valid range as per RFC
2348 is 8-65464 bytes. The default of 512 bytes will be used if this option is 2348 is 8-65464 bytes. The default of 512 bytes will be used if this option is
not specified. The specified block size will only be used pending support by not specified. The specified block size will only be used pending support by
@@ -1147,6 +1187,11 @@ means that it will first attempt to use EPSV before using PASV, but if you
pass zero to this option, it will not try using EPSV, only plain PASV. pass zero to this option, it will not try using EPSV, only plain PASV.
If the server is an IPv6 host, this option will have no effect as of 7.12.3. If the server is an IPv6 host, this option will have no effect as of 7.12.3.
.IP CURLOPT_FTP_USE_PRET
Pass a long. If the value is 1, it tells curl to send a PRET command before
PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard
command for directory listings as well as up and downloads in PASV mode. Has
no effect when using the active FTP transfers mode. (Added in 7.20.0)
.IP CURLOPT_FTP_CREATE_MISSING_DIRS .IP CURLOPT_FTP_CREATE_MISSING_DIRS
Pass a long. If the value is 1, curl will attempt to create any remote Pass a long. If the value is 1, curl will attempt to create any remote
directory that it fails to CWD into. CWD is the command that changes working directory that it fails to CWD into. CWD is the command that changes working
@@ -1254,6 +1299,107 @@ file \&"normally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'. compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE .RE
(Added in 7.15.1) (Added in 7.15.1)
.SH RTSP OPTIONS
.IP CURLOPT_RTSP_REQUEST
Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP
enum values. Unless noted otherwise, commands require the Session ID to be
initialized. (Added in 7.20.0)
.RS
.IP CURL_RTSPREQ_OPTIONS
Used to retrieve the available methods of the server. The application is
responsbile for parsing and obeying the response. \fB(The session ID is not
needed for this method.)\fP (Added in 7.20.0)
.IP CURL_RTSPREQ_DESCRIBE
Used to get the low level description of a stream. The application should note
what formats it understands in the \fI'Accept:'\fP header. Unless set
manually, libcurl will automatically fill in \fI'Accept:
application/sdp'\fP. Time-condition headers will be added to Describe requests
if the \fICURLOPT_TIMECONDITION\fP option is active. \fB(The session ID is not
needed for this method)\fP (Added in 7.20.0)
.IP CURL_RTSPREQ_ANNOUNCE
When sent by a client, this method changes the description of the session. For
example, if a client is using the server to record a meeting, the client can
use Announce to inform the server of all the meta-information about the
session. ANNOUNCE acts like an HTTP PUT or POST just like
\fICURL_RTSPREQ_SET_PARAMETER\fP (Added in 7.20.0)
.IP CURL_RTSPREQ_SETUP
Setup is used to initialize the transport layer for the session. The
application must set the desired Transport options for a session by using the
\fICURLOPT_RTSP_TRANSPORT\fP option prior to calling setup. If no session ID
is currently set with \fICURLOPT_RTSP_SESSION_ID\fP, libcurl will extract and
use the session ID in the response to this request. \fB(The session ID is not
needed for this method).\fP (Added in 7.20.0)
.IP CURL_RTSPREQ_PLAY
Send a Play command to the server. Use the \fICURLOPT_RANGE\fP option to
modify the playback time (e.g. 'npt=10-15'). (Added in 7.20.0)
.IP CURL_RTSPREQ_PAUSE
Send a Pause command to the server. Use the \fICURLOPT_RANGE\fP option with a
single value to indicate when the stream should be halted. (e.g. npt='25')
(Added in 7.20.0)
.IP CURL_RTSPREQ_TEARDOWN
This command terminates an RTSP session. Simply closing a connection does not
terminate the RTSP session since it is valid to control an RTSP session over
different connections. (Added in 7.20.0)
.IP CURL_RTSPREQ_GET_PARAMETER
Retrieve a parameter from the server. By default, libcurl will automatically
include an \fIAccept: text/parameters\fP header unless a custom one is set.
Applications wishing to send a heartbeat message (e.g. in the presence of a
server-specified timeout) should send use an empty GET_PARAMETER request.
(Added in 7.20.0)
.IP CURL_RTSPREQ_SET_PARAMETER
Set a parameter on the server. By default, libcurl will automatically include
a \fIContent-Type: text/parameters\fP header unless a custom one is set. The
interaction with SET_PARAMTER is much like an HTTP PUT or POST. An application
may either use \fICURLOPT_UPLOAD\fP with \fICURLOPT_READDATA\fP like an HTTP
PUT, or it may use \fICURLOPT_POSTFIELDS\fP like an HTTP POST. No chunked
transfers are allowed, so the application must set the
\fICURLOPT_INFILESIZE\fP in the former and \fICURLOPT_POSTFIELDSIZE\fP in the
latter. Also, there is no use of multi-part POSTs within RTSP. (Added in
7.20.0)
.IP CURL_RTSPREQ_RECORD
Used to tell the server to record a session. Use the \fICURLOPT_RANGE\fP
option to modify the record time. (Added in 7.20.0)
.IP CURL_RTSPREQ_RECEIVE
This is a special request because it does not send any data to the server. The
application may call this function in order to receive interleaved RTP
data. It will return after processing one read buffer of data in order to give
the application a chance to run. (Added in 7.20.0)
.RE
.IP CURLOPT_RTSP_SESSION_ID
Pass a char * as a parameter to set the value of the current RTSP Session ID
for the handle. Useful for resuming an in-progress session. Once this value is
set to any non-NULL value, libcurl will return \fICURLE_RTSP_SESSION_ERROR\fP
if ID received from the server does not match. If unset (or set to NULL),
libcurl will automatically set the ID the first time the server sets it in a
response. (Added in 7.20.0)
.IP CURLOPT_RTSP_STREAM_URI
Set the stream URI to operate on by passing a char * . For example, a single
session may be controlling \fIrtsp://foo/twister/audio\fP and
\fIrtsp://foo/twister/video\fP and the application can switch to the
appropriate stream using this option. If unset, libcurl will default to
operating on generic server options by passing '*' in the place of the RTSP
Stream URI. This option is distinct from \fICURLOPT_URL\fP. When working with
RTSP, the \fICURLOPT_STREAM_URI\fP indicates what URL to send to the server in
the request header while the \fICURLOPT_URL\fP indicates where to make the
connection to. (e.g. the \fICURLOPT_URL\fP for the above examples might be
set to \fIrtsp://foo/twister\fP (Added in 7.20.0)
.IP CURLOPT_RTSP_TRANSPORT
Pass a char * to tell libcurl what to pass for the Transport: header for this
RTSP session. This is mainly a convenience method to avoid needing to set a
custom Transport: header for every SETUP request. The application must set a
Transport: header before issuing a SETUP request. (Added in 7.20.0)
.IP CURLOPT_RTSP_HEADER
This option is simply an alias for \fICURLOPT_HTTP_HEADER\fP. Use this to
replace the standard headers that RTSP and HTTP share. It is also valid to use
the shortcuts such as \fICURLOPT_USERAGENT\fP. (Added in 7.20.0)
.IP CURLOPT_RTSP_CLIENT_CSEQ
Manually set the the CSEQ number to issue for the next RTSP request. Useful if
the application is resuming a previously broken connection. The CSEQ will
increment from this new number henceforth. (Added in 7.20.0)
.IP CURLOPT_RTSP_SERVER_CSEQ
Manually set the CSEQ number to expect for the next RTSP Server->Client
request. At the moment, this feature (listening for Server requests) is
unimplemented. (Added in 7.20.0)
.SH PROTOCOL OPTIONS .SH PROTOCOL OPTIONS
.IP CURLOPT_TRANSFERTEXT .IP CURLOPT_TRANSFERTEXT
A parameter set to 1 tells the library to use ASCII mode for FTP transfers, A parameter set to 1 tells the library to use ASCII mode for FTP transfers,
@@ -1280,9 +1426,14 @@ want. It should be in the format "X-Y", where X or Y may be left out. HTTP
transfers also support several intervals, separated with commas as in transfers also support several intervals, separated with commas as in
\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP \fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
server to send the response document in pieces (using standard MIME separation server to send the response document in pieces (using standard MIME separation
techniques). Pass a NULL to this option to disable the use of ranges. techniques). For RTSP, the formatting of a range should follow RFC 2326
Section 12.29. For RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges
should be given in npt, utc, or smpte formats.
Ranges work on HTTP, FTP and FILE (since 7.18.0) transfers only. Pass a NULL to this option to disable the use of ranges.
Ranges work on HTTP, FTP, FILE (since 7.18.0), and RTSP (since 7.20.0)
transfers only.
.IP CURLOPT_RESUME_FROM .IP CURLOPT_RESUME_FROM
Pass a long as parameter. It contains the offset in number of bytes that you Pass a long as parameter. It contains the offset in number of bytes that you
want the transfer to start from. Set this option to 0 to make the transfer want the transfer to start from. Set this option to 0 to make the transfer
@@ -1341,8 +1492,8 @@ as a long. See also \fICURLOPT_INFILESIZE_LARGE\fP.
For uploading using SCP, this option or \fICURLOPT_INFILESIZE_LARGE\fP is For uploading using SCP, this option or \fICURLOPT_INFILESIZE_LARGE\fP is
mandatory. mandatory.
Note that this option does not limit how much data libcurl will actually send, This option does not limit how much data libcurl will actually send, as that
as that is controlled entirely by what the read callback returns. is controlled entirely by what the read callback returns.
.IP CURLOPT_INFILESIZE_LARGE .IP CURLOPT_INFILESIZE_LARGE
When uploading a file to a remote site, this option should be used to tell When uploading a file to a remote site, this option should be used to tell
libcurl what the expected size of the infile is. This value should be passed libcurl what the expected size of the infile is. This value should be passed
@@ -1350,8 +1501,8 @@ as a curl_off_t. (Added in 7.11.0)
For uploading using SCP, this option or \fICURLOPT_INFILESIZE\fP is mandatory. For uploading using SCP, this option or \fICURLOPT_INFILESIZE\fP is mandatory.
Note that this option does not limit how much data libcurl will actually send, This option does not limit how much data libcurl will actually send, as that
as that is controlled entirely by what the read callback returns. is controlled entirely by what the read callback returns.
.IP CURLOPT_UPLOAD .IP CURLOPT_UPLOAD
A parameter set to 1 tells the library to prepare for an upload. The A parameter set to 1 tells the library to prepare for an upload. The
\fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP or \fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP or
@@ -1387,7 +1538,8 @@ given limit. This concerns both FTP and HTTP transfers.
.IP CURLOPT_TIMECONDITION .IP CURLOPT_TIMECONDITION
Pass a long as parameter. This defines how the \fICURLOPT_TIMEVALUE\fP time Pass a long as parameter. This defines how the \fICURLOPT_TIMEVALUE\fP time
value is treated. You can set this parameter to \fICURL_TIMECOND_IFMODSINCE\fP value is treated. You can set this parameter to \fICURL_TIMECOND_IFMODSINCE\fP
or \fICURL_TIMECOND_IFUNMODSINCE\fP. This feature applies to HTTP and FTP. or \fICURL_TIMECOND_IFUNMODSINCE\fP. This feature applies to HTTP, FTP, and
RTSP.
The last modification time of a file is not always known and in such instances The last modification time of a file is not always known and in such instances
this feature will have no effect even if the given time condition would not this feature will have no effect even if the given time condition would not
@@ -1447,9 +1599,9 @@ If you already have performed transfers with this curl handle, setting a
smaller MAXCONNECTS than before may cause open connections to get closed smaller MAXCONNECTS than before may cause open connections to get closed
unnecessarily. unnecessarily.
Note that if you add this easy handle to a multi handle, this setting is not If you add this easy handle to a multi handle, this setting is not
acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and the
the \fICURLMOPT_MAXCONNECTS\fP option. \fICURLMOPT_MAXCONNECTS\fP option.
.IP CURLOPT_CLOSEPOLICY .IP CURLOPT_CLOSEPOLICY
(Obsolete) This option does nothing. (Obsolete) This option does nothing.
.IP CURLOPT_FRESH_CONNECT .IP CURLOPT_FRESH_CONNECT
@@ -1549,10 +1701,9 @@ operations.
If the crypto device cannot be set, \fICURLE_SSL_ENGINE_SETFAILED\fP is If the crypto device cannot be set, \fICURLE_SSL_ENGINE_SETFAILED\fP is
returned. returned.
Note that even though this option doesn't need any parameter, in some Even though this option doesn't need any parameter, in some configurations
configurations \fIcurl_easy_setopt\fP might be defined as a macro taking \fIcurl_easy_setopt\fP might be defined as a macro taking exactly three
exactly three arguments. Therefore, it's recommended to pass 1 as parameter to arguments. Therefore, it's recommended to pass 1 as parameter to this option.
this option.
.IP CURLOPT_SSLVERSION .IP CURLOPT_SSLVERSION
Pass a long as parameter to control what version of SSL/TLS to attempt to use. Pass a long as parameter to control what version of SSL/TLS to attempt to use.
The available options are: The available options are:
@@ -1598,8 +1749,8 @@ combination with the \fICURLOPT_SSL_VERIFYPEER\fP option. If
\fICURLOPT_SSL_VERIFYPEER\fP is zero, \fICURLOPT_CAINFO\fP need not \fICURLOPT_SSL_VERIFYPEER\fP is zero, \fICURLOPT_CAINFO\fP need not
even indicate an accessible file. even indicate an accessible file.
Note that option is by default set to the system path where libcurl's cacert This option is by default set to the system path where libcurl's cacert bundle
bundle is assumed to be stored, as established at build time. is assumed to be stored, as established at build time.
When built against NSS, this is the directory that the NSS certificate When built against NSS, this is the directory that the NSS certificate
database resides in. database resides in.
@@ -1608,8 +1759,8 @@ Pass a char * to a zero terminated string naming a file holding a CA
certificate in PEM format. If the option is set, an additional check against certificate in PEM format. If the option is set, an additional check against
the peer certificate is performed to verify the issuer is indeed the one the peer certificate is performed to verify the issuer is indeed the one
associated with the certificate provided by the option. This additional check associated with the certificate provided by the option. This additional check
is useful in multi-level PKI where one needs to enforce that the peer certificate is is useful in multi-level PKI where one needs to enforce that the peer
from a specific branch of the tree. certificate is from a specific branch of the tree.
This option makes sense only when used in combination with the This option makes sense only when used in combination with the
\fICURLOPT_SSL_VERIFYPEER\fP option. Otherwise, the result of the check is not \fICURLOPT_SSL_VERIFYPEER\fP option. Otherwise, the result of the check is not
@@ -1644,8 +1795,8 @@ This option makes sense only when used in combination with the
A specific error code (CURLE_SSL_CRL_BADFILE) is defined with the option. It A specific error code (CURLE_SSL_CRL_BADFILE) is defined with the option. It
is returned when the SSL exchange fails because the CRL file cannot be loaded. is returned when the SSL exchange fails because the CRL file cannot be loaded.
Note that a failure in certificate verification due to a revocation information A failure in certificate verification due to a revocation information found in
found in the CRL does not trigger this specific error. (Added in 7.19.0) the CRL does not trigger this specific error. (Added in 7.19.0)
.IP CURLOPT_CERTINFO .IP CURLOPT_CERTINFO
Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
this enabled, libcurl (if built with OpenSSL) will extract lots of information this enabled, libcurl (if built with OpenSSL) will extract lots of information
@@ -1712,7 +1863,7 @@ You'll find more details about the NSS cipher lists on this URL:
.IP CURLOPT_SSL_SESSIONID_CACHE .IP CURLOPT_SSL_SESSIONID_CACHE
Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set
this to 1 to enable it. By default all transfers are done using the this to 1 to enable it. By default all transfers are done using the
cache. Note that while nothing ever should get hurt by attempting to reuse SSL cache. While nothing ever should get hurt by attempting to reuse SSL
session-IDs, there seem to be broken SSL implementations in the wild that may session-IDs, there seem to be broken SSL implementations in the wild that may
require you to disable this in order for you to succeed. (Added in 7.16.0) require you to disable this in order for you to succeed. (Added in 7.16.0)
.IP CURLOPT_KRBLEVEL .IP CURLOPT_KRBLEVEL
@@ -1740,9 +1891,9 @@ libcurl defaults to using \fB~/.ssh/id_dsa.pub\fP.
(Added in 7.16.1) (Added in 7.16.1)
.IP CURLOPT_SSH_PRIVATE_KEYFILE .IP CURLOPT_SSH_PRIVATE_KEYFILE
Pass a char * pointing to a file name for your private key. If not used, Pass a char * pointing to a file name for your private key. If not used,
libcurl defaults to using \fB~/.ssh/id_dsa\fP. libcurl defaults to using \fB~/.ssh/id_dsa\fP. If the file is
If the file is password-protected, set the password with \fICURLOPT_KEYPASSWD\fP. password-protected, set the password with \fICURLOPT_KEYPASSWD\fP. (Added in
(Added in 7.16.1) 7.16.1)
.IP CURLOPT_SSH_KNOWNHOSTS .IP CURLOPT_SSH_KNOWNHOSTS
Pass a pointer to a zero terminated string holding the file name of the Pass a pointer to a zero terminated string holding the file name of the
known_host file to use. The known_hosts file should use the OpenSSH file known_host file to use. The known_hosts file should use the OpenSSH file
@@ -1761,9 +1912,9 @@ MUST return one of the following return codes to tell libcurl how to act:
.IP CURLKHSTAT_FINE_ADD_TO_FILE .IP CURLKHSTAT_FINE_ADD_TO_FILE
The host+key is accepted and libcurl will append it to the known_hosts file The host+key is accepted and libcurl will append it to the known_hosts file
before continuing with the connection. This will also add the host+key combo before continuing with the connection. This will also add the host+key combo
to the known_host pool kept in memory if it wasn't already present there. Note to the known_host pool kept in memory if it wasn't already present there. The
that the adding of data to the file is done by completely replacing the file adding of data to the file is done by completely replacing the file with a new
with a new copy, so the permissions of the file must allow this. copy, so the permissions of the file must allow this.
.IP CURLKHSTAT_FINE .IP CURLKHSTAT_FINE
The host+key is accepted libcurl will continue with the connection. This will The host+key is accepted libcurl will continue with the connection. This will
also add the host+key combo to the known_host pool kept in memory if it wasn't also add the host+key combo to the known_host pool kept in memory if it wasn't

View File

@@ -21,21 +21,22 @@ but be sure to FD_ZERO them before calling this function as
otherwise remove any others. The \fIcurl_multi_perform(3)\fP function should be otherwise remove any others. The \fIcurl_multi_perform(3)\fP function should be
called as soon as one of them is ready to be read from or written to. called as soon as one of them is ready to be read from or written to.
To be sure to have up-to-date results, you should call
\fIcurl_multi_perform\fP until it does not return CURLM_CALL_MULTI_PERFORM
prior to calling \fIcurl_multi_fdset\fP. This will make sure that libcurl has
updated the handles' socket states.
If no file descriptors are set by libcurl, \fImax_fd\fP will contain -1 when If no file descriptors are set by libcurl, \fImax_fd\fP will contain -1 when
this function returns. Otherwise it will contain the higher descriptor number this function returns. Otherwise it will contain the higher descriptor number
libcurl set. libcurl set.
You should also be aware that when doing select(), you should consider using a When doing select(), you should use \fBcurl_multi_timeout\fP to figure out how
rather small (single-digit number of seconds) timeout and call long to wait for action. Call \fIcurl_multi_perform\fP even if no activity has
\fIcurl_multi_perform\fP regularly - even if no activity has been seen on the been seen on the fd_sets after the timeout expires as otherwise internal
fd_sets - as otherwise libcurl-internal retries and timeouts may not work as retries and timeouts may not work as you'd think and want.
you'd think and want.
Starting with libcurl 7.16.0, you should use \fBcurl_multi_timeout\fP to
figure out how long to wait for action.
.SH RETURN VALUE .SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code. See CURLMcode type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP \fIlibcurl-errors(3)\fP
.SH "SEE ALSO" .SH "SEE ALSO"
.BR curl_multi_cleanup "(3)," curl_multi_init "(3), " .BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
.BR curl_multi_timeout "(3) " .BR curl_multi_timeout "(3), " curl_multi_perform "(3) "

View File

@@ -22,25 +22,26 @@ changed from the previous call (or is less than the amount of easy handles
you've added to the multi handle), you know that there is one or more you've added to the multi handle), you know that there is one or more
transfers less "running". You can then call \fIcurl_multi_info_read(3)\fP to transfers less "running". You can then call \fIcurl_multi_info_read(3)\fP to
get information about each individual completed transfer, and that returned get information about each individual completed transfer, and that returned
info includes CURLcode and more. info includes CURLcode and more. If an added handle fails very quickly, it may
never be counted as a running_handle.
When \fIrunning_handles\fP is set to zero (0) on the return of this function, When \fIrunning_handles\fP is set to zero (0) on the return of this function,
there is no longer any transfers in progress. there is no longer any transfers in progress.
.SH "RETURN VALUE" .SH "RETURN VALUE"
CURLMcode type, general libcurl multi interface error code. CURLMcode type, general libcurl multi interface error code.
If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means that you Before version 7.20.0: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this
should call \fIcurl_multi_perform\fP again, before you select() on more basically means that you should call \fIcurl_multi_perform\fP again, before
actions. You don't have to do it immediately, but the return code means that you select() on more actions. You don't have to do it immediately, but the
libcurl may have more data available to return or that there may be more data return code means that libcurl may have more data available to return or that
to send off before it is "satisfied". Do note that \fIcurl_multi_perform(3)\fP there may be more data to send off before it is "satisfied". Do note that
will return \fICURLM_CALL_MULTI_PERFORM\fP only when it wants to be called \fIcurl_multi_perform(3)\fP will return \fICURLM_CALL_MULTI_PERFORM\fP only
again \fBimmediately\fP. When things are fine and there is nothing immediate when it wants to be called again \fBimmediately\fP. When things are fine and
it wants done, it'll return \fICURLM_OK\fP and you need to wait for \&"action" there is nothing immediate it wants done, it'll return \fICURLM_OK\fP and you
and then call this function again. need to wait for \&"action" and then call this function again.
NOTE that this only returns errors etc regarding the whole multi stack. Problems This function only returns errors etc regarding the whole multi stack.
still might have occurred on individual transfers even when this Problems still might have occurred on individual transfers even when this
function returns \fICURLM_OK\fP. function returns \fICURLM_OK\fP.
.SH "TYPICAL USAGE" .SH "TYPICAL USAGE"
Most applications will use \fIcurl_multi_fdset(3)\fP to get the multi_handle's Most applications will use \fIcurl_multi_fdset(3)\fP to get the multi_handle's

View File

@@ -22,8 +22,8 @@ CURL_CSELECT_ERR. When the events on a socket are unknown, pass 0 instead, and
libcurl will test the descriptor internally. libcurl will test the descriptor internally.
At return, the integer \fBrunning_handles\fP points to will contain the number At return, the integer \fBrunning_handles\fP points to will contain the number
of still running easy handles within the multi handle. When this number of running easy handles within the multi handle. When this number reaches
reaches zero, all transfers are complete/done. Note that when you call zero, all transfers are complete/done. When you call
\fIcurl_multi_socket_action(3)\fP on a specific socket and the counter \fIcurl_multi_socket_action(3)\fP on a specific socket and the counter
decreases by one, it DOES NOT necessarily mean that this exact socket/transfer decreases by one, it DOES NOT necessarily mean that this exact socket/transfer
is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out
@@ -89,19 +89,16 @@ The \fIuserp\fP argument is a private pointer you have previously set with
.SH "RETURN VALUE" .SH "RETURN VALUE"
CURLMcode type, general libcurl multi interface error code. CURLMcode type, general libcurl multi interface error code.
Legacy: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means Before version 7.20.0: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this
that you should call \fIcurl_multi_socket_action(3)\fP again, before you wait basically means that you should call \fIcurl_multi_socket_action(3)\fP again
for more actions on libcurl's sockets. You don't have to do it immediately, before you wait for more actions on libcurl's sockets. You don't have to do it
but the return code means that libcurl may have more data available to return immediately, but the return code means that libcurl may have more data
or that there may be more data to send off before it is "satisfied". available to return or that there may be more data to send off before it is
"satisfied".
In modern libcurls, \fICURLM_CALL_MULTI_PERFORM\fP or The return code from this function is for the whole multi stack. Problems
\fICURLM_CALL_MULTI_SOKCET\fP should not be returned and no application needs still might have occurred on individual transfers even when one of these
to care about them. functions return OK.
NOTE that the return code is for the whole multi stack. Problems still might have
occurred on individual transfers even when one of these functions
return OK.
.SH "TYPICAL USAGE" .SH "TYPICAL USAGE"
1. Create a multi handle 1. Create a multi handle

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -21,7 +21,7 @@
.\" * $Id$ .\" * $Id$
.\" ************************************************************************** .\" **************************************************************************
.\" .\"
.TH libcurl-errors 3 "8 Jun 2008" "libcurl 7.19.0" "libcurl errors" .TH libcurl-errors 3 "1 Jan 2010" "libcurl 7.20.0" "libcurl errors"
.SH NAME .SH NAME
libcurl-errors \- error codes in libcurl libcurl-errors \- error codes in libcurl
.SH DESCRIPTION .SH DESCRIPTION
@@ -70,6 +70,11 @@ either a PASV or a EPSV command. The server is flawed.
.IP "CURLE_FTP_WEIRD_227_FORMAT (14)" .IP "CURLE_FTP_WEIRD_227_FORMAT (14)"
FTP servers return a 227-line as a response to a PASV command. If libcurl FTP servers return a 227-line as a response to a PASV command. If libcurl
fails to parse that line, this return code is passed back. fails to parse that line, this return code is passed back.
.IP "CURLE_FTP_PRET_FAILED (84)"
The FTP server does not understand the PRET command at all or does not support
the given argument. Be careful when using \fICURLOPT_CUSTOMREQUEST\fP, a
custom LIST command will be sent with PRET CMD before PASV as well. (Added in
7.20.0)
.IP "CURLE_FTP_CANT_GET_HOST (15)" .IP "CURLE_FTP_CANT_GET_HOST (15)"
An internal failure to lookup the host used for the new connection. An internal failure to lookup the host used for the new connection.
.IP "CURLE_FTP_COULDNT_SET_TYPE (17)" .IP "CURLE_FTP_COULDNT_SET_TYPE (17)"
@@ -87,15 +92,13 @@ returned an error code that was 400 or higher (for FTP) or otherwise
indicated unsuccessful completion of the command. indicated unsuccessful completion of the command.
.IP "CURLE_HTTP_RETURNED_ERROR (22)" .IP "CURLE_HTTP_RETURNED_ERROR (22)"
This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server
returns an error code that is >= 400. (This error code was formerly known as returns an error code that is >= 400.
CURLE_HTTP_NOT_FOUND.)
.IP "CURLE_WRITE_ERROR (23)" .IP "CURLE_WRITE_ERROR (23)"
An error occurred when writing received data to a local file, or an error was An error occurred when writing received data to a local file, or an error was
returned to libcurl from a write callback. returned to libcurl from a write callback.
.IP "CURLE_UPLOAD_FAILED (25)" .IP "CURLE_UPLOAD_FAILED (25)"
Failed starting the upload. For FTP, the server typically denied the STOR Failed starting the upload. For FTP, the server typically denied the STOR
command. The error buffer usually contains the server's explanation for this. command. The error buffer usually contains the server's explanation for this.
(This error code was formerly known as CURLE_FTP_COULDNT_STOR_FILE.)
.IP "CURLE_READ_ERROR (26)" .IP "CURLE_READ_ERROR (26)"
There was a problem reading a local file or an error returned by the read There was a problem reading a local file or an error returned by the read
callback. callback.
@@ -120,8 +123,9 @@ A problem occurred somewhere in the SSL/TLS handshake. You really want the
error buffer and read the message there as it pinpoints the problem slightly error buffer and read the message there as it pinpoints the problem slightly
more. Could be certificates (file formats, paths, permissions), passwords, and more. Could be certificates (file formats, paths, permissions), passwords, and
others. others.
.IP "CURLE_FTP_BAD_DOWNLOAD_RESUME (36)" .IP "CURLE_BAD_DOWNLOAD_RESUME (36)"
Attempting FTP resume beyond file size. The download could not be resumed because the specified offset was out of the
file boundary.
.IP "CURLE_FILE_COULDNT_READ_FILE (37)" .IP "CURLE_FILE_COULDNT_READ_FILE (37)"
A file given with FILE:// couldn't be opened. Most likely because the file A file given with FILE:// couldn't be opened. Most likely because the file
path doesn't identify an existing file. Did you check file permissions? path doesn't identify an existing file. Did you check file permissions?
@@ -138,8 +142,7 @@ Internal error. A function was called with a bad parameter.
.IP "CURLE_INTERFACE_FAILED (45)" .IP "CURLE_INTERFACE_FAILED (45)"
Interface error. A specified outgoing interface could not be used. Set which Interface error. A specified outgoing interface could not be used. Set which
interface to use for outgoing connections' source IP address with interface to use for outgoing connections' source IP address with
CURLOPT_INTERFACE. (This error code was formerly known as CURLOPT_INTERFACE.
CURLE_HTTP_PORT_FAILED.)
.IP "CURLE_TOO_MANY_REDIRECTS (47)" .IP "CURLE_TOO_MANY_REDIRECTS (47)"
Too many redirects. When following redirects, libcurl hit the maximum amount. Too many redirects. When following redirects, libcurl hit the maximum amount.
Set your limit with CURLOPT_MAXREDIRS. Set your limit with CURLOPT_MAXREDIRS.

View File

@@ -134,6 +134,7 @@ the future, you should be aware of the following current restrictions:
.nf .nf
- Name resolves on non-windows unless c-ares is used - Name resolves on non-windows unless c-ares is used
- GnuTLS SSL connections - GnuTLS SSL connections
- NSS SSL connections
- Active FTP connections - Active FTP connections
- HTTP proxy CONNECT operations - HTTP proxy CONNECT operations
- SOCKS proxy handshakes - SOCKS proxy handshakes

View File

@@ -55,6 +55,10 @@ AC_DEFUN([LIBCURL_CHECK_CONFIG],
AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP]) AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP])
AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT]) AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT])
AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP]) AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP])
AH_TEMPLATE([LIBCURL_PROTOCOL_RTSP],[Defined if libcurl supports RTSP])
AH_TEMPLATE([LIBCURL_PROTOCOL_POP3],[Defined if libcurl supports POP3])
AH_TEMPLATE([LIBCURL_PROTOCOL_IMAP],[Defined if libcurl supports IMAP])
AH_TEMPLATE([LIBCURL_PROTOCOL_SMTP],[Defined if libcurl supports SMTP])
AC_ARG_WITH(libcurl, AC_ARG_WITH(libcurl,
AC_HELP_STRING([--with-libcurl=DIR],[look for the curl library in DIR]), AC_HELP_STRING([--with-libcurl=DIR],[look for the curl library in DIR]),
@@ -194,17 +198,23 @@ x=CURLOPT_VERBOSE;
# We don't have --protocols, so just assume that all # We don't have --protocols, so just assume that all
# protocols are available # protocols are available
_libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT" _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT TFTP
if test x$libcurl_feature_SSL = xyes ; then if test x$libcurl_feature_SSL = xyes ; then
_libcurl_protocols="$_libcurl_protocols HTTPS" _libcurl_protocols="$_libcurl_protocols HTTPS"
# FTPS wasn't standards-compliant until version # FTPS wasn't standards-compliant until version
# 7.11.0 # 7.11.0 (0x070b00 == 461568)
if test $_libcurl_version -ge 461568; then if test $_libcurl_version -ge 461568; then
_libcurl_protocols="$_libcurl_protocols FTPS" _libcurl_protocols="$_libcurl_protocols FTPS"
fi fi
fi fi
# RTSP, IMAP, POP3 and SMTP were added in
# 7.20.0 (0x071400 == 463872)
if test $_libcurl_version -ge 463872; then
_libcurl_protocols="$_libcurl_protocols RTSP IMAP POP3 SMTP"
fi
fi fi
for _libcurl_protocol in $_libcurl_protocols ; do for _libcurl_protocol in $_libcurl_protocols ; do

View File

@@ -37,7 +37,7 @@ CURLE_FAILED_INIT 7.1
CURLE_FILESIZE_EXCEEDED 7.10.8 CURLE_FILESIZE_EXCEEDED 7.10.8
CURLE_FILE_COULDNT_READ_FILE 7.1 CURLE_FILE_COULDNT_READ_FILE 7.1
CURLE_FTP_ACCESS_DENIED 7.1 CURLE_FTP_ACCESS_DENIED 7.1
CURLE_FTP_BAD_DOWNLOAD_RESUME 7.1 CURLE_FTP_BAD_DOWNLOAD_RESUME 7.1 7.1
CURLE_FTP_CANT_GET_HOST 7.1 CURLE_FTP_CANT_GET_HOST 7.1
CURLE_FTP_CANT_RECONNECT 7.1 7.17.0 CURLE_FTP_CANT_RECONNECT 7.1 7.17.0
CURLE_FTP_COULDNT_GET_SIZE 7.1 7.17.0 CURLE_FTP_COULDNT_GET_SIZE 7.1 7.17.0
@@ -47,7 +47,9 @@ CURLE_FTP_COULDNT_SET_BINARY 7.1 7.17.0
CURLE_FTP_COULDNT_SET_TYPE 7.17.0 CURLE_FTP_COULDNT_SET_TYPE 7.17.0
CURLE_FTP_COULDNT_STOR_FILE 7.1 CURLE_FTP_COULDNT_STOR_FILE 7.1
CURLE_FTP_COULDNT_USE_REST 7.1 CURLE_FTP_COULDNT_USE_REST 7.1
CURLE_FTP_PARTIAL_FILE 7.1 7.1
CURLE_FTP_PORT_FAILED 7.1 CURLE_FTP_PORT_FAILED 7.1
CURLE_FTP_PRET_FAILED 7.20.0
CURLE_FTP_QUOTE_ERROR 7.1 7.17.0 CURLE_FTP_QUOTE_ERROR 7.1 7.17.0
CURLE_FTP_SSL_FAILED - 7.17.0 CURLE_FTP_SSL_FAILED - 7.17.0
CURLE_FTP_USER_PASSWORD_INCORRECT 7.1 7.17.0 CURLE_FTP_USER_PASSWORD_INCORRECT 7.1 7.17.0
@@ -74,13 +76,15 @@ CURLE_OPERATION_TIMEDOUT 7.17.0
CURLE_OPERATION_TIMEOUTED 7.1 7.17.0 CURLE_OPERATION_TIMEOUTED 7.1 7.17.0
CURLE_OUT_OF_MEMORY 7.1 CURLE_OUT_OF_MEMORY 7.1
CURLE_PARTIAL_FILE 7.1 CURLE_PARTIAL_FILE 7.1
CURLE_PEER_FAILED_VERIFICATION - 7.17.1 CURLE_PEER_FAILED_VERIFICATION 7.17.1
CURLE_QUOTE_ERROR 7.17.0 CURLE_QUOTE_ERROR 7.17.0
CURLE_RANGE_ERROR 7.17.0 CURLE_RANGE_ERROR 7.17.0
CURLE_READ_ERROR 7.1 CURLE_READ_ERROR 7.1
CURLE_RECV_ERROR 7.13.0 CURLE_RECV_ERROR 7.13.0
CURLE_REMOTE_ACCESS_DENIED 7.17.0 CURLE_REMOTE_ACCESS_DENIED 7.17.0
CURLE_REMOTE_DISK_FULL 7.17.0 CURLE_REMOTE_DISK_FULL 7.17.0
CURLE_RTSP_CSEQ_ERROR 7.20.0
CURLE_RTSP_SESSION_ERROR 7.20.0
CURLE_SEND_ERROR 7.13.0 CURLE_SEND_ERROR 7.13.0
CURLE_SHARE_IN_USE - 7.17.0 CURLE_SHARE_IN_USE - 7.17.0
CURLE_SSH 7.16.1 CURLE_SSH 7.16.1
@@ -93,7 +97,7 @@ CURLE_SSL_ENGINE_INITFAILED 7.13.0
CURLE_SSL_ENGINE_NOTFOUND 7.9.3 CURLE_SSL_ENGINE_NOTFOUND 7.9.3
CURLE_SSL_ENGINE_SETFAILED 7.9.3 CURLE_SSL_ENGINE_SETFAILED 7.9.3
CURLE_SSL_ISSUER_ERROR 7.19.0 CURLE_SSL_ISSUER_ERROR 7.19.0
CURLE_SSL_PEER_CERTIFICATE 7.17.1 CURLE_SSL_PEER_CERTIFICATE - 7.17.1
CURLE_SSL_SHUTDOWN_FAILED 7.16.1 CURLE_SSL_SHUTDOWN_FAILED 7.16.1
CURLE_TELNET_OPTION_SYNTAX 7.7 CURLE_TELNET_OPTION_SYNTAX 7.7
CURLE_TFTP_DISKFULL 7.15.0 7.17.0 CURLE_TFTP_DISKFULL 7.15.0 7.17.0
@@ -231,7 +235,17 @@ CURLOPT_FTP_SSL 7.11.0 7.16.4
CURLOPT_FTP_SSL_CCC 7.16.1 CURLOPT_FTP_SSL_CCC 7.16.1
CURLOPT_FTP_USE_EPRT 7.10.5 CURLOPT_FTP_USE_EPRT 7.10.5
CURLOPT_FTP_USE_EPSV 7.9.2 CURLOPT_FTP_USE_EPSV 7.9.2
CURLOPT_FTP_USE_PRET 7.20.0
CURLOPT_RTSP_REQUEST 7.20.0
CURLOPT_RTSP_SESSION_ID 7.20.0
CURLOPT_RTSP_STREAM_URI 7.20.0
CURLOPT_RTSP_TRANSPORT 7.20.0
CURLOPT_RTSP_CLIENT_CSEQ 7.20.0
CURLOPT_RTSP_SERVER_CSEQ 7.20.0
CURLOPT_INTERLEAVEDATA 7.20.0
CURLOPT_INTERLEAVEFUNCTION 7.20.0
CURLOPT_HEADER 7.1 CURLOPT_HEADER 7.1
CURLOPT_HEADERDATA 7.10
CURLOPT_HEADERFUNCTION 7.7.2 CURLOPT_HEADERFUNCTION 7.7.2
CURLOPT_HTTP200ALIASES 7.10.3 CURLOPT_HTTP200ALIASES 7.10.3
CURLOPT_HTTPAUTH 7.10.6 CURLOPT_HTTPAUTH 7.10.6
@@ -259,6 +273,8 @@ CURLOPT_LOCALPORT 7.15.2
CURLOPT_LOCALPORTRANGE 7.15.2 CURLOPT_LOCALPORTRANGE 7.15.2
CURLOPT_LOW_SPEED_LIMIT 7.1 CURLOPT_LOW_SPEED_LIMIT 7.1
CURLOPT_LOW_SPEED_TIME 7.1 CURLOPT_LOW_SPEED_TIME 7.1
CURLOPT_MAIL_FROM 7.20.0
CURLOPT_MAIL_RCPT 7.20.0
CURLOPT_MAXCONNECTS 7.7 CURLOPT_MAXCONNECTS 7.7
CURLOPT_MAXFILESIZE 7.10.8 CURLOPT_MAXFILESIZE 7.10.8
CURLOPT_MAXFILESIZE_LARGE 7.11.0 CURLOPT_MAXFILESIZE_LARGE 7.11.0
@@ -374,10 +390,17 @@ CURLPROTO_FTP 7.19.4
CURLPROTO_FTPS 7.19.4 CURLPROTO_FTPS 7.19.4
CURLPROTO_HTTP 7.19.4 CURLPROTO_HTTP 7.19.4
CURLPROTO_HTTPS 7.19.4 CURLPROTO_HTTPS 7.19.4
CURLPROTO_IMAP 7.20.0
CURLPROTO_IMAPS 7.20.0
CURLPROTO_LDAP 7.19.4 CURLPROTO_LDAP 7.19.4
CURLPROTO_LDAPS 7.19.4 CURLPROTO_LDAPS 7.19.4
CURLPROTO_POP3 7.20.0
CURLPROTO_POP3S 7.20.0
CURLPROTO_RTSP 7.20.0
CURLPROTO_SCP 7.19.4 CURLPROTO_SCP 7.19.4
CURLPROTO_SFTP 7.19.4 CURLPROTO_SFTP 7.19.4
CURLPROTO_SMTP 7.20.0
CURLPROTO_SMTPS 7.20.0
CURLPROTO_TELNET 7.19.4 CURLPROTO_TELNET 7.19.4
CURLPROTO_TFTP 7.19.4 CURLPROTO_TFTP 7.19.4
CURLPROXY_HTTP 7.10 CURLPROXY_HTTP 7.10

View File

@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@@ -31,16 +31,8 @@
* http://cool.haxx.se/mailman/listinfo/curl-library/ * http://cool.haxx.se/mailman/listinfo/curl-library/
*/ */
/*
* Leading 'curl' path on the 'curlbuild.h' include statement is
* required to properly allow building outside of the source tree,
* due to the fact that in this case 'curlbuild.h' is generated in
* a subdirectory of the build tree while 'curl.h actually remains
* in a subdirectory of the source tree.
*/
#include "curlver.h" /* libcurl version defines */ #include "curlver.h" /* libcurl version defines */
#include "curl/curlbuild.h" /* libcurl build definitions */ #include "curlbuild.h" /* libcurl build definitions */
#include "curlrules.h" /* libcurl rules enforcement */ #include "curlrules.h" /* libcurl rules enforcement */
/* /*
@@ -55,6 +47,11 @@
#include <stdio.h> #include <stdio.h>
#include <limits.h> #include <limits.h>
#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
/* Needed for __FreeBSD_version symbol definition */
#include <osreldate.h>
#endif
/* The include stuff here below is mainly for time_t! */ /* The include stuff here below is mainly for time_t! */
#include <sys/types.h> #include <sys/types.h>
#include <time.h> #include <time.h>
@@ -74,7 +71,8 @@
require it! */ require it! */
#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
defined(ANDROID) defined(ANDROID) || \
(defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
#include <sys/select.h> #include <sys/select.h>
#endif #endif
@@ -244,14 +242,6 @@ typedef curl_socket_t
curlsocktype purpose, curlsocktype purpose,
struct curl_sockaddr *address); struct curl_sockaddr *address);
#ifndef CURL_NO_OLDIES
/* not used since 7.10.8, will be removed in a future release */
typedef int (*curl_passwd_callback)(void *clientp,
const char *prompt,
char *buffer,
int buflen);
#endif
typedef enum { typedef enum {
CURLIOE_OK, /* I/O operation successful */ CURLIOE_OK, /* I/O operation successful */
CURLIOE_UNKNOWNCMD, /* command was unknown to callback */ CURLIOE_UNKNOWNCMD, /* command was unknown to callback */
@@ -415,6 +405,10 @@ typedef enum {
wrong format (Added in 7.19.0) */ wrong format (Added in 7.19.0) */
CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in
7.19.0) */ 7.19.0) */
CURLE_FTP_PRET_FAILED, /* 84 - a PRET command failed */
CURLE_RTSP_CSEQ_ERROR, /* 85 - mismatch of RTSP CSeq numbers */
CURLE_RTSP_SESSION_ERROR, /* 86 - mismatch of RTSP Session Identifiers */
CURL_LAST /* never use! */ CURL_LAST /* never use! */
} CURLcode; } CURLcode;
@@ -621,6 +615,13 @@ typedef enum {
#define CURLPROTO_DICT (1<<9) #define CURLPROTO_DICT (1<<9)
#define CURLPROTO_FILE (1<<10) #define CURLPROTO_FILE (1<<10)
#define CURLPROTO_TFTP (1<<11) #define CURLPROTO_TFTP (1<<11)
#define CURLPROTO_IMAP (1<<12)
#define CURLPROTO_IMAPS (1<<13)
#define CURLPROTO_POP3 (1<<14)
#define CURLPROTO_POP3S (1<<15)
#define CURLPROTO_SMTP (1<<16)
#define CURLPROTO_SMTPS (1<<17)
#define CURLPROTO_RTSP (1<<18)
#define CURLPROTO_ALL (~0) /* enable everything */ #define CURLPROTO_ALL (~0) /* enable everything */
/* long may be 32 or 64 bits, but we should never depend on anything else /* long may be 32 or 64 bits, but we should never depend on anything else
@@ -1036,6 +1037,7 @@ typedef enum {
essentially places a demand on the FTP server to acknowledge commands essentially places a demand on the FTP server to acknowledge commands
in a timely manner. */ in a timely manner. */
CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112), CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112),
#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT
/* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
tell libcurl to resolve names to those IP versions only. This only has tell libcurl to resolve names to those IP versions only. This only has
@@ -1280,6 +1282,39 @@ typedef enum {
/* set the SSH host key callback custom pointer */ /* set the SSH host key callback custom pointer */
CINIT(SSH_KEYDATA, OBJECTPOINT, 185), CINIT(SSH_KEYDATA, OBJECTPOINT, 185),
/* set the SMTP mail originator */
CINIT(MAIL_FROM, OBJECTPOINT, 186),
/* set the SMTP mail receiver(s) */
CINIT(MAIL_RCPT, OBJECTPOINT, 187),
/* FTP: send PRET before PASV */
CINIT(FTP_USE_PRET, LONG, 188),
/* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */
CINIT(RTSP_REQUEST, LONG, 189),
/* The RTSP session identifier */
CINIT(RTSP_SESSION_ID, OBJECTPOINT, 190),
/* The RTSP stream URI */
CINIT(RTSP_STREAM_URI, OBJECTPOINT, 191),
/* The Transport: header to use in RTSP requests */
CINIT(RTSP_TRANSPORT, OBJECTPOINT, 192),
/* Manually initialize the client RTSP CSeq for this handle */
CINIT(RTSP_CLIENT_CSEQ, LONG, 193),
/* Manually initialize the server RTSP CSeq for this handle */
CINIT(RTSP_SERVER_CSEQ, LONG, 194),
/* The stream to pass to INTERLEAVEFUNCTION. */
CINIT(INTERLEAVEDATA, OBJECTPOINT, 195),
/* Let the application define a custom write method for RTP data */
CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196),
CURLOPT_LASTENTRY /* the last unused */ CURLOPT_LASTENTRY /* the last unused */
} CURLoption; } CURLoption;
@@ -1323,6 +1358,7 @@ typedef enum {
#define CURLOPT_WRITEDATA CURLOPT_FILE #define CURLOPT_WRITEDATA CURLOPT_FILE
#define CURLOPT_READDATA CURLOPT_INFILE #define CURLOPT_READDATA CURLOPT_INFILE
#define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER #define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER
#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
/* These enums are for use with the CURLOPT_HTTP_VERSION option. */ /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
enum { enum {
@@ -1335,6 +1371,25 @@ enum {
CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */ CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
}; };
/*
* Public API enums for RTSP requests
*/
enum {
CURL_RTSPREQ_NONE, /* first in list */
CURL_RTSPREQ_OPTIONS,
CURL_RTSPREQ_DESCRIBE,
CURL_RTSPREQ_ANNOUNCE,
CURL_RTSPREQ_SETUP,
CURL_RTSPREQ_PLAY,
CURL_RTSPREQ_PAUSE,
CURL_RTSPREQ_TEARDOWN,
CURL_RTSPREQ_GET_PARAMETER,
CURL_RTSPREQ_SET_PARAMETER,
CURL_RTSPREQ_RECORD,
CURL_RTSPREQ_RECEIVE,
CURL_RTSPREQ_LAST /* last in list */
};
/* These enums are for use with the CURLOPT_NETRC option. */ /* These enums are for use with the CURLOPT_NETRC option. */
enum CURL_NETRC_OPTION { enum CURL_NETRC_OPTION {
CURL_NETRC_IGNORED, /* The .netrc will never be read. CURL_NETRC_IGNORED, /* The .netrc will never be read.
@@ -1704,9 +1759,13 @@ typedef enum {
CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33, CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33,
CURLINFO_CERTINFO = CURLINFO_SLIST + 34, CURLINFO_CERTINFO = CURLINFO_SLIST + 34,
CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35, CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35,
CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36,
CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37,
CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38,
CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39,
/* Fill in new entries below here! */ /* Fill in new entries below here! */
CURLINFO_LASTONE = 35 CURLINFO_LASTONE = 39
} CURLINFO; } CURLINFO;
/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as

View File

@@ -370,16 +370,7 @@
# define CURL_SIZEOF_CURL_SOCKLEN_T 4 # define CURL_SIZEOF_CURL_SOCKLEN_T 4
#elif defined(__VMS) #elif defined(__VMS)
# if defined(__alpha) || defined(__ia64) # if defined(__VAX)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# else
# define CURL_SIZEOF_LONG 4 # define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long # define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld" # define CURL_FORMAT_CURL_OFF_T "ld"
@@ -388,6 +379,15 @@
# define CURL_SIZEOF_CURL_OFF_T 4 # define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L # define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL # define CURL_SUFFIX_CURL_OFF_TU UL
# else
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# endif # endif
# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int # define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
# define CURL_SIZEOF_CURL_SOCKLEN_T 4 # define CURL_SIZEOF_CURL_SOCKLEN_T 4

View File

@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@@ -246,4 +246,8 @@ typedef char
#undef CURL_TYPEOF_CURL_SOCKLEN_T #undef CURL_TYPEOF_CURL_SOCKLEN_T
#undef CURL_TYPEOF_CURL_OFF_T #undef CURL_TYPEOF_CURL_OFF_T
#ifdef CURL_NO_OLDIES
#undef CURL_FORMAT_OFF_T /* not required since 7.19.0 - obsoleted in 7.20.0 */
#endif
#endif /* __CURL_CURLRULES_H */ #endif /* __CURL_CURLRULES_H */

View File

@@ -31,13 +31,13 @@
/* This is the version number of the libcurl package from which this header /* This is the version number of the libcurl package from which this header
file origins: */ file origins: */
#define LIBCURL_VERSION "7.19.7-CVS" #define LIBCURL_VERSION "7.20.0-CVS"
/* The numeric version number is also available "in parts" by using these /* The numeric version number is also available "in parts" by using these
defines: */ defines: */
#define LIBCURL_VERSION_MAJOR 7 #define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 19 #define LIBCURL_VERSION_MINOR 20
#define LIBCURL_VERSION_PATCH 7 #define LIBCURL_VERSION_PATCH 0
/* This is the numeric version of the libcurl version number, meant for easier /* This is the numeric version of the libcurl version number, meant for easier
parsing and comparions by programs. The LIBCURL_VERSION_NUM define will parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
@@ -54,7 +54,7 @@
and it is always a greater number in a more recent release. It makes and it is always a greater number in a more recent release. It makes
comparisons with greater than and less than work. comparisons with greater than and less than work.
*/ */
#define LIBCURL_VERSION_NUM 0x071307 #define LIBCURL_VERSION_NUM 0x071400
/* /*
* This is the date and time when the full source package was created. The * This is the date and time when the full source package was created. The

View File

@@ -39,38 +39,23 @@ C_ARG = $(OBJ_BASE)\wcc386.arg
LINK_ARG = $(OBJ_BASE)\dyn\wlink.arg LINK_ARG = $(OBJ_BASE)\dyn\wlink.arg
LIB_ARG = $(OBJ_BASE)\stat\wlib.arg LIB_ARG = $(OBJ_BASE)\stat\wlib.arg
OBJS = $(OBJ_DIR)\base64.obj $(OBJ_DIR)\connect.obj & # Unfortunately, we can't include Makefile.inc here because wmake doesn't
$(OBJ_DIR)\content_encoding.obj $(OBJ_DIR)\cookie.obj & # use backslash as the line continuation character by default
$(OBJ_DIR)\curl_addrinfo.obj $(OBJ_DIR)\dict.obj & CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c &
$(OBJ_DIR)\easy.obj $(OBJ_DIR)\escape.obj & cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c &
$(OBJ_DIR)\file.obj $(OBJ_DIR)\formdata.obj & ldap.c ssluse.c version.c getenv.c escape.c mprintf.c telnet.c &
$(OBJ_DIR)\ftp.obj $(OBJ_DIR)\getenv.obj & netrc.c getinfo.c transfer.c strequal.c easy.c security.c krb4.c &
$(OBJ_DIR)\getinfo.obj $(OBJ_DIR)\gtls.obj & krb5.c memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c &
$(OBJ_DIR)\hash.obj $(OBJ_DIR)\hostares.obj & multi.c content_encoding.c share.c http_digest.c md5.c curl_rand.c &
$(OBJ_DIR)\hostasyn.obj $(OBJ_DIR)\hostip.obj & http_negotiate.c http_ntlm.c inet_pton.c strtoofft.c strerror.c &
$(OBJ_DIR)\hostip4.obj $(OBJ_DIR)\hostip6.obj & hostares.c hostasyn.c hostip4.c hostip6.c hostsyn.c hostthre.c &
$(OBJ_DIR)\hostsyn.obj $(OBJ_DIR)\hostthre.obj & inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c &
$(OBJ_DIR)\http.obj $(OBJ_DIR)\http_chunks.obj & strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c &
$(OBJ_DIR)\http_digest.obj $(OBJ_DIR)\http_negotiate.obj & socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c &
$(OBJ_DIR)\http_ntlm.obj $(OBJ_DIR)\if2ip.obj & curl_memrchr.c imap.c pop3.c smtp.c pingpong.c rtsp.c curl_threads.c
$(OBJ_DIR)\inet_ntop.obj $(OBJ_DIR)\inet_pton.obj &
$(OBJ_DIR)\krb4.obj $(OBJ_DIR)\ldap.obj & OBJS = $(CSOURCES:.c=.obj)
$(OBJ_DIR)\llist.obj $(OBJ_DIR)\md5.obj & OBJS = $OBJ_DIR\$(OBJS: = $OBJ_DIR\)
$(OBJ_DIR)\memdebug.obj $(OBJ_DIR)\mprintf.obj &
$(OBJ_DIR)\multi.obj $(OBJ_DIR)\netrc.obj &
$(OBJ_DIR)\parsedate.obj $(OBJ_DIR)\progress.obj &
$(OBJ_DIR)\security.obj $(OBJ_DIR)\rawstr.obj &
$(OBJ_DIR)\select.obj $(OBJ_DIR)\sendf.obj &
$(OBJ_DIR)\share.obj $(OBJ_DIR)\socks.obj &
$(OBJ_DIR)\speedcheck.obj $(OBJ_DIR)\splay.obj &
$(OBJ_DIR)\sslgen.obj $(OBJ_DIR)\ssluse.obj &
$(OBJ_DIR)\strequal.obj $(OBJ_DIR)\strerror.obj &
$(OBJ_DIR)\strtok.obj $(OBJ_DIR)\strtoofft.obj &
$(OBJ_DIR)\telnet.obj $(OBJ_DIR)\tftp.obj &
$(OBJ_DIR)\timeval.obj $(OBJ_DIR)\transfer.obj &
$(OBJ_DIR)\url.obj $(OBJ_DIR)\version.obj &
$(OBJ_DIR)\slist.obj $(OBJ_DIR)\nonblock.obj &
$(OBJ_DIR)\curl_rand.obj $(OBJ_DIR)\curl_memrchr.obj
# #
# Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN). # Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN).
@@ -554,3 +539,27 @@ $(OBJ_DIR)\curl_memrchr.obj: curl_memrchr.c setup.h config-win32.h &
..\include\curl\curlrules.h ..\include\curl\easy.h & ..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h curl_memrchr.h & ..\include\curl\multi.h ..\include\curl\curl.h curl_memrchr.h &
..\include\curl\mprintf.h curl_memory.h memdebug.h ..\include\curl\mprintf.h curl_memory.h memdebug.h
$(OBJ_DIR)\imap.obj: imap.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h imap.h &
..\include\curl\mprintf.h curl_memory.h memdebug.h
$(OBJ_DIR)\pop3.obj: pop3.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h pop3.h &
..\include\curl\mprintf.h curl_memory.h memdebug.h
$(OBJ_DIR)\smtp.obj: smtp.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h smtp.h &
..\include\curl\mprintf.h curl_memory.h memdebug.h
$(OBJ_DIR)\pingpong.obj: pingpong.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h pingpong.h &
..\include\curl\mprintf.h curl_memory.h memdebug.h

View File

@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___ # | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____| # \___|\___/|_| \_\_____|
# #
# Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. # Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
# #
# This software is licensed as described in the file COPYING, which # This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms # you should have received as part of this distribution. The terms
@@ -27,7 +27,7 @@ VCPROJ = libcurl.vcproj
DOCS = README.encoding README.memoryleak README.ares README.curlx \ DOCS = README.encoding README.memoryleak README.ares README.curlx \
README.hostip README.multi_socket README.httpauth README.pipelining \ README.hostip README.multi_socket README.httpauth README.pipelining \
README.curl_off_t README.cmake README.curl_off_t README.cmake README.pingpong
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
@@ -50,7 +50,8 @@ LIBCURL_LIBS = @LIBCURL_LIBS@
# being currently built and tested are searched before the library which # being currently built and tested are searched before the library which
# might possibly already be installed in the system. # might possibly already be installed in the system.
# #
# $(top_builddir)/include is for libcurl's generated curl/curlbuild.h file # $(top_builddir)/include/curl for generated curlbuild.h included from curl.h
# $(top_builddir)/include for generated curlbuild.h included from lib/setup.h
# $(top_srcdir)/include is for libcurl's external include files # $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib is for libcurl's lib/setup.h and other "private" files # $(top_srcdir)/lib is for libcurl's lib/setup.h and other "private" files
@@ -58,16 +59,18 @@ LIBCURL_LIBS = @LIBCURL_LIBS@
# $(top_srcdir)/ares is for in-tree c-ares's external include files # $(top_srcdir)/ares is for in-tree c-ares's external include files
if USE_EMBEDDED_ARES if USE_EMBEDDED_ARES
INCLUDES = -I$(top_builddir)/include \ INCLUDES = -I$(top_builddir)/include/curl \
-I$(top_srcdir)/include \ -I$(top_builddir)/include \
-I$(top_builddir)/lib \ -I$(top_srcdir)/include \
-I$(top_srcdir)/lib \ -I$(top_builddir)/lib \
-I$(top_builddir)/ares \ -I$(top_srcdir)/lib \
-I$(top_builddir)/ares \
-I$(top_srcdir)/ares -I$(top_srcdir)/ares
else else
INCLUDES = -I$(top_builddir)/include \ INCLUDES = -I$(top_builddir)/include/curl \
-I$(top_srcdir)/include \ -I$(top_builddir)/include \
-I$(top_builddir)/lib \ -I$(top_srcdir)/include \
-I$(top_builddir)/lib \
-I$(top_srcdir)/lib -I$(top_srcdir)/lib
endif endif
@@ -81,9 +84,9 @@ if SONAME_BUMP
# #
# This conditional soname bump SHOULD be removed at next "proper" bump. # This conditional soname bump SHOULD be removed at next "proper" bump.
# #
VERSIONINFO=-version-info 6:1:1 VERSIONINFO=-version-info 7:0:2
else else
VERSIONINFO=-version-info 5:1:1 VERSIONINFO=-version-info 6:0:2
endif endif
# This flag accepts an argument of the form current[:revision[:age]]. So, # This flag accepts an argument of the form current[:revision[:age]]. So,

View File

@@ -11,7 +11,7 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c \ inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c \
strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c \ strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c \
socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c \ socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c \
curl_memrchr.c curl_memrchr.c imap.c pop3.c smtp.c pingpong.c rtsp.c curl_threads.c
HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \
progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h \ progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h \
@@ -23,5 +23,4 @@ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \
transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h \ transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h \
tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h \ tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h \
curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h \ curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h \
curl_memrchr.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h

View File

@@ -14,7 +14,8 @@ objs = o.base64 o.connect o.cookie o.dict \
o.strequal o.strtok o.telnet o.timeval \ o.strequal o.strtok o.telnet o.timeval \
o.transfer o.url o.version o.strtoofft o.sslgen o.gtls \ o.transfer o.url o.version o.strtoofft o.sslgen o.gtls \
o.rawstr o.curl_addrinfo o.slist o.nonblock o.curl_rand \ o.rawstr o.curl_addrinfo o.slist o.nonblock o.curl_rand \
o.curl_memrchr o.curl_memrchr o.imap o.pop3 o.smtp o.pingpong o.rtsp \
o.curl_threads
# Compile options: # Compile options:
@@ -44,6 +45,9 @@ o.curl_memrchr: c.curl_memrchr
o.curl_rand: c.curl_rand o.curl_rand: c.curl_rand
gcc $(compileropts) -c -o curl_rand.o c.curl_rand gcc $(compileropts) -c -o curl_rand.o c.curl_rand
o.curl_threads: c.curl_threads
gcc $(compileropts) -c -o curl_threads.o c.curl_threads
o.dict: c.dict o.dict: c.dict
gcc $(compileropts) -c -o dict.o c.dict gcc $(compileropts) -c -o dict.o c.dict
@@ -92,6 +96,9 @@ o.http_chunks: c.http_chunks
o.if2ip: c.if2ip o.if2ip: c.if2ip
gcc $(compileropts) -c -o if2ip.o c.if2ip gcc $(compileropts) -c -o if2ip.o c.if2ip
o.imap: c.imap
gcc $(compileropts) -c -o imap.o c.imap
o.inet_ntop: c.inet_ntop o.inet_ntop: c.inet_ntop
gcc $(compileropts) -c -o inet_ntop.o c.inet_ntop gcc $(compileropts) -c -o inet_ntop.o c.inet_ntop
@@ -116,9 +123,18 @@ o.netrc: c.netrc
o.parsedate: c.parsedate o.parsedate: c.parsedate
gcc $(compileropts) -c -o parsedate.o c.parsedate gcc $(compileropts) -c -o parsedate.o c.parsedate
o.pingpong: c.pingpong
gcc $(compileropts) -c -o pingpong.o c.pingpong
o.pop3: c.pop3
gcc $(compileropts) -c -o pop3.o c.pop3
o.progress: c.progress o.progress: c.progress
gcc $(compileropts) -c -o progress.o c.progress gcc $(compileropts) -c -o progress.o c.progress
o.rtsp: c.rtsp
gcc $(compileropts) -c -o rtsp.o c.rtsp
o.security: c.security o.security: c.security
gcc $(compileropts) -c -o security.o c.security gcc $(compileropts) -c -o security.o c.security
@@ -131,6 +147,9 @@ o.sendf: c.sendf
o.slist: c.slist o.slist: c.slist
gcc $(compileropts) -c -o slist.o c.slist gcc $(compileropts) -c -o slist.o c.slist
o.smtp: c.smtp
gcc $(compileropts) -c -o smtp.o c.smtp
o.speedcheck: c.speedcheck o.speedcheck: c.speedcheck
gcc $(compileropts) -c -o speedcheck.o c.speedcheck gcc $(compileropts) -c -o speedcheck.o c.speedcheck

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