diff options
Diffstat (limited to 'lib/libalpm/alpm.h')
-rw-r--r-- | lib/libalpm/alpm.h | 220 |
1 files changed, 109 insertions, 111 deletions
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index fc4aed59..1e18ad95 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -1,11 +1,11 @@ /* * alpm.h - * + * * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org> - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. */ #ifndef _ALPM_H @@ -29,28 +29,23 @@ extern "C" { #endif #include <time.h> /* for time_t */ +#include <stdarg.h> /* for va_list */ + +#include <alpm_list.h> + +#define DEPRECATED __attribute__((deprecated)) /* * Arch Linux Package Management library */ -#define PM_ROOT "/" -#define PM_DBPATH "var/lib/pacman/" -#define PM_CACHEDIR "var/cache/pacman/pkg/" -#define PM_LOCK "tmp/pacman.lck" - - -#define PM_EXT_PKG ".pkg.tar.gz" -#define PM_EXT_DB ".db.tar.gz" - -/* +/* * Structures */ -typedef struct __alpm_list_t alpm_list_t; - typedef struct __pmdb_t pmdb_t; typedef struct __pmpkg_t pmpkg_t; +typedef struct __pmdelta_t pmdelta_t; typedef struct __pmgrp_t pmgrp_t; typedef struct __pmserver_t pmserver_t; typedef struct __pmtrans_t pmtrans_t; @@ -58,12 +53,14 @@ typedef struct __pmsyncpkg_t pmsyncpkg_t; typedef struct __pmdepend_t pmdepend_t; typedef struct __pmdepmissing_t pmdepmissing_t; typedef struct __pmconflict_t pmconflict_t; +typedef struct __pmfileconflict_t pmfileconflict_t; +typedef struct __pmgraph_t pmgraph_t; /* * Library */ -int alpm_initialize(); +int alpm_initialize(void); int alpm_release(void); /* @@ -75,18 +72,18 @@ typedef enum _pmloglevel_t { PM_LOG_ERROR = 0x01, PM_LOG_WARNING = 0x02, PM_LOG_DEBUG = 0x04, - PM_LOG_DOWNLOAD = 0x08, - PM_LOG_FUNCTION = 0x10 + PM_LOG_FUNCTION = 0x08 } pmloglevel_t; -typedef void (*alpm_cb_log)(unsigned short, char *); +typedef void (*alpm_cb_log)(pmloglevel_t, char *, va_list); int alpm_logaction(char *fmt, ...); /* * Downloading */ -typedef void (*alpm_cb_download)(const char *filename, int xfered, int total); +typedef void (*alpm_cb_download)(const char *filename, int file_xfered, + int file_total, int list_xfered, int list_total); /* * Options @@ -100,40 +97,45 @@ void alpm_option_set_logcb(alpm_cb_log cb); alpm_cb_download alpm_option_get_dlcb(); void alpm_option_set_dlcb(alpm_cb_download cb); -unsigned short alpm_option_get_logmask(); -void alpm_option_set_logmask(unsigned short mask); - const char *alpm_option_get_root(); -void alpm_option_set_root(const char *root); +int alpm_option_set_root(const char *root); const char *alpm_option_get_dbpath(); -void alpm_option_set_dbpath(const char *dbpath); +int alpm_option_set_dbpath(const char *dbpath); -const char *alpm_option_get_cachedir(); -void alpm_option_set_cachedir(const char *cachedir); +alpm_list_t *alpm_option_get_cachedirs(); +int alpm_option_add_cachedir(const char *cachedir); +void alpm_option_set_cachedirs(alpm_list_t *cachedirs); const char *alpm_option_get_logfile(); -void alpm_option_set_logfile(const char *logfile); +int alpm_option_set_logfile(const char *logfile); + +const char *alpm_option_get_lockfile(); +/* no set_lockfile, path is determined from dbpath */ unsigned short alpm_option_get_usesyslog(); void alpm_option_set_usesyslog(unsigned short usesyslog); alpm_list_t *alpm_option_get_noupgrades(); -void alpm_option_add_noupgrade(char *pkg); +void alpm_option_add_noupgrade(const char *pkg); void alpm_option_set_noupgrades(alpm_list_t *noupgrade); alpm_list_t *alpm_option_get_noextracts(); -void alpm_option_add_noextract(char *pkg); +void alpm_option_add_noextract(const char *pkg); void alpm_option_set_noextracts(alpm_list_t *noextract); alpm_list_t *alpm_option_get_ignorepkgs(); -void alpm_option_add_ignorepkg(char *pkg); +void alpm_option_add_ignorepkg(const char *pkg); void alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs); alpm_list_t *alpm_option_get_holdpkgs(); -void alpm_option_add_holdpkg(char *pkg); +void alpm_option_add_holdpkg(const char *pkg); void alpm_option_set_holdpkgs(alpm_list_t *holdpkgs); +alpm_list_t *alpm_option_get_ignoregrps(); +void alpm_option_add_ignoregrp(const char *grp); +void alpm_option_set_ignoregrps(alpm_list_t *ignoregrps); + time_t alpm_option_get_upgradedelay(); void alpm_option_set_upgradedelay(time_t delay); @@ -142,16 +144,7 @@ void alpm_option_set_xfercommand(const char *cmd); unsigned short alpm_option_get_nopassiveftp(); void alpm_option_set_nopassiveftp(unsigned short nopasv); - -unsigned short alpm_option_get_chomp(); -void alpm_option_set_chomp(unsigned short chomp); - -alpm_list_t *alpm_option_get_needles(); -void alpm_option_add_needle(char *needle); -void alpm_option_set_needles(alpm_list_t *needles); - -unsigned short alpm_option_get_usecolor(); -void alpm_option_set_usecolor(unsigned short usecolor); +void alpm_option_set_usedelta(unsigned short usedelta); pmdb_t *alpm_option_get_localdb(); alpm_list_t *alpm_option_get_syncdbs(); @@ -160,14 +153,14 @@ alpm_list_t *alpm_option_get_syncdbs(); * Databases */ -/* Database registration callback */ -typedef void (*alpm_cb_db_register)(const char *, pmdb_t *); - -pmdb_t *alpm_db_register(char *treename); +/* Preferred interfaces db_register_local and db_register_sync */ +pmdb_t *alpm_db_register_local(void); +pmdb_t *alpm_db_register_sync(const char *treename); int alpm_db_unregister(pmdb_t *db); +int alpm_db_unregister_all(void); -const char *alpm_db_get_name(pmdb_t *db); -const char *alpm_db_get_url(pmdb_t *db); +const char *alpm_db_get_name(const pmdb_t *db); +const char *alpm_db_get_url(const pmdb_t *db); int alpm_db_setserver(pmdb_t *db, const char *url); @@ -179,7 +172,7 @@ alpm_list_t *alpm_db_whatprovides(pmdb_t *db, const char *name); pmgrp_t *alpm_db_readgrp(pmdb_t *db, const char *name); alpm_list_t *alpm_db_getgrpcache(pmdb_t *db); -alpm_list_t *alpm_db_search(pmdb_t *db, alpm_list_t* needles); +alpm_list_t *alpm_db_search(pmdb_t *db, const alpm_list_t* needles); /* * Packages @@ -193,35 +186,22 @@ typedef enum _pmpkgreason_t { PM_PKG_REASON_DEPEND = 1 /* installed as a dependency for another package */ } pmpkgreason_t; -/* package name formats */ -/* -typedef enum _pmpkghasarch_t { - PM_PKG_WITHOUT_ARCH = 0, / pkgname-pkgver-pkgrel, used under PM_DBPATH / - PM_PKG_WITH_ARCH = 1 / pkgname-pkgver-pkgrel-arch, used under PM_CACHEDIR / -} pmpkghasarch_t; -*/ - -int alpm_pkg_load(char *filename, pmpkg_t **pkg); +int alpm_pkg_load(const char *filename, unsigned short full, pmpkg_t **pkg); int alpm_pkg_free(pmpkg_t *pkg); int alpm_pkg_checkmd5sum(pmpkg_t *pkg); -int alpm_pkg_checksha1sum(pmpkg_t *pkg); -char *alpm_fetch_pkgurl(char *url); -int alpm_parse_config(char *file, alpm_cb_db_register callback, - const char *this_section); +char *alpm_fetch_pkgurl(const char *url); int alpm_pkg_vercmp(const char *ver1, const char *ver2); -char *alpm_pkg_name_hasarch(char *pkgname); +alpm_list_t *alpm_pkg_compute_requiredby(pmpkg_t *pkg); const char *alpm_pkg_get_filename(pmpkg_t *pkg); const char *alpm_pkg_get_name(pmpkg_t *pkg); const char *alpm_pkg_get_version(pmpkg_t *pkg); const char *alpm_pkg_get_desc(pmpkg_t *pkg); const char *alpm_pkg_get_url(pmpkg_t *pkg); -const char *alpm_pkg_get_builddate(pmpkg_t *pkg); -const char *alpm_pkg_get_buildtype(pmpkg_t *pkg); -const char *alpm_pkg_get_installdate(pmpkg_t *pkg); +time_t alpm_pkg_get_builddate(pmpkg_t *pkg); +time_t alpm_pkg_get_installdate(pmpkg_t *pkg); const char *alpm_pkg_get_packager(pmpkg_t *pkg); const char *alpm_pkg_get_md5sum(pmpkg_t *pkg); -const char *alpm_pkg_get_sha1sum(pmpkg_t *pkg); const char *alpm_pkg_get_arch(pmpkg_t *pkg); unsigned long alpm_pkg_get_size(pmpkg_t *pkg); unsigned long alpm_pkg_get_isize(pmpkg_t *pkg); @@ -229,20 +209,32 @@ pmpkgreason_t alpm_pkg_get_reason(pmpkg_t *pkg); alpm_list_t *alpm_pkg_get_licenses(pmpkg_t *pkg); alpm_list_t *alpm_pkg_get_groups(pmpkg_t *pkg); alpm_list_t *alpm_pkg_get_depends(pmpkg_t *pkg); -alpm_list_t *alpm_pkg_get_removes(pmpkg_t *pkg); -alpm_list_t *alpm_pkg_get_requiredby(pmpkg_t *pkg); +alpm_list_t *alpm_pkg_get_optdepends(pmpkg_t *pkg); alpm_list_t *alpm_pkg_get_conflicts(pmpkg_t *pkg); alpm_list_t *alpm_pkg_get_provides(pmpkg_t *pkg); +alpm_list_t *alpm_pkg_get_deltas(pmpkg_t *pkg); alpm_list_t *alpm_pkg_get_replaces(pmpkg_t *pkg); alpm_list_t *alpm_pkg_get_files(pmpkg_t *pkg); alpm_list_t *alpm_pkg_get_backup(pmpkg_t *pkg); unsigned short alpm_pkg_has_scriptlet(pmpkg_t *pkg); +unsigned long alpm_pkg_download_size(pmpkg_t *newpkg, pmdb_t *db_local); + +/* + * Deltas + */ + +const char *alpm_delta_get_from(pmdelta_t *delta); +const char *alpm_delta_get_to(pmdelta_t *delta); +unsigned long alpm_delta_get_size(pmdelta_t *delta); +const char *alpm_delta_get_filename(pmdelta_t *delta); +const char *alpm_delta_get_md5sum(pmdelta_t *delta); + /* * Groups */ -const char *alpm_grp_get_name(pmgrp_t *grp); -alpm_list_t *alpm_grp_get_pkgs(pmgrp_t *grp); +const char *alpm_grp_get_name(const pmgrp_t *grp); +const alpm_list_t *alpm_grp_get_pkgs(const pmgrp_t *grp); /* * Sync @@ -255,9 +247,11 @@ typedef enum _pmsynctype_t { PM_SYNC_TYPE_DEPEND } pmsynctype_t; -pmsynctype_t alpm_sync_get_type(pmsyncpkg_t *sync); -pmpkg_t *alpm_sync_get_pkg(pmsyncpkg_t *sync); -void *alpm_sync_get_data(pmsyncpkg_t *sync); +pmsynctype_t alpm_sync_get_type(const pmsyncpkg_t *sync); +pmpkg_t *alpm_sync_get_pkg(const pmsyncpkg_t *sync); +void *alpm_sync_get_data(const pmsyncpkg_t *sync); +int alpm_sync_sysupgrade(pmdb_t *db_local, + alpm_list_t *dbs_sync, alpm_list_t **syncpkgs); /* * Transactions @@ -267,6 +261,7 @@ void *alpm_sync_get_data(pmsyncpkg_t *sync); typedef enum _pmtranstype_t { PM_TRANS_TYPE_ADD = 1, PM_TRANS_TYPE_REMOVE, + PM_TRANS_TYPE_REMOVEUPGRADE, PM_TRANS_TYPE_UPGRADE, PM_TRANS_TYPE_SYNC } pmtranstype_t; @@ -276,7 +271,7 @@ typedef enum _pmtransflag_t { PM_TRANS_FLAG_NODEPS = 0x01, PM_TRANS_FLAG_FORCE = 0x02, PM_TRANS_FLAG_NOSAVE = 0x04, - PM_TRANS_FLAG_FRESHEN = 0x08, + /* 0x08 flag can go here */ PM_TRANS_FLAG_CASCADE = 0x10, PM_TRANS_FLAG_RECURSE = 0x20, PM_TRANS_FLAG_DBONLY = 0x40, @@ -285,7 +280,8 @@ typedef enum _pmtransflag_t { PM_TRANS_FLAG_DOWNLOADONLY = 0x200, PM_TRANS_FLAG_NOSCRIPTLET = 0x400, PM_TRANS_FLAG_NOCONFLICTS = 0x800, - PM_TRANS_FLAG_PRINTURIS = 0x1000 + PM_TRANS_FLAG_PRINTURIS = 0x1000, + PM_TRANS_FLAG_NEEDED = 0x2000 } pmtransflag_t; /* Transaction Events */ @@ -294,8 +290,6 @@ typedef enum _pmtransevt_t { PM_TRANS_EVT_CHECKDEPS_DONE, PM_TRANS_EVT_FILECONFLICTS_START, PM_TRANS_EVT_FILECONFLICTS_DONE, - PM_TRANS_EVT_CLEANUP_START, - PM_TRANS_EVT_CLEANUP_DONE, PM_TRANS_EVT_RESOLVEDEPS_START, PM_TRANS_EVT_RESOLVEDEPS_DONE, PM_TRANS_EVT_INTERCONFLICTS_START, @@ -309,9 +303,14 @@ typedef enum _pmtransevt_t { PM_TRANS_EVT_EXTRACT_DONE, PM_TRANS_EVT_INTEGRITY_START, PM_TRANS_EVT_INTEGRITY_DONE, + PM_TRANS_EVT_DELTA_INTEGRITY_START, + PM_TRANS_EVT_DELTA_INTEGRITY_DONE, + PM_TRANS_EVT_DELTA_PATCHES_START, + PM_TRANS_EVT_DELTA_PATCHES_DONE, + PM_TRANS_EVT_DELTA_PATCH_START, + PM_TRANS_EVT_DELTA_PATCH_DONE, + PM_TRANS_EVT_DELTA_PATCH_FAILED, PM_TRANS_EVT_SCRIPTLET_INFO, - PM_TRANS_EVT_SCRIPTLET_START, - PM_TRANS_EVT_SCRIPTLET_DONE, PM_TRANS_EVT_PRINTURI, PM_TRANS_EVT_RETRIEVE_START, } pmtransevt_t; @@ -323,7 +322,7 @@ typedef enum _pmtransconv_t { PM_TRANS_CONV_CONFLICT_PKG = 0x04, PM_TRANS_CONV_CORRUPTED_PKG = 0x08, PM_TRANS_CONV_LOCAL_NEWER = 0x10, - PM_TRANS_CONV_LOCAL_UPTODATE = 0x20, + /* 0x20 flag can go here */ PM_TRANS_CONV_REMOVE_HOLDPKG = 0x40 } pmtransconv_t; @@ -356,6 +355,7 @@ int alpm_trans_sysupgrade(void); int alpm_trans_addtarget(char *target); int alpm_trans_prepare(alpm_list_t **data); int alpm_trans_commit(alpm_list_t **data); +int alpm_trans_interrupt(void); int alpm_trans_release(void); /* @@ -369,41 +369,42 @@ typedef enum _pmdepmod_t { PM_DEP_MOD_LE } pmdepmod_t; -typedef enum _pmdeptype_t { - PM_DEP_TYPE_DEPEND = 1, - PM_DEP_TYPE_CONFLICT -} pmdeptype_t; - pmdepend_t *alpm_splitdep(const char *depstring); int alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep); +alpm_list_t *alpm_checkdeps(pmdb_t *db, int reversedeps, + alpm_list_t *remove, alpm_list_t *upgrade); -const char *alpm_dep_get_target(pmdepmissing_t *miss); -pmdeptype_t alpm_dep_get_type(pmdepmissing_t *miss); -pmdepmod_t alpm_dep_get_mod(pmdepmissing_t *miss); -const char *alpm_dep_get_name(pmdepmissing_t *miss); -const char *alpm_dep_get_version(pmdepmissing_t *miss); +const char *alpm_miss_get_target(const pmdepmissing_t *miss); +pmdepend_t *alpm_miss_get_dep(pmdepmissing_t *miss); + +const char *alpm_conflict_get_package1(pmconflict_t *conflict); +const char *alpm_conflict_get_package2(pmconflict_t *conflict); + +pmdepmod_t alpm_dep_get_mod(const pmdepend_t *dep); +const char *alpm_dep_get_name(const pmdepend_t *dep); +const char *alpm_dep_get_version(const pmdepend_t *dep); +char *alpm_dep_get_string(const pmdepend_t *dep); /* * File conflicts */ -typedef enum _pmconflicttype_t { - PM_CONFLICT_TYPE_TARGET = 1, - PM_CONFLICT_TYPE_FILE -} pmconflicttype_t; +typedef enum _pmfileconflicttype_t { + PM_FILECONFLICT_TARGET = 1, + PM_FILECONFLICT_FILESYSTEM +} pmfileconflicttype_t; -const char *alpm_conflict_get_target(pmconflict_t *conflict); -pmconflicttype_t alpm_conflict_get_type(pmconflict_t *conflict); -const char *alpm_conflict_get_file(pmconflict_t *conflict); -const char *alpm_conflict_get_ctarget(pmconflict_t *conflict); +const char *alpm_fileconflict_get_target(pmfileconflict_t *conflict); +pmfileconflicttype_t alpm_fileconflict_get_type(pmfileconflict_t *conflict); +const char *alpm_fileconflict_get_file(pmfileconflict_t *conflict); +const char *alpm_fileconflict_get_ctarget(pmfileconflict_t *conflict); /* * Helpers */ -/* md5sums */ -char *alpm_get_md5sum(char *name); -char *alpm_get_sha1sum(char *name); +/* checksums */ +char *alpm_get_md5sum(const char *name); /* * Errors @@ -413,6 +414,7 @@ enum _pmerrno_t { PM_ERR_SYSTEM, PM_ERR_BADPERMS, PM_ERR_NOT_A_FILE, + PM_ERR_NOT_A_DIR, PM_ERR_WRONG_ARGS, /* Interface */ PM_ERR_HANDLE_NULL, @@ -455,6 +457,9 @@ enum _pmerrno_t { PM_ERR_PKG_INVALID_NAME, PM_ERR_PKG_CORRUPTED, PM_ERR_PKG_REPO_NOT_FOUND, + /* Deltas */ + PM_ERR_DLT_CORRUPTED, + PM_ERR_DLT_PATCHFAILED, /* Groups */ PM_ERR_GRP_NOT_FOUND, /* Dependencies */ @@ -465,15 +470,9 @@ enum _pmerrno_t { PM_ERR_USER_ABORT, PM_ERR_INTERNAL_ERROR, PM_ERR_LIBARCHIVE_ERROR, - PM_ERR_DISK_FULL, PM_ERR_DB_SYNC, PM_ERR_RETRIEVE, PM_ERR_PKG_HOLD, - /* Configuration file */ - PM_ERR_CONF_BAD_SECTION, - PM_ERR_CONF_LOCAL, - PM_ERR_CONF_BAD_SYNTAX, - PM_ERR_CONF_DIRECTIVE_OUTSIDE_SECTION, PM_ERR_INVALID_REGEX, /* Downloading */ PM_ERR_CONNECT_FAILED, @@ -482,9 +481,8 @@ enum _pmerrno_t { extern enum _pmerrno_t pm_errno; -char *alpm_strerror(int err); - -alpm_list_t *alpm_get_upgrades(); +const char *alpm_strerror(int err); +const char *alpm_strerrorlast(void); #ifdef __cplusplus } |