libpkgconf/libpkgconf.h


Log

Author Commit Date CI Message
Ariadne Conill 35b1a623 2023-05-02T12:09:55 update libpkgconf version to 10905 Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
Taylor R Campbell 212c8586 2023-03-17T19:32:58 Avoid undefined behaviour with the ctype(3) functions. fix https://github.com/pkgconf/pkgconf/issues/291 As defined in the C standard: In all cases the argument is an int, the value of which shall be representable as an unsigned char or shall equal the value of the macro EOF. If the argument has any other value, the behavior is undefined. This is because they're designed to work with the int values returned by getc or fgetc; they need extra work to handle a char value. If EOF is -1 (as it almost always is), with 8-bit bytes, the allowed inputs to the ctype(3) functions are: {-1, 0, 1, 2, 3, ..., 255}. However, on platforms where char is signed, such as x86 with the usual ABI, code like char *ptr = ...; ... isspace(*ptr) ... may pass in values in the range: {-128, -127, -126, ..., -2, -1, 0, 1, ..., 127}. This has two problems: 1. Inputs in the set {-128, -127, -126, ..., -2} are forbidden. 2. The non-EOF byte 0xff is conflated with the value EOF = -1, so even though the input is not forbidden, it may give the wrong answer. Casting char to unsigned int first before passing the result to ctype(3) doesn't help: inputs like -128 are unchanged by this cast, because (on a two's-complement machine with 32-bit int and unsigned int), converting the signed char with integer value -128 to unsigned int gives integer value 2^32 - 128 = 0xffffff80, which is out of range, and which is converted in int back to -128, which is also out of range. It is necessary to cast char inputs to unsigned char first; you can then cast to unsigned int if you like but there's no need because the functions will always convert the argument to int by definition. So the above fragment needs to be: char *ptr = ...; ... isspace((unsigned char)*ptr) ... This patch changes unsigned int casts to unsigned char casts, and adds unsigned char casts where they are missing.
Ariadne Conill f7305434 2023-01-22T04:56:06 libpkgconf: bump API version to 10904
Ariadne Conill 6a66b312 2022-08-16T19:49:42 libpkgconf: increase API level to 10903
Ariadne Conill 80bc5ac3 2022-08-16T19:38:40 tuple: if a global tuple is explicitly defined with --define-variable, prefer it fixes github #259
Ariadne Conill 5044491f 2022-08-16T19:27:35 queue: add function to free a compiled solution
Ariadne Conill aa99ddf7 2022-08-11T15:52:33 pkg: add Copyright and Maintainer fields These are helpful pieces of information for BOM documents generated by pkgconf.
Ariadne Conill 69a3d458 2022-08-08T09:59:50 libpkgconf: revise API revision to 10902
Ariadne Conill 7e9aa7e1 2022-08-08T09:56:28 pkg: do not break cycles across dependency lists
Ariadne Conill 5b10a85a 2022-08-08T09:08:27 queue: add pkgconf_queue_solve API
Ariadne Conill d8d669f6 2022-08-07T04:47:04 pkgconf 1.9.0.
Ariadne Conill 1389aa05 2022-08-07T04:21:22 pkg: add pkgconf_pkg_t.license field The pkgconf_pkg_t.license field maps to the new License keyword, and should be an SPDX license expression.
Dylan Baker 96c61cba 2022-08-03T12:00:21 libpkgconf: remove trailing ; from macro definition GCC has a lovely bug (which I will report as soon as I have an account), which causes -Wmisleading-indentation to miss cases of misleading indentation after a `;;`, since the macro adds `;`, and in call cases the caller also adds `;`, we end up with a double macro and gcc fails to warn.
Ariadne Conill 6c70781a 2022-07-26T18:00:22 introduce PKG_CONFIG_PKGCONF1_SYSROOT_RULES for legacy pkgconf behavior
Ariadne Conill f8aefea7 2022-07-26T17:13:15 pkg: add flags argument to pkgconf_pkg_new_from_file
Ariadne Conill 297e18f2 2022-07-26T17:08:48 tuple: add flags parameter to pkgconf_tuple_parse
Ariadne Conill 5817e884 2022-06-26T07:22:56 pkg: track the number of hits a package has gotten while solving for dependencies
Ariadne Conill 46467240 2022-06-26T04:30:35 cache: refactor to use a continguous table and bsearch cache functions are the hottest part of the pkgconf code when profiled, by removing the linked list for lookups, we can turn lookups into an O(k) operation
Dylan Baker f5d6bb71 2022-02-04T16:06:08 libpkgconf: remove const modifier from error_handler data pointer Currently, the data pointer is `const void *`, which means that the handler can't modify the data without casting away the constness.
Ariadne Conill 2b82a4f6 2021-10-07T00:23:35 use a serial instead of PKGCONF_PKG_PROPF_SEEN
Ariadne Conill 7d8cc1e4 2021-10-06T13:13:34 dependency: add pkgconf_dependency_copy()
Ariadne Conill c547edd0 2021-10-06T11:52:18 deconst the client on pkgconf_dependency_add()
Ariadne Conill 4144d506 2021-10-06T11:48:13 implement dependency refcounting
Ariadne Conill 8130dd15 2021-10-06T11:29:18 dependency: add pkgconf_dependency_free_one
Stone Tickle d688a7bd 2021-06-11T15:00:47 implement pkgconf_cross_personality_deinit
Ariadne Conill fd1b8ccc 2021-03-18T06:22:11 main: if PKG_CONFIG_FDO_SYSROOT_RULES is set, or DESTDIR matches PKG_CONFIG_SYSROOT_DIRS, disable the automatic sysroot rewriting Closes #205.
Ariadne Conill f9531ce9 2021-03-18T05:59:54 add support for pkgconf_cross_personality_t.want_default_pure
Ariadne Conill dd57abfe 2020-05-24T14:44:01 pkgconf 1.7.0.
Ariadne Conill 4fb7683c 2020-05-24T14:40:47 add support for the PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS flag used in build2.
Ariadne Conill 48dc665a 2019-10-19T00:56:17 personality: add support for WantDefaultStatic setting
Ariadne Conill 19aa93e3 2019-08-04T15:54:24 prepare for pkgconf 2.0 development
Ariadne Conill c862e030 2019-07-12T06:53:37 pkgconf 1.6.3.
Ariadne Conill c816ce69 2019-07-11T03:36:03 pkgconf 1.6.2. (closes #38, #40, #41)
William Pitcock 2d0c1f5c 2019-05-06T15:15:41 lite: disable debug logging
William Pitcock 3afd14c4 2019-03-23T22:27:05 libpkgconf: path: use realpath(3) to deduplicate the search path closes #24
William Pitcock 183e68df 2019-01-14T13:52:04 libpkgconf: add LIBPKGCONF_VERSION macro
William Pitcock 36a5b7ac 2019-01-14T13:48:02 libpkgconf: fragment: add pkgconf_fragment_copy_list()
William Pitcock 40897f24 2018-05-09T22:52:27 libpkgconf: personality: remove const from the default personality, since it's not really const
William Pitcock e6ce6c8e 2018-05-09T22:39:39 libpkgconf: personality: fixups
William Pitcock 1244f8f8 2018-05-09T21:21:39 libpkgconf: refactor out the rfc822 message parser so that the cross-personality code can share it
William Pitcock f702967d 2018-05-09T19:56:30 libpkgconf: pkg: refactor pkgconf_pkg_new_from_file to prepare to factor out the rfc822 parser
William Pitcock 6b0e346c 2018-05-09T17:07:26 libpkgconf: refactor building the dir lists into separate concerns
William Pitcock 854490c5 2018-05-09T16:54:21 libpkgconf: add basic support for cross-compile personality objects
William Pitcock 43e8c7b4 2018-05-09T16:35:21 libpkgconf: path: add path list copying function
William Pitcock 7e9ed692 2018-03-18T18:04:02 libpkgconf: pkg: skip over -I cflags from Requires.internal nodes when building a cflags list
William Pitcock ad65bc4a 2018-03-18T18:01:59 libpkgconf: dependency: allow dependency nodes to be colored with traits
TingPing 83eea876 2018-03-07T05:27:54 meson: Fix defining PKGCONF_API (#174)
William Pitcock e0bf4009 2017-12-12T00:21:21 libpkgconf: pkg: rename pkgconf_pkg_t.requires to pkgconf_pkg_t.required (closes #154) C++20 makes requires a keyword, so we need to not use it in headers.
William Pitcock 72743575 2017-12-10T00:39:39 libpkgconf: fragment: track merged fragments, as they should never be quoted
William Pitcock 19d91e90 2017-12-07T19:13:35 libpkgconf: fragment: allow for overriding the default fragment rendering behaviour
William Pitcock 74d58d1b 2017-12-05T17:34:01 libpkgconf: pkg: cache solutions for already solved dependency graph nodes in almost all cases, we partially solve the dependency graph multiple times, which just wastes resources. if we record the solution to a given dependency node, further iterations can make use of the previous solution without having to solve it again. this is safe because all provides entries (including virtuals) are knowable prior to solving the dependency graph the first time. a nice side effect of this is that all packages are preloaded when querying information about them (--cflags and related commands).
William Pitcock 44b4b126 2017-12-05T17:32:00 libpkgconf: pkg: record which pkgconf_client_t owns each pkgconf_pkg_t object
William Pitcock 7ced8d77 2017-09-19T21:48:53 libpkgconf: fragment: pkgconf_fragment_parse: return false on parse failure
William Pitcock e9fd43ca 2017-09-17T23:38:25 libpkgconf: clean up header includes (closes #137)
William Pitcock 048deb95 2017-09-13T14:35:28 headers: add C++ wrappers (closes #136)
William Pitcock 1252d7ae 2017-09-08T19:53:52 libpkgconf: dependency: make dependency_to_str() private, use a caller-supplied buffer for reentrancy
William Pitcock 615bab3d 2017-09-08T19:48:31 libpkgconf: pkg: pkgconf_pkg_report_graph_error(): move already_sent_notice to pkgconf_client_t
Dan Kegel 4ba2bac5 2017-06-05T14:00:02 Don't depend on libtool magic to control which symbols are exported from shared libraries
Dan Kegel 4d7b4d7c 2017-06-04T19:19:55 Minimal tweaks to compile with Visual C 2015
William Pitcock cf3c50ca 2017-05-19T23:21:58 libpkgconf: pkg: pkgconf_try_specific_path() and pkgconf_pkg_new_from_file() require a mutable client to release resources when encountering invalid packages
William Pitcock 81011ba5 2017-02-27T09:54:02 main: implement --short-errors (#115)
William Pitcock 794443a9 2017-02-25T16:04:55 dependency: break API to add tracepoints to dependency list building
William Pitcock 01fe5743 2017-02-25T15:32:49 fragment: add new option to control escaping shell arguments
William Pitcock d20efff4 2017-02-04T19:49:59 libpkgconf: overhaul pkgconf_trace() a little
William Pitcock bef29308 2017-02-04T18:57:21 libpkgconf: client: add trace logging too
William Pitcock a6755cd7 2017-02-04T18:46:53 libpkgconf: client: add pkgconf_warn()
William Pitcock eb98a1e6 2017-02-04T18:46:33 libpkgconf: client: clean up various aspects of error/warn handlers
William Pitcock c0b6a62c 2017-02-04T18:37:58 libpkgconf: client: add warn handler and getter/setter for both warn handler and error handler
William Pitcock 647c0255 2017-02-03T13:17:21 libpkgconf: add PKGCONF_PKG_PKGF_DONT_RELOCATE_PATHS (#110) main: add PKG_CONFIG_DONT_RELOCATE_PATHS environment variable and --dont-relocate-paths option to disable path relocation
William Pitcock 0c01a812 2017-01-22T23:26:01 libpkgconf: split virtual/static package state (this is API/ABI safe, static packages are always treated as virtual when it comes to mutation)
William Pitcock 7237b811 2017-01-20T00:58:48 add support for making paths relocatable (closes #103)
William Pitcock ced4f003 2017-01-19T19:16:00 libpkgconf: client: add pkgconf_client_[get|set]_prefix_varname()
William Pitcock 13cf74c7 2017-01-19T18:23:25 libpkgconf: kill flags from top-level fragment API (ref #105)
William Pitcock 7b39c384 2017-01-19T18:17:29 libpkgconf: pkg: clean up use of flags variable (ref #105)
William Pitcock 127fd037 2017-01-19T17:35:35 libpkgconf: pkg: uncouple resolver flags from pkgconf_pkg_dir_list_build(). (ref #105)
William Pitcock 0ca6a16c 2017-01-19T17:32:38 libpkgconf: queue: nuke flags parameters (ref #105)
William Pitcock 597c3c7f 2017-01-19T17:22:20 libpkgconf: client: add pkgconf_client_t.flags and a get/set interface for it
William Pitcock 4f94090f 2017-01-18T20:25:19 libpkgconf: fragment: make pkgconf_fragment_filter() accept userdata (closes #106)
William Pitcock 1369f558 2017-01-13T20:04:38 path: add new pkgconf_path_relocate() API which is a stub when path relocation is not needed
William Pitcock 92f566ff 2016-12-30T11:39:45 libpkgconf: path: check both device node and inode for dedup. pointed out by @plicease
William Pitcock 23050315 2016-12-30T11:13:04 libpkgconf: path: make the duplicate filtering opt-in. some path lists should not be deduped (compiler path lists, for example)
William Pitcock bad0da0c 2016-12-30T11:01:15 libpkgconf: path: filter out duplicate path entries by inode if possible (closes #102)
William Pitcock 6ef4a853 2016-12-21T20:06:17 libpkgconf: migrate pkgconf client fragment_is_system_dir() to a libpkgconf API
William Pitcock f6b074f2 2016-12-21T19:50:05 libpkgconf: path: make pkgconf_path_match_list() take a const list argument
William Pitcock 61c750fd 2016-12-15T23:36:59 libpkgconf: pkg: cleanup and document pkg module
William Pitcock 82fa8b21 2016-12-13T12:14:08 libpkgconf: separate config.h from the actual API headers
Graham Ollis fa876089 2016-12-13T13:03:59 pass client and user data to error handler (#100)
William Pitcock d6d7ff77 2016-12-09T23:07:15 main: use pkgconf_fragment_render() to render fragment lists instead of custom stuff
William Pitcock 2b5d763e 2016-12-09T22:45:22 main: use pkgconf_fragment_filter() instead of crazy stuff
William Pitcock 0232ee52 2016-12-09T22:18:59 libpkgconf: fragment: add pkgconf_fragment_filter() to selectively copy a fragment list using a filter function
William Pitcock 062f0fd3 2016-12-09T21:40:19 libpkgconf: pkg: pkgconf_pkg_new_from_file() and children do not need the resolver flags anymore, so remove them
William Pitcock 6e4fd027 2016-12-09T21:37:36 main: switch to pkgconf_client_set_sysroot_dir() and remove the last vestige of PKGCONF_PKG_PKGF_MUNGE_SYSROOT_PREFIX
William Pitcock a9022030 2016-12-09T21:36:59 libpkgconf: fragment: simplify sysroot handling by using pkgconf_client_t.sysroot_dir presence
William Pitcock f7b78539 2016-12-09T20:50:33 libpkgconf: tuple: add pkgconf_tuple_free_entry() to free a specific tuple node
William Pitcock 02ec215e 2016-12-09T20:41:39 client: introduce pkgconf_client_t.buildroot_dir and pkgconf_client_t.sysroot_dir members This adds buildroot and sysroot dir members to the pkgconf client structure, which will allow us to replace the suboptimal PKGCONF_PKG_PKGF_MUNGE_SYSROOT_PREFIX code.
William Pitcock 011d8c77 2016-12-02T00:34:48 libpkgconf: audit: migrate to pkgconf_client_t
William Pitcock c05ecdfc 2016-12-02T00:29:33 libpkgconf: migrate cache to pkgconf_client_t which unfortunately requires it to be non-const :(
William Pitcock e7f48465 2016-12-02T00:04:43 libpkgconf: path: add cleanup functions
William Pitcock a300787c 2016-12-01T15:17:23 libpkgconf: do not implicitly build the dir list, instead explicitly do it
William Pitcock ad731d19 2016-12-01T15:11:37 libpkgconf: make pkgconf_pkg_dir_list_build() public