summaryrefslogtreecommitdiff
path: root/testing/curl
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-01-25 23:14:53 +0000
committerroot <root@rshg054.dnsready.net>2012-01-25 23:14:53 +0000
commita61c6fb05ec1cbc6845b2ed4077ce0c5950c36ed (patch)
tree7f7f0f3918738e6a508485da2242eec835d6e2ea /testing/curl
parent2aa2acfff38de7de825868995e49792ecfc03126 (diff)
Wed Jan 25 23:14:53 UTC 2012
Diffstat (limited to 'testing/curl')
-rw-r--r--testing/curl/PKGBUILD66
-rw-r--r--testing/curl/curlbuild.h9
-rw-r--r--testing/curl/fix-J-with-O-regression.patch142
3 files changed, 217 insertions, 0 deletions
diff --git a/testing/curl/PKGBUILD b/testing/curl/PKGBUILD
new file mode 100644
index 000000000..4762c277c
--- /dev/null
+++ b/testing/curl/PKGBUILD
@@ -0,0 +1,66 @@
+# $Id: PKGBUILD 147206 2012-01-24 17:51:49Z dreisner $
+# Maintainer: Dave Reisner <dreisner@archlinux.org>
+# Contributor: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: Lucien Immink <l.immink@student.fnt.hvu.nl>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=curl
+pkgver=7.24.0
+pkgrel=1
+pkgdesc="An URL retrival utility and library"
+arch=('i686' 'x86_64')
+url="http://curl.haxx.se"
+license=('MIT')
+depends=('ca-certificates' 'libssh2' 'openssl' 'zlib')
+options=('!libtool')
+source=("http://curl.haxx.se/download/$pkgname-$pkgver.tar.gz"{,.asc}
+ fix-J-with-O-regression.patch
+ curlbuild.h)
+md5sums=('b93420f80a2baaa61a0f45214eddc2ba'
+ '710242df6bc318d16eea611e7d1b1410'
+ 'aa4539ec4f4a2dad1663dc22dd3ab0a1'
+ '751bd433ede935c8fae727377625a8ae')
+
+ptrsize=$(cpp <<<'__SIZEOF_POINTER__' | sed '/^#/d')
+case $ptrsize in
+ 8) _curlbuild=curlbuild-64.h ;;
+ 4) _curlbuild=curlbuild-32.h ;;
+ *) error "unknown pointer size for architecture: %s bytes" "$ptrsize"
+ exit 1
+ ;;
+esac
+
+build() {
+ cd "$pkgname-$pkgver"
+
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --disable-dependency-tracking \
+ --disable-ldap \
+ --disable-ldaps \
+ --enable-ipv6 \
+ --enable-manual \
+ --enable-versioned-symbols \
+ --enable-threaded-resolver \
+ --without-libidn \
+ --with-random=/dev/urandom \
+ --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt
+
+ make
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+
+ # license
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+
+ # devel
+ install -Dm644 docs/libcurl/libcurl.m4 "$pkgdir/usr/share/aclocal/libcurl.m4"
+ mv "$pkgdir/usr/include/curl/curlbuild.h" "$pkgdir/usr/include/curl/$_curlbuild"
+ install -m644 "$srcdir/curlbuild.h" "$pkgdir/usr/include/curl/curlbuild.h"
+}
diff --git a/testing/curl/curlbuild.h b/testing/curl/curlbuild.h
new file mode 100644
index 000000000..b48862696
--- /dev/null
+++ b/testing/curl/curlbuild.h
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+#include "curlbuild-32.h"
+#elif __WORDSIZE == 64
+#include "curlbuild-64.h"
+#else
+#error "Unknown word size"
+#endif
diff --git a/testing/curl/fix-J-with-O-regression.patch b/testing/curl/fix-J-with-O-regression.patch
new file mode 100644
index 000000000..4b7de1a23
--- /dev/null
+++ b/testing/curl/fix-J-with-O-regression.patch
@@ -0,0 +1,142 @@
+From c532604b137cae2e2814280778f914e4cd0460d1 Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Sun, 20 Nov 2011 23:33:46 +0100
+Subject: [PATCH] -J -O: use -O name if no Content-Disposition header comes!
+
+A regression between 7.22.0 and 7.23.0 -- downloading a file with the
+flags -O and -J results in the content being written to stdout if and
+only if there was no Content-Disposition header in the http response. If
+there is a C-D header with a filename attribute, the output is correctly
+written.
+
+Reported by: Dave Reisner
+Bug: http://curl.haxx.se/mail/archive-2011-11/0030.html
+---
+ src/tool_cb_hdr.c | 3 +-
+ src/tool_operate.c | 59 ++++++++++++++++++++++----------------------
+ src/tool_operhlp.c | 18 +++++++++++++
+ tests/data/Makefile.am | 2 +-
+ tests/data/test1210 | 63 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 112 insertions(+), 33 deletions(-)
+ create mode 100644 tests/data/test1210
+
+diff --git a/src/tool_cb_hdr.c b/src/tool_cb_hdr.c
+index fb24b45..dea7338 100644
+--- a/src/tool_cb_hdr.c
++++ b/src/tool_cb_hdr.c
+@@ -66,8 +66,7 @@ size_t tool_header_cb(void *ptr, size_t size, size_t nmemb, void *userdata)
+ }
+ #endif
+
+- if(!outs->filename && (cb > 20) &&
+- checkprefix("Content-disposition:", str)) {
++ if((cb > 20) && checkprefix("Content-disposition:", str)) {
+ const char *p = str + 20;
+
+ /* look for the 'filename=' parameter
+diff --git a/src/tool_operate.c b/src/tool_operate.c
+index 7ab815f..1e88120 100644
+--- a/src/tool_operate.c
++++ b/src/tool_operate.c
+@@ -576,41 +576,40 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
+
+ if((urlnode->flags & GETOUT_USEREMOTE)
+ && config->content_disposition) {
+- /* Our header callback sets the filename */
++ /* Our header callback MIGHT set the filename */
+ DEBUGASSERT(!outs.filename);
+ }
+- else {
+- if(config->resume_from_current) {
+- /* We're told to continue from where we are now. Get the size
+- of the file as it is now and open it for append instead */
+- struct_stat fileinfo;
+- /* VMS -- Danger, the filesize is only valid for stream files */
+- if(0 == stat(outfile, &fileinfo))
+- /* set offset to current file size: */
+- config->resume_from = fileinfo.st_size;
+- else
+- /* let offset be 0 */
+- config->resume_from = 0;
+- }
+
+- if(config->resume_from) {
+- /* open file for output: */
+- FILE *file = fopen(outfile, config->resume_from?"ab":"wb");
+- if(!file) {
+- helpf(config->errors, "Can't open '%s'!\n", outfile);
+- res = CURLE_WRITE_ERROR;
+- goto quit_urls;
+- }
+- outs.fopened = TRUE;
+- outs.stream = file;
+- outs.init = config->resume_from;
+- }
+- else {
+- outs.stream = NULL; /* open when needed */
++ if(config->resume_from_current) {
++ /* We're told to continue from where we are now. Get the size
++ of the file as it is now and open it for append instead */
++ struct_stat fileinfo;
++ /* VMS -- Danger, the filesize is only valid for stream files */
++ if(0 == stat(outfile, &fileinfo))
++ /* set offset to current file size: */
++ config->resume_from = fileinfo.st_size;
++ else
++ /* let offset be 0 */
++ config->resume_from = 0;
++ }
++
++ if(config->resume_from) {
++ /* open file for output: */
++ FILE *file = fopen(outfile, config->resume_from?"ab":"wb");
++ if(!file) {
++ helpf(config->errors, "Can't open '%s'!\n", outfile);
++ res = CURLE_WRITE_ERROR;
++ goto quit_urls;
+ }
+- outs.filename = outfile;
+- outs.s_isreg = TRUE;
++ outs.fopened = TRUE;
++ outs.stream = file;
++ outs.init = config->resume_from;
++ }
++ else {
++ outs.stream = NULL; /* open when needed */
+ }
++ outs.filename = outfile;
++ outs.s_isreg = TRUE;
+ }
+
+ if(uploadfile && !stdin_upload(uploadfile)) {
+diff --git a/src/tool_operhlp.c b/src/tool_operhlp.c
+index 808d2d5..4c1697b 100644
+--- a/src/tool_operhlp.c
++++ b/src/tool_operhlp.c
+@@ -178,6 +178,24 @@ CURLcode get_url_file_name(char **filename, const char *url)
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
++
++ /* in case we built debug enabled, we allow an environment variable
++ * named CURL_TESTDIR to prefix the given file name to put it into a
++ * specific directory
++ */
++#ifdef DEBUGBUILD
++ {
++ char *tdir = curlx_getenv("CURL_TESTDIR");
++ if(tdir) {
++ char buffer[512]; /* suitably large */
++ snprintf(buffer, sizeof(buffer), "%s/%s", tdir, *filename);
++ Curl_safefree(*filename);
++ *filename = strdup(buffer); /* clone the buffer */
++ curl_free(tdir);
++ }
++ }
++#endif
++
+ return CURLE_OK;
+ }
+
+--
+1.7.7.3