summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac9
-rw-r--r--libopkg/opkg.c6
-rw-r--r--libopkg/opkg_download.c24
3 files changed, 38 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 45e7b07..315e139 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,8 +27,15 @@ AC_PROG_LIBTOOL
# Checks for libraries
# check for libcurl
-PKG_CHECK_MODULES(CURL, libcurl)
+AC_ARG_ENABLE(curl,
+ AC_HELP_STRING([--enable-curl], [Enable downloading with curl
+ [[default=yes]] ]),
+ [want_curl="$enableval"], [want_curl="yes"])
+if test "x$want_curl" = "xyes"; then
+ PKG_CHECK_MODULES(CURL, libcurl)
+ AC_DEFINE(HAVE_CURL, 1, [Define if you want CURL support])
+fi
dnl **********
diff --git a/libopkg/opkg.c b/libopkg/opkg.c
index 521072d..d69721b 100644
--- a/libopkg/opkg.c
+++ b/libopkg/opkg.c
@@ -1018,7 +1018,9 @@ opkg_find_package (opkg_t *opkg, const char *name, const char *ver, const char *
return package;
}
+#ifdef HAVE_CURL
#include <curl/curl.h>
+#endif
/**
* @brief Check the accessibility of repositories. It will try to access the repository to check if the respository is accessible throught current network status.
* @param opkg The opkg_t
@@ -1068,12 +1070,16 @@ int opkg_repository_accessibility_check(opkg_t *opkg)
repositories--;
err = opkg_download(opkg->conf, iter1->data, "/dev/null", NULL, NULL);
+#ifdef HAVE_CURL
if (!(err == CURLE_OK ||
err == CURLE_HTTP_RETURNED_ERROR ||
err == CURLE_FILE_COULDNT_READ_FILE ||
err == CURLE_REMOTE_FILE_NOT_FOUND ||
err == CURLE_TFTP_NOTFOUND
)) {
+#else
+ if (!(err == 0)) {
+#endif
ret++;
}
str_list_elt_deinit(iter1);
diff --git a/libopkg/opkg_download.c b/libopkg/opkg_download.c
index bc1cfaf..93b5084 100644
--- a/libopkg/opkg_download.c
+++ b/libopkg/opkg_download.c
@@ -17,7 +17,9 @@
General Public License for more details.
*/
#include "config.h"
+#ifdef HAVE_CURL
#include <curl/curl.h>
+#endif
#ifdef HAVE_GPGME
#include <gpgme.h>
#endif
@@ -77,6 +79,7 @@ int opkg_download(opkg_conf_t *conf, const char *src,
setenv("no_proxy", conf->no_proxy, 1);
}
+#ifdef HAVE_CURL
CURL *curl;
CURLcode res;
FILE * file = fopen (tmp_file_location, "w");
@@ -123,6 +126,27 @@ int opkg_download(opkg_conf_t *conf, const char *src,
free(src_basec);
return -1;
}
+#else
+ {
+ int res;
+ char *wgetcmd;
+ char *wgetopts;
+ wgetopts = getenv("OPKG_WGETOPTS");
+ sprintf_alloc(&wgetcmd, "wget -q %s%s -O \"%s\" \"%s\"",
+ (conf->http_proxy || conf->ftp_proxy) ? "-Y on " : "",
+ (wgetopts!=NULL) ? wgetopts : "",
+ tmp_file_location, src);
+ opkg_message(conf, OPKG_INFO, "Executing: %s\n", wgetcmd);
+ res = xsystem(wgetcmd);
+ free(wgetcmd);
+ if (res) {
+ opkg_message(conf, OPKG_ERROR, "Failed to download %s, error %d\n", src, res);
+ free(tmp_file_location);
+ free(src_basec);
+ return res;
+ }
+ }
+#endif
err = file_move(tmp_file_location, dest_file_name);