summaryrefslogtreecommitdiff
path: root/lib/libalpm/handle.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libalpm/handle.c')
-rw-r--r--lib/libalpm/handle.c346
1 files changed, 116 insertions, 230 deletions
diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index dd9d50b6..ddc8d77d 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -31,7 +31,6 @@
#include <syslog.h>
#include <libintl.h>
#include <time.h>
-/////#include <ftplib.h>
/* pacman */
#include "util.h"
#include "log.h"
@@ -105,7 +104,6 @@ int _alpm_handle_free(pmhandle_t *handle)
FREE(handle->dbpath);
FREE(handle->cachedir);
FREE(handle->logfile);
- FREE(handle->proxyhost);
FREE(handle->xfercommand);
FREELIST(handle->dbs_sync);
FREELIST(handle->noupgrade);
@@ -118,242 +116,130 @@ int _alpm_handle_free(pmhandle_t *handle)
return(0);
}
-int _alpm_handle_set_option(pmhandle_t *handle, unsigned char val, unsigned long data)
+alpm_cb_log alpm_option_get_logcb() { return handle->logcb; }
+alpm_cb_download alpm_option_get_dlcb() { return handle->dlcb; }
+unsigned char alpm_option_get_logmask() { return handle->logmask; }
+const char *alpm_option_get_root() { return handle->root; }
+const char *alpm_option_get_dbpath() { return handle->dbpath; }
+const char *alpm_option_get_cachedir() { return handle->cachedir; }
+const char *alpm_option_get_logfile() { return handle->logfile; }
+unsigned char alpm_option_get_usesyslog() { return handle->usesyslog; }
+pmlist_t *alpm_option_get_noupgrades() { return handle->noupgrade; }
+pmlist_t *alpm_option_get_noextracts() { return handle->noextract; }
+pmlist_t *alpm_option_get_ignorepkgs() { return handle->ignorepkg; }
+pmlist_t *alpm_option_get_holdpkgs() { return handle->holdpkg; }
+time_t alpm_option_get_upgradedelay() { return handle->upgradedelay; }
+const char *alpm_option_get_xfercommand() { return handle->xfercommand; }
+unsigned short alpm_option_get_nopassiveftp() { return handle->nopassiveftp; }
+unsigned short alpm_option_get_chomp() { return handle->chomp; }
+pmlist_t *alpm_option_get_needles() { return handle->needles; }
+unsigned short alpm_option_get_usecolor() { return handle->use_color; }
+
+pmdb_t *alpm_option_get_localdb(pmhandle_t *handle) { return handle->db_local; }
+pmlist_t *alpm_option_get_syncdbs(pmhandle_t *handle) { return handle->dbs_sync; }
+
+void alpm_option_set_logcb(alpm_cb_log cb) { handle->logcb = cb; }
+
+void alpm_option_set_dlcb(alpm_cb_download cb) { handle->dlcb = cb; }
+
+void alpm_option_set_logmask(unsigned char mask) { handle->logmask = mask; }
+
+void alpm_option_set_root(const char *root)
{
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+ if(handle->root) FREE(handle->root);
+ if(root) handle->root = strdup(root);
+}
- char *p;
- switch(val) {
- case PM_OPT_DBPATH:
- if(handle->dbpath) {
- FREE(handle->dbpath);
- }
- handle->dbpath = strdup((data && strlen((char *)data) != 0) ? (char *)data : PM_DBPATH);
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_DBPATH set to '%s'"), handle->dbpath);
- break;
- case PM_OPT_CACHEDIR:
- if(handle->cachedir) {
- FREE(handle->cachedir);
- }
- handle->cachedir = strdup((data && strlen((char *)data) != 0) ? (char *)data : PM_CACHEDIR);
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_CACHEDIR set to '%s'"), handle->cachedir);
- break;
- case PM_OPT_LOGFILE:
- if((char *)data == NULL || handle->uid != 0) {
- return(0);
- }
- if(handle->logfile) {
- FREE(handle->logfile);
- }
- if(handle->logfd) {
- if(fclose(handle->logfd) != 0) {
- handle->logfd = NULL;
- RET_ERR(PM_ERR_OPT_LOGFILE, -1);
- }
- handle->logfd = NULL;
- }
- if((handle->logfd = fopen((char *)data, "a")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("can't open log file %s"), (char *)data);
- RET_ERR(PM_ERR_OPT_LOGFILE, -1);
- }
- handle->logfile = strdup((char *)data);
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_LOGFILE set to '%s'"), (char *)data);
- break;
- case PM_OPT_NOUPGRADE:
- if((char *)data && strlen((char *)data) != 0) {
- handle->noupgrade = _alpm_list_add(handle->noupgrade, strdup((char *)data));
- _alpm_log(PM_LOG_FLOW2, _("'%s' added to PM_OPT_NOUPGRADE"), (char *)data);
- } else {
- FREELIST(handle->noupgrade);
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_NOUPGRADE flushed"));
- }
- break;
- case PM_OPT_NOEXTRACT:
- if((char *)data && strlen((char *)data) != 0) {
- handle->noextract = _alpm_list_add(handle->noextract, strdup((char *)data));
- _alpm_log(PM_LOG_FLOW2, _("'%s' added to PM_OPT_NOEXTRACT"), (char *)data);
- } else {
- FREELIST(handle->noextract);
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_NOEXTRACT flushed"));
- }
- break;
- case PM_OPT_IGNOREPKG:
- if((char *)data && strlen((char *)data) != 0) {
- handle->ignorepkg = _alpm_list_add(handle->ignorepkg, strdup((char *)data));
- _alpm_log(PM_LOG_FLOW2, _("'%s' added to PM_OPT_IGNOREPKG"), (char *)data);
- } else {
- FREELIST(handle->ignorepkg);
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_IGNOREPKG flushed"));
- }
- break;
- case PM_OPT_HOLDPKG:
- if((char *)data && strlen((char *)data) != 0) {
- handle->holdpkg = _alpm_list_add(handle->holdpkg, strdup((char *)data));
- _alpm_log(PM_LOG_FLOW2, _("'%s' added to PM_OPT_HOLDPKG"), (char *)data);
- } else {
- FREELIST(handle->holdpkg);
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_HOLDPKG flushed"));
- }
- break;
- case PM_OPT_NEEDLES:
- if((char *)data && strlen((char *)data) != 0) {
- handle->needles = _alpm_list_add(handle->needles, strdup((char *)data));
- _alpm_log(PM_LOG_FLOW2, _("'%s' added to PM_OPT_NEEDLES"), (char *)data);
- } else {
- FREELIST(handle->needles);
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_NEEDLES flushed"));
- }
- break;
- case PM_OPT_USESYSLOG:
- if(data != 0 && data != 1) {
- RET_ERR(PM_ERR_OPT_USESYSLOG, -1);
- }
- if(handle->usesyslog == data) {
- return(0);
- }
- if(handle->usesyslog) {
- closelog();
- } else {
- openlog("alpm", 0, LOG_USER);
- }
- handle->usesyslog = (unsigned short)data;
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_USESYSLOG set to '%d'"), handle->usesyslog);
- break;
- case PM_OPT_LOGCB:
- pm_logcb = (alpm_cb_log)data;
- break;
- case PM_OPT_DLCB:
- pm_dlcb = (download_progress_cb)data;
- break;
-/* case PM_OPT_DLFNM:
- pm_dlfnm = (char *)data;
- break;
- case PM_OPT_DLOFFSET:
- pm_dloffset = (int *)data;
- break;
- case PM_OPT_DLT0:
- pm_dlt0 = (struct timeval *)data;
- break;
- case PM_OPT_DLT:
- pm_dlt = (struct timeval *)data;
- break;
- case PM_OPT_DLRATE:
- pm_dlrate = (float *)data;
- break;
- case PM_OPT_DLXFERED1:
- pm_dlxfered1 = (int *)data;
- break;
- case PM_OPT_DLETA_H:
- pm_dleta_h = (unsigned char *)data;
- break;
- case PM_OPT_DLETA_M:
- pm_dleta_m = (unsigned char *)data;
- break;
- case PM_OPT_DLETA_S:
- pm_dleta_s = (unsigned char *)data;
- break;
-*/
- case PM_OPT_UPGRADEDELAY:
- handle->upgradedelay = data;
- break;
- case PM_OPT_LOGMASK:
- pm_logmask = (unsigned char)data;
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_LOGMASK set to '%02x'"), (unsigned char)data);
- break;
- case PM_OPT_PROXYHOST:
- if(handle->proxyhost) {
- FREE(handle->proxyhost);
- }
- p = strstr((char*)data, "://");
- if(p) {
- p += 3;
- if(p == NULL || *p == '\0') {
- RET_ERR(PM_ERR_SERVER_BAD_LOCATION, -1);
- }
- data = (long)p;
- }
-#if defined(__APPLE__) || defined(__OpenBSD__)
- handle->proxyhost = strdup((char*)data);
-#else
- handle->proxyhost = strndup((char*)data, PATH_MAX);
-#endif
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_PROXYHOST set to '%s'"), handle->proxyhost);
- break;
- case PM_OPT_PROXYPORT:
- handle->proxyport = (unsigned short)data;
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_PROXYPORT set to '%d'"), handle->proxyport);
- break;
- case PM_OPT_XFERCOMMAND:
- if(handle->xfercommand) {
- FREE(handle->xfercommand);
- }
-#if defined(__APPLE__) || defined(__OpenBSD__)
- handle->xfercommand = strdup((char*)data);
-#else
- handle->xfercommand = strndup((char*)data, PATH_MAX);
-#endif
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_XFERCOMMAND set to '%s'"), handle->xfercommand);
- break;
- case PM_OPT_NOPASSIVEFTP:
- handle->nopassiveftp = (unsigned short)data;
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_NOPASSIVEFTP set to '%d'"), handle->nopassiveftp);
- break;
- case PM_OPT_CHOMP:
- handle->chomp = (unsigned short)data;
- _alpm_log(PM_LOG_FLOW2, _("PM_OPT_CHOMP set to '%d'"), handle->chomp);
- break;
- default:
- RET_ERR(PM_ERR_WRONG_ARGS, -1);
+void alpm_option_set_dbpath(const char *dbpath)
+{
+ if(handle->dbpath) FREE(handle->dbpath);
+ if(dbpath) handle->dbpath = strdup(dbpath);
+}
+
+void alpm_option_set_cachedir(const char *cachedir)
+{
+ if(handle->cachedir) FREE(handle->cachedir);
+ if(cachedir) handle->cachedir = strdup(cachedir);
+}
+
+void alpm_option_set_logfile(const char *logfile)
+{
+ if(handle->logfile) {
+ FREE(handle->logfile);
+ if(handle->logfd) {
+ fclose(handle->logfd);
+ handle->logfd = NULL;
+ }
+ }
+ if(logfile) {
+ handle->logfile = strdup(logfile);
+ handle->logfd = fopen(logfile, "a");
}
+}
- return(0);
+void alpm_option_set_usesyslog(unsigned char usesyslog) { handle->usesyslog = usesyslog; }
+
+void alpm_option_add_noupgrade(char *pkg)
+{
+ handle->noupgrade = _alpm_list_add(handle->noupgrade, strdup(pkg));
+}
+void alpm_option_set_noupgrades(pmlist_t *noupgrade)
+{
+ if(handle->noupgrade) FREELIST(handle->noupgrade);
+ if(noupgrade) handle->noupgrade = noupgrade;
}
-int _alpm_handle_get_option(pmhandle_t *handle, unsigned char val, long *data)
+void alpm_option_add_noextract(char *pkg)
{
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+ handle->noextract = _alpm_list_add(handle->noextract, strdup(pkg));
+}
+void alpm_option_set_noextracts(pmlist_t *noextract)
+{
+ if(handle->noextract) FREELIST(handle->noextract);
+ if(noextract) handle->noextract = noextract;
+}
- switch(val) {
- case PM_OPT_ROOT: *data = (long)handle->root; break;
- case PM_OPT_DBPATH: *data = (long)handle->dbpath; break;
- case PM_OPT_CACHEDIR: *data = (long)handle->cachedir; break;
- case PM_OPT_LOCALDB: *data = (long)handle->db_local; break;
- case PM_OPT_SYNCDB: *data = (long)handle->dbs_sync; break;
- case PM_OPT_LOGFILE: *data = (long)handle->logfile; break;
- case PM_OPT_NOUPGRADE: *data = (long)handle->noupgrade; break;
- case PM_OPT_NOEXTRACT: *data = (long)handle->noextract; break;
- case PM_OPT_IGNOREPKG: *data = (long)handle->ignorepkg; break;
- case PM_OPT_HOLDPKG: *data = (long)handle->holdpkg; break;
- case PM_OPT_NEEDLES: *data = (long)handle->needles; break;
- case PM_OPT_USESYSLOG: *data = handle->usesyslog; break;
- case PM_OPT_LOGCB: *data = (long)pm_logcb; break;
- case PM_OPT_DLCB: *data = (long)pm_dlcb; break;
- case PM_OPT_UPGRADEDELAY: *data = (long)handle->upgradedelay; break;
- case PM_OPT_LOGMASK: *data = pm_logmask; break;
-/*
- case PM_OPT_DLFNM: *data = (long)pm_dlfnm; break;
- case PM_OPT_DLOFFSET: *data = (long)pm_dloffset; break;
- case PM_OPT_DLT0: *data = (long)pm_dlt0; break;
- case PM_OPT_DLT: *data = (long)pm_dlt; break;
- case PM_OPT_DLRATE: *data = (long)pm_dlrate; break;
- case PM_OPT_DLXFERED1: *data = (long)pm_dlxfered1; break;
- case PM_OPT_DLETA_H: *data = (long)pm_dleta_h; break;
- case PM_OPT_DLETA_M: *data = (long)pm_dleta_m; break;
- case PM_OPT_DLETA_S: *data = (long)pm_dleta_s; break;
-*/
- case PM_OPT_PROXYHOST: *data = (long)handle->proxyhost; break;
- case PM_OPT_PROXYPORT: *data = handle->proxyport; break;
- case PM_OPT_XFERCOMMAND: *data = (long)handle->xfercommand; break;
- case PM_OPT_NOPASSIVEFTP: *data = handle->nopassiveftp; break;
- case PM_OPT_CHOMP: *data = handle->chomp; break;
- default:
- RET_ERR(PM_ERR_WRONG_ARGS, -1);
- break;
- }
+void alpm_option_add_ignorepkg(char *pkg)
+{
+ handle->ignorepkg = _alpm_list_add(handle->ignorepkg, strdup(pkg));
+}
+void alpm_option_set_ignorepkgs(pmlist_t *ignorepkgs)
+{
+ if(handle->ignorepkg) FREELIST(handle->ignorepkg);
+ if(ignorepkgs) handle->ignorepkg = ignorepkgs;
+}
- return(0);
+void alpm_option_add_holdpkg(char *pkg)
+{
+ handle->holdpkg = _alpm_list_add(handle->holdpkg, strdup(pkg));
+}
+void alpm_option_set_holdpkgs(pmlist_t *holdpkgs)
+{
+ if(handle->holdpkg) FREELIST(handle->holdpkg);
+ if(holdpkgs) handle->holdpkg = holdpkgs;
+}
+
+void alpm_option_set_upgradedelay(time_t delay) { handle->upgradedelay = delay; }
+
+void alpm_option_set_xfercommand(const char *cmd)
+{
+ if(handle->xfercommand) FREE(handle->xfercommand);
+ if(cmd) handle->xfercommand = strdup(cmd);
+}
+
+void alpm_option_set_nopassiveftp(unsigned short nopasv) { handle->nopassiveftp = nopasv; }
+
+void alpm_option_set_chomp(unsigned short chomp) { handle->chomp = chomp; }
+
+void alpm_option_add_needle(char *needle)
+{
+ handle->needles = _alpm_list_add(handle->needles, strdup(needle));
+}
+void alpm_option_set_needles(pmlist_t *needles)
+{
+ if(handle->needles) FREELIST(handle->needles);
+ if(needles) handle->needles = needles;
}
+void alpm_option_set_usecolor(unsigned short usecolor) { handle->use_color = usecolor; }
-/* vim: set ts=2 sw=2 noet: */
+/* vim: set ts=2 sw=2 et: */