warning: variable does not need to be mutable
--> alpm-bindgen/src/main.rs:87:13
|
87 | let mut comment = comment
| ----^^^^^^^
| |
| help: remove this `mut`
|
= note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
warning: `alpm-bindgen` (bin "alpm-bindgen") generated 1 warning (run `cargo fix --bin "alpm-bindgen" -p alpm-bindgen` to apply 1 suggestion)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
Running `/home/morganamilo/rust/target/debug/alpm-bindgen src/16.0.1`
data held by the list node
pointer to the previous node
pointer to the next node
A doubly linked list
item deallocation callback.
@param item the item to free
item comparison callback
Free a list, but not the contained data.
@param list the list to free
Free the internal data of a list structure but not the list itself.
@param list the list to free
@param fn a free function for the internal data
Add a new item to the end of the list.
@param list the list to add to
@param data the new item to be added to the list
@return the resultant list
@brief Add a new item to the end of the list.
@param list the list to add to
@param data the new item to be added to the list
@return the newly added item
@brief Duplicate and append a string to a list.
@param list the list to append to
@param data the string to duplicate and append
@return the newly added item
@brief Add items to a list in sorted order.
@param list the list to add to
@param data the new item to be added to the list
@param fn the comparison function to use to determine order
@return the resultant list
@brief Join two lists.
The two lists must be independent. Do not free the original lists after
calling this function, as this is not a copy operation. The list pointers
passed in should be considered invalid after calling this function.
@param first the first list
@param second the second list
@return the resultant joined list
@brief Merge the two sorted sublists into one sorted list.
@param left the first list
@param right the second list
@param fn comparison function for determining merge order
@return the resultant list
@brief Sort a list of size `n` using mergesort algorithm.
@param list the list to sort
@param n the size of the list
@param fn the comparison function for determining order
@return the resultant list
@brief Remove an item from the list.
item is not freed; this is the responsibility of the caller.
@param haystack the list to remove the item from
@param item the item to remove from the list
@return the resultant list
@brief Remove an item from the list.
@param haystack the list to remove the item from
@param needle the data member of the item we're removing
@param fn the comparison function for searching
@param data output parameter containing data of the removed item
@return the resultant list
@brief Remove a string from a list.
@param haystack the list to remove the item from
@param needle the data member of the item we're removing
@param data output parameter containing data of the removed item
@return the resultant list
@brief Create a new list without any duplicates.
This does NOT copy data members.
@param list the list to copy
@return a new list containing non-duplicate items
@brief Copy a string list, including data.
@param list the list to copy
@return a copy of the original list
@brief Copy a list, without copying data.
@param list the list to copy
@return a copy of the original list
@brief Copy a list and copy the data.
Note that the data elements to be copied should not contain pointers
and should also be of constant size.
@param list the list to copy
@param size the size of each data element
@return a copy of the original list, data copied as well
@brief Create a new list in reverse order.
@param list the list to copy
@return a new list in reverse order
@brief Return nth element from list (starting from 0).
@param list the list
@param n the index of the item to find (n < alpm_list_count(list) IS needed)
@return an alpm_list_t node for index `n`
@brief Get the next element of a list.
@param list the list node
@return the next element, or NULL when no more elements exist
@brief Get the previous element of a list.
@param list the list head
@return the previous element, or NULL when no previous element exist
@brief Get the last item in the list.
@param list the list
@return the last element in the list
@brief Get the number of items in a list.
@param list the list
@return the number of list items
@brief Find an item in a list.
@param needle the item to search
@param haystack the list
@param fn the comparison function for searching (!= NULL)
@return `needle` if found, NULL otherwise
@brief Find an item in a list.
Search for the item whose data matches that of the `needle`.
@param needle the data to search for (== comparison)
@param haystack the list
@return `needle` if found, NULL otherwise
@brief Find a string in a list.
@param needle the string to search for
@param haystack the list
@return `needle` if found, NULL otherwise
@brief Check if two lists contain the same data, ignoring order.
Lists are considered equal if they both contain the same data regardless
of order.
@param left the first list
@param right the second list
@param fn the comparison function
@return 1 if the lists are equal, 0 if not equal, -1 on error.
@brief Find the differences between list `left` and list `right`
The two lists must be sorted. Items only in list `left` are added to the
`onlyleft` list. Items only in list `right` are added to the `onlyright`
list.
@param left the first list
@param right the second list
@param fn the comparison function
@param onlyleft pointer to the first result list
@param onlyright pointer to the second result list
@brief Find the items in list `lhs` that are not present in list `rhs`.
@param lhs the first list
@param rhs the second list
@param fn the comparison function
@return a list containing all items in `lhs` not present in `rhs`
@brief Copy a list and data into a standard C array of fixed length.
Note that the data elements are shallow copied so any contained pointers
will point to the original data.
@param list the list to copy
@param n the size of the list
@param size the size of each data element
@return an array version of the original list, data copied as well
The libalpm context handle.
This struct represents an instance of libalpm.
@ingroup libalpm_handle
A database.
A database is a container that stores metadata about packages.
A database can be located on the local filesystem or on a remote server.
To use a database, it must first be registered via \link alpm_register_syncdb \endlink.
If the database is already present in dbpath then it will be usable. Otherwise,
the database needs to be downloaded using \link alpm_db_update \endlink. Even if the
source of the database is the local filesystem.
After this, the database can be used to query packages and groups. Any packages or groups
from the database will continue to be owned by the database and do not need to be freed by
the user. They will be freed when the database is unregistered.
Databases are automatically unregistered when the \link alpm_handle_t \endlink is released.
@ingroup libalpm_databases
A package.
A package can be loaded from disk via \link alpm_pkg_load \endlink or retrieved from a database.
Packages from databases are automatically freed when the database is unregistered. Packages loaded
from a file must be freed manually.
Packages can then be queried for metadata or added to a transaction
to be added or removed from the system.
@ingroup libalpm_packages
The extended data type used to store non-standard package data fields
@ingroup libalpm_packages
The time type used by libalpm. Represents a unix time stamp
@ingroup libalpm_misc
Name of the file
Size of the file
The file's permissions
File in a package
Amount of files in the array
An array of files
Package filelist container
Name of the file (without .pacsave extension)
Hash of the filename (used internally)
Local package or package file backup entry
Determines whether a package filelist contains a given path.
The provided path should be relative to the install root with no leading
slashes, e.g. "etc/localtime". When searching for directories, the path must
have a trailing slash.
@param filelist a pointer to a package filelist
@param path the path to search for in the package
@return a pointer to the matching file or NULL if not found
group name
list of alpm_pkg_t packages
Package group
Find group members across a list of databases.
If a member exists in several databases, only the first database is used.
IgnorePkg is also handled.
@param dbs the list of alpm_db_t *
@param name the name of the group
@return the list of alpm_pkg_t * (caller is responsible for alpm_list_free)
libalpm's error type
No error
Failed to allocate memory
A system error occurred
Permmision denied
Should be a file
Should be a directory
Function was called with invalid arguments
Insufficient disk space
Handle should be null
Handle should not be null
Failed to acquire lock
Failed to open database
Failed to create database
Database should not be null
Database should be null
The database could not be found
Database is invalid
Database has an invalid signature
The localdb is in a newer/older format than libalpm expects
Failed to write to the database
Failed to remove entry from database
Server URL is in an invalid format
The database has no configured servers
A transaction is already initialized
A transaction has not been initialized
Duplicate target in transaction
Duplicate filename in transaction
A transaction has not been initialized
Transaction has not been prepared
Transaction was aborted
Failed to interrupt transaction
Tried to commit transaction without locking the database
A hook failed to run
Package not found
Package is in ignorepkg
Package is invalid
Package has an invalid checksum
Package has an invalid signature
Package does not have a signature
Cannot open the package file
Failed to remove package files
Package has an invalid name
Package has an invalid architecture
Signatures are missing
Signatures are invalid
Dependencies could not be satisfied
Conflicting dependencies
Files conflict
Download setup failed
Download failed
Invalid Regex
Error in libarchive
Error in libcurl
Error in external download program
Error in gpgme
Missing compile-time features
Returns the current error code from the handle.
@param handle the context handle
@return the current error code of the handle
Returns the string corresponding to an error number.
@param err the error code to get the string for
@return the string relating to the given error code
Initializes the library.
Creates handle, connects to database and creates lockfile.
This must be called before any other functions are called.
@param root the root path for all filesystem operations
@param dbpath the absolute path to the libalpm database
@param err an optional variable to hold any error return codes
@return a context handle on success, NULL on error, err will be set if provided
Release the library.
Disconnects from the database, removes handle and lockfile
This should be the last alpm call you make.
After this returns, handle should be considered invalid and cannot be reused
in any way.
@param handle the context handle
@return 0 on success, -1 on error
PGP signature verification options
Packages require a signature
Packages do not require a signature,
but check packages that do have signatures
Packages do not require a signature,
but check packages that do have signatures
Allow packages with signatures that are unknown trust
Databases require a signature
Databases do not require a signature,
but check databases that do have signatures
Allow databases with signatures that are marginal trust
Allow databases with signatures that are unknown trust
The Default siglevel
PGP signature verification status return codes
Signature is valid
The key has expired
The signature has expired
The key is not in the keyring
The key has been disabled
The signature is invalid
The trust level of a PGP key
The signature is fully trusted
The signature is marginally trusted
The signature is never trusted
The signature has unknown trust
The actual key data
The key's fingerprint
UID of the key
Name of the key's owner
Email of the key's owner
When the key was created
When the key expires
The length of the key
has the key been revoked
A PGP key
The key of the signature
The status of the signature
The validity of the signature
Signature result. Contains the key, status, and validity of a given
signature.
The amount of results in the array
An array of sigresults
Signature list. Contains the number of signatures found and a pointer to an
array of results. The array is of size count.
Check the PGP signature for the given package file.
@param pkg the package to check
@param siglist a pointer to storage for signature results
@return 0 on success, -1 if an error occurred or signature is missing
Check the PGP signature for the given database.
@param db the database to check
@param siglist a pointer to storage for signature results
@return 0 on success, -1 if an error occurred or signature is missing
Clean up and free a signature result list.
Note that this does not free the siglist object itself in case that
was allocated on the stack; this is the responsibility of the caller.
@param siglist a pointer to storage for signature results
@return 0 on success, -1 on error
Decode a loaded signature in base64 form.
@param base64_data the signature to attempt to decode
@param data the decoded data; must be freed by the caller
@param data_len the length of the returned data
@return 0 on success, -1 on failure to properly decode
Extract the Issuer Key ID from a signature
@param handle the context handle
@param identifier the identifier of the key.
This may be the name of the package or the path to the package.
@param sig PGP signature
@param len length of signature
@param keys a pointer to storage for key IDs
@return 0 on success, -1 on error
Types of version constraints in dependency specs.
No version constraint
Test version equality (package=x.y.z)
Test for at least a version (package>=x.y.z)
Test for at most a version (package<=x.y.z)
Test for greater than some version (package>x.y.z)
Test for less than some version (package<x.y.z)
File conflict type.
Whether the conflict results from a file existing on the filesystem, or with
another target in the transaction.
The conflict results with a another target in the transaction
The conflict results from a file existing on the filesystem
Name of the provider to satisfy this dependency
Version of the provider to match against (optional)
A description of why this dependency is needed (optional)
A hash of name (used internally to speed up conflict checks)
How the version should match against the provider
The basic dependency type.
This type is used throughout libalpm, not just for dependencies
but also conflicts and providers.
Name of the package that has the dependency
The dependency that was wanted
If the depmissing was caused by a conflict, the name of the package
that would be installed, causing the satisfying package to be removed
Missing dependency.
The first package
The second package
The conflict
A conflict that has occurred between two packages.
The name of the package that caused the conflict
The type of conflict
The name of the file that the package conflicts with
The name of the package that also owns the file if there is one
File conflict.
A conflict that has happened due to a two packages containing the same file,
or a package contains a file that is already on the filesystem and not owned
by that package.
Checks dependencies and returns missing ones in a list.
Dependencies can include versions with depmod operators.
@param handle the context handle
@param pkglist the list of local packages
@param remove an alpm_list_t* of packages to be removed
@param upgrade an alpm_list_t* of packages to be upgraded (remove-then-upgrade)
@param reversedeps handles the backward dependencies
@return an alpm_list_t* of alpm_depmissing_t pointers.
Find a package satisfying a specified dependency.
The dependency can include versions with depmod operators.
@param pkgs an alpm_list_t* of alpm_pkg_t where the satisfyer will be searched
@param depstring package or provision name, versioned or not
@return a alpm_pkg_t* satisfying depstring
Find a package satisfying a specified dependency.
First look for a literal, going through each db one by one. Then look for
providers. The first satisfyer that belongs to an installed package is
returned. If no providers belong to an installed package then an
alpm_question_select_provider_t is created to select the provider.
The dependency can include versions with depmod operators.
@param handle the context handle
@param dbs an alpm_list_t* of alpm_db_t where the satisfyer will be searched
@param depstring package or provision name, versioned or not
@return a alpm_pkg_t* satisfying depstring
Check the package conflicts in a database
@param handle the context handle
@param pkglist the list of packages to check
@return an alpm_list_t of alpm_conflict_t
Returns a newly allocated string representing the dependency information.
@param dep a dependency info structure
@return a formatted string, e.g. "glibc>=2.12"
Return a newly allocated dependency information parsed from a string
\link alpm_dep_free should be used to free the dependency \endlink
@param depstring a formatted string, e.g. "glibc=2.12"
@return a dependency info structure
Free a dependency info structure
@param dep struct to free
Free a fileconflict and its members.
@param conflict the fileconflict to free
Free a depmissing and its members
@param miss the depmissing to free
Free a conflict and its members.
@param conflict the conflict to free
Type of events.
Dependencies will be computed for a package.
Dependencies were computed for a package.
File conflicts will be computed for a package.
File conflicts were computed for a package.
Dependencies will be resolved for target package.
Dependencies were resolved for target package.
Inter-conflicts will be checked for target package.
Inter-conflicts were checked for target package.
Processing the package transaction is starting.
Processing the package transaction is finished.
Package will be installed/upgraded/downgraded/re-installed/removed; See
alpm_event_package_operation_t for arguments.
Package was installed/upgraded/downgraded/re-installed/removed; See
alpm_event_package_operation_t for arguments.
Target package's integrity will be checked.
Target package's integrity was checked.
Target package will be loaded.
Target package is finished loading.
Scriptlet has printed information; See alpm_event_scriptlet_info_t for
arguments.
Database files will be downloaded from a repository.
Database files were downloaded from a repository.
Not all database files were successfully downloaded from a repository.
Package files will be downloaded from a repository.
Package files were downloaded from a repository.
Not all package files were successfully downloaded from a repository.
Disk space usage will be computed for a package.
Disk space usage was computed for a package.
An optdepend for another package is being removed; See
alpm_event_optdep_removal_t for arguments.
A configured repository database is missing; See
alpm_event_database_missing_t for arguments.
Checking keys used to create signatures are in keyring.
Keyring checking is finished.
Downloading missing keys into keyring.
Key downloading is finished.
A .pacnew file was created; See alpm_event_pacnew_created_t for arguments.
A .pacsave file was created; See alpm_event_pacsave_created_t for
arguments.
Processing hooks will be started.
Processing hooks is finished.
A hook is starting
A hook has finished running.
Type of event
An event that may represent any event.
An enum over the kind of package operations.
Package (to be) installed. (No oldpkg)
Package (to be) upgraded
Package (to be) re-installed
Package (to be) downgraded
Package (to be) removed (No newpkg)
Type of event
Type of operation
Old package
New package
A package operation event occurred.
Type of event
Package with the optdep
Optdep being removed
An optional dependency was removed.
Type of event
Line of scriptlet output
A scriptlet was ran.
Type of event
Name of the database
A database is missing.
The database is registered but has not been downloaded
Type of event
Name of the file
A package was downloaded.
Type of event
Whether the creation was result of a NoUpgrade or not
Old package
New Package
Filename of the file without the .pacnew suffix
A pacnew file was created.
Type of event
Old package
Filename of the file without the .pacsave suffix
A pacsave file was created.
Kind of hook.
Type of event
Type of hook
pre/post transaction hooks are to be ran.
Type of event
Name of hook
Description of hook to be outputted
position of hook being run
total hooks being run
A pre/post transaction hook was ran.
Type of event
Number of packages to download
Total size of packages to download
Packages downloading about to start.
Type of event it's always safe to access this.
The any event type. It's always safe to access this.
Package operation
An optdept was remove
A scriptlet was ran
A database is missing
A package was downloaded
A pacnew file was created
A pacsave file was created
Pre/post transaction hooks are being ran
A hook was ran
Download packages
Events.
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.
Event callback.
Called when an event occurs
@param ctx user-provided context
@param event the event that occurred
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.
Should target in ignorepkg be installed anyway?
Should a package be replaced?
Should a conflicting package be removed?
Should a corrupted package be deleted?
Should unresolvable targets be removed from the transaction?
Provider selection
Should a key be imported?
Type of question
Answer
A question that can represent any other question.
Type of question
Answer: whether or not to install pkg anyway
The ignored package that we are deciding whether to install
Should target in ignorepkg be installed anyway?
Type of question
Answer: whether or not to replace oldpkg with newpkg
Package to be replaced
Package to replace with.
DB of newpkg
Should a package be replaced?
Type of question
Answer: whether or not to remove conflict->package2
Conflict info
Should a conflicting package be removed?
Type of question
Answer: whether or not to remove filepath
File to remove
Error code indicating the reason for package invalidity
Should a corrupted package be deleted?
Type of question
Answer: whether or not to skip packages
List of alpm_pkg_t* with unresolved dependencies
Should unresolvable targets be removed from the transaction?
Type of question
Answer: which provider to use (index from providers)
List of alpm_pkg_t* as possible providers
What providers provide for
Provider selection
Type of question
Answer: whether or not to import key
UID of the key to import
Fingerprint the key to import
Should a key be imported?
The type of question. It's always safe to access this.
A question that can represent any question.
It's always safe to access this.
Should target in ignorepkg be installed anyway?
Should a package be replaced?
Should a conflicting package be removed?
Should a corrupted package be deleted?
Should unresolvable targets be removed from the transaction?
Provider selection
Should a key be imported?
Questions.
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.
Question callback.
This callback allows user to give input and decide what to do during certain events
@param ctx user-provided context
@param question the question being asked.
An enum over different kinds of progress alerts.
Package install
Package upgrade
Package downgrade
Package reinstall
Package removal
Conflict checking
Diskspace checking
Package Integrity checking
Loading packages from disk
Checking signatures of packages
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 ctx user-provided context
@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
File download events.
These events are reported by ALPM via download callback.
A download was started
A download made progress
Download will be retried
A download completed
whether this file is optional and thus the errors could be ignored
Context struct for when a download starts.
Amount of data downloaded
Total amount need to be downloaded
Context struct for when a download progresses.
If the download will resume or start over
Context struct for when a download retries.
Total bytes in file
download result code:
0 - download completed successfully
1 - the file is up-to-date
-1 - error
Context struct for when a download completes.
Type of download progress callbacks.
@param ctx user-provided context
@param filename the name of the file being downloaded
@param event the event type
@param data the event data of type alpm_download_event_*_t
A callback for downloading files
@param ctx user-provided context
@param url the URL of the file to be downloaded
@param localpath the directory to which the file should be downloaded
@param force whether to force an update, even if the file is the same
@return 0 on success, 1 if the file exists and is identical, -1 on
error.
Get the database of locally installed packages.
The returned pointer points to an internal structure
of libalpm which should only be manipulated through
libalpm functions.
@return a reference to the local database
Get the list of sync databases.
Returns a list of alpm_db_t structures, one for each registered
sync database.
@param handle the context handle
@return a reference to an internal list of alpm_db_t structures
Register a sync database of packages.
Databases can not be registered when there is an active transaction.
@param handle the context handle
@param treename the name of the sync repository
@param level what level of signature checking to perform on the
database; note that this must be a '.sig' file type verification
@return an alpm_db_t* on success (the value), NULL on error
Unregister all package databases.
Databases can not be unregistered while there is an active transaction.
@param handle the context handle
@return 0 on success, -1 on error (pm_errno is set accordingly)
Unregister a package database.
Databases can not be unregistered when there is an active transaction.
@param db pointer to the package database to unregister
@return 0 on success, -1 on error (pm_errno is set accordingly)
Get the handle of a package database.
@param db pointer to the package database
@return the alpm handle that the package database belongs to
Get the name of a package database.
@param db pointer to the package database
@return the name of the package database, NULL on error
Get the signature verification level for a database.
Will return the default verification level if this database is set up
with ALPM_SIG_USE_DEFAULT.
@param db pointer to the package database
@return the signature verification level
Check the validity of a database.
This is most useful for sync databases and verifying signature status.
If invalid, the handle error code will be set accordingly.
@param db pointer to the package database
@return 0 if valid, -1 if invalid (pm_errno is set accordingly)
Get the list of servers assigned to this db.
@param db pointer to the database to get the servers from
@return a char* list of servers
Sets the list of servers for the database to use.
@param db the database to set the servers. The list will be duped and
the original will still need to be freed by the caller.
@param servers a char* list of servers.
Add a download server to a database.
@param db database pointer
@param url url of the server
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove a download server from a database.
@param db database pointer
@param url url of the server
@return 0 on success, 1 on server not present,
-1 on error (pm_errno is set accordingly)
Get the list of cache servers assigned to this db.
@param db pointer to the database to get the servers from
@return a char* list of servers
Sets the list of cache servers for the database to use.
@param db the database to set the servers. The list will be duped and
the original will still need to be freed by the caller.
@param servers a char* list of servers.
Add a download cache server to a database.
@param db database pointer
@param url url of the server
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove a download cache server from a database.
@param db database pointer
@param url url of the server
@return 0 on success, 1 on server not present,
-1 on error (pm_errno is set accordingly)
Update package databases.
An update of the package databases in the list \a dbs will be attempted.
Unless \a force is true, the update will only be performed if the remote
databases were modified since the last update.
This operation requires a database lock, and will return an applicable error
if the lock could not be obtained.
Example:
@code
alpm_list_t *dbs = alpm_get_syncdbs(config->handle);
ret = alpm_db_update(config->handle, dbs, force);
if(ret < 0) {
pm_printf(ALPM_LOG_ERROR, _("failed to synchronize all databases (%s)\n"),
alpm_strerror(alpm_errno(config->handle)));
}
@endcode
@note After a successful update, the \link alpm_db_get_pkgcache()
package cache \endlink will be invalidated
@param handle the context handle
@param dbs list of package databases to update
@param force if true, then forces the update, otherwise update only in case
the databases aren't up to date
@return 0 on success, -1 on error (pm_errno is set accordingly),
1 if all databases are up to to date
Get a package entry from a package database.
Looking up a package is O(1) and will be significantly faster than
iterating over the pkgcahe.
@param db pointer to the package database to get the package from
@param name of the package
@return the package entry on success, NULL on error
Get the package cache of a package database.
This is a list of all packages the db contains.
@param db pointer to the package database to get the package from
@return the list of packages on success, NULL on error
Get a group entry from a package database.
Looking up a group is O(1) and will be significantly faster than
iterating over the groupcahe.
@param db pointer to the package database to get the group from
@param name of the group
@return the groups entry on success, NULL on error
Get the group cache of a package database.
@param db pointer to the package database to get the group from
@return the list of groups on success, NULL on error
Searches a database with regular expressions.
@param db pointer to the package database to search in
@param needles a list of regular expressions to search for
@param ret pointer to list for storing packages matching all
regular expressions - must point to an empty (NULL) alpm_list_t *.
@return 0 on success, -1 on error (pm_errno is set accordingly)
The usage level of a database.
Enable refreshes for this database
Enable search for this database
Enable installing packages from this database
Enable sysupgrades with this database
Enable all usage levels
Sets the usage of a database.
@param db pointer to the package database to set the status for
@param usage a bitmask of alpm_db_usage_t values
@return 0 on success, or -1 on error
Gets the usage of a database.
@param db pointer to the package database to get the status of
@param usage pointer to an alpm_db_usage_t to store db's status
@return 0 on success, or -1 on error
Logging Levels
Error
Warning
Debug
Function
The callback type for logging.
libalpm will call this function whenever something is to be logged.
many libalpm will produce log output. Additionally any calls to \link alpm_logaction
\endlink will also call this callback.
@param ctx user-provided context
@param level the currently set loglevel
@param fmt the printf like format string
@param args printf like arguments
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)
Returns the callback used for logging.
@param handle the context handle
@return the currently set log callback
Returns the callback used for logging.
@param handle the context handle
@return the currently set log callback context
Sets the callback used for logging.
@param handle the context handle
@param cb the cb to use
@param ctx user-provided context to pass to cb
@return 0 on success, -1 on error (pm_errno is set accordingly)
Returns the callback used to report download progress.
@param handle the context handle
@return the currently set download callback
Returns the callback used to report download progress.
@param handle the context handle
@return the currently set download callback context
Sets the callback used to report download progress.
@param handle the context handle
@param cb the cb to use
@param ctx user-provided context to pass to cb
@return 0 on success, -1 on error (pm_errno is set accordingly)
Returns the downloading callback.
@param handle the context handle
@return the currently set fetch callback
Returns the downloading callback.
@param handle the context handle
@return the currently set fetch callback context
Sets the downloading callback.
@param handle the context handle
@param cb the cb to use
@param ctx user-provided context to pass to cb
@return 0 on success, -1 on error (pm_errno is set accordingly)
Returns the callback used for events.
@param handle the context handle
@return the currently set event callback
Returns the callback used for events.
@param handle the context handle
@return the currently set event callback context
Sets the callback used for events.
@param handle the context handle
@param cb the cb to use
@param ctx user-provided context to pass to cb
@return 0 on success, -1 on error (pm_errno is set accordingly)
Returns the callback used for questions.
@param handle the context handle
@return the currently set question callback
Returns the callback used for questions.
@param handle the context handle
@return the currently set question callback context
Sets the callback used for questions.
@param handle the context handle
@param cb the cb to use
@param ctx user-provided context to pass to cb
@return 0 on success, -1 on error (pm_errno is set accordingly)
Returns the callback used for operation progress.
@param handle the context handle
@return the currently set progress callback
Returns the callback used for operation progress.
@param handle the context handle
@return the currently set progress callback context
Sets the callback used for operation progress.
@param handle the context handle
@param cb the cb to use
@param ctx user-provided context to pass to cb
@return 0 on success, -1 on error (pm_errno is set accordingly)
Returns the root path. Read-only.
@param handle the context handle
Returns the path to the database directory. Read-only.
@param handle the context handle
Get the name of the database lock file. Read-only.
This is the name that the lockfile would have. It does not
matter if the lockfile actually exists on disk.
@param handle the context handle
Gets the currently configured cachedirs,
@param handle the context handle
@return a char* list of cache directories
Sets the cachedirs.
@param handle the context handle
@param cachedirs a char* list of cachdirs. The list will be duped and
the original will still need to be freed by the caller.
@return 0 on success, -1 on error (pm_errno is set accordingly)
Append a cachedir to the configured cachedirs.
@param handle the context handle
@param cachedir the cachedir to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove a cachedir from the configured cachedirs.
@param handle the context handle
@param cachedir the cachedir to remove
@return 0 on success, -1 on error (pm_errno is set accordingly)
Gets the currently configured hookdirs,
@param handle the context handle
@return a char* list of hook directories
Sets the hookdirs.
@param handle the context handle
@param hookdirs a char* list of hookdirs. The list will be duped and
the original will still need to be freed by the caller.
@return 0 on success, -1 on error (pm_errno is set accordingly)
Append a hookdir to the configured hookdirs.
@param handle the context handle
@param hookdir the hookdir to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove a hookdir from the configured hookdirs.
@param handle the context handle
@param hookdir the hookdir to remove
@return 0 on success, -1 on error (pm_errno is set accordingly)
Gets the currently configured overwritable files,
@param handle the context handle
@return a char* list of overwritable file globs
Sets the overwritable files.
@param handle the context handle
@param globs a char* list of overwritable file globs. The list will be duped and
the original will still need to be freed by the caller.
@return 0 on success, -1 on error (pm_errno is set accordingly)
Append an overwritable file to the configured overwritable files.
@param handle the context handle
@param glob the file glob to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove a file glob from the configured overwritable files globs.
@note The overwritable file list contains a list of globs. The glob to
remove must exactly match the entry to remove. There is no glob expansion.
@param handle the context handle
@param glob the file glob to remove
@return 0 on success, -1 on error (pm_errno is set accordingly)
Gets the filepath to the currently set logfile.
@param handle the context handle
@return the path to the logfile
Sets the logfile path.
@param handle the context handle
@param logfile path to the new location of the logfile
@return 0 on success, -1 on error (pm_errno is set accordingly)
Returns the path to libalpm's GnuPG home directory.
@param handle the context handle
@return the path to libalpms's GnuPG home directory
Sets the path to libalpm's GnuPG home directory.
@param handle the context handle
@param gpgdir the gpgdir to set
Returns the user to switch to for sensitive operations.
@return the user name
Sets the user to switch to for sensitive operations.
@param handle the context handle
@param sandboxuser the user to set
Returns whether to use syslog (0 is FALSE, TRUE otherwise).
@param handle the context handle
@return 0 on success, -1 on error (pm_errno is set accordingly)
Sets whether to use syslog (0 is FALSE, TRUE otherwise).
@param handle the context handle
@param usesyslog whether to use the syslog (0 is FALSE, TRUE otherwise)
Get the list of no-upgrade files
@param handle the context handle
@return the char* list of no-upgrade files
Add a file to the no-upgrade list
@param handle the context handle
@param path the path to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Sets the list of no-upgrade files
@param handle the context handle
@param noupgrade a char* list of file to not upgrade.
The list will be duped and the original will still need to be freed by the caller.
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove an entry from the no-upgrade list
@param handle the context handle
@param path the path to remove
@return 0 on success, -1 on error (pm_errno is set accordingly)
Test if a path matches any of the globs in the no-upgrade list
@param handle the context handle
@param path the path to test
@return 0 is the path matches a glob, negative if there is no match and
positive is the match was inverted
Get the list of no-extract files
@param handle the context handle
@return the char* list of no-extract files
Add a file to the no-extract list
@param handle the context handle
@param path the path to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Sets the list of no-extract files
@param handle the context handle
@param noextract a char* list of file to not extract.
The list will be duped and the original will still need to be freed by the caller.
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove an entry from the no-extract list
@param handle the context handle
@param path the path to remove
@return 0 on success, -1 on error (pm_errno is set accordingly)
Test if a path matches any of the globs in the no-extract list
@param handle the context handle
@param path the path to test
@return 0 is the path matches a glob, negative if there is no match and
positive is the match was inverted
Get the list of ignored packages
@param handle the context handle
@return the char* list of ignored packages
Add a file to the ignored package list
@param handle the context handle
@param pkg the package to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Sets the list of packages to ignore
@param handle the context handle
@param ignorepkgs a char* list of packages to ignore
The list will be duped and the original will still need to be freed by the caller.
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove an entry from the ignorepkg list
@param handle the context handle
@param pkg the package to remove
@return 0 on success, -1 on error (pm_errno is set accordingly)
Get the list of ignored groups
@param handle the context handle
@return the char* list of ignored groups
Add a file to the ignored group list
@param handle the context handle
@param grp the group to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Sets the list of groups to ignore
@param handle the context handle
@param ignoregrps a char* list of groups to ignore
The list will be duped and the original will still need to be freed by the caller.
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove an entry from the ignoregroup list
@param handle the context handle
@param grp the group to remove
@return 0 on success, -1 on error (pm_errno is set accordingly)
Gets the list of dependencies that are assumed to be met
@param handle the context handle
@return a list of alpm_depend_t*
Add a depend to the assumed installed list
@param handle the context handle
@param dep the dependency to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Sets the list of dependencies that are assumed to be met
@param handle the context handle
@param deps a list of *alpm_depend_t
The list will be duped and the original will still need to be freed by the caller.
@return 0 on success, -1 on error (pm_errno is set accordingly)
Remove an entry from the assume installed list
@param handle the context handle
@param dep the dep to remove
@return 0 on success, -1 on error (pm_errno is set accordingly)
Returns the allowed package architecture.
@param handle the context handle
@return the configured package architectures
Adds an allowed package architecture.
@param handle the context handle
@param arch the architecture to set
Sets the allowed package architecture.
@param handle the context handle
@param arches the architecture to set
Removes an allowed package architecture.
@param handle the context handle
@param arch the architecture to remove
Get whether or not checking for free space before installing packages is enabled.
@param handle the context handle
@return 0 if disabled, 1 if enabled
Enable/disable checking free space before installing packages.
@param handle the context handle
@param checkspace 0 for disabled, 1 for enabled
Gets the configured database extension.
@param handle the context handle
@return the configured database extension
Sets the database extension.
@param handle the context handle
@param dbext the database extension to use
@return 0 on success, -1 on error (pm_errno is set accordingly)
Get the default siglevel.
@param handle the context handle
@return a \link alpm_siglevel_t \endlink bitfield of the siglevel
Set the default siglevel.
@param handle the context handle
@param level a \link alpm_siglevel_t \endlink bitfield of the level to set
@return 0 on success, -1 on error (pm_errno is set accordingly)
Get the configured local file siglevel.
@param handle the context handle
@return a \link alpm_siglevel_t \endlink bitfield of the siglevel
Set the local file siglevel.
@param handle the context handle
@param level a \link alpm_siglevel_t \endlink bitfield of the level to set
@return 0 on success, -1 on error (pm_errno is set accordingly)
Get the configured remote file siglevel.
@param handle the context handle
@return a \link alpm_siglevel_t \endlink bitfield of the siglevel
Set the remote file siglevel.
@param handle the context handle
@param level a \link alpm_siglevel_t \endlink bitfield of the level to set
@return 0 on success, -1 on error (pm_errno is set accordingly)
Get the download timeout state
@param handle the context handle
@return 0 for enabled, 1 for disabled
Enables/disables the download timeout.
@param handle the context handle
@param disable_dl_timeout 0 for enabled, 1 for disabled
@return 0 on success, -1 on error (pm_errno is set accordingly)
Gets the number of parallel streams to download database and package files.
@param handle the context handle
@return the number of parallel streams to download database and package files
Sets number of parallel streams to download database and package files.
@param handle the context handle
@param num_streams number of parallel download streams
@return 0 on success, -1 on error
Get the state of the sandbox
@param handle the context handle
@return 0 for enabled, 1 if any component is disabled, 2 if completely disabled
Enables/disables all components of the sandbox.
@param handle the context handle
@param disable_sandbox 0 for enabled, 1 for disabled
@return 0 on success, -1 on error (pm_errno is set accordingly)
Get the state of the filesystem part of the sandbox
@param handle the context handle
@return 0 for enabled, 1 for disabled
Enables/disables the filesystem part of the sandbox.
@param handle the context handle
@param disable_sandbox_filesystem 0 for enabled, 1 for disabled
@return 0 on success, -1 on error (pm_errno is set accordingly)
Get the state of the syscalls part of the sandbox
@param handle the context handle
@return 0 for enabled, 1 for disabled
Enables/disables the syscalls part of the sandbox.
@param handle the context handle
@param disable_sandbox_syscalls 0 for enabled, 1 for disabled
@return 0 on success, -1 on error (pm_errno is set accordingly)
Package install reasons.
Explicitly requested by the user.
Installed as a dependency for another package.
Failed parsing of local database
Location a package object was loaded from.
Loaded from a file via \link alpm_pkg_load \endlink
From the local database
From a sync database
Method used to validate a package.
The package's validation type is unknown
The package does not have any validation
The package is validated with md5
The package is validated with sha256
The package is validated with a PGP signature
Create a package from a file.
If full is false, the archive is read only until all necessary
metadata is found. If it is true, the entire archive is read, which
serves as a verification of integrity and the filelist can be created.
The allocated structure should be freed using alpm_pkg_free().
@param handle the context handle
@param filename location of the package tarball
@param full whether to stop the load after metadata is read or continue
through the full archive
@param level what level of package signature checking to perform on the
package; note that this must be a '.sig' file type verification
@param pkg address of the package pointer
@return 0 on success, -1 on error (pm_errno is set accordingly)
Fetch a list of remote packages.
@param handle the context handle
@param urls list of package URLs to download
@param fetched list of filepaths to the fetched packages, each item
corresponds to one in `urls` list. This is an output parameter,
the caller should provide a pointer to an empty list
(*fetched === NULL) and the callee fills the list with data.
@return 0 on success or -1 on failure
Find a package in a list by name.
@param haystack a list of alpm_pkg_t
@param needle the package name
@return a pointer to the package if found or NULL
Free a package.
Only packages loaded with \link alpm_pkg_load \endlink can be freed.
Packages from databases will be freed by libalpm when they are unregistered.
@param pkg package pointer to free
@return 0 on success, -1 on error (pm_errno is set accordingly)
Check the integrity (with md5) of a package from the sync cache.
@param pkg package pointer
@return 0 on success, -1 on error (pm_errno is set accordingly)
Compare two version strings and determine which one is 'newer'.
Returns a value comparable to the way strcmp works. Returns 1
if a is newer than b, 0 if a and b are the same version, or -1
if b is newer than a.
Different epoch values for version strings will override any further
comparison. If no epoch is provided, 0 is assumed.
Keep in mind that the pkgrel is only compared if it is available
on both versions handed to this function. For example, comparing
1.5-1 and 1.5 will yield 0; comparing 1.5-1 and 1.5-2 will yield
-1 as expected. This is mainly for supporting versioned dependencies
that do not include the pkgrel.
Computes the list of packages requiring a given package.
The return value of this function is a newly allocated
list of package names (char*), it should be freed by the caller.
@param pkg a package
@return the list of packages requiring pkg
Computes the list of packages optionally requiring a given package.
The return value of this function is a newly allocated
list of package names (char*), it should be freed by the caller.
@param pkg a package
@return the list of packages optionally requiring pkg
Test if a package should be ignored.
Checks if the package is ignored via IgnorePkg, or if the package is
in a group ignored via IgnoreGroup.
@param handle the context handle
@param pkg the package to test
@return 1 if the package should be ignored, 0 otherwise
Gets the handle of a package
@param pkg a pointer to package
@return the alpm handle that the package belongs to
Gets the name of the file from which the package was loaded.
@param pkg a pointer to package
@return a reference to an internal string
Returns the package base name.
@param pkg a pointer to package
@return a reference to an internal string
Returns the package name.
@param pkg a pointer to package
@return a reference to an internal string
Returns the package version as a string.
This includes all available epoch, version, and pkgrel components. Use
alpm_pkg_vercmp() to compare version strings if necessary.
@param pkg a pointer to package
@return a reference to an internal string
Returns the origin of the package.
@return an alpm_pkgfrom_t constant, -1 on error
Returns the package description.
@param pkg a pointer to package
@return a reference to an internal string
Returns the package URL.
@param pkg a pointer to package
@return a reference to an internal string
Returns the build timestamp of the package.
@param pkg a pointer to package
@return the timestamp of the build time
Returns the install timestamp of the package.
@param pkg a pointer to package
@return the timestamp of the install time
Returns the packager's name.
@param pkg a pointer to package
@return a reference to an internal string
Returns the package's MD5 checksum as a string.
The returned string is a sequence of 32 lowercase hexadecimal digits.
@param pkg a pointer to package
@return a reference to an internal string
Returns the package's SHA256 checksum as a string.
The returned string is a sequence of 64 lowercase hexadecimal digits.
@param pkg a pointer to package
@return a reference to an internal string
Returns the architecture for which the package was built.
@param pkg a pointer to package
@return a reference to an internal string
Returns the size of the package. This is only available for sync database
packages and package files, not those loaded from the local database.
@param pkg a pointer to package
@return the size of the package in bytes.
Returns the installed size of the package.
@param pkg a pointer to package
@return the total size of files installed by the package.
Returns the package installation reason.
@param pkg a pointer to package
@return an enum member giving the install reason.
Returns the list of package licenses.
@param pkg a pointer to package
@return a pointer to an internal list of strings.
Returns the list of package groups.
@param pkg a pointer to package
@return a pointer to an internal list of strings.
Returns the list of package dependencies as alpm_depend_t.
@param pkg a pointer to package
@return a reference to an internal list of alpm_depend_t structures.
Returns the list of package optional dependencies.
@param pkg a pointer to package
@return a reference to an internal list of alpm_depend_t structures.
Returns a list of package check dependencies
@param pkg a pointer to package
@return a reference to an internal list of alpm_depend_t structures.
Returns a list of package make dependencies
@param pkg a pointer to package
@return a reference to an internal list of alpm_depend_t structures.
Returns the list of packages conflicting with pkg.
@param pkg a pointer to package
@return a reference to an internal list of alpm_depend_t structures.
Returns the list of packages provided by pkg.
@param pkg a pointer to package
@return a reference to an internal list of alpm_depend_t structures.
Returns the list of packages to be replaced by pkg.
@param pkg a pointer to package
@return a reference to an internal list of alpm_depend_t structures.
Returns the list of files installed by pkg.
The filenames are relative to the install root,
and do not include leading slashes.
@param pkg a pointer to package
@return a pointer to a filelist object containing a count and an array of
package file objects
Returns the list of files backed up when installing pkg.
@param pkg a pointer to package
@return a reference to a list of alpm_backup_t objects
Returns the database containing pkg.
Returns a pointer to the alpm_db_t structure the package is
originating from, or NULL if the package was loaded from a file.
@param pkg a pointer to package
@return a pointer to the DB containing pkg, or NULL.
Returns the base64 encoded package signature.
@param pkg a pointer to package
@return a reference to an internal string
Extracts package signature either from embedded package signature
or if it is absent then reads data from detached signature file.
@param pkg a pointer to package.
@param sig output parameter for signature data. Callee function allocates
a buffer needed for the signature data. Caller is responsible for
freeing this buffer.
@param sig_len output parameter for the signature data length.
@return 0 on success, negative number on error.
Returns the method used to validate a package during install.
@param pkg a pointer to package
@return an enum member giving the validation method
Gets the extended data field of a package.
@param pkg a pointer to package
@return a reference to a list of alpm_pkg_xdata_t objects
Returns whether the package has an install scriptlet.
@return 0 if FALSE, TRUE otherwise
Returns the size of the files that will be downloaded to install a
package.
@param newpkg the new package to upgrade to
@return the size of the download
Set install reason for a package in the local database.
The provided package object must be from the local database or this method
will fail. The write to the local database is performed immediately.
@param pkg the package to update
@param reason the new install reason
@return 0 on success, -1 on error (pm_errno is set accordingly)
Open a package changelog for reading.
Similar to fopen in functionality, except that the returned 'file
stream' could really be from an archive as well as from the database.
@param pkg the package to read the changelog of (either file or db)
@return a 'file stream' to the package changelog
Read data from an open changelog 'file stream'.
Similar to fread in functionality, this function takes a buffer and
amount of data to read. If an error occurs pm_errno will be set.
@param ptr a buffer to fill with raw changelog data
@param size the size of the buffer
@param pkg the package that the changelog is being read from
@param fp a 'file stream' to the package changelog
@return the number of characters read, or 0 if there is no more data or an
error occurred.
Close a package changelog for reading.
@param pkg the package to close the changelog of (either file or db)
@param fp the 'file stream' to the package changelog to close
@return 0 on success, -1 on error
Open a package mtree file for reading.
@param pkg the local package to read the mtree of
@return an archive structure for the package mtree file
Read next entry from a package mtree file.
@param pkg the package that the mtree file is being read from
@param archive the archive structure reading from the mtree file
@param entry an archive_entry to store the entry header information
@return 0 on success, 1 if end of archive is reached, -1 otherwise.
Close a package mtree file.
@param pkg the local package to close the mtree of
@param archive the archive to close
Transaction flags
Ignore dependency checks.
Delete files even if they are tagged as backup.
Ignore version numbers when checking dependencies.
Remove also any packages depending on a package being removed.
Remove packages and their unneeded deps (not explicitly installed).
Modify database but do not commit changes to the filesystem.
Do not run hooks during a transaction
Use ALPM_PKG_REASON_DEPEND when installing packages.
Only download packages and do not actually install.
Do not execute install scriptlets after installing.
Ignore dependency conflicts.
Do not install a package if it is already installed and up to date.
Use ALPM_PKG_REASON_EXPLICIT when installing packages.
Do not remove a package if it is needed by another one.
Remove also explicitly installed unneeded deps (use with ALPM_TRANS_FLAG_RECURSE).
Do not lock the database during the operation.
Returns the bitfield of flags for the current transaction.
@param handle the context handle
@return the bitfield of transaction flags
Returns a list of packages added by the transaction.
@param handle the context handle
@return a list of alpm_pkg_t structures
Returns the list of packages removed by the transaction.
@param handle the context handle
@return a list of alpm_pkg_t structures
Initialize the transaction.
@param handle the context handle
@param flags flags of the transaction (like nodeps, etc; see alpm_transflag_t)
@return 0 on success, -1 on error (pm_errno is set accordingly)
Prepare a transaction.
@param handle the context handle
@param data the address of an alpm_list where a list
of alpm_depmissing_t objects is dumped (conflicting packages)
@return 0 on success, -1 on error (pm_errno is set accordingly)
Commit a transaction.
@param handle the context handle
@param data the address of an alpm_list where detailed description
of an error can be dumped (i.e. list of conflicting files)
@return 0 on success, -1 on error (pm_errno is set accordingly)
Interrupt a transaction.
@param handle the context handle
@return 0 on success, -1 on error (pm_errno is set accordingly)
Release a transaction.
@param handle the context handle
@return 0 on success, -1 on error (pm_errno is set accordingly)
Search for packages to upgrade and add them to the transaction.
@param handle the context handle
@param enable_downgrade allow downgrading of packages if the remote version is lower
@return 0 on success, -1 on error (pm_errno is set accordingly)
Add a package to the transaction.
If the package was loaded by alpm_pkg_load(), it will be freed upon
\link alpm_trans_release \endlink invocation.
@param handle the context handle
@param pkg the package to add
@return 0 on success, -1 on error (pm_errno is set accordingly)
Add a package removal to the transaction.
@param handle the context handle
@param pkg the package to uninstall
@return 0 on success, -1 on error (pm_errno is set accordingly)
Check for new version of pkg in syncdbs.
If the same package appears multiple dbs only the first will be checked
This only checks the syncdb for a newer version. It does not access the network at all.
See \link alpm_db_update \endlink to update a database.
Get the md5 sum of file.
@param filename name of the file
@return the checksum on success, NULL on error
Get the sha256 sum of file.
@param filename name of the file
@return the checksum on success, NULL on error
Remove the database lock file
@param handle the context handle
@return 0 on success, -1 on error
@note Safe to call from inside signal handlers.
Enum of possible compile time features
localization
Ability to download
Signature checking
Get the version of library.
@return the library version, e.g. "6.0.4"
Get the capabilities of the library.
@return a bitmask of the capabilities
Drop privileges by switching to a different user.
@param handle the context handle
@param sandboxuser the user to switch to
@param sandbox_path if non-NULL, restrict writes to this filesystem path
@param restrict_syscalls whether to deny access to a list of dangerous syscalls
@return 0 on success, -1 on failure