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



