{"id":29188729,"url":"https://github.com/techwritescode/ps2-pacman","last_synced_at":"2025-07-01T22:36:58.321Z","repository":{"id":291285436,"uuid":"977164915","full_name":"techwritescode/ps2-pacman","owner":"techwritescode","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-03T15:53:28.000Z","size":25793,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-29T19:30:43.285Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/techwritescode.png","metadata":{"files":{"readme":"README","changelog":"NEWS","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-03T15:15:18.000Z","updated_at":"2025-05-03T15:53:32.000Z","dependencies_parsed_at":"2025-05-03T17:01:48.940Z","dependency_job_id":null,"html_url":"https://github.com/techwritescode/ps2-pacman","commit_stats":null,"previous_names":["simonhochrein/ps2-pacman","techwritescode/ps2-pacman"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/techwritescode/ps2-pacman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techwritescode%2Fps2-pacman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techwritescode%2Fps2-pacman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techwritescode%2Fps2-pacman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techwritescode%2Fps2-pacman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/techwritescode","download_url":"https://codeload.github.com/techwritescode/ps2-pacman/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techwritescode%2Fps2-pacman/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263047535,"owners_count":23405278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-01T22:36:57.455Z","updated_at":"2025-07-01T22:36:58.274Z","avatar_url":"https://github.com/techwritescode.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"ALPM library overview \u0026 internals\n=================================\n\nHere is a list of the main objects and files from the ALPM (i.e. Arch Linux\nPackage Management) library. This document, while not exhaustive, also\nindicates some limitations (on purpose, or sometimes due to its poor design) of\nthe library at the present time.\n\nThere is one special file,\"alpm.h\", which is the public interface that\nshould be distributed and installed on systems with the library. Only\nstructures, data and functions declared within this file are made available to\nthe frontend. Lots of structures are of an opaque type and their fields are\nonly accessible in read-only mode, through some clearly defined functions.\n\nIn addition to \"alpm.h\", the interfaces of \"alpm_list.h\" have also been made\navailable to the frontend, for allowing it to manipulate the lists returned by\nthe backend.\n\nSeveral structures and functions have been renamed compared to pacman 2.9 code.\nThis was done at first for the sake of naming scheme consistency, and then\nprimarily because of potential namespace conflicts between library and frontend\nspaces. Indeed, it is not possible to have two different functions with the\nsame name declared in both spaces. To avoid such conflicts, internal function\nnames have been prepended with \"_alpm_\".\n\nIn a general manner, public library functions are named \"alpm_\u003ctype\u003e_\u003caction\u003e\"\n(examples: alpm_trans_commit(), alpm_release(), alpm_pkg_get_name(), ...).\nInternal (and thus private) functions should be named \"_alpm_XXX\" for instance\n(examples: _alpm_needbackup(), _alpm_runscriplet(), ...). Functions defined and\nused inside a single file should be defined as \"static\".\n\n\n[Initialization]\n\nalpm_initialize() is used to initialize library internals and to create\na transparent handle object. Before its call, the library can't be used.\n\nalpm_release() just does the opposite (memory used by the library, and the\nhandle is freed). After its call, the library is no longer available.\n\n\n[Options]\n\nThe library does not use any configuration file. It is up to the front end to\nconfigure the library as needed; the handle holds a number of configuration\noptions instead.\n\nAll of the following options have a alpm_option_get_* and alpm_option_set_*\nfunction for getting and setting the value. They cannot be set before the\nlibrary is initialized.\n\n* logcb: The callback function for \"log\" operations.\n* dlcb: The callback function for download progress of each package.\n* fetchcb: Callback for custom download function.\n* eventcb: Callback for transaction messages.\n* questioncb: Callback for selecting amongst choices.\n* progresscb: Callback to handle display of transaction progress.\n* gpgdir: Directory where GnuPG files are stored.\n* arch: Allowed package architecture.\n* checkspace: Check disk space before installing.\n* default_siglevel: Default signature verification level.\n* local_file_siglevel: Signature verification level for local file upgrades.\n* remote_file_siglevel: Signature verification level for remote file upgrades.\n* logfile: The base path to pacman's log file (Default: /var/log/pacman.log)\n* usesyslog: Log to syslog instead of `logfile` for file-base logging.\n\nThe following options also have `alpm_option_{add,remove}_*` functions, as the\nvalues are list structures.\nNOTE: The add and remove functions are NOT plural, as they are in English:\nalpm_option_{get,set}_noupgrades -\u003e alpm_option_{add,remove}_noupgrade.\n\n* cachedirs: Paths to pacman's download caches (Default: /var/cache/pacman/pkg)\n* noupgrades: Files which will never be touched by pacman (extracted as .pacnew)\n* noextracts: Files which will never be extracted at all (no .pacnew file)\n* ignorepkgs: Packages to ignore when upgrading.\n* ignoregrps: Groups to ignore when upgrading.\n\nThe following options are read-only, having ONLY alpm_option_get_* functions:\n\n* root: The root directory for pacman to install to\n* dbpath: The toplevel database directory\n* lockfile: The file used for locking the database (Default: \u003cdbpath\u003e/db.lck)\n\n\n[Transactions]\n\nThe transaction structure permits easy manipulations of several packages\nat a time (i.e. adding, upgrade and removal operations).\n\nA transaction can be initiated with a type (SYNC, UPGRADE or REMOVE),\nand some flags (NODEPS, FORCE, CASCADE, ...).\n\nNote: there can only be one type at a time: a transaction is either\ncreated to add packages to the system, or either created to remove packages.\nThe frontend can't request for mixed operations: it has to run several\ntransactions, one at a time, in such a case.\n\nThe flags allow to tweak the library behaviour during its resolution.\nNote, that some options of the handle can also modify the behavior of a\ntransaction (NOUPGRADE, IGNOREPKG, ...).\n\nNote: once a transaction has been initiated, it is not possible anymore\nto modify its type or its flags.\n\nOne can also add some targets to a transaction (alpm_trans_addtarget()).\nThese targets represent the list of packages to be handled.\n\nThen, a transaction needs to be prepared (alpm_trans_prepare()). It\nmeans that the various targets added, will be inspected and challenged\nagainst the set of already installed packages (dependency checking, etc...)\n\nLast, a callback is associated with each transaction. During the\ntransaction resolution, each time a new step is started or done (i.e\ndependency or conflict checking, package adding or removal, ...), the\ncallback is called, allowing the frontend to be aware of the progress of\nthe resolution. Can be useful to implement a progress bar.\n\n\n[Package Cache]\n\nlibalpm maintains two caches for each DB. One is a general package cache, the\nother is a group cache (for package groups). These caches are loaded on demand,\nand freed when the library is.\n\nIt is important to note that, as a general rule, package structures should NOT\nbe freed manually, as they SHOULD be part of the cache.  The cache of a\ndatabase is always updated by the library after an operation changing the\ndatabase content (adding and/or removal of packages).  Beware frontends ;)\n\n\n[Package]\n\nThe package structure maintains all information for a package. In general,\npackages should never be freed from front-ends, as they should always be part\nof the package cache.\n\nThe 'origin' data member indicates whether the package is from a file (i.e. -U\noperations) or from the package cache. In the case of a file, all data members\navailable are present in the structure. Packages indicated as being from the\ncache have data members filled on demand. For this reason, the alpm_pkg_get_*\nfunctions will load the data from the DB as needed.\n\n\n[Errors]\n\nThe library provides a global variable pm_errno.\nIt aims at being to the library what errno is for C system calls.\n\nAlmost all public library functions are returning an integer value: 0\nindicating success, -1 indicating a failure.\nIf -1 is returned, the variable pm_errno is set to a meaningful value\nWise frontends should always care for these returned values.\n\nNote: the helper function alpm_strerror() can also be used to translate one\nspecified error code into a more friendly sentence, and alpm_strerrorlast()\ndoes the same for the last error encountered (represented by pm_errno).\n\n\n[List - alpm_list_t]\n\nThe alpm_list_t structure is a doubly-linked list for use with the libalpm\nroutines. This type is provided publicly so that frontends are free to use it\nif they have no native list type (C++, glib, python, etc all have list types).\nSee the proper man pages for alpm_list_t references.\n\n\n\nPACMAN frontend overview \u0026 internals\n====================================\n\nHere are some words about the frontend responsibilities.\nThe library can operate only a small set of well defined operations and\ndummy operations.\n\nHigh level features are left to the frontend ;)\n\nFor instance, during a sysupgrade, the library returns the whole list of\npackages to be upgraded, without any care for its content.\nThe frontend can inspect the list and perhaps notice that \"pacman\"\nitself has to be upgraded. In such a case, the frontend can choose to\nperform a special action.\n\n\n[MAIN] (see pacman.c)\n\nCalls for alpm_initialize(), and alpm_release().\nRead the configuration file, and parse command line arguments.\nBased on the action requested, it initiates the appropriate transactions\n(see pacman_upgrade(), pacman_remove(), pacman_sync() in files upgrade.c,\nremove.c and sync.c).\n\n\n[CONFIGURATION] (see conf.h)\n\nThe frontend is using a configuration file, usually \"/etc/pacman.conf\".  Some\nof these options are only useful for the frontend only (mainly the ones used to\ncontrol the output like verbosepkglist, or the behavior with cleanmethod).\nThe rest is used to configure the library.\n\n\n[UPGRADE/REMOVE/SYNC]\n\nThe file pacman.c has been divided into several smaller files, namely\nupgrade.c, remove.c, sync.c and query.c, to hold the big parts: pacman_upgrade,\npacman_remove, pacman_sync.\n\nThese 3 functions have been split to ease the code reading.\n\n\n\nAPI CHANGES BETWEEN 3.1 AND 3.2\n===============================\n\n[REMOVED]\n- alpm_db_whatprovides()\n- alpm_splitdep (no longer public)\n- trans-\u003etargets was removed, so alpm_trans_get_targets() as well\n- error codes:\n    PM_ERR_OPT_*, PM_ERR_PKG_INSTALLED, PM_ERR_DLT_CORRUPTED,\n    PM_ERR_LIBARCHIVE_ERROR\n- event: PM_TRANS_EVT_EXTRACT_DONE\n- PM_TRANS_TYPE_ADD pmtranstype_t (add transaction)\n- PM_TRANS_FLAG_DEPENDSONLY pmtransflag_t\n\n[CHANGED]\n- alpm_grp_get_pkgs returns with pmpkg_t list, not package-name list\n- Swap parameters on PM_TRANS_CONV_INSTALL_IGNOREPKG callback function\n- download callback API changed: alpm_cb_download, alpm_cb_totaldl split\n  (+ new alpm_option_get_totaldlcb(), alpm_option_set_totaldlcb() functions)\n- unsigned long-\u003eoff_t changes where size is used\n- pmsyncpkg_t struct changes:\n  - pmsynctype_t and alpm_sync_get_type() were removed\n  - alpm_sync_get_data() was removed\n  - alpm_sync_get_removes() was added\n\n[ADDED]\n- alpm_delta_get_from_md5sum(), alpm_delta_get_to_md5sum()\n- alpm_miss_get_causingpkg() (new causingpkg field in pmdepmissing_t)\n- alpm_checkdbconflicts()\n- alpm_sync_newversion()\n- alpm_deptest()\n- error codes :\n    PM_ERR_DLT_INVALID, PM_ERR_LIBARCHIVE, PM_ERR_LIBDOWNLOAD and\n    PM_ERR_EXTERNAL_DOWNLOAD\n- flags:\n    PM_TRANS_FLAG_ALLEXPLICIT, PM_TRANS_FLAG_UNNEEDED and\n    PM_TRANS_FLAG_RECURSEALL\n\n\nAPI CHANGES BETWEEN 3.2 AND 3.3\n===============================\n\n[REMOVED]\n- pmsyncpkg_t struct (pmpkg_t is used for all types of transaction targets):\n  - alpm_sync_get_pkg()\n  - alpm_sync_get_removes() (use alpm_pkg_get_removes() instead)\n- HoldPkg handling (it is the front-end's task):\n  - alpm_option_get_holdpkgs()\n  - alpm_option_add_holdpkg()\n  - alpm_option_set_holdpkgs()\n  - alpm_option_remove_holdpkg()\n  - PM_TRANS_CONV_REMOVE_HOLDPKG conversation\n- Print URIs feature (it is the front-end's task):\n  - flag: PM_TRANS_FLAG_PRINTURIS\n  - event: PM_TRANS_EVT_PRINTURI\n- alpm_delta_get_from_md5sum() and alpm_delta_get_to_md5sum()\n- alpm_sync_sysupgrade()\n- error codes:\n    PM_ERR_TRANS_COMMITING, PM_ERR_TRANS_DOWNLOADING, PM_ERR_PKG_LOAD,\n    PM_ERR_PKG_CANT_FRESH, PM_ERR_GRP_NOT_FOUND, PM_ERR_USER_ABORT,\n    PM_ERR_INTERNAL_ERROR, PM_ERR_DB_SYNC, PM_ERR_PKG_HOLD and\n    PM_ERR_LIBDOWNLOAD\n\n[CHANGED]\n- XferCommand support was removed, any fetch callback function can be defined:\n  - alpm_option_get_xfercommand() and alpm_option_set_xfercommand() were removed\n  - alpm_option_get_fetchcb() and alpm_option_set_fetchcb() were added\n- function renames:\n  - alpm_db_getpkgcache() -\u003e alpm_db_get_pkgcache()\n  - alpm_db_getgrpcache() -\u003e alpm_db_get_grpcache()\n  - alpm_dep_get_string() -\u003e alpm_dep_compute_string()\n  - alpm_get_md5sum() -\u003e alpm_compute_md5sum()\n  - alpm_checkdbconflicts() -\u003e alpm_checkconflicts()\n- alpm_trans_sysupgrade() has a new enable_downgrade parameter\n- alpm_checkdeps() and alpm_checkconflicts() require local package list instead\n  of local database\n- the to-be-upgraded package is passed to the callback function with\n  PM_TRANS_EVT_UPGRADE_START (as the second parameter)\n- the \"requiredby\" package is never passed to the callback function with\n  PM_TRANS_CONV_INSTALL_IGNOREPKG (the second parameter is always NULL)\n\n[ADDED]\n- alpm_pkg_get_db()\n- alpm_pkg_get_removes()\n- conversation: PM_TRANS_CONV_REMOVE_PKGS (remove unresolvable targets)\n- flag: PM_TRANS_FLAG_NOLOCK (do not lock database)\n- error codes:\n    PM_ERR_SERVER_NONE, PM_ERR_TRANS_NOT_LOCKED, PM_ERR_PKG_IGNORED and\n    PM_ERR_LIBFETCH\n\n\nAPI CHANGES BETWEEN 3.3 AND 3.4\n===============================\n\n[REMOVED]\n- pmtranstype_t struct (transaction type), alpm_trans_get_type()\n- alpm_option_get_nopassiveftp(), alpm_option_set_nopassiveftp()\n\n[CHANGED]\n- interface for target loading:\n  - alpm_trans_addtarget() and alpm_trans_sysupgrade() were removed\n  - alpm_sync_target() and alpm_sync_dbtarget() can be used to add a sync target\n  - alpm_sync_sysupgrade() can be used to add outdated packages (for sysupgrade)\n  - alpm_add_target() can be used to add an add/upgrade target\n  - alpm_remove_target() can be used to add a remove target\n- interface for target listing:\n  - alpm_trans_get_pkgs() was removed\n  - alpm_pkg_get_removes() was removed\n  - alpm_trans_get_add() can be used to list add/upgrade/sync targets\n  - alpm_trans_get_remove() can be used to list to-be-removed packages\n- the type parameter of alpm_trans_init() was removed\n- the type of alpm_db_fetch callback function: mtimeold and mtimenew parameters\n  were replaced by force parameter\n- unsigned short -\u003e int changes for Boolean variables\n\n[ADDED]\n- alpm_db_set_pkgreason()\n- alpm_option_get_arch(), alpm_option_set_arch()\n- alpm_option_get_usedelta()\n- alpm_pkg_unused_deltas()\n- alpm_conflict_get_reason()\n- error code: PM_ERR_PKG_INVALID_ARCH\n\n\nAPI CHANGES BETWEEN 3.4 AND 3.5\n===============================\n\n[REMOVED]\n- alpm_db_register_local()\n- alpm_pkg_has_force()\n- alpm_depcmp()\n\n[CHANGED]\n- alpm_trans_cb_progress type had some types changed from int to size_t\n- alpm_cb_log format string is now const char *\n- the interface to add/remove targets:\n  - functions take pmpkg_t * rather than char *.\n  - alpm_sync_target() and alpm_sync_dbtarget() are replaced by alpm_add_pkg()\n  - alpm_add_target() is replaced by alpm_add_pkg()\n  - alpm_remove_target() is replaced by alpm_remove_pkg()\n  - packages can come from:\n     - alpm_db_get_pkg() for normal targets\n     - alpm_find_dbs_satisfier() for versioned provisions\n     - alpm_find_grp_pkgs() for groups\n- alpm_deptest() is replaced by the more flexibile alpm_find_satisfier()\n- size_t used for alpm_list_t sizes\n  - return type for alpm_list_count()\n  - parameter type in alpm_list_msort() and alpm_list_nth()\n\n[ADDED]\n- alpm_option_get_checkspace(), alpm_option_set_checkspace()\n- alpm_find_grp_pkgs()\n- alpm_trans_get_flags()\n- error codes:\n   PM_ERR_DISK_SPACE, PM_ERR_WRITE\n- flags\n   PM_TRANS_FLAG_NODEPVERSION, PM_TRANS_EVT_DISKSPACE_START,\n   PM_TRANS_EVT_DISKSPACE_DONE, PM_TRANS_CONV_SELECT_PROVIDER,\n   PM_TRANS_PROGRESS_DISKSPACE_START, PM_TRANS_PROGRESS_INTEGRITY_START\n\n\nAPI CHANGES BETWEEN 3.5 AND 4.0\n===============================\n\n[REMOVED]\n- error codes:\n    PM_ERR_LIBFETCH, PM_ERR_WRITE\n- alpm_option_set_root(), alpm_option_set_dbpath()\n- alpm_list_first()\n- alpm_grp_get_name(), alpm_grp_get_pkgs()\n- alpm_delta_get_from(), alpm_delta_get_to(), alpm_delta_get_filename(),\n    alpm_delta_get_md5sum(), alpm_delta_get_size()\n- alpm_miss_get_target(), alpm_miss_get_dep(), alpm_miss_get_causingpkg()\n- alpm_dep_get_mod(), alpm_dep_get_name(), alpm_dep_get_version()\n- alpm_conflict_get_package1(), alpm_conflict_get_package2(),\n    alpm_conflict_get_reason()\n- alpm_fileconflict_get_target(), alpm_fileconflict_get_type(),\n    alpm_fileconflict_get_file(), alpm_fileconflict_get_ctarget()\n- alpm_db_get_url()\n\n[CHANGED]\n- PM_ prefixes for enum values are now ALPM_\n- pm prefixes for structs and enums are now alpm_\n- alpm_initialize now has parameters: char *root, char *dbpath,\n    alpm_errno_t *err and returns an alpm_handle_t struct.\n- alpm_release now takes an alpm_handle_t *.\n- alpm_db_register_sync() now requires a extra parameter of a alpm_siglevel_t.\n- alpm_pkg_load() now requires an extra parameter of an alpm_siglevel_t\n- alpm_db_setserver() replaced by alpm_db_set_servers(), alpm_db_add_server(),\n    alpm_db_remove_server()\n- alpm_trans_init() no longer takes callbacks, set those using\n    alpm_option_set_*cb() functions\n- many functions now require a first parameter of an alpm_handle_t *:\n  - alpm_option_get_*\n  - alpm_option_set_*\n  - alpm_option_add_*\n  - alpm_option_remove_*\n  - alpm_trans_*\n  - alpm_add_pkg\n  - alpm_checkconflicts\n  - alpm_checkdeps\n  - alpm_db_register_sync\n  - alpm_db_set_pkgreason\n  - alpm_db_unregister_all\n  - alpm_fetch_pkgurl\n  - alpm_find_dbs_satisfier\n  - alpm_logaction\n  - alpm_pkg_load\n  - alpm_release\n  - alpm_remove_pkg\n  - alpm_sync_sysupgrade\n- several structs are no longer opaque\n  - alpm_conflict_t\n  - alpm_delta_t\n  - alpm_depend_t\n  - alpm_depmissing_t\n  - alpm_depmod_t\n  - alpm_fileconflict_t\n  - alpm_group_t\n  - alpm_pkg_reason_t\n\n[ADDED]\n- option functions:\n    alpm_{get,set}_eventcb(), alpm_option_{get,set}_convcb(),\n\talpm_option_{get,set}_progresscb()\n- package signing functions:\n    alpm_option_get_default_siglevel(), alpm_option_set_default_siglevel(),\n    alpm_option_get_gpgdir(), alpm_option_set_gpgdir(), alpm_db_get_siglevel(),\n    alpm_siglist_cleanup(), alpm_db_check_pgp_signature(), alpm_pkg_check_pgp_signature(),\n    alpm_pkg_get_origin(), alpm_pkg_get_sha256sum(), alpm_pkg_get_base64_sig()\n- list functions:\n    alpm_list_to_array(), alpm_list_previous()\n- structs:\n    alpm_backup_t, alpm_file_t, alpm_filelist_t\n- enums:\n    alpm_siglevel_t, alpm_sigstatus_t, alpm_sigvalidity_t, alpm_pkgfrom_t\n- error codes:\n    ALPM_ERR_DB_INVALID, ALPM_ERR_DB_INVALID_SIG, ALPM_ERR_GPGME,\n    ALPM_ERR_PKG_INVALID_CHECKSUM, ALPM_ERR_PKG_INVALID_SIG, ALPM_ERR_SIG_INVALID,\n    ALPM_ERR_SIG_MISSING\n\n\nAPI CHANGES BETWEEN 4.0 AND 4.1\n===============================\n\n[REMOVED]\n- alpm_list_getdata()\n\n[CHANGED]\n- alpm_pkgfrom_t members are now prefixed with ALPM_\n- alpm_siglevel_t - added members ALPM_SIG_PACKAGE_SET, ALPM_SIG_PACKAGE_TRUST_SET\n- alpm_depend_t - additional desc member\n- alpm_filelist_t - additional resolved_path member\n- alpm_pgpkey_t - added members length, revoked, pubkey_algo\n- alpm_logaction - added caller identifier argument\n- function renaming:\n  - alpm_option_get_localdb -\u003e alpm_get_localdb\n  - alpm_option_get_syncdbs -\u003e alpm_get_syncdbs\n  - alpm_db_register_sync -\u003e alpm_register_syncdb\n  - alpm_db_unregister_all -\u003e alpm_unregister_all_syncdbs\n  - alpm_db_readgroup -\u003e alpm_db_get_group\n  - alpm_db_set_pkgreason -\u003e alpm_pkg_set_reason (handle parameter removed)\n- alpm_time_t typedef used for all times\n  - members of alpm_pgpkey_t\n  - return types of alpm_pkg_get_builddate and alpm_pkg_get_installdate\n- delta options now use required ratio rather than on/off\n  - alpm_option_get_usedelta -\u003e alpm_option_get_deltaratio\n  - alpm_option_set_usedelta -\u003e alpm_option_set_deltaratio\n\n[ADDED]\n- tracking of how a package was validated:\n  - alpm_pkgvalidation_t\n  - alpm_pkg_get_validation()\n- adjustable signature verification levels for upgrade operations:\n  - alpm_option_get_local_file_siglevel()\n  - alpm_option_set_local_file_siglevel()\n  - alpm_option_get_remote_file_siglevel()\n  - alpm_option_set_remote_file_siglevel()\n- sync database usage functions:\n  - alpm_db_usage_t\n  - alpm_db_set_usage()\n  - alpm_db_get_usage()\n- wrapper functions for reading mtree files\n  - alpm_pkg_mtree_open()\n  - alpm_pkg_mtree_next()\n  - alpm_pkg_mtree_close()\n- utility functions\n  - alpm_pkg_find()\n  - alpm_pkg_compute_optionalfor()\n  - alpm_filelist_contains()\n- types\n  - alpm_time_t\n  - alpm_errno_t\n- flags\n   ALPM_EVENT_OPTDEP_REQUIRED, ALPM_EVENT_DATABASE_MISSING,\n   ALPM_EVENT_KEYRING_START, ALPM_EVENT_KEYRING_DONE, ALPM_EVENT_KEY_DOWNLOAD_START,\n   ALPM_EVENT_KEY_DOWNLOAD_DONE, ALPM_PROGRESS_KEYRING_START\n\n\nAPI CHANGES BETWEEN 4.1 AND 4.2\n===============================\n\n[CHANGED]\n- alpm_filelist_t - removed member resolved_path\n- alpm_filelist_contains - now returns alpm_file_t\n- event callback\n   - alpm_event_t renamed to alpm_event_type_t\n   - alpm_event_t union added\n   - alpm_event_cb now takes only an alpm_event_t parameter\n   - alpm_event_any_t, alpm_package_operation_t, alpm_event_package_operation_t,\n     alpm_event_optdep_removal_t, alpm_event_delta_patch_t, alpm_event_scriptlet_info_t,\n     alpm_event_database_missing_t, alpm_event_pkgdownload_t, alpm_event_pacnew_created_t,\n     alpm_event_pacsave_created_t, alpm_event_pacorig_created_t added\n   - ALPM_EVENT_*_START -\u003e ALPM_EVENT_PACKAGE_OPERATION_START\n   - ALPM_EVENT_*_DONE -\u003e ALPM_EVENT_PACKAGE_OPERATION_DONE\n- question callback\n   - alpm_question_t renamed to alpm_question_type_t\n   - alpm_question_t union added\n   - alpm_cb_question now takes only an alpm_question_t parameter\n   - alpm_question_any_t, alpm_question_install_ignorepkg_t, alpm_question_replace_t\n     alpm_question_conflict_t, alpm_question_corrupted_t, alpm_question_remove_pkgs_t,\n     alpm_question_select_provider_t, alpm_question_import_key_t added\n\n[ADDED]\n- memory management\n  - alpm_fileconflict_free()\n  - alpm_depmissing_free()\n  - alpm_conflict_free()\n  - alpm_dep_free()\n- database usage\n  - alpm_db_usage_t\n  - alpm_db_set_usage()\n  - alpm_db_get_usage()\n- assume installed\n  - alpm_option_get_assumeinstalled()\n  - alpm_option_add_assumeinstalled()\n  - alpm_option_set_assumeinstalled()\n  - alpm_option_remove_assumeinstalled()\n- using noupgrade/noextract\n  - alpm_option_match_noupgrade()\n  - alpm_option_match_noextract()\n- utility functions\n  - alpm_dep_from_string()\n  - alpm_pkg_should_ignore()\n  - alpm_decode_signature()\n  - alpm_extract_keyid()\n- flags\n  - ALPM_EVENT_RETRIEVE_DONE, ALPM_EVENT_RETRIEVE_FAILED, ALPM_EVENT_PKGDOWNLOAD_START,\n    ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED, ALPM_EVENT_OPTDEP_REMOVAL,\n    ALPM_EVENT_PACNEW_CREATED, ALPM_EVENT_PACSVAE_CREATED, ALPM_EVENT_PACORIG_CREATED\n\n\nAPI CHANGES BETWEEN 4.2 AND 5.0\n===============================\n\n[REMOVED]\n- alpm_siglevel_t - removed members ALPM_SIG_PACKAGE_SET, ALPM_SIG_PACKAGE_TRUST_SET\n- removed .pacorig generation\n  - ALPM_EVENT_PACORIG_CREATED\n  - alpm_event_pacorig_created_t\n  - alpm_event_t.pacorig_created\n\n[ADDED]\n- hook support\n  - alpm_option_get_hookdirs()\n  - alpm_option_set_hookdirs()\n  - alpm_option_add_hookdir()\n  - alpm_option_remove_hookdir()\n  - alpm_event_hook_t, alpm_event_hook_run_t\n  - alpm_hook_when_t\n  - ALPM_EVENT_HOOK_START, ALPM_EVENT_HOOK_DONE\n  - ALPM_EVENT_HOOK_RUN_START, ALPM_EVENT_HOOK_RUN_DONE\n  - ALPM_ERR_TRANS_HOOK_FAILED\n- different database extension support\n  - alpm_option_get_dbext()\n  - alpm_option_set_dbext()\n- pkgbase accessor\n  - alpm_pkg_get_base()\n- transaction events\n  - ALPM_EVENT_TRANSACTION_START, ALPM_EVENT_TRANSACTION_DONE\n- database unlocking\n  - alpm_unlock()\n\n\nAPI CHANGES BETWEEN 5.0 AND 5.1\n===============================\n\n[CHANGED]\n- alpm_errno_t - added member ALPM_ERR_OK\n- alpm_siglevel_t - value of ALPM_SIG_USE_DEFAULT changed\n- functions using bitfields return/pass an int instead of an enum\n  - alpm_option_get_default_siglevel()\n  - alpm_option_set_default_siglevel()\n  - alpm_option_get_remote_file_siglevel()\n  - alpm_option_set_remote_file_siglevel()\n  - alpm_register_syncdb()\n  - alpm_db_get_siglevel()\n  - alpm_db_set_usage()\n  - alpm_db_get_usage()\n  - alpm_pkg_load()\n  - alpm_pkg_get_validation()\n  - alpm_trans_get_flags()\n  - alpm_trans_init()\n  - alpm_option_get_local_file_siglevel()\n  - alpm_option_set_local_file_siglevel()\n\n[ADDED]\n- overwrite support\n  - alpm_option_get_overwrite_files()\n  - alpm_option_set_overwrite_files()\n  - alpm_option_add_overwrite_file()\n  - alpm_option_remove_overwrite_file()\n- download timeout control\n  - alpm_option_set_disable_dl_timeout()\n- access make/checkdepends info\n  - alpm_pkg_get_checkdepends()\n  - alpm_pkg_get_makedepends()\n- check pacman capabilities\n  - alpm_capabilities()\n- duplicate and add to list\n  - alpm_list_append_strdup()\n\n\nAPI CHANGES BETWEEN 5.1 AND 5.2\n===============================\n\n[REMOVED]\n- package delta support\n  - alpm_delta_t\n  - alpm_event_delta_patch_t\n  - alpm_event_t union - removed alpm_event_delta_patch_t\n  - ALPM_EVENT_DELTA_INTEGRITY_START, ALPM_EVENT_DELTA_INTEGRITY_DONE,\n    ALPM_EVENT_DELTA_PATCHES_START, ALPM_EVENT_DELTA_PATCHES_DONE,\n    ALPM_EVENT_DELTA_PATCH_START, ALPM_EVENT_DELTA_PATCH_DONE,\n    ALPM_EVENT_DELTA_PATCH_FAILED\n  - ALPM_ERR_DLT_INVALID, ALPM_ERR_DLT_PATCHFAILED\n  - alpm_option_get_deltaratio()\n  - alpm_option_set_deltaratio()\n  - alpm_pkg_get_deltas()\n  - alpm_pkg_unused_deltas()\n- alpm_transflag_t - removed member ALPM_TRANS_FLAG_FORCE\n\n[CHANGED]\n- alpm_errno_t - added member ALPM_ERR_MISSING_CAPABILITY_SIGNATURES\n- alpm_sync_newversion() replaced with alpm_sync_get_new_version() which\n  does not filter on any ALPM_DB_USAGE_*.\n\n\nAPI CHANGES BETWEEN 5.2 AND 6.0\n===============================\n\n[REMOVED]\n- ALPM_EVENT_PKGDOWNLOAD_START, ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED\n- ALPM_ERR_PKG_REPO_NOT_FOUND\n- old TotalDownload implementation\n - alpm_cb_totaldl\n - alpm_option_get_totaldlcb()\n - alpm_option_set_totaldlcb()\n\n[CHANGED]\n- alpm_db_update() now accepts a list of databases rather than a single database.\n- alpm_fetch_pkgurl() accepts a list of packages to download.\n- alpm_db_search() now has an additional parameter and returns success status\n- ALPM_EVENT_RETRIEVE_* -\u003e ALPM_EVENT_DB_RETRIEVE_* and ALPM_EVENT_PKG_RETRIEVE_*\n- alpm_cb_download pass event and data\n- multi architecture support\n - alpm_option_get_arch() -\u003e alpm_option_get_architectures()\n - alpm_option_set_arch() -\u003e alpm_option_set_architectures()\n- alpm_db_get_servers() copies parameter data\n\n[ADDED]\n- parallel download support\n - alpm_option_set_parallel_downloads()\n - alpm_option_get_parallel_downloads()\n- file download events\n - alpm_download_event_type_t\n - alpm_download_event_init_t\n - alpm_download_event_progress_t\n - alpm_download_event_completed_t\n- download misc\n - ALPM_DOWNLOAD_RETRY\n - alpm_download_event_retry_t\n - alpm_event_pkg_retrieve_t\n- multiarchitecture support\n - alpm_option_add_architecture()\n - alpm_option_remove_architecture()\n- misc\n - alpm_pkg_get_sig()\n- callbacks add front-end provided context\n\n\nAPI CHANGES BETWEEN 6.0 AND 6.1\n===============================\n\n[REMOVED]\n- alpm_trans_t\n\n[CHANGED]\n- alpm_conflict_t - full package added as member, removing package name and name\n  hash members\n- alpm_question_import_key_t - holds key uid and fingerprint rather than alpm_pgpkey_t\n- alpm_pkgreason_t - added ALPM_PKG_REASON_UNKNOWN\n- alpm_transflag_t - added ALPM_TRANS_FLAG_NOHOOKS\n\n[ADDED]\n- extensible package data type\n - alpm_pkg_xdata_t\n - alpm_pkg_get_xdata()\n- accessor functions\n - alpm_db_get_handle()\n - alpm_pkg_get_handle()\n- cache server support\n - alpm_db_get_cache_servers()\n - alpm_db_set_cache_servers()\n - alpm_db_add_cache_server()\n\nAPI CHANGES BETWEEN 6.1 AND 7.0\n===============================\n\n[ADDED]\n- sandbox functions\n - alpm_option_get_sandboxuser()\n - alpm_option_set_sandboxuser()\n - alpm_option_set_disable_sandbox()\n - alpm_sandbox_setup_child()\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechwritescode%2Fps2-pacman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechwritescode%2Fps2-pacman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechwritescode%2Fps2-pacman/lists"}