doc: document callbacks
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
bf26b6bbf7
commit
e9ac13776e
1 changed files with 271 additions and 168 deletions
|
@ -616,105 +616,12 @@ void alpm_conflict_free(alpm_conflict_t *conflict);
|
|||
/* End of alpm_depends */
|
||||
/** @} */
|
||||
|
||||
/*
|
||||
* Enumerations
|
||||
* These ones are used in multiple contexts, so are forward-declared.
|
||||
*/
|
||||
|
||||
/** Package install reasons. */
|
||||
typedef enum _alpm_pkgreason_t {
|
||||
/** Explicitly requested by the user. */
|
||||
ALPM_PKG_REASON_EXPLICIT = 0,
|
||||
/** Installed as a dependency for another package. */
|
||||
ALPM_PKG_REASON_DEPEND = 1
|
||||
} alpm_pkgreason_t;
|
||||
|
||||
/** Location a package object was loaded from. */
|
||||
typedef enum _alpm_pkgfrom_t {
|
||||
ALPM_PKG_FROM_FILE = 1,
|
||||
ALPM_PKG_FROM_LOCALDB,
|
||||
ALPM_PKG_FROM_SYNCDB
|
||||
} alpm_pkgfrom_t;
|
||||
|
||||
/** Method used to validate a package. */
|
||||
typedef enum _alpm_pkgvalidation_t {
|
||||
ALPM_PKG_VALIDATION_UNKNOWN = 0,
|
||||
ALPM_PKG_VALIDATION_NONE = (1 << 0),
|
||||
ALPM_PKG_VALIDATION_MD5SUM = (1 << 1),
|
||||
ALPM_PKG_VALIDATION_SHA256SUM = (1 << 2),
|
||||
ALPM_PKG_VALIDATION_SIGNATURE = (1 << 3)
|
||||
} alpm_pkgvalidation_t;
|
||||
|
||||
/*
|
||||
* Structures
|
||||
*/
|
||||
|
||||
/** Package group */
|
||||
typedef struct _alpm_group_t {
|
||||
/** group name */
|
||||
char *name;
|
||||
/** list of alpm_pkg_t packages */
|
||||
alpm_list_t *packages;
|
||||
} alpm_group_t;
|
||||
|
||||
/** File in a package */
|
||||
typedef struct _alpm_file_t {
|
||||
char *name;
|
||||
off_t size;
|
||||
mode_t mode;
|
||||
} alpm_file_t;
|
||||
|
||||
/** Package filelist container */
|
||||
typedef struct _alpm_filelist_t {
|
||||
size_t count;
|
||||
alpm_file_t *files;
|
||||
} alpm_filelist_t;
|
||||
|
||||
/** Local package or package file backup entry */
|
||||
typedef struct _alpm_backup_t {
|
||||
char *name;
|
||||
char *hash;
|
||||
} alpm_backup_t;
|
||||
|
||||
/*
|
||||
* Hooks
|
||||
*/
|
||||
|
||||
typedef enum _alpm_hook_when_t {
|
||||
ALPM_HOOK_PRE_TRANSACTION = 1,
|
||||
ALPM_HOOK_POST_TRANSACTION
|
||||
} alpm_hook_when_t;
|
||||
|
||||
/*
|
||||
* Logging facilities
|
||||
*/
|
||||
|
||||
/** \addtogroup alpm_log Logging Functions
|
||||
* @brief Functions to log using libalpm
|
||||
/** \addtogroup alpm_cb Callbacks
|
||||
* @brief Functions and structures for libalpm's callbacks
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** Logging Levels */
|
||||
typedef enum _alpm_loglevel_t {
|
||||
ALPM_LOG_ERROR = 1,
|
||||
ALPM_LOG_WARNING = (1 << 1),
|
||||
ALPM_LOG_DEBUG = (1 << 2),
|
||||
ALPM_LOG_FUNCTION = (1 << 3)
|
||||
} alpm_loglevel_t;
|
||||
|
||||
typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);
|
||||
|
||||
/** A printf-like function for logging.
|
||||
* @param handle the context handle
|
||||
* @param prefix caller-specific prefix for the log
|
||||
* @param fmt output format
|
||||
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
||||
*/
|
||||
int alpm_logaction(alpm_handle_t *handle, const char *prefix,
|
||||
const char *fmt, ...) __attribute__((format(printf, 3, 4)));
|
||||
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* Type of events.
|
||||
*/
|
||||
|
@ -789,7 +696,7 @@ typedef enum _alpm_event_type_t {
|
|||
/** A .pacnew file was created; See alpm_event_pacnew_created_t for arguments. */
|
||||
ALPM_EVENT_PACNEW_CREATED,
|
||||
/** A .pacsave file was created; See alpm_event_pacsave_created_t for
|
||||
* arguments */
|
||||
* arguments. */
|
||||
ALPM_EVENT_PACSAVE_CREATED,
|
||||
/** Processing hooks will be started. */
|
||||
ALPM_EVENT_HOOK_START,
|
||||
|
@ -797,100 +704,123 @@ typedef enum _alpm_event_type_t {
|
|||
ALPM_EVENT_HOOK_DONE,
|
||||
/** A hook is starting */
|
||||
ALPM_EVENT_HOOK_RUN_START,
|
||||
/** A hook has finished running */
|
||||
/** A hook has finished running. */
|
||||
ALPM_EVENT_HOOK_RUN_DONE
|
||||
} alpm_event_type_t;
|
||||
|
||||
/** An event that may reprisent any event. */
|
||||
typedef struct _alpm_event_any_t {
|
||||
/** Type of event. */
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
} alpm_event_any_t;
|
||||
|
||||
/** An enum over the kind of package operations. */
|
||||
typedef enum _alpm_package_operation_t {
|
||||
/** Package (to be) installed. (No oldpkg) */
|
||||
ALPM_PACKAGE_INSTALL = 1,
|
||||
/** Package (to be) upgraded */
|
||||
ALPM_PACKAGE_UPGRADE,
|
||||
/** Package (to be) re-installed. */
|
||||
/** Package (to be) re-installed */
|
||||
ALPM_PACKAGE_REINSTALL,
|
||||
/** Package (to be) downgraded. */
|
||||
/** Package (to be) downgraded */
|
||||
ALPM_PACKAGE_DOWNGRADE,
|
||||
/** Package (to be) removed. (No newpkg) */
|
||||
/** Package (to be) removed (No newpkg) */
|
||||
ALPM_PACKAGE_REMOVE
|
||||
} alpm_package_operation_t;
|
||||
|
||||
/** A package operation event occurred. */
|
||||
typedef struct _alpm_event_package_operation_t {
|
||||
/** Type of event. */
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
/** Type of operation. */
|
||||
/** Type of operation */
|
||||
alpm_package_operation_t operation;
|
||||
/** Old package. */
|
||||
/** Old package */
|
||||
alpm_pkg_t *oldpkg;
|
||||
/** New package. */
|
||||
/** New package */
|
||||
alpm_pkg_t *newpkg;
|
||||
} alpm_event_package_operation_t;
|
||||
|
||||
/** An optional dependency was removed. */
|
||||
typedef struct _alpm_event_optdep_removal_t {
|
||||
/** Type of event. */
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
/** Package with the optdep. */
|
||||
/** Package with the optdep */
|
||||
alpm_pkg_t *pkg;
|
||||
/** Optdep being removed. */
|
||||
/** Optdep being removed */
|
||||
alpm_depend_t *optdep;
|
||||
} alpm_event_optdep_removal_t;
|
||||
|
||||
/** A scriptlet was ran. */
|
||||
typedef struct _alpm_event_scriptlet_info_t {
|
||||
/** Type of event. */
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
/** Line of scriptlet output. */
|
||||
/** Line of scriptlet output */
|
||||
const char *line;
|
||||
} alpm_event_scriptlet_info_t;
|
||||
|
||||
|
||||
/** A database is missing.
|
||||
*
|
||||
* The database is registered but has not been downloaded
|
||||
*/
|
||||
typedef struct _alpm_event_database_missing_t {
|
||||
/** Type of event. */
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
/** Name of the database. */
|
||||
/** Name of the database */
|
||||
const char *dbname;
|
||||
} alpm_event_database_missing_t;
|
||||
|
||||
/** A package was downloaded. */
|
||||
typedef struct _alpm_event_pkgdownload_t {
|
||||
/** Type of event. */
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
/** Name of the file */
|
||||
const char *file;
|
||||
} alpm_event_pkgdownload_t;
|
||||
|
||||
/** A pacnew file was created. */
|
||||
typedef struct _alpm_event_pacnew_created_t {
|
||||
/** Type of event. */
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
/** Whether the creation was result of a NoUpgrade or not */
|
||||
int from_noupgrade;
|
||||
/** Old package. */
|
||||
/** Old package */
|
||||
alpm_pkg_t *oldpkg;
|
||||
/** New Package. */
|
||||
/** New Package */
|
||||
alpm_pkg_t *newpkg;
|
||||
/** Filename of the file without the .pacnew suffix */
|
||||
const char *file;
|
||||
} alpm_event_pacnew_created_t;
|
||||
|
||||
/** A pacsave file was created. */
|
||||
typedef struct _alpm_event_pacsave_created_t {
|
||||
/** Type of event. */
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
/** Old package. */
|
||||
/** Old package */
|
||||
alpm_pkg_t *oldpkg;
|
||||
/** Filename of the file without the .pacsave suffix. */
|
||||
/** Filename of the file without the .pacsave suffix */
|
||||
const char *file;
|
||||
} alpm_event_pacsave_created_t;
|
||||
|
||||
/** Kind of hook. */
|
||||
typedef enum _alpm_hook_when_t {
|
||||
/* Pre transaction hook */
|
||||
ALPM_HOOK_PRE_TRANSACTION = 1,
|
||||
/* Post transaction hook */
|
||||
ALPM_HOOK_POST_TRANSACTION
|
||||
} alpm_hook_when_t;
|
||||
|
||||
/** pre/post transaction hooks are to be ran. */
|
||||
typedef struct _alpm_event_hook_t {
|
||||
/** Type of event.*/
|
||||
/** Type of event*/
|
||||
alpm_event_type_t type;
|
||||
/** Type of hooks. */
|
||||
/** Type of hook */
|
||||
alpm_hook_when_t when;
|
||||
} alpm_event_hook_t;
|
||||
|
||||
/** A pre/post transaction hook was ran. */
|
||||
typedef struct _alpm_event_hook_run_t {
|
||||
/** Type of event.*/
|
||||
/** Type of event */
|
||||
alpm_event_type_t type;
|
||||
/** Name of hook */
|
||||
const char *name;
|
||||
|
@ -903,185 +833,260 @@ typedef struct _alpm_event_hook_run_t {
|
|||
} alpm_event_hook_run_t;
|
||||
|
||||
/** Events.
|
||||
* This is an union passed to the callback, that allows the frontend to know
|
||||
* This is a union passed to the callback that allows the frontend to know
|
||||
* which type of event was triggered (via type). It is then possible to
|
||||
* typecast the pointer to the right structure, or use the union field, in order
|
||||
* to access event-specific data. */
|
||||
typedef union _alpm_event_t {
|
||||
/** Type of event it's always safe to access this. */
|
||||
alpm_event_type_t type;
|
||||
/** The any event type. It's always safe to access this. */
|
||||
alpm_event_any_t any;
|
||||
/** Package operation */
|
||||
alpm_event_package_operation_t package_operation;
|
||||
/** An optdept was remove */
|
||||
alpm_event_optdep_removal_t optdep_removal;
|
||||
/** A scriptlet was ran */
|
||||
alpm_event_scriptlet_info_t scriptlet_info;
|
||||
/** A database is missing */
|
||||
alpm_event_database_missing_t database_missing;
|
||||
/** A package was downloaded */
|
||||
alpm_event_pkgdownload_t pkgdownload;
|
||||
/** A pacnew file was created */
|
||||
alpm_event_pacnew_created_t pacnew_created;
|
||||
/** A pacsave file was created */
|
||||
alpm_event_pacsave_created_t pacsave_created;
|
||||
/** Pre/post transaction hooks are being ran */
|
||||
alpm_event_hook_t hook;
|
||||
/** A hook was ran */
|
||||
alpm_event_hook_run_t hook_run;
|
||||
} alpm_event_t;
|
||||
|
||||
/** Event callback. */
|
||||
/** Event callback.
|
||||
*
|
||||
* Called when an event occurs
|
||||
* @param event the event that occurred */
|
||||
typedef void (*alpm_cb_event)(alpm_event_t *);
|
||||
|
||||
/**
|
||||
* Type of questions.
|
||||
* Type of question.
|
||||
* Unlike the events or progress enumerations, this enum has bitmask values
|
||||
* so a frontend can use a bitmask map to supply preselected answers to the
|
||||
* different types of questions.
|
||||
*/
|
||||
typedef enum _alpm_question_type_t {
|
||||
/** Should target in ignorepkg be installed anyway? */
|
||||
ALPM_QUESTION_INSTALL_IGNOREPKG = (1 << 0),
|
||||
/** Should a package be replaced? */
|
||||
ALPM_QUESTION_REPLACE_PKG = (1 << 1),
|
||||
/** Should a conflicting package be removed? */
|
||||
ALPM_QUESTION_CONFLICT_PKG = (1 << 2),
|
||||
/** Should a corrupted package be deleted? */
|
||||
ALPM_QUESTION_CORRUPTED_PKG = (1 << 3),
|
||||
/** Should unresolvable targets be removed from the transaction? */
|
||||
ALPM_QUESTION_REMOVE_PKGS = (1 << 4),
|
||||
/** Provider selection */
|
||||
ALPM_QUESTION_SELECT_PROVIDER = (1 << 5),
|
||||
/** Should a key be imported? */
|
||||
ALPM_QUESTION_IMPORT_KEY = (1 << 6)
|
||||
} alpm_question_type_t;
|
||||
|
||||
/** A question that can represent any other question. */
|
||||
typedef struct _alpm_question_any_t {
|
||||
/** Type of question. */
|
||||
/** Type of question */
|
||||
alpm_question_type_t type;
|
||||
/** Answer. */
|
||||
/** Answer */
|
||||
int answer;
|
||||
} alpm_question_any_t;
|
||||
|
||||
/** Should target in ignorepkg be installed anyway? */
|
||||
typedef struct _alpm_question_install_ignorepkg_t {
|
||||
/** Type of question. */
|
||||
/** Type of question */
|
||||
alpm_question_type_t type;
|
||||
/** Answer: whether or not to install pkg anyway. */
|
||||
/** Answer: whether or not to install pkg anyway */
|
||||
int install;
|
||||
/* Package in IgnorePkg/IgnoreGroup. */
|
||||
/** The ignored package that we are deciding whether to install */
|
||||
alpm_pkg_t *pkg;
|
||||
} alpm_question_install_ignorepkg_t;
|
||||
|
||||
/** Should a package be replaced? */
|
||||
typedef struct _alpm_question_replace_t {
|
||||
/** Type of question. */
|
||||
/** Type of question */
|
||||
alpm_question_type_t type;
|
||||
/** Answer: whether or not to replace oldpkg with newpkg. */
|
||||
/** Answer: whether or not to replace oldpkg with newpkg */
|
||||
int replace;
|
||||
/* Package to be replaced. */
|
||||
/** Package to be replaced */
|
||||
alpm_pkg_t *oldpkg;
|
||||
/* Package to replace with. */
|
||||
/** Package to replace with.*/
|
||||
alpm_pkg_t *newpkg;
|
||||
/* DB of newpkg */
|
||||
/** DB of newpkg */
|
||||
alpm_db_t *newdb;
|
||||
} alpm_question_replace_t;
|
||||
|
||||
/** Should a conflicting package be removed? */
|
||||
typedef struct _alpm_question_conflict_t {
|
||||
/** Type of question. */
|
||||
/** Type of question */
|
||||
alpm_question_type_t type;
|
||||
/** Answer: whether or not to remove conflict->package2. */
|
||||
/** Answer: whether or not to remove conflict->package2 */
|
||||
int remove;
|
||||
/** Conflict info. */
|
||||
/** Conflict info */
|
||||
alpm_conflict_t *conflict;
|
||||
} alpm_question_conflict_t;
|
||||
|
||||
/** Should a corrupted package be deleted? */
|
||||
typedef struct _alpm_question_corrupted_t {
|
||||
/** Type of question. */
|
||||
/** Type of question */
|
||||
alpm_question_type_t type;
|
||||
/** Answer: whether or not to remove filepath. */
|
||||
/** Answer: whether or not to remove filepath */
|
||||
int remove;
|
||||
/** Filename to remove */
|
||||
/** File to remove */
|
||||
const char *filepath;
|
||||
/** Error code indicating the reason for package invalidity */
|
||||
alpm_errno_t reason;
|
||||
} alpm_question_corrupted_t;
|
||||
|
||||
/** Should unresolvable targets be removed from the transaction? */
|
||||
typedef struct _alpm_question_remove_pkgs_t {
|
||||
/** Type of question. */
|
||||
/** Type of question */
|
||||
alpm_question_type_t type;
|
||||
/** Answer: whether or not to skip packages. */
|
||||
/** Answer: whether or not to skip packages */
|
||||
int skip;
|
||||
/** List of alpm_pkg_t* with unresolved dependencies. */
|
||||
/** List of alpm_pkg_t* with unresolved dependencies */
|
||||
alpm_list_t *packages;
|
||||
} alpm_question_remove_pkgs_t;
|
||||
|
||||
/** Provider selection */
|
||||
typedef struct _alpm_question_select_provider_t {
|
||||
/** Type of question. */
|
||||
/** Type of question */
|
||||
alpm_question_type_t type;
|
||||
/** Answer: which provider to use (index from providers). */
|
||||
/** Answer: which provider to use (index from providers) */
|
||||
int use_index;
|
||||
/** List of alpm_pkg_t* as possible providers. */
|
||||
/** List of alpm_pkg_t* as possible providers */
|
||||
alpm_list_t *providers;
|
||||
/** What providers provide for. */
|
||||
/** What providers provide for */
|
||||
alpm_depend_t *depend;
|
||||
} alpm_question_select_provider_t;
|
||||
|
||||
/** Should a key be imported? */
|
||||
typedef struct _alpm_question_import_key_t {
|
||||
/** Type of question. */
|
||||
/** Type of question */
|
||||
alpm_question_type_t type;
|
||||
/** Answer: whether or not to import key. */
|
||||
/** Answer: whether or not to import key */
|
||||
int import;
|
||||
/** The key to import. */
|
||||
/** The key to import */
|
||||
alpm_pgpkey_t *key;
|
||||
} alpm_question_import_key_t;
|
||||
|
||||
/**
|
||||
* Questions.
|
||||
* This is an union passed to the callback, that allows the frontend to know
|
||||
* This is an union passed to the callback that allows the frontend to know
|
||||
* which type of question was triggered (via type). It is then possible to
|
||||
* typecast the pointer to the right structure, or use the union field, in order
|
||||
* to access question-specific data. */
|
||||
typedef union _alpm_question_t {
|
||||
/** The type of question. It's always safe to access this. */
|
||||
alpm_question_type_t type;
|
||||
/** A question that can represent any question.
|
||||
* It's always safe to access this. */
|
||||
alpm_question_any_t any;
|
||||
/** Should target in ignorepkg be installed anyway? */
|
||||
alpm_question_install_ignorepkg_t install_ignorepkg;
|
||||
/** Should a package be replaced? */
|
||||
alpm_question_replace_t replace;
|
||||
/** Should a conflicting package be removed? */
|
||||
alpm_question_conflict_t conflict;
|
||||
/** Should a corrupted package be deleted? */
|
||||
alpm_question_corrupted_t corrupted;
|
||||
/** Should unresolvable targets be removed from the transaction? */
|
||||
alpm_question_remove_pkgs_t remove_pkgs;
|
||||
/** Provider selection */
|
||||
alpm_question_select_provider_t select_provider;
|
||||
/** Should a key be imported? */
|
||||
alpm_question_import_key_t import_key;
|
||||
} alpm_question_t;
|
||||
|
||||
/** Question callback */
|
||||
/** Question callback.
|
||||
*
|
||||
* This callback allows user to give input and decide what to do during certain events
|
||||
* @param question the question being asked.
|
||||
*/
|
||||
typedef void (*alpm_cb_question)(alpm_question_t *);
|
||||
|
||||
/** Progress */
|
||||
/** An enum over different kinds of progress alerts. */
|
||||
typedef enum _alpm_progress_t {
|
||||
/** Package install */
|
||||
ALPM_PROGRESS_ADD_START,
|
||||
/** Package upgrade */
|
||||
ALPM_PROGRESS_UPGRADE_START,
|
||||
/** Package downgrade */
|
||||
ALPM_PROGRESS_DOWNGRADE_START,
|
||||
/** Package reinstall */
|
||||
ALPM_PROGRESS_REINSTALL_START,
|
||||
/** Package removal */
|
||||
ALPM_PROGRESS_REMOVE_START,
|
||||
/** Conflict checking */
|
||||
ALPM_PROGRESS_CONFLICTS_START,
|
||||
/** Diskspace checking */
|
||||
ALPM_PROGRESS_DISKSPACE_START,
|
||||
/** Package Integrity checking */
|
||||
ALPM_PROGRESS_INTEGRITY_START,
|
||||
/** Loading packages from disk */
|
||||
ALPM_PROGRESS_LOAD_START,
|
||||
/** Checking signatures of packages */
|
||||
ALPM_PROGRESS_KEYRING_START
|
||||
} alpm_progress_t;
|
||||
|
||||
/** Progress callback
|
||||
*
|
||||
* Alert the front end about the progress of certain events.
|
||||
* Allows the implementation of loading bars for events that
|
||||
* make take a while to complete.
|
||||
* @param progress the kind of event that is progressing
|
||||
* @param pkg for package operations, the name of the package being operated on
|
||||
* @param percent the percent completion of the action
|
||||
* @param howmany the total amount of items in the action
|
||||
* @param current the current amount of items completed
|
||||
*/
|
||||
/** Progress callback */
|
||||
typedef void (*alpm_cb_progress)(alpm_progress_t, const char *, int, size_t, size_t);
|
||||
typedef void (*alpm_cb_progress)(alpm_progress_t progress, const char *pkg,
|
||||
int percent, size_t howmany, size_t current);
|
||||
|
||||
/*
|
||||
* Downloading
|
||||
*/
|
||||
|
||||
/* File download events.
|
||||
/** File download events.
|
||||
* These events are reported by ALPM via download callback.
|
||||
*/
|
||||
typedef enum {
|
||||
ALPM_DOWNLOAD_INIT, /* alpm initializes file download logic */
|
||||
ALPM_DOWNLOAD_PROGRESS, /* download progress reported */
|
||||
ALPM_DOWNLOAD_COMPLETED /* alpm is about to release data related to the file */
|
||||
typedef enum _alpm_download_event_type_t {
|
||||
/** A download was started */
|
||||
ALPM_DOWNLOAD_INIT,
|
||||
/** A download made progress */
|
||||
ALPM_DOWNLOAD_PROGRESS,
|
||||
/** A download completed */
|
||||
ALPM_DOWNLOAD_COMPLETED
|
||||
} alpm_download_event_type_t;
|
||||
|
||||
typedef struct {
|
||||
int optional; /* whether this file is optional and thus the errors could be ignored */
|
||||
/** Context struct for when a download starts. */
|
||||
typedef struct _alpm_download_event_init_t {
|
||||
/** whether this file is optional and thus the errors could be ignored */
|
||||
int optional;
|
||||
} alpm_download_event_init_t;
|
||||
|
||||
typedef struct {
|
||||
off_t downloaded; /* amount of data downloaded */
|
||||
off_t total; /* total amount need to be downloaded */
|
||||
/** Context struct for when a download progresses. */
|
||||
typedef struct _alpm_download_event_progress_t {
|
||||
/** Amount of data downloaded */
|
||||
off_t downloaded;
|
||||
/** Total amount need to be downloaded */
|
||||
off_t total;
|
||||
} alpm_download_event_progress_t;
|
||||
|
||||
typedef struct {
|
||||
/* total bytes in file */
|
||||
|
||||
/** Context struct for when a download completes. */
|
||||
typedef struct _alpm_download_event_completed_t {
|
||||
/** Total bytes in file */
|
||||
off_t total;
|
||||
/* download result code:
|
||||
/** download result code:
|
||||
* 0 - download completed successfully
|
||||
* 1 - the file is up-to-date
|
||||
* -1 - error
|
||||
|
@ -1097,6 +1102,10 @@ typedef struct {
|
|||
typedef void (*alpm_cb_download)(const char *filename,
|
||||
alpm_download_event_type_t event, void *data);
|
||||
|
||||
|
||||
/** Total Download callback.
|
||||
* @param total amount that will be downloaded during \link alpm_trans_commit \endlink.
|
||||
*/
|
||||
typedef void (*alpm_cb_totaldl)(off_t total);
|
||||
|
||||
/** A callback for downloading files
|
||||
|
@ -1109,6 +1118,100 @@ typedef void (*alpm_cb_totaldl)(off_t total);
|
|||
typedef int (*alpm_cb_fetch)(const char *url, const char *localpath,
|
||||
int force);
|
||||
|
||||
/* End of alpm_cb */
|
||||
/** @} */
|
||||
|
||||
|
||||
/*
|
||||
* Enumerations
|
||||
* These ones are used in multiple contexts, so are forward-declared.
|
||||
*/
|
||||
|
||||
/** Package install reasons. */
|
||||
typedef enum _alpm_pkgreason_t {
|
||||
/** Explicitly requested by the user. */
|
||||
ALPM_PKG_REASON_EXPLICIT = 0,
|
||||
/** Installed as a dependency for another package. */
|
||||
ALPM_PKG_REASON_DEPEND = 1
|
||||
} alpm_pkgreason_t;
|
||||
|
||||
/** Location a package object was loaded from. */
|
||||
typedef enum _alpm_pkgfrom_t {
|
||||
ALPM_PKG_FROM_FILE = 1,
|
||||
ALPM_PKG_FROM_LOCALDB,
|
||||
ALPM_PKG_FROM_SYNCDB
|
||||
} alpm_pkgfrom_t;
|
||||
|
||||
/** Method used to validate a package. */
|
||||
typedef enum _alpm_pkgvalidation_t {
|
||||
ALPM_PKG_VALIDATION_UNKNOWN = 0,
|
||||
ALPM_PKG_VALIDATION_NONE = (1 << 0),
|
||||
ALPM_PKG_VALIDATION_MD5SUM = (1 << 1),
|
||||
ALPM_PKG_VALIDATION_SHA256SUM = (1 << 2),
|
||||
ALPM_PKG_VALIDATION_SIGNATURE = (1 << 3)
|
||||
} alpm_pkgvalidation_t;
|
||||
|
||||
/*
|
||||
* Structures
|
||||
*/
|
||||
|
||||
/** Package group */
|
||||
typedef struct _alpm_group_t {
|
||||
/** group name */
|
||||
char *name;
|
||||
/** list of alpm_pkg_t packages */
|
||||
alpm_list_t *packages;
|
||||
} alpm_group_t;
|
||||
|
||||
/** File in a package */
|
||||
typedef struct _alpm_file_t {
|
||||
char *name;
|
||||
off_t size;
|
||||
mode_t mode;
|
||||
} alpm_file_t;
|
||||
|
||||
/** Package filelist container */
|
||||
typedef struct _alpm_filelist_t {
|
||||
size_t count;
|
||||
alpm_file_t *files;
|
||||
} alpm_filelist_t;
|
||||
|
||||
/** Local package or package file backup entry */
|
||||
typedef struct _alpm_backup_t {
|
||||
char *name;
|
||||
char *hash;
|
||||
} alpm_backup_t;
|
||||
|
||||
/*
|
||||
* Logging facilities
|
||||
*/
|
||||
|
||||
/** \addtogroup alpm_log Logging Functions
|
||||
* @brief Functions to log using libalpm
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** Logging Levels */
|
||||
typedef enum _alpm_loglevel_t {
|
||||
ALPM_LOG_ERROR = 1,
|
||||
ALPM_LOG_WARNING = (1 << 1),
|
||||
ALPM_LOG_DEBUG = (1 << 2),
|
||||
ALPM_LOG_FUNCTION = (1 << 3)
|
||||
} alpm_loglevel_t;
|
||||
|
||||
typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);
|
||||
|
||||
/** A printf-like function for logging.
|
||||
* @param handle the context handle
|
||||
* @param prefix caller-specific prefix for the log
|
||||
* @param fmt output format
|
||||
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
||||
*/
|
||||
int alpm_logaction(alpm_handle_t *handle, const char *prefix,
|
||||
const char *fmt, ...) __attribute__((format(printf, 3, 4)));
|
||||
|
||||
/** @} */
|
||||
|
||||
/** Fetch a list of remote packages.
|
||||
* @param handle the context handle
|
||||
* @param urls list of package URLs to download
|
||||
|
|
Loading…
Add table
Reference in a new issue