Christoph Reiter
869f2a84d6
pkgconf_pkg_parser_version_func: fix whitespace detection
...
In case the version string has no whitespace then strcspn() returns
strlen() of the input, so whitespace is only found if len != strlen.
This fixes invalid warnings when parsing version fields.
2020-11-28 19:17:03 -07:00
Tobias Stoeckmann
f818a69b3d
libpkgconf: pkg: fix out ouf boundary access
...
If a file with a matching "uninstalled" name exists but cannot be
parsed, an invalid memory area is accessed.
How to reproduce:
$ touch poc-uninstalled.pc
$ PKG_CONFIG_PATH=. pkgconf poc
2020-06-10 00:20:36 -06:00
Ariadne Conill
c613eb5cce
libpkgconf: pkg: use a second pointer for demunging windows paths
2020-05-26 13:42:39 -06:00
Ariadne Conill
e70b536ea3
libpkgconf: pkg: when generating a search path, use the correct path separator
...
Before, this could result in generated paths like C:\foo\pkgconfig/bar.pc on Windows.
2020-05-26 11:01:46 -06:00
Ariadne Conill
0253fddc1d
libpkgconf: pkg: fix computation of pkgconf_pkg_t.id on Windows.
...
Windows allows both \ and / as valid path characters. A computed path
such as C:\development\libfoo\pkgconfig/foo.pc will result in a computed
pkgconf_pkg_t.id of "pkgconfig/foo".
Accordingly, correct the path normalization for checking for / after
the \ path has been dealt with in all cases.
2020-05-26 07:41:16 -06:00
Ben
011db1bb88
Do not complain about malformed whitespace from \n on Version line
...
Every version line has a newline at the end; the malformed whitespace checker
should just check for trailing spaces and tabs.
Resolves https://todo.sr.ht/~kaniini/pkgconf/15
2020-05-24 14:36:46 -06:00
Ariadne Conill
382a89c173
pkg: pkgconf_compare_version(): do not return levenshtein distance in strcmp() case
2020-05-24 14:18:16 -06:00
Ariadne Conill
c10f69994b
libpkgconf: pkg: generate diagnostic for and trim malformed versions
2019-07-12 06:35:48 -05:00
Alexander Tsoy
db9c1e96a1
fix the order of header includes
...
config.h should be included before stdinc.h, otherwise large file
support is not enabled.
Downstream bug: https://bugs.gentoo.org/687548
2019-06-08 04:55:52 +03:00
William Pitcock
6854265f28
libpkgconf: pkg: use pkgconf_fragment_copy_list() to clean up cflags gathering logic ( closes #20 )
2019-01-14 13:48:23 -06:00
William Pitcock
0ae52182c9
libpkgconf: pkg: clean up pkgconf_parser interactions ( closes #13 )
2019-01-14 13:11:59 -06:00
Ignacio Casal Quinteiro
2c05971029
Canonicalize paths before using them
...
This fixes a problem where on Windows the prefix would
not match if the prefix is generated with backslashes
and the rest of the variables use normal slashes
2018-09-17 16:31:25 +02:00
Ignacio Casal Quinteiro
9f17da92d2
On Windows the path prefix should be checked caseless
2018-09-17 15:41:27 +02:00
William Pitcock
6f05fec4b5
pkg: give a correctly sized vtable to the parser
2018-06-16 16:35:44 -05:00
William Pitcock
1244f8f8e7
libpkgconf: refactor out the rfc822 message parser so that the cross-personality code can share it
2018-05-09 21:21:39 -05:00
William Pitcock
f702967d0a
libpkgconf: pkg: refactor pkgconf_pkg_new_from_file to prepare to factor out the rfc822 parser
2018-05-09 19:56:30 -05:00
William Pitcock
0f17a4f390
libpkgconf: pkg: mark owning client earlier, to allow for refactoring out the rfc822 parser
2018-05-09 19:33:12 -05:00
William Pitcock
6b0e346c28
libpkgconf: refactor building the dir lists into separate concerns
2018-05-09 17:07:26 -05:00
Leorize
f36ccc1d91
libpkgconf: add support for Haiku
...
client: use BELIBRARIES
On Haiku, BELIBRARIES is the equivalent to LIBRARY_PATH on many other
systems, while LIBRARY_PATH is instead the LD_LIBRARY_PATH of Haiku.
pkg: bootstrap package search paths with Haiku's find_paths
This commit adds build_default_pkgconfig_path. The function appends
to the list given the default pkgconfig paths, and will supersede
get_default_pkgconfig_path
2018-04-05 10:02:54 -05:00
William Pitcock
7e9ed6922d
libpkgconf: pkg: skip over -I cflags from Requires.internal nodes when building a cflags list
2018-03-18 18:05:55 -05:00
William Pitcock
f03ec3ff90
libpkgconf: add support for proposed Requires.internal extension
2018-03-18 15:46:53 -05:00
TingPing
a50bf726e0
Fix incorrect comment ( #178 )
2018-03-07 23:16:18 -06:00
TingPing
60c05f5621
Improve prefix rewriting on Windows ( #177 )
...
* cli: Default to rewriting prefix on Windows
This matches `pkg-config` behavior
* libpkgconf: Rewrite the prefix of all variables
2018-03-07 23:00:22 -06:00
William Pitcock
0d52339141
libpkgconf: pkg: ensure the dependency node has a solution associated with it
...
Sometimes this did not happen, e.g. when using providers as the solution (ref #172 ).
2018-02-08 14:26:25 -06:00
William Pitcock
4a09efe070
libpkgconf: pkg: fix harmless gcc7 compiler warning
2018-01-05 11:38:21 -06:00
William Pitcock
a42f265c07
libpkgconf: pkg: include system libdir and includedir search paths as variables in builtin packages ( closes #165 )
2017-12-21 02:19:21 -06:00
William Pitcock
e0bf4009cb
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.
2017-12-12 00:21:21 -06:00
William Pitcock
f7406afc5b
libpkgconf: pkg: do not mention PKG_CONFIG_SKIP_CONFLICTS env var when simplified errors are requested ( closes #134 )
2017-12-05 18:04:42 -06:00
William Pitcock
74d58d1b63
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).
2017-12-05 17:34:01 -06:00
William Pitcock
44b4b126f3
libpkgconf: pkg: record which pkgconf_client_t owns each pkgconf_pkg_t object
2017-12-05 17:32:00 -06:00
William Pitcock
4c0cc29277
libpkgconf: pkg: add refcount debugging
2017-12-05 17:24:57 -06:00
William Pitcock
4589274c43
libpkgconf: start to remove PKGCONF_BUFSIZE allocations from the stack. ( closes #149 )
...
Patch by Karen Arutyunov.
2017-10-16 12:56:19 -05:00
William Pitcock
420c62e10c
libpkgconf: pkg: refactor parser harness to allow providing warnings, provide warning for improper fragment list
2017-09-19 21:58:54 -05:00
William Pitcock
e9fd43caa7
libpkgconf: clean up header includes ( closes #137 )
2017-09-17 23:38:25 -05:00
William Pitcock
f808300a01
libpkgconf: pkg: some elements of virtual packages should be freed as they have heap-allocated portions ( closes #132 )
2017-09-13 14:56:10 -05:00
William Pitcock
9b55fc3c23
libpkgconf: cache: refactor the way package objects are marked as cached to avoid memory leaks ( #133 )
2017-09-13 14:41:19 -05:00
William Pitcock
b7839f6bb7
libpkgconf: pkg: pkgconf_pkg_scan_dir: remove unnecessary static declaration of filebuf
2017-09-08 20:06:52 -05:00
William Pitcock
2681c29edd
libpkgconf: pkg: determine_prefix: use caller-provided buffer for reentrancy
2017-09-08 20:04:49 -05:00
William Pitcock
adae70445a
libpkgconf: pkg: get_default_pkgconfig_path: use caller-supplied buffer for reentrancy
2017-09-08 20:01:34 -05:00
William Pitcock
615bab3df9
libpkgconf: pkg: pkgconf_pkg_report_graph_error(): move already_sent_notice to pkgconf_client_t
2017-09-08 19:48:31 -05:00
William Pitcock
b0ef708efc
libpkgconf: pkg: pkg_get_parent_dir(): use caller-supplied buffer instead of a static buffer to make reentrant
2017-09-08 19:23:04 -05:00
William Pitcock
47ce9765a8
libpkgconf: define SIZE_FMT_SPECIFIER on POSIX and Windows platforms and use it in place of %zu
...
The MSVCRT runtime as used on Windows does not support %zu, but instead recommends %Iu. As we want
to remain portable to other runtimes, even on Windows, we do not use %Iu, but instead expand it logically
to either %lu or %llu depending on if it's _WIN32 or _WIN64 headers.
On POSIX, we assume C99 support is available and always use %zu, as pkgconf has never supported anything
earlier than C99 officially.
Closes #125 .
2017-09-08 18:46:48 -05:00
William Pitcock
864b14e5b9
Merge branch 'cmakeify' of github.com:dankegel/pkgconf
2017-06-16 21:06:01 -05:00
William Pitcock
03f7841065
libpkgconf: pkg: windows can use either \ or / as directory separators
...
ref #118
2017-06-16 15:27:23 -05:00
William Pitcock
d45e850130
Revert "pkg: use pkgconf_pkg_t.realname instead of pkgconf_pkg_t.id for injecting the default provides entry"
...
This reverts commit 0c22b4d8a1
.
2017-06-16 13:03:51 -05:00
William Pitcock
0c22b4d8a1
pkg: use pkgconf_pkg_t.realname instead of pkgconf_pkg_t.id for injecting the default provides entry
...
This issue was noticed while porting pkgconf to Windows.
ref #118
2017-06-16 11:49:54 -05:00
Dan Kegel
794aa5016a
Tidy up a bit.
2017-06-05 20:54:57 -07:00
Dan Kegel
4d7b4d7c8e
Minimal tweaks to compile with Visual C 2015
2017-06-04 19:19:55 -07:00
William Pitcock
d280060ed7
libpkgconf: pkg: add additional validation rules in post-parse phase
2017-05-19 23:37:57 -05:00
William Pitcock
0262b8251d
libpkgconf: pkgconf_pkg_find(): correctly handle failure from pkgconf_pkg_new_from_file()
2017-05-19 23:33:49 -05:00