platform/upstream/curl.git
14 years agotest536: do not fail with threaded DNS resolver
Kamil Dudka [Sat, 24 Apr 2010 10:14:21 +0000 (12:14 +0200)]
test536: do not fail with threaded DNS resolver

Also tweaked comments in certain examples using curl_multi_fdset().

14 years agocurl: -O crash on windows
Daniel Stenberg [Wed, 21 Apr 2010 21:20:18 +0000 (23:20 +0200)]
curl: -O crash on windows

The -O option caused curl to crash on windows and DOS due to the
tool writing out of boundary memory.

14 years agohmac.c related compilation adjustment
Yang Tse [Tue, 20 Apr 2010 19:35:31 +0000 (21:35 +0200)]
hmac.c related compilation adjustment

14 years agohmac.c related compilation adjustment
Yang Tse [Tue, 20 Apr 2010 19:23:53 +0000 (21:23 +0200)]
hmac.c related compilation adjustment

14 years agoAdd compilation directives for hmac in Watcom,riscos and vc6 platform-specific makefiles.
monnerat [Tue, 20 Apr 2010 17:22:03 +0000 (19:22 +0200)]
Add compilation directives for hmac in Watcom,riscos and vc6 platform-specific makefiles.

14 years agoreplaced wsock32.lib usage with ws2_32.lib in MSVC makefiles
Ruslan Gazizov [Tue, 20 Apr 2010 14:30:10 +0000 (16:30 +0200)]
replaced wsock32.lib usage with ws2_32.lib in MSVC makefiles

14 years agoMerge branch 'master' of github.com:bagder/curl
monnerat [Mon, 19 Apr 2010 15:37:51 +0000 (17:37 +0200)]
Merge branch 'master' of github.com:bagder/curl

14 years agoRemove null-effect leftover code.
monnerat [Mon, 19 Apr 2010 15:30:20 +0000 (17:30 +0200)]
Remove null-effect leftover code.

14 years agochangelog: -J/--remote-header-name strips CRLF
Daniel Stenberg [Mon, 19 Apr 2010 15:08:27 +0000 (17:08 +0200)]
changelog: -J/--remote-header-name strips CRLF

14 years agoparse_filename: strip trailing CRs and LFs
Daniel Stenberg [Mon, 19 Apr 2010 15:05:46 +0000 (17:05 +0200)]
parse_filename: strip trailing CRs and LFs

The feature that uses the file name given in a
Content-disposition: header didn't properly skip trailing
carriage returns and linefeed characters from the end of the file
name when it was given without quotes.

14 years agoCurl_HMAC_MD5: fix the array init to not warn with picky compilers
Daniel Stenberg [Mon, 19 Apr 2010 14:19:36 +0000 (16:19 +0200)]
Curl_HMAC_MD5: fix the array init to not warn with picky compilers

14 years agoFix GnuTLS compilation problem in md5.c
monnerat [Mon, 19 Apr 2010 12:09:45 +0000 (14:09 +0200)]
Fix GnuTLS compilation problem in md5.c

14 years agoFix compilation problem: declare Curl_HMAC_MD5 as extern in include file.
monnerat [Mon, 19 Apr 2010 10:44:17 +0000 (12:44 +0200)]
Fix compilation problem: declare Curl_HMAC_MD5 as extern in include file.

14 years agoMerge branch 'master' of github.com:bagder/curl
monnerat [Mon, 19 Apr 2010 09:17:46 +0000 (11:17 +0200)]
Merge branch 'master' of github.com:bagder/curl

14 years agoImplement SMTP authentication
monnerat [Mon, 19 Apr 2010 09:16:30 +0000 (11:16 +0200)]
Implement SMTP authentication

14 years agoparseconfig: Value stored to 'line' is never read
Daniel Stenberg [Sat, 17 Apr 2010 16:59:54 +0000 (18:59 +0200)]
parseconfig: Value stored to 'line' is never read

Make the function call with (void) as we don't care about the
return code.

14 years agoparsedate: Value stored to 'found' is never read
Daniel Stenberg [Sat, 17 Apr 2010 16:57:39 +0000 (18:57 +0200)]
parsedate: Value stored to 'found' is never read

14 years agocheck_gzip_header: Value stored to 'data' is never read
Daniel Stenberg [Sat, 17 Apr 2010 16:55:52 +0000 (18:55 +0200)]
check_gzip_header: Value stored to 'data' is never read

14 years agodprintf_formatf: Value stored to 'left' is never read
Daniel Stenberg [Fri, 16 Apr 2010 21:50:39 +0000 (23:50 +0200)]
dprintf_formatf: Value stored to 'left' is never read

14 years agocurl_version: remove superfluous assignments
Daniel Stenberg [Fri, 16 Apr 2010 21:49:03 +0000 (23:49 +0200)]
curl_version: remove superfluous assignments

14 years agoFTP PORT: Value stored to 'rc' is never read
Daniel Stenberg [Fri, 16 Apr 2010 21:43:54 +0000 (23:43 +0200)]
FTP PORT: Value stored to 'rc' is never read

14 years agoCurl_setup_transfer: no longer returns anything
Daniel Stenberg [Fri, 16 Apr 2010 21:43:04 +0000 (23:43 +0200)]
Curl_setup_transfer: no longer returns anything

This function could only return CURLE_OK and by changing it to
a void instead, we can simplify code all over.

14 years agoPASV response: Value stored to 'rc' is never read
Daniel Stenberg [Fri, 16 Apr 2010 21:28:20 +0000 (23:28 +0200)]
PASV response: Value stored to 'rc' is never read

14 years agoCurl_perform: Value stored to 'res2' is never read
Daniel Stenberg [Fri, 16 Apr 2010 21:27:35 +0000 (23:27 +0200)]
Curl_perform: Value stored to 'res2' is never read

14 years agosftp range: remove unnecessary check for NULL pointer
Daniel Stenberg [Fri, 16 Apr 2010 21:20:50 +0000 (23:20 +0200)]
sftp range: remove unnecessary check for NULL pointer

14 years agoftp_range: remove unnecessary check for NULL pointer
Daniel Stenberg [Fri, 16 Apr 2010 21:20:07 +0000 (23:20 +0200)]
ftp_range: remove unnecessary check for NULL pointer

14 years agofile_range: remove unnecessary check for NULL pointer
Daniel Stenberg [Fri, 16 Apr 2010 21:18:43 +0000 (23:18 +0200)]
file_range: remove unnecessary check for NULL pointer

14 years agoSOCKS4: Value stored to 'rc' is never read
Daniel Stenberg [Fri, 16 Apr 2010 21:03:55 +0000 (23:03 +0200)]
SOCKS4: Value stored to 'rc' is never read

14 years agoFTP PASV: Value stored to 'rc' is never read
Daniel Stenberg [Fri, 16 Apr 2010 21:02:15 +0000 (23:02 +0200)]
FTP PASV: Value stored to 'rc' is never read

14 years agoftp_range: Value stored to 'totalsize' is never read
Daniel Stenberg [Fri, 16 Apr 2010 21:00:21 +0000 (23:00 +0200)]
ftp_range: Value stored to 'totalsize' is never read

Simplified the code by removing a local variable completely.

14 years agoSOCKS5: when name resolves fail return immediately
Daniel Stenberg [Fri, 16 Apr 2010 20:58:04 +0000 (22:58 +0200)]
SOCKS5: when name resolves fail return immediately

This makes the code flow more obvious and reacts on the return
code properly, even if the code acted the same way before.

14 years agoPOP3: when USER command fails, don't even try PASS
Daniel Stenberg [Fri, 16 Apr 2010 20:56:13 +0000 (22:56 +0200)]
POP3: when USER command fails, don't even try PASS

14 years agotftp_rx: Value stored to 'sbytes' is never read
Daniel Stenberg [Fri, 16 Apr 2010 20:55:07 +0000 (22:55 +0200)]
tftp_rx: Value stored to 'sbytes' is never read

14 years agofile_range: Value stored to 'totalsize' is never read
Daniel Stenberg [Fri, 16 Apr 2010 20:52:49 +0000 (22:52 +0200)]
file_range: Value stored to 'totalsize' is never read

14 years agochangelog: GnuTLS: SSL handshake phase is non-blocking
Daniel Stenberg [Fri, 16 Apr 2010 20:45:06 +0000 (22:45 +0200)]
changelog: GnuTLS: SSL handshake phase is non-blocking

14 years agoGnuTLS: make the connection phase non-blocking
Jerome Vouillon [Fri, 16 Apr 2010 20:43:01 +0000 (22:43 +0200)]
GnuTLS: make the connection phase non-blocking

When multi interface is used, the SSL handshake is no longer
blocking when GnuTLS is used.

14 years agokrb5_auth: fix my previous change to compile
Daniel Stenberg [Fri, 16 Apr 2010 18:22:46 +0000 (20:22 +0200)]
krb5_auth: fix my previous change to compile

14 years agoOS400 version V5R2M0 not supported anymore by IBM: default target release changed...
unknown [Fri, 16 Apr 2010 14:55:13 +0000 (16:55 +0200)]
OS400 version V5R2M0 not supported anymore by IBM: default target release changed to V5R3M0.

14 years agochangelog: GnuTLS fix, no reverse loopkups and fixed GSS detection
Daniel Stenberg [Fri, 16 Apr 2010 13:33:10 +0000 (15:33 +0200)]
changelog: GnuTLS fix, no reverse loopkups and fixed GSS detection

14 years agoSSL_RECV: EOF is not an error here
Daniel Stenberg [Fri, 16 Apr 2010 13:29:25 +0000 (15:29 +0200)]
SSL_RECV: EOF is not an error here

The recent overhaul of the SSL recv function made this treat a
zero returned from gnutls_record_recv() as an error, and this
caused our HTTPS test cases to fail. We leave it to upper layer
code to detect if an EOF is a problem or not.

14 years agoconfigure: GSSAPI detection on ancient Linux distros
Paul Howarth [Fri, 16 Apr 2010 13:09:32 +0000 (15:09 +0200)]
configure: GSSAPI detection on ancient Linux distros

On some ancient distributions such as RHEL-3, <gssapi/gssapi_krb5.h> needs
to be processed after <gssapi/gssapi.h>, but does not include it itself.
This patch checks for <gssapi/gssapi.h> first and then includes it
in the test for <gssapi/gssapi_krb5.h>, resolving the problem.

Without the patch, <gssapi/gssapi_krb5.h> is "present but cannot be
compiled".

14 years agoresolvers: no more using AI_CANONNAME
Daniel Stenberg [Fri, 16 Apr 2010 13:03:52 +0000 (15:03 +0200)]
resolvers: no more using AI_CANONNAME

No resolver anymore needs to use AI_CANONNAME and do reverse
lookups.  We should work hard to avoid having code that relies on
it.

14 years agoKRB5: use given host name instead of reverse lookup'ed name
Daniel Stenberg [Fri, 16 Apr 2010 13:02:08 +0000 (15:02 +0200)]
KRB5: use given host name instead of reverse lookup'ed name

This code would previously use dns_entry->addr->ai_canonname
instead of the given host name, which caused us grief and
problems since not all our resolver options do the reverse lookup
and I would also guess that it caused problems with KRB5/GSS with
virtual name-based hosts. Now the host name from the URL is used.

14 years agoRemove redundant conditional
Dan Fandrich [Wed, 7 Apr 2010 05:57:20 +0000 (22:57 -0700)]
Remove redundant conditional

14 years agoEliminated an unlikely race condition in some tests.
Dan Fandrich [Wed, 7 Apr 2010 05:51:05 +0000 (22:51 -0700)]
Eliminated an unlikely race condition in some tests.

Based on a patch from the FreeBSD ports by Peter Pentchev.

14 years agochangelog: prevent needless reverse name lookups
Daniel Stenberg [Thu, 15 Apr 2010 11:11:25 +0000 (13:11 +0200)]
changelog: prevent needless reverse name lookups

14 years agoCurl_ipv4_resolve_r: only set AI_CANONNAME when needed
Daniel Stenberg [Thu, 15 Apr 2010 11:04:01 +0000 (13:04 +0200)]
Curl_ipv4_resolve_r: only set AI_CANONNAME when needed

As reported in bug report #2987196, the code for ipv6 already did
the setting of this bit correctly so we copied that logic into
the Curl_ipv4_resolve_r() function as well. KRB code is the only
code we know that might need the cannonical name so only resolve
it for such requests!

14 years agoIGNORE: files generated by maketgz
Daniel Stenberg [Wed, 14 Apr 2010 15:34:57 +0000 (17:34 +0200)]
IGNORE: files generated by maketgz

14 years agobumped to start the journey towards 7.20.2
Daniel Stenberg [Wed, 14 Apr 2010 15:34:26 +0000 (17:34 +0200)]
bumped to start the journey towards 7.20.2

14 years agoadded contributors from the 7.20.1 RELEASE-NOTES
Daniel Stenberg [Wed, 14 Apr 2010 15:33:34 +0000 (17:33 +0200)]
added contributors from the 7.20.1 RELEASE-NOTES

14 years agoignore files generated by 'maketgz'
Daniel Stenberg [Wed, 14 Apr 2010 15:12:34 +0000 (17:12 +0200)]
ignore files generated by 'maketgz'

14 years ago7.20.1: 14 April 2010
Daniel Stenberg [Wed, 14 Apr 2010 14:54:22 +0000 (16:54 +0200)]
7.20.1: 14 April 2010

14 years agoUse correct directory for c-ares git pull
Guenter Knauf [Tue, 13 Apr 2010 20:55:33 +0000 (22:55 +0200)]
Use correct directory for c-ares git pull
Signed-off-by: Tor Arntsen <tor@spacetec.no>
14 years agofix compiler warning: variable might be clobbered by longjmp or vfork
Yang Tse [Tue, 13 Apr 2010 14:34:13 +0000 (16:34 +0200)]
fix compiler warning: variable might be clobbered by longjmp or vfork

14 years agoadded last git commit output for c-ares too.
Guenter Knauf [Tue, 13 Apr 2010 02:05:43 +0000 (04:05 +0200)]
added last git commit output for c-ares too.

14 years agochanged the git update block to take care of c-ares repo if detected.
Guenter Knauf [Tue, 13 Apr 2010 01:15:31 +0000 (03:15 +0200)]
changed the git update block to take care of c-ares repo if detected.

14 years agoupdated timestamp of the script.
Guenter Knauf [Mon, 12 Apr 2010 21:06:31 +0000 (23:06 +0200)]
updated timestamp of the script.

14 years agoremoved obsolete var in gitpull() function
Guenter Knauf [Mon, 12 Apr 2010 20:57:48 +0000 (22:57 +0200)]
removed obsolete var in gitpull() function
no need to create a var - lets just return the status var itself.

14 years agoadded a cast to silent compiler warning with 64bit systems.
Guenter Knauf [Mon, 12 Apr 2010 14:47:48 +0000 (16:47 +0200)]
added a cast to silent compiler warning with 64bit systems.

14 years agofixed a path typo in src/Makefile.netware.
Guenter Knauf [Mon, 12 Apr 2010 14:30:14 +0000 (16:30 +0200)]
fixed a path typo in src/Makefile.netware.

14 years agoAdded text for How To Make a Patch with git
Daniel Stenberg [Mon, 12 Apr 2010 09:20:00 +0000 (11:20 +0200)]
Added text for How To Make a Patch with git

14 years agoupdate the section on timeouts
Daniel Stenberg [Mon, 12 Apr 2010 09:09:55 +0000 (11:09 +0200)]
update the section on timeouts

The section that describes how to work with timeouts was
misleading and could easily trick users to use the wrong API.

14 years agoupdate URL and cut out wrong info on ipv6
Daniel Stenberg [Mon, 12 Apr 2010 09:09:08 +0000 (11:09 +0200)]
update URL and cut out wrong info on ipv6

c-ares has had its own URL for a while and we should point
people to that. It also works with IPv6 since a long time.

14 years agorefer to CURLMOPT_TIMERFUNCTION for multi_socket users
Daniel Stenberg [Mon, 12 Apr 2010 09:08:06 +0000 (11:08 +0200)]
refer to CURLMOPT_TIMERFUNCTION for multi_socket users

curl_multi_timeout(3) is simply the wrong function to use
if you're using the multi_socket API and this document now
states this pretty clearly to help guiding users.

14 years agos/CVS/git
Daniel Stenberg [Sun, 11 Apr 2010 09:38:11 +0000 (11:38 +0200)]
s/CVS/git

14 years agomodified to use the git file, not cvs
Daniel Stenberg [Sun, 11 Apr 2010 09:35:33 +0000 (11:35 +0200)]
modified to use the git file, not cvs

I've done this blindly, and the last piece that works with ares
should possibly be done differently now that c-ares isn't a
subtree within the curl tree anymore...

14 years agomention missing test servers for <server>
Daniel Stenberg [Sat, 10 Apr 2010 21:27:04 +0000 (23:27 +0200)]
mention missing test servers for <server>

14 years agoFTP quote commands prefixed with '*' now can fail without aborting
Daniel Stenberg [Fri, 9 Apr 2010 14:54:52 +0000 (16:54 +0200)]
FTP quote commands prefixed with '*' now can fail without aborting

Prefixing the FTP quote commands with an asterisk really only
worked for the postquote actions. This is now fixed and test case
227 has been extended to verify.

14 years agoqssl: reflect recent code changes in SSL interface
Kamil Dudka [Wed, 7 Apr 2010 08:07:29 +0000 (10:07 +0200)]
qssl: reflect recent code changes in SSL interface

Reported by Guenter Knauf.

14 years agonss: handle client certificate related errors
Kamil Dudka [Tue, 6 Apr 2010 11:42:11 +0000 (13:42 +0200)]
nss: handle client certificate related errors

14 years agossl: Fix build when SSL isn't enabled
Ben Greear [Mon, 5 Apr 2010 23:41:33 +0000 (01:41 +0200)]
ssl: Fix build when SSL isn't enabled

Signed-off-by: Ben Greear <greearb@candelatech.com>
14 years agorefactorize interface of Curl_ssl_recv/Curl_ssl_send
Kamil Dudka [Sun, 4 Apr 2010 21:37:18 +0000 (23:37 +0200)]
refactorize interface of Curl_ssl_recv/Curl_ssl_send

14 years agosimplify code of Curl_resolv_timeout()
Kamil Dudka [Sun, 4 Apr 2010 21:35:21 +0000 (23:35 +0200)]
simplify code of Curl_resolv_timeout()

14 years agoeliminate a race condition in Curl_resolv_timeout()
Kamil Dudka [Sun, 4 Apr 2010 21:34:24 +0000 (23:34 +0200)]
eliminate a race condition in Curl_resolv_timeout()

14 years agofixed compiler warnings
Ben Greear [Fri, 2 Apr 2010 19:02:35 +0000 (21:02 +0200)]
fixed compiler warnings

14 years agoupdated contributor count
Daniel Stenberg [Fri, 2 Apr 2010 15:12:58 +0000 (17:12 +0200)]
updated contributor count

14 years agoadd contributors from the 7.20.0 release notes
Daniel Stenberg [Fri, 2 Apr 2010 15:10:40 +0000 (17:10 +0200)]
add contributors from the 7.20.0 release notes

14 years agofix SFTP download hang
Daniel Stenberg [Thu, 1 Apr 2010 20:39:15 +0000 (22:39 +0200)]
fix SFTP download hang

Matt Wixson found and fixed a bug in the SCP/SFTP area where the
code treated a 0 return code from libssh2 to be the same as
EAGAIN while in reality it isn't. The problem caused a hang in
SFTP transfers from a MessageWay server.

14 years agoFixed misleading test message
Dan Fandrich [Thu, 1 Apr 2010 05:22:37 +0000 (22:22 -0700)]
Fixed misleading test message

14 years agoupdate the generic copyright year range
Daniel Stenberg [Wed, 31 Mar 2010 21:55:57 +0000 (23:55 +0200)]
update the generic copyright year range

14 years agoremoved README.cmake due to the improved situation
Daniel Stenberg [Wed, 31 Mar 2010 21:05:16 +0000 (23:05 +0200)]
removed README.cmake due to the improved situation

14 years agofix compiler warning with a cast.
Guenter Knauf [Wed, 31 Mar 2010 00:09:49 +0000 (02:09 +0200)]
fix compiler warning with a cast.

14 years agomake folks use latest available dependent libraries.
Guenter Knauf [Tue, 30 Mar 2010 23:10:09 +0000 (01:10 +0200)]
make folks use latest available dependent libraries.

14 years agoCall curl_global_cleanup() in test 560 to avoid a memory leak
Dan Fandrich [Tue, 30 Mar 2010 19:52:44 +0000 (12:52 -0700)]
Call curl_global_cleanup() in test 560 to avoid a memory leak

14 years agoAllow test 538 to run even when proxy support is disabled
Dan Fandrich [Tue, 30 Mar 2010 18:40:34 +0000 (11:40 -0700)]
Allow test 538 to run even when proxy support is disabled

14 years agouse (s)size_t for string lengths to fix compiler warns
Daniel Stenberg [Mon, 29 Mar 2010 14:30:35 +0000 (16:30 +0200)]
use (s)size_t for string lengths to fix compiler warns

14 years agouse size_t to hold string length
Daniel Stenberg [Mon, 29 Mar 2010 14:11:02 +0000 (16:11 +0200)]
use size_t to hold string length

using int is not fine on 64bit systems

14 years agoFix compile warnings in ssh.c
Ben Greear [Sun, 28 Mar 2010 06:45:17 +0000 (08:45 +0200)]
Fix compile warnings in ssh.c

strlen() returns size_t, but ssh libraries are wanting 'unsigned int'.  Add
explicit casts and use _ex versions of the ssh library calls.

Signed-off-by: Ben Greear <greearb@candelatech.com>
14 years agofix smtp compile warning
Ben Greear [Sun, 28 Mar 2010 06:45:16 +0000 (08:45 +0200)]
fix smtp compile warning

Use ssize_t instead of int for the Curl_smtp_escape_eob nread
argument.

Signed-off-by: Ben Greear <greearb@candelatech.com>
14 years agoBen's POP3 change
Daniel Stenberg [Sun, 28 Mar 2010 21:52:37 +0000 (23:52 +0200)]
Ben's POP3 change

14 years agopop3: Get message listing if no mailbox in URL
Ben Greear [Sun, 28 Mar 2010 21:49:00 +0000 (23:49 +0200)]
pop3: Get message listing if no mailbox in URL

If you pass a URL to pop3 that does not contain a message ID as
part of the URL, it will currently ask for 'INBOX' which just
causes the pop3 server to return an error.

The change makes libcurl treat en empty message ID as a request
for LIST (list of pop3 message IDs).  User's code could then
parse this and download individual messages as desired.

14 years agoAllow running ./tests/testcurl.pl from within git repo.
Ben Greear [Sun, 28 Mar 2010 05:50:07 +0000 (07:50 +0200)]
Allow running ./tests/testcurl.pl from within git repo.

My first instinct was to run the test script within the checked out
repository.  This small change to the script allows that to work as
expected.

Signed-off-by: Ben Greear <greearb@candelatech.com>
14 years agominor language fix
Daniel Stenberg [Sat, 27 Mar 2010 22:05:06 +0000 (23:05 +0100)]
minor language fix

14 years agoallow user+password in the URL for all protocols
Ben Greear [Sat, 27 Mar 2010 22:00:51 +0000 (23:00 +0100)]
allow user+password in the URL for all protocols

Ben Greear brought a patch that from now on allows all protocols
to specify name and user within the URL, in the same manner HTTP
and FTP have been allowed to in the past - although far from all
of the libcurl supported protocols actually have that feature in
their URL definition spec.

14 years agoignore pid files and stunnel.conf
Daniel Stenberg [Sat, 27 Mar 2010 21:56:47 +0000 (22:56 +0100)]
ignore pid files and stunnel.conf

all used while running tests

14 years agomake sure git pull is actually done!
Daniel Stenberg [Sat, 27 Mar 2010 17:57:24 +0000 (18:57 +0100)]
make sure git pull is actually done!

14 years agochangelogged: smoother rate limiting
Daniel Stenberg [Fri, 26 Mar 2010 22:35:24 +0000 (23:35 +0100)]
changelogged: smoother rate limiting

14 years agoMake rate-limitation logic smoother
Ben Greear [Fri, 26 Mar 2010 22:33:02 +0000 (23:33 +0100)]
Make rate-limitation logic smoother

This gives a smoother rate limitation performance by using
sub-second pauses and also taking the buffer sizes into
account.

14 years agoremove all .cvsignore files
Daniel Stenberg [Thu, 25 Mar 2010 22:22:03 +0000 (23:22 +0100)]
remove all .cvsignore files

14 years agoPROT_CLOSEACTION should not include TFTP
Daniel Stenberg [Thu, 25 Mar 2010 18:56:50 +0000 (19:56 +0100)]
PROT_CLOSEACTION should not include TFTP

TFTP is not a protocol that uses close actions so it should
not be set in that bitmask!