From b030a77dff515a857cf60bfc53a2a5e5e239cbb2 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 11 Feb 2023 12:53:34 +0100 Subject: [PATCH] Cygwin: cygcheck: fix dependency search Spaces are filtered out by PathMatchSpecA so they can't be used as pattern anchors. Overwrite all spaces with commas and fix the search expresion accordingly. Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 66af2ce0b..b5bad4ec2 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2430,15 +2430,22 @@ collect_pkg_info (FILE *fp, ini_package_info *pi, bool search) else { /* For pattern matching we need a standarized format. - Make sure all deps are prepended by a space and all deps - are trailed by a comma. Note the missing space, that's - deliberate to keep it in the stored string. */ + Make sure all deps are prepended and trailed by a comma. + Note the missing space after the colon, that's deliberate + to keep it in the stored string. Originally we kept the + spaces in, but spaces are filtered out by PathMatchSpecA, + so we now replace all space by comma here. */ char *start = buf + strlen ("depends2:"); size_t len = strlen (start); vinfo->depends2 = (char *) calloc (len + 2, 1); if (vinfo->depends2) - *stpcpy (vinfo->depends2, start) = ','; + { + *stpcpy (vinfo->depends2, start) = ','; + char *cp = vinfo->depends2; + while ((cp = strchr (cp, ' '))) + *cp = ','; + } } } else if (!strncmp (buf, "build-depends: ", @@ -2455,7 +2462,12 @@ collect_pkg_info (FILE *fp, ini_package_info *pi, bool search) vinfo->build_depends = (char *) calloc (len + 2, 1); if (vinfo->build_depends) - *stpcpy (vinfo->build_depends, start) = ','; + { + *stpcpy (vinfo->build_depends, start) = ','; + char *cp = vinfo->build_depends; + while ((cp = strchr (cp, ' '))) + *cp++ = ','; + } } } } @@ -2810,7 +2822,7 @@ package_search (char **search, int selector) ep = ext_search; if (selector) { - ep = stpcpy (ep, "* "); + ep = stpcpy (ep, "*,"); ep = stpcpy (ep, *search); ep = stpcpy (ep, ",*"); }