[pacman-dev] [PATCH 1/4] lib/handle: add get/set methods for useragent

Dave Reisner d at falconindy.com
Mon Mar 28 15:15:40 EDT 2011


Signed-off-by: Dave Reisner <d at falconindy.com>
---
 lib/libalpm/alpm.h   |    3 +++
 lib/libalpm/dload.c  |    4 ++--
 lib/libalpm/handle.c |   15 +++++++++++++++
 lib/libalpm/handle.h |    1 +
 4 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index b08191d..43ff4ba 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -165,6 +165,9 @@ void alpm_option_set_checkspace(int checkspace);
 pmdb_t *alpm_option_get_localdb(void);
 alpm_list_t *alpm_option_get_syncdbs(void);
 
+const char *alpm_option_get_useragent(void);
+void alpm_option_set_useragent(char *useragent);
+
 /*
  * Install reasons -- ie, why the package was installed
  */
diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index d9e9488..948e623 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -193,8 +193,8 @@ static int curl_download_internal(const char *url, const char *localpath,
 	curl_easy_setopt(handle->curl, CURLOPT_PROGRESSFUNCTION, curl_progress);
 	curl_easy_setopt(handle->curl, CURLOPT_PROGRESSDATA, (void*)&dlfile);
 
-	useragent = getenv("HTTP_USER_AGENT");
-	if (useragent != NULL) {
+	useragent = alpm_option_get_useragent();
+	if(useragent != NULL) {
 		curl_easy_setopt(handle->curl, CURLOPT_USERAGENT, useragent);
 	}
 
diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index 42c0cd1..df4ed54 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -90,6 +90,7 @@ void _alpm_handle_free(pmhandle_t *handle)
 	FREELIST(handle->noextract);
 	FREELIST(handle->ignorepkg);
 	FREELIST(handle->ignoregrp);
+	FREE(handle->useragent);
 	FREE(handle);
 
 }
@@ -597,4 +598,18 @@ void SYMEXPORT alpm_option_set_checkspace(int checkspace)
 	handle->checkspace = checkspace;
 }
 
+void SYMEXPORT alpm_option_set_useragent(char *useragent)
+{
+	if(handle == NULL) {
+		pm_errno = PM_ERR_HANDLE_NULL;
+		return;
+	}
+	handle->useragent = useragent;
+}
+
+const char SYMEXPORT *alpm_option_get_useragent()
+{
+	return handle->useragent;
+}
+
 /* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/handle.h b/lib/libalpm/handle.h
index cf192bc..2a0bcd4 100644
--- a/lib/libalpm/handle.h
+++ b/lib/libalpm/handle.h
@@ -72,6 +72,7 @@ typedef struct _pmhandle_t {
 	char *arch;       /* Architecture of packages we should allow */
 	int usedelta;     /* Download deltas if possible */
 	int checkspace;   /* Check disk space before installing */
+	char *useragent;  /* User agent string to set for internal downloader */
 } pmhandle_t;
 
 /* global handle variable */
-- 
1.7.4.2



More information about the pacman-dev mailing list