|
35b1a623
|
2023-05-02T12:09:55
|
|
update libpkgconf version to 10905
Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
|
|
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.
|
|
f7305434
|
2023-01-22T04:56:06
|
|
libpkgconf: bump API version to 10904
|
|
6a66b312
|
2022-08-16T19:49:42
|
|
libpkgconf: increase API level to 10903
|
|
80bc5ac3
|
2022-08-16T19:38:40
|
|
tuple: if a global tuple is explicitly defined with --define-variable, prefer it
fixes github #259
|
|
5044491f
|
2022-08-16T19:27:35
|
|
queue: add function to free a compiled solution
|
|
aa99ddf7
|
2022-08-11T15:52:33
|
|
pkg: add Copyright and Maintainer fields
These are helpful pieces of information for BOM documents
generated by pkgconf.
|
|
69a3d458
|
2022-08-08T09:59:50
|
|
libpkgconf: revise API revision to 10902
|
|
7e9aa7e1
|
2022-08-08T09:56:28
|
|
pkg: do not break cycles across dependency lists
|
|
5b10a85a
|
2022-08-08T09:08:27
|
|
queue: add pkgconf_queue_solve API
|
|
d8d669f6
|
2022-08-07T04:47:04
|
|
pkgconf 1.9.0.
|
|
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.
|
|
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.
|
|
6c70781a
|
2022-07-26T18:00:22
|
|
introduce PKG_CONFIG_PKGCONF1_SYSROOT_RULES for legacy pkgconf behavior
|
|
f8aefea7
|
2022-07-26T17:13:15
|
|
pkg: add flags argument to pkgconf_pkg_new_from_file
|
|
297e18f2
|
2022-07-26T17:08:48
|
|
tuple: add flags parameter to pkgconf_tuple_parse
|
|
5817e884
|
2022-06-26T07:22:56
|
|
pkg: track the number of hits a package has gotten while solving for dependencies
|
|
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
|
|
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.
|
|
2b82a4f6
|
2021-10-07T00:23:35
|
|
use a serial instead of PKGCONF_PKG_PROPF_SEEN
|
|
7d8cc1e4
|
2021-10-06T13:13:34
|
|
dependency: add pkgconf_dependency_copy()
|
|
c547edd0
|
2021-10-06T11:52:18
|
|
deconst the client on pkgconf_dependency_add()
|
|
4144d506
|
2021-10-06T11:48:13
|
|
implement dependency refcounting
|
|
8130dd15
|
2021-10-06T11:29:18
|
|
dependency: add pkgconf_dependency_free_one
|
|
d688a7bd
|
2021-06-11T15:00:47
|
|
implement pkgconf_cross_personality_deinit
|
|
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.
|
|
f9531ce9
|
2021-03-18T05:59:54
|
|
add support for pkgconf_cross_personality_t.want_default_pure
|
|
dd57abfe
|
2020-05-24T14:44:01
|
|
pkgconf 1.7.0.
|
|
4fb7683c
|
2020-05-24T14:40:47
|
|
add support for the PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS flag used in build2.
|
|
48dc665a
|
2019-10-19T00:56:17
|
|
personality: add support for WantDefaultStatic setting
|
|
19aa93e3
|
2019-08-04T15:54:24
|
|
prepare for pkgconf 2.0 development
|
|
c862e030
|
2019-07-12T06:53:37
|
|
pkgconf 1.6.3.
|
|
c816ce69
|
2019-07-11T03:36:03
|
|
pkgconf 1.6.2. (closes #38, #40, #41)
|
|
2d0c1f5c
|
2019-05-06T15:15:41
|
|
lite: disable debug logging
|
|
3afd14c4
|
2019-03-23T22:27:05
|
|
libpkgconf: path: use realpath(3) to deduplicate the search path
closes #24
|
|
183e68df
|
2019-01-14T13:52:04
|
|
libpkgconf: add LIBPKGCONF_VERSION macro
|
|
36a5b7ac
|
2019-01-14T13:48:02
|
|
libpkgconf: fragment: add pkgconf_fragment_copy_list()
|
|
40897f24
|
2018-05-09T22:52:27
|
|
libpkgconf: personality: remove const from the default personality, since it's not really const
|
|
e6ce6c8e
|
2018-05-09T22:39:39
|
|
libpkgconf: personality: fixups
|
|
1244f8f8
|
2018-05-09T21:21:39
|
|
libpkgconf: refactor out the rfc822 message parser so that the cross-personality code can share it
|
|
f702967d
|
2018-05-09T19:56:30
|
|
libpkgconf: pkg: refactor pkgconf_pkg_new_from_file to prepare to factor out the rfc822 parser
|
|
6b0e346c
|
2018-05-09T17:07:26
|
|
libpkgconf: refactor building the dir lists into separate concerns
|
|
854490c5
|
2018-05-09T16:54:21
|
|
libpkgconf: add basic support for cross-compile personality objects
|
|
43e8c7b4
|
2018-05-09T16:35:21
|
|
libpkgconf: path: add path list copying function
|
|
7e9ed692
|
2018-03-18T18:04:02
|
|
libpkgconf: pkg: skip over -I cflags from Requires.internal nodes when building a cflags list
|
|
ad65bc4a
|
2018-03-18T18:01:59
|
|
libpkgconf: dependency: allow dependency nodes to be colored with traits
|
|
83eea876
|
2018-03-07T05:27:54
|
|
meson: Fix defining PKGCONF_API (#174)
|
|
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.
|
|
72743575
|
2017-12-10T00:39:39
|
|
libpkgconf: fragment: track merged fragments, as they should never be quoted
|
|
19d91e90
|
2017-12-07T19:13:35
|
|
libpkgconf: fragment: allow for overriding the default fragment rendering behaviour
|
|
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).
|
|
44b4b126
|
2017-12-05T17:32:00
|
|
libpkgconf: pkg: record which pkgconf_client_t owns each pkgconf_pkg_t object
|
|
7ced8d77
|
2017-09-19T21:48:53
|
|
libpkgconf: fragment: pkgconf_fragment_parse: return false on parse failure
|
|
e9fd43ca
|
2017-09-17T23:38:25
|
|
libpkgconf: clean up header includes (closes #137)
|
|
048deb95
|
2017-09-13T14:35:28
|
|
headers: add C++ wrappers (closes #136)
|
|
1252d7ae
|
2017-09-08T19:53:52
|
|
libpkgconf: dependency: make dependency_to_str() private, use a caller-supplied buffer for reentrancy
|
|
615bab3d
|
2017-09-08T19:48:31
|
|
libpkgconf: pkg: pkgconf_pkg_report_graph_error(): move already_sent_notice to pkgconf_client_t
|
|
4ba2bac5
|
2017-06-05T14:00:02
|
|
Don't depend on libtool magic to control which symbols are exported from shared libraries
|
|
4d7b4d7c
|
2017-06-04T19:19:55
|
|
Minimal tweaks to compile with Visual C 2015
|
|
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
|
|
81011ba5
|
2017-02-27T09:54:02
|
|
main: implement --short-errors (#115)
|
|
794443a9
|
2017-02-25T16:04:55
|
|
dependency: break API to add tracepoints to dependency list building
|
|
01fe5743
|
2017-02-25T15:32:49
|
|
fragment: add new option to control escaping shell arguments
|
|
d20efff4
|
2017-02-04T19:49:59
|
|
libpkgconf: overhaul pkgconf_trace() a little
|
|
bef29308
|
2017-02-04T18:57:21
|
|
libpkgconf: client: add trace logging too
|
|
a6755cd7
|
2017-02-04T18:46:53
|
|
libpkgconf: client: add pkgconf_warn()
|
|
eb98a1e6
|
2017-02-04T18:46:33
|
|
libpkgconf: client: clean up various aspects of error/warn handlers
|
|
c0b6a62c
|
2017-02-04T18:37:58
|
|
libpkgconf: client: add warn handler and getter/setter for both warn handler and error handler
|
|
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
|
|
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)
|
|
7237b811
|
2017-01-20T00:58:48
|
|
add support for making paths relocatable (closes #103)
|
|
ced4f003
|
2017-01-19T19:16:00
|
|
libpkgconf: client: add pkgconf_client_[get|set]_prefix_varname()
|
|
13cf74c7
|
2017-01-19T18:23:25
|
|
libpkgconf: kill flags from top-level fragment API (ref #105)
|
|
7b39c384
|
2017-01-19T18:17:29
|
|
libpkgconf: pkg: clean up use of flags variable (ref #105)
|
|
127fd037
|
2017-01-19T17:35:35
|
|
libpkgconf: pkg: uncouple resolver flags from pkgconf_pkg_dir_list_build(). (ref #105)
|
|
0ca6a16c
|
2017-01-19T17:32:38
|
|
libpkgconf: queue: nuke flags parameters (ref #105)
|
|
597c3c7f
|
2017-01-19T17:22:20
|
|
libpkgconf: client: add pkgconf_client_t.flags and a get/set interface for it
|
|
4f94090f
|
2017-01-18T20:25:19
|
|
libpkgconf: fragment: make pkgconf_fragment_filter() accept userdata (closes #106)
|
|
1369f558
|
2017-01-13T20:04:38
|
|
path: add new pkgconf_path_relocate() API which is a stub when path
relocation is not needed
|
|
92f566ff
|
2016-12-30T11:39:45
|
|
libpkgconf: path: check both device node and inode for dedup. pointed out by @plicease
|
|
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)
|
|
bad0da0c
|
2016-12-30T11:01:15
|
|
libpkgconf: path: filter out duplicate path entries by inode if possible (closes #102)
|
|
6ef4a853
|
2016-12-21T20:06:17
|
|
libpkgconf: migrate pkgconf client fragment_is_system_dir() to a libpkgconf API
|
|
f6b074f2
|
2016-12-21T19:50:05
|
|
libpkgconf: path: make pkgconf_path_match_list() take a const list argument
|
|
61c750fd
|
2016-12-15T23:36:59
|
|
libpkgconf: pkg: cleanup and document pkg module
|
|
82fa8b21
|
2016-12-13T12:14:08
|
|
libpkgconf: separate config.h from the actual API headers
|
|
fa876089
|
2016-12-13T13:03:59
|
|
pass client and user data to error handler (#100)
|
|
d6d7ff77
|
2016-12-09T23:07:15
|
|
main: use pkgconf_fragment_render() to render fragment lists instead of custom stuff
|
|
2b5d763e
|
2016-12-09T22:45:22
|
|
main: use pkgconf_fragment_filter() instead of crazy stuff
|
|
0232ee52
|
2016-12-09T22:18:59
|
|
libpkgconf: fragment: add pkgconf_fragment_filter() to selectively copy a fragment list using a filter function
|
|
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
|
|
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
|
|
a9022030
|
2016-12-09T21:36:59
|
|
libpkgconf: fragment: simplify sysroot handling by using pkgconf_client_t.sysroot_dir presence
|
|
f7b78539
|
2016-12-09T20:50:33
|
|
libpkgconf: tuple: add pkgconf_tuple_free_entry() to free a specific tuple node
|
|
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.
|
|
011d8c77
|
2016-12-02T00:34:48
|
|
libpkgconf: audit: migrate to pkgconf_client_t
|
|
c05ecdfc
|
2016-12-02T00:29:33
|
|
libpkgconf: migrate cache to pkgconf_client_t which unfortunately requires it to be non-const :(
|
|
e7f48465
|
2016-12-02T00:04:43
|
|
libpkgconf: path: add cleanup functions
|
|
a300787c
|
2016-12-01T15:17:23
|
|
libpkgconf: do not implicitly build the dir list, instead explicitly do it
|
|
ad731d19
|
2016-12-01T15:11:37
|
|
libpkgconf: make pkgconf_pkg_dir_list_build() public
|