Project import
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..dbb13b2
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,171 @@
+#
+#    Copyright (c) 2010-2012 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the makefile for the library and command line
+#      utility for transferring files with URL syntax, libcurl and
+#      curl, respectively.
+#
+
+include pre.mak
+
+PackageName		:= curl
+
+PackageExtension	:= tar.gz
+PackageSeparator	:= -
+
+PackagePatchArgs    := -p1
+
+PackageArchive		:= $(PackageName).$(PackageExtension)
+PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)
+
+CleanPaths		+= $(PackageLicenseFile)
+
+TpsDir                  = sw/tps
+
+OpenSSLDir              = $(TpsDir)/openssl
+OpenSSLPrefixDir        = usr
+OpenSSLIncludeDir       = $(OpenSSLPrefixDir)/include
+OpenSSLLibraryDir       = $(OpenSSLPrefixDir)/lib
+OpenSSLNames            = crypto ssl
+OpenSSLSearchPath       = $(call GenerateResultPaths,$(OpenSSLDir),$(OpenSSLPrefixDir))
+OpenSSLIncludePath      = $(call GenerateResultPaths,$(OpenSSLDir),$(OpenSSLIncludeDir))
+OpenSSLLibraryPath      = $(call GenerateResultPaths,$(OpenSSLDir),$(OpenSSLLibraryDir))
+OpenSSLLibraryPaths     = $(call GenerateResultPaths,$(OpenSSLResultsDir),$(addprefix $(OpenSSLLibraryDir)/,$(OpenSSLNames)))
+OpenSSLDependPaths      = $(call GenerateSharedLibraryResultPaths,$(OpenSSLDir)/$(OpenSSLLibraryDir),$(OpenSSLNames))
+
+ZlibDir                 = $(TpsDir)/zlib
+ZlibPrefixDir           = usr
+ZlibIncludeDir          = $(ZlibPrefixDir)/include
+ZlibLibraryDir          = $(ZlibPrefixDir)/lib
+ZlibName                = z
+ZlibSearchPath          = $(call GenerateResultPaths,$(ZlibDir),$(ZlibPrefixDir))
+ZlibIncludePath         = $(call GenerateResultPaths,$(ZlibDir),$(ZlibIncludeDir))
+ZlibLibraryPath         = $(call GenerateResultPaths,$(ZlibDir),$(ZlibLibraryDir))
+ZlibDependPath          = $(call GenerateSharedLibraryResultPaths,$(ZlibDir)/$(ZlibLibraryDir),$(ZlibName))
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(PackageSourceDir)/COPYING: source
+
+$(PackageLicenseFile): $(PackageSourceDir)/COPYING
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+	$(expand-and-patch-package)
+
+# Prepare the sources.
+
+.PHONY: source
+source: | $(PackageSourceDir)
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: source
+
+# Generate the package build makefile.
+#
+# For non-cross-compiled targets (e.g. simulators), the curl configure
+# attempts to perform run-time tests.
+#
+# To ensure this works against the in-project versions of openssl and
+# zlib, the paths to these shared objects MUST be found by the dynamic
+# loader.
+
+$(PackageBuildMakefile): export $(LoaderSearchPath) := $(OpenSSLLibraryPath):$(ZlibLibraryPath):$($(LoaderSearchPath))
+
+$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory)
+	$(Verbose)cd $(BuildDirectory) && \
+	$(CURDIR)/$(PackageSourceDir)/configure \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	CC="$(CC)" CXX="$(CXX)" AR=$(AR) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+	CPPFLAGS="$(call ToolGenerateIncludeArgument,$(OpenSSLIncludePath))" \
+	LDFLAGS="$(call GenerateResolveArguments,$(ZlibDependPath)) \
+	$(call GenerateResolveArguments,$(OpenSSLDependPaths)) \
+	$(call ToolGenerateLibraryPathArgument,$(OpenSSLLibraryPath))" \
+	--build=$(HostTuple) \
+	--host=$(TargetTuple) \
+	$(CurlPackageOptions) \
+	--disable-ares \
+	--disable-dict \
+	--disable-gopher \
+	--disable-imap \
+	--disable-ldap \
+	--disable-ldaps \
+	--disable-manual \
+	--disable-ntlm-wb \
+	--disable-pop3 \
+	--disable-rtsp \
+	--disable-smtp \
+	--disable-telnet \
+	--enable-ipv6 \
+	--with-ssl=$(OpenSSLSearchPath) \
+	--with-zlib=$(ZlibSearchPath) \
+	--with-ca-bundle=/usr/lib/ssl/certs/ca-bundle.pem \
+	--without-libidn \
+	--prefix=/usr \
+	--sysconfdir=/etc \
+	--localstatedir=/var \
+	--disable-static
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: source $(PackageBuildMakefile)
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+.PHONY: build
+build: configure
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) all
+
+# Stage the build to a temporary installation area.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+#
+# We explictly remove 'libcurl.la' because some packages that depend
+# on libcurl use libtool. If libtool finds a '*.la' file for a
+# library, it uses the value of 'libdir=<dir>' it finds. In our case,
+# since '--prefix=/usr' this value is '/usr/lib'. It then resolves
+# '-lcurl' to '/usr/lib/libcurl.so'. In a cross-compilation
+# environment, this is likely to be neither the right architecture nor
+# the right version to link against. In short, we lose.
+#
+# We could also handle this by removing DESTDIR and setting the prefix
+# to $(ResultDirectory); however, that results in libtool hard-coding
+# $(ResultDirectory) as the RPATH in the linked executables which is
+# NOT what we want either. We lose again.
+#
+# By removing the '*.la' file, we win by ensuring neither a misdirected
+# link nor an RPATH.
+
+.PHONY: stage
+stage: build | $(ResultDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install
+	$(Verbose)$(RM) $(RMFLAGS) $(call GenerateResultPaths,,usr/lib/libcurl.la) 
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/curl.patches/curl-00.description b/curl.patches/curl-00.description
new file mode 100644
index 0000000..c5d1250
--- /dev/null
+++ b/curl.patches/curl-00.description
@@ -0,0 +1,6 @@
+This patch allows curl to be compiled with clang.  This is a known problem with
+the version of curl we're using and was fixed with commit 358c5c0745a4c47f910189095f3832163b4708c4.
+According to tags made on the curl repo, the first build to include this commit was curl-7_30_0.
+
+Original bug tracked here:
+http://sourceforge.net/p/curl/bugs/1192/
\ No newline at end of file
diff --git a/curl.patches/curl-00.patch b/curl.patches/curl-00.patch
new file mode 100644
index 0000000..35d2f29
--- /dev/null
+++ b/curl.patches/curl-00.patch
@@ -0,0 +1,295 @@
+diff -aruN curl-7.25.0/configure.ac curl-7.25.0.N/configure.ac
+--- curl-7.25.0/configure.ac	2012-03-08 11:35:23.000000000 -0800
++++ curl-7.25.0.N/configure.ac	2014-10-05 15:25:05.000000000 -0700
+@@ -2776,7 +2776,6 @@
+ CURL_CHECK_FUNC_STRDUP
+ CURL_CHECK_FUNC_STRERROR_R
+ CURL_CHECK_FUNC_STRICMP
+-CURL_CHECK_FUNC_STRLCAT
+ CURL_CHECK_FUNC_STRNCASECMP
+ CURL_CHECK_FUNC_STRNCMPI
+ CURL_CHECK_FUNC_STRNICMP
+diff -aruN curl-7.25.0/lib/config-dos.h curl-7.25.0.N/lib/config-dos.h
+--- curl-7.25.0/lib/config-dos.h	2012-03-08 11:35:24.000000000 -0800
++++ curl-7.25.0.N/lib/config-dos.h	2014-10-05 15:25:05.000000000 -0700
+@@ -164,10 +164,6 @@
+   #define HAVE_SYS_TIME_H 1
+   #define HAVE_VARIADIC_MACROS_GCC 1
+ 
+-  #if (DJGPP_MINOR >= 4)
+-    #define HAVE_STRLCAT  1
+-  #endif
+-
+   /* Because djgpp <= 2.03 doesn't have snprintf() etc. */
+   #if (DJGPP_MINOR < 4)
+     #define _MPRINTF_REPLACE
+diff -aruN curl-7.25.0/lib/config-os400.h curl-7.25.0.N/lib/config-os400.h
+--- curl-7.25.0/lib/config-os400.h	2012-03-08 11:35:24.000000000 -0800
++++ curl-7.25.0.N/lib/config-os400.h	2014-10-05 15:25:05.000000000 -0700
+@@ -295,9 +295,6 @@
+ /* Define if you have the <string.h> header file. */
+ #define HAVE_STRING_H
+ 
+-/* Define if you have the `strlcat' function. */
+-#undef HAVE_STRLCAT
+-
+ /* Define if you have the `strlcpy' function. */
+ #undef HAVE_STRLCPY
+ 
+diff -aruN curl-7.25.0/lib/config-riscos.h curl-7.25.0.N/lib/config-riscos.h
+--- curl-7.25.0/lib/config-riscos.h	2012-03-08 11:35:24.000000000 -0800
++++ curl-7.25.0.N/lib/config-riscos.h	2014-10-05 15:25:05.000000000 -0700
+@@ -293,9 +293,6 @@
+ /* Define if you have the <string.h> header file. */
+ #define HAVE_STRING_H
+ 
+-/* Define if you have the `strlcat' function. */
+-#undef HAVE_STRLCAT
+-
+ /* Define if you have the `strlcpy' function. */
+ #undef HAVE_STRLCPY
+ 
+diff -aruN curl-7.25.0/lib/config-symbian.h curl-7.25.0.N/lib/config-symbian.h
+--- curl-7.25.0/lib/config-symbian.h	2011-11-04 15:32:55.000000000 -0700
++++ curl-7.25.0.N/lib/config-symbian.h	2014-10-05 15:25:05.000000000 -0700
+@@ -532,9 +532,6 @@
+ /* Define to 1 if you have the <string.h> header file. */
+ #define HAVE_STRING_H 1
+ 
+-/* Define to 1 if you have the `strlcat' function. */
+-#define HAVE_STRLCAT 1
+-
+ /* Define to 1 if you have the `strlcpy' function. */
+ #define HAVE_STRLCPY 1
+ 
+diff -aruN curl-7.25.0/lib/config-tpf.h curl-7.25.0.N/lib/config-tpf.h
+--- curl-7.25.0/lib/config-tpf.h	2011-11-04 15:32:55.000000000 -0700
++++ curl-7.25.0.N/lib/config-tpf.h	2014-10-05 15:25:05.000000000 -0700
+@@ -477,9 +477,6 @@
+ /* Define to 1 if you have the <string.h> header file. */
+ #define HAVE_STRING_H 1
+ 
+-/* Define to 1 if you have the `strlcat' function. */
+-/* #undef HAVE_STRLCAT */
+-
+ /* Define to 1 if you have the `strlcpy' function. */
+ /* #undef HAVE_STRLCPY */
+ 
+diff -aruN curl-7.25.0/lib/config-vxworks.h curl-7.25.0.N/lib/config-vxworks.h
+--- curl-7.25.0/lib/config-vxworks.h	2011-11-04 15:32:55.000000000 -0700
++++ curl-7.25.0.N/lib/config-vxworks.h	2014-10-05 15:25:05.000000000 -0700
+@@ -604,9 +604,6 @@
+ /* Define to 1 if you have the <string.h> header file. */
+ #define HAVE_STRING_H 1
+ 
+-/* Define to 1 if you have the strlcat function. */
+-/* #undef HAVE_STRLCAT */
+-
+ /* Define to 1 if you have the `strlcpy' function. */
+ /* #undef HAVE_STRLCPY */
+ 
+diff -aruN curl-7.25.0/lib/if2ip.c curl-7.25.0.N/lib/if2ip.c
+--- curl-7.25.0/lib/if2ip.c	2012-03-08 11:35:24.000000000 -0800
++++ curl-7.25.0.N/lib/if2ip.c	2014-10-05 15:25:05.000000000 -0700
+@@ -101,6 +101,7 @@
+          curl_strequal(iface->ifa_name, interf)) {
+         void *addr;
+         char scope[12]="";
++        char ipstr[64];
+ #ifdef ENABLE_IPV6
+         if(af == AF_INET6) {
+           unsigned int scopeid = 0;
+@@ -115,8 +116,9 @@
+         else
+ #endif
+           addr = &((struct sockaddr_in *)iface->ifa_addr)->sin_addr;
+-        ip = (char *) Curl_inet_ntop(af, addr, buf, buf_size);
+-        strlcat(buf, scope, buf_size);
++        ip = (char *) Curl_inet_ntop(af, addr, ipstr, sizeof(ipstr));
++        snprintf(buf, buf_size, "%s%s", ip, scope);
++        ip = buf;
+         break;
+       }
+     }
+diff -aruN curl-7.25.0/lib/socks.c curl-7.25.0.N/lib/socks.c
+--- curl-7.25.0/lib/socks.c	2012-03-08 11:35:25.000000000 -0800
++++ curl-7.25.0.N/lib/socks.c	2014-10-05 15:25:05.000000000 -0700
+@@ -199,8 +199,15 @@
+    * This is currently not supporting "Identification Protocol (RFC1413)".
+    */
+   socksreq[8] = 0; /* ensure empty userid is NUL-terminated */
+-  if(proxy_name)
+-    strlcat((char*)socksreq + 8, proxy_name, sizeof(socksreq) - 8);
++  if(proxy_name) {
++    size_t plen = strlen(proxy_name);
++    if(plen >= sizeof(socksreq) - 8) {
++      failf(data, "Too long SOCKS proxy name, can't use!\n");
++      return CURLE_COULDNT_CONNECT;
++    }
++    /* copy the proxy name WITH trailing zero */
++    memcpy(socksreq + 8, proxy_name, plen+1);
++  }
+ 
+   /*
+    * Make connection
+diff -aruN curl-7.25.0/lib/strequal.c curl-7.25.0.N/lib/strequal.c
+--- curl-7.25.0/lib/strequal.c	2012-03-08 11:35:25.000000000 -0800
++++ curl-7.25.0.N/lib/strequal.c	2014-10-05 15:25:05.000000000 -0700
+@@ -77,48 +77,3 @@
+   return toupper(*first) == toupper(*second);
+ #endif
+ }
+-
+-#ifndef HAVE_STRLCAT
+-/*
+- * The strlcat() function appends the NUL-terminated string src to the end
+- * of dst. It will append at most size - strlen(dst) - 1 bytes, NUL-termi-
+- * nating the result.
+- *
+- * The strlcpy() and strlcat() functions return the total length of the
+- * string they tried to create.  For strlcpy() that means the length of src.
+- * For strlcat() that means the initial length of dst plus the length of
+- * src. While this may seem somewhat confusing it was done to make trunca-
+- * tion detection simple.
+- *
+- *
+- */
+-size_t Curl_strlcat(char *dst, const char *src, size_t siz)
+-{
+-  char *d = dst;
+-  const char *s = src;
+-  size_t n = siz;
+-  union {
+-    ssize_t sig;
+-     size_t uns;
+-  } dlen;
+-
+-  /* Find the end of dst and adjust bytes left but don't go past end */
+-  while(n-- != 0 && *d != '\0')
+-    d++;
+-  dlen.sig = d - dst;
+-  n = siz - dlen.uns;
+-
+-  if(n == 0)
+-    return(dlen.uns + strlen(s));
+-  while(*s != '\0') {
+-    if(n != 1) {
+-      *d++ = *s;
+-      n--;
+-    }
+-    s++;
+-  }
+-  *d = '\0';
+-
+-  return(dlen.uns + (s - src));     /* count does not include NUL */
+-}
+-#endif
+diff -aruN curl-7.25.0/lib/strequal.h curl-7.25.0.N/lib/strequal.h
+--- curl-7.25.0/lib/strequal.h	2011-03-19 08:16:07.000000000 -0700
++++ curl-7.25.0.N/lib/strequal.h	2014-10-05 15:25:05.000000000 -0700
+@@ -27,9 +27,4 @@
+ #define strequal(a,b) curl_strequal(a,b)
+ #define strnequal(a,b,c) curl_strnequal(a,b,c)
+ 
+-#ifndef HAVE_STRLCAT
+-#define strlcat(x,y,z) Curl_strlcat(x,y,z)
+-#endif
+-size_t strlcat(char *dst, const char *src, size_t siz);
+-
+ #endif
+diff -aruN curl-7.25.0/m4/curl-functions.m4 curl-7.25.0.N/m4/curl-functions.m4
+--- curl-7.25.0/m4/curl-functions.m4	2012-03-21 16:12:36.000000000 -0700
++++ curl-7.25.0.N/m4/curl-functions.m4	2014-10-05 15:25:05.000000000 -0700
+@@ -6418,92 +6418,6 @@
+   fi
+ ])
+ 
+-
+-dnl CURL_CHECK_FUNC_STRLCAT
+-dnl -------------------------------------------------
+-dnl Verify if strlcat is available, prototyped, and
+-dnl can be compiled. If all of these are true, and
+-dnl usage has not been previously disallowed with
+-dnl shell variable curl_disallow_strlcat, then
+-dnl HAVE_STRLCAT will be defined.
+-
+-AC_DEFUN([CURL_CHECK_FUNC_STRLCAT], [
+-  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
+-  #
+-  tst_links_strlcat="unknown"
+-  tst_proto_strlcat="unknown"
+-  tst_compi_strlcat="unknown"
+-  tst_allow_strlcat="unknown"
+-  #
+-  AC_MSG_CHECKING([if strlcat can be linked])
+-  AC_LINK_IFELSE([
+-    AC_LANG_FUNC_LINK_TRY([strlcat])
+-  ],[
+-    AC_MSG_RESULT([yes])
+-    tst_links_strlcat="yes"
+-  ],[
+-    AC_MSG_RESULT([no])
+-    tst_links_strlcat="no"
+-  ])
+-  #
+-  if test "$tst_links_strlcat" = "yes"; then
+-    AC_MSG_CHECKING([if strlcat is prototyped])
+-    AC_EGREP_CPP([strlcat],[
+-      $curl_includes_string
+-    ],[
+-      AC_MSG_RESULT([yes])
+-      tst_proto_strlcat="yes"
+-    ],[
+-      AC_MSG_RESULT([no])
+-      tst_proto_strlcat="no"
+-    ])
+-  fi
+-  #
+-  if test "$tst_proto_strlcat" = "yes"; then
+-    AC_MSG_CHECKING([if strlcat is compilable])
+-    AC_COMPILE_IFELSE([
+-      AC_LANG_PROGRAM([[
+-        $curl_includes_string
+-      ]],[[
+-        if(0 != strlcat(0, 0, 0))
+-          return 1;
+-      ]])
+-    ],[
+-      AC_MSG_RESULT([yes])
+-      tst_compi_strlcat="yes"
+-    ],[
+-      AC_MSG_RESULT([no])
+-      tst_compi_strlcat="no"
+-    ])
+-  fi
+-  #
+-  if test "$tst_compi_strlcat" = "yes"; then
+-    AC_MSG_CHECKING([if strlcat usage allowed])
+-    if test "x$curl_disallow_strlcat" != "xyes"; then
+-      AC_MSG_RESULT([yes])
+-      tst_allow_strlcat="yes"
+-    else
+-      AC_MSG_RESULT([no])
+-      tst_allow_strlcat="no"
+-    fi
+-  fi
+-  #
+-  AC_MSG_CHECKING([if strlcat might be used])
+-  if test "$tst_links_strlcat" = "yes" &&
+-     test "$tst_proto_strlcat" = "yes" &&
+-     test "$tst_compi_strlcat" = "yes" &&
+-     test "$tst_allow_strlcat" = "yes"; then
+-    AC_MSG_RESULT([yes])
+-    AC_DEFINE_UNQUOTED(HAVE_STRLCAT, 1,
+-      [Define to 1 if you have the strlcat function.])
+-    ac_cv_func_strlcat="yes"
+-  else
+-    AC_MSG_RESULT([no])
+-    ac_cv_func_strlcat="no"
+-  fi
+-])
+-
+-
+ dnl CURL_CHECK_FUNC_STRNCASECMP
+ dnl -------------------------------------------------
+ dnl Verify if strncasecmp is available, prototyped, and
diff --git a/curl.tar.gz b/curl.tar.gz
new file mode 100644
index 0000000..1432843
--- /dev/null
+++ b/curl.tar.gz
Binary files differ
diff --git a/curl.url b/curl.url
new file mode 100644
index 0000000..ddc403c
--- /dev/null
+++ b/curl.url
@@ -0,0 +1 @@
+http://curl.haxx.se/download/curl-7.25.0.tar.gz
diff --git a/curl.version b/curl.version
new file mode 100644
index 0000000..bc34d81
--- /dev/null
+++ b/curl.version
@@ -0,0 +1 @@
+7.25.0