get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/130041/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 130041,
    "url": "http://patches.dpdk.org/api/patches/130041/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20230809133553.1396119-2-bruce.richardson@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230809133553.1396119-2-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230809133553.1396119-2-bruce.richardson@intel.com",
    "date": "2023-08-09T13:35:51",
    "name": "[v8,1/3] eal/windows: move fnmatch function to header file",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "1fa1f9c9c9daf72714b12f27ab48d616d33b0f55",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "delegate": {
        "id": 24651,
        "url": "http://patches.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20230809133553.1396119-2-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 29143,
            "url": "http://patches.dpdk.org/api/series/29143/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=29143",
            "date": "2023-08-09T13:35:50",
            "name": "Split logging functionality out of EAL",
            "version": 8,
            "mbox": "http://patches.dpdk.org/series/29143/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/130041/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/130041/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 2DE1143018;\n\tWed,  9 Aug 2023 15:36:37 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id A79C343258;\n\tWed,  9 Aug 2023 15:36:29 +0200 (CEST)",
            "from mgamail.intel.com (mgamail.intel.com [134.134.136.31])\n by mails.dpdk.org (Postfix) with ESMTP id 4426D400D6\n for <dev@dpdk.org>; Wed,  9 Aug 2023 15:36:26 +0200 (CEST)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 09 Aug 2023 06:36:05 -0700",
            "from silpixa00401385.ir.intel.com ([10.237.214.156])\n by fmsmga001.fm.intel.com with ESMTP; 09 Aug 2023 06:36:07 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1691588187; x=1723124187;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=2WejG9xnvVD+18j9w4lea7/Rloks/gKwoWV3eC98Rd4=;\n b=l3gioPl3qfxBZfkkAcKydjchqv/GtkMa8Rume15NGJEGbmG+TDHdPvwV\n 9PxJn+sIjvKtw1+f/c+DNWhVmaweckSdewwjum1s4RIejvgV0nEpANCDL\n 1/HvUb29xsjvjkD4n+joCUmb8q6x3UtKIyyxrEUTYjlYL+GlLiNvrruSc\n RJxzX3tsh4dUMN7YxgdZdsEvsJPNgn4kVlIdVaVuICJFc3Yf+k0V7vgrK\n Q0dzbSYtLVyX4OKSvUcgycBh6CmGwdrta+3nXNF7fivxhQpf+C9al3JgJ\n GaFKVMbK1jBmIgkmu4HH/fDFonzY7wajy67ncAyucj6V4u2TfzxsBTDCy g==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10795\"; a=\"435015627\"",
            "E=Sophos;i=\"6.01,159,1684825200\"; d=\"scan'208\";a=\"435015627\"",
            "E=Sophos;i=\"6.01,202,1684825200\"; d=\"scan'208\";a=\"875261475\""
        ],
        "X-ExtLoop1": "1",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "david.marchand@redhat.com, Bruce Richardson <bruce.richardson@intel.com>,\n\t=?utf-8?q?Morten_Br=C3=B8rup?= <mb@smartsharesystems.com>,\n Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "Subject": "[PATCH v8 1/3] eal/windows: move fnmatch function to header file",
        "Date": "Wed,  9 Aug 2023 14:35:51 +0100",
        "Message-Id": "<20230809133553.1396119-2-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.39.2",
        "In-Reply-To": "<20230809133553.1396119-1-bruce.richardson@intel.com>",
        "References": "<20220829151901.376754-1-bruce.richardson@intel.com>\n <20230809133553.1396119-1-bruce.richardson@intel.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "To allow the fnmatch function to be shared between libraries, without\nhaving to export it into the public namespace (since it's not prefixed\nwith \"rte\"), we can convert fnmatch.c to replace fnmatch.h. This allows\nfnmatch function to be static and limited in scope to the current file,\npreventing duplicate definitions if it is used by two libraries, while\nalso not requiring export for sharing.\n\nSigned-off-by: Bruce Richardson <bruce.richardson@intel.com>\nAcked-by: Morten Brørup <mb@smartsharesystems.com>\nAcked-by: Tyler Retzlaff <roretzla@linux.microsoft.com>\n---\n lib/eal/windows/fnmatch.c         | 172 ------------------------------\n lib/eal/windows/include/fnmatch.h | 169 ++++++++++++++++++++++++++---\n lib/eal/windows/meson.build       |   1 -\n 3 files changed, 156 insertions(+), 186 deletions(-)\n delete mode 100644 lib/eal/windows/fnmatch.c",
    "diff": "diff --git a/lib/eal/windows/fnmatch.c b/lib/eal/windows/fnmatch.c\ndeleted file mode 100644\nindex f622bf54c5..0000000000\n--- a/lib/eal/windows/fnmatch.c\n+++ /dev/null\n@@ -1,172 +0,0 @@\n-/* SPDX-License-Identifier: BSD-3-Clause\n- * Copyright (c) 1989, 1993, 1994\n- *\tThe Regents of the University of California.  All rights reserved.\n- *\n- * This code is derived from software contributed to Berkeley by\n- * Guido van Rossum.\n- */\n-\n-#if defined(LIBC_SCCS) && !defined(lint)\n-static const char sccsid[] = \"@(#)fnmatch.c\t8.2 (Berkeley) 4/16/94\";\n-#endif /* LIBC_SCCS and not lint */\n-\n-/*\n- * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6.\n- * Compares a filename or pathname to a pattern.\n- */\n-\n-#include <ctype.h>\n-#include <string.h>\n-#include <stdio.h>\n-\n-#include \"fnmatch.h\"\n-\n-#define EOS\t'\\0'\n-\n-static const char *rangematch(const char *, char, int);\n-\n-int\n-fnmatch(const char *pattern, const char *string, int flags)\n-{\n-\tconst char *stringstart;\n-\tchar c, test;\n-\n-\tfor (stringstart = string;;)\n-\t\tswitch (c = *pattern++) {\n-\t\tcase EOS:\n-\t\t\tif ((flags & FNM_LEADING_DIR) && *string == '/')\n-\t\t\t\treturn (0);\n-\t\t\treturn (*string == EOS ? 0 : FNM_NOMATCH);\n-\t\tcase '?':\n-\t\t\tif (*string == EOS)\n-\t\t\t\treturn (FNM_NOMATCH);\n-\t\t\tif (*string == '/' && (flags & FNM_PATHNAME))\n-\t\t\t\treturn (FNM_NOMATCH);\n-\t\t\tif (*string == '.' && (flags & FNM_PERIOD) &&\n-\t\t\t    (string == stringstart ||\n-\t\t\t    ((flags & FNM_PATHNAME) && *(string - 1) == '/')))\n-\t\t\t\treturn (FNM_NOMATCH);\n-\t\t\t++string;\n-\t\t\tbreak;\n-\t\tcase '*':\n-\t\t\tc = *pattern;\n-\t\t\t/* Collapse multiple stars. */\n-\t\t\twhile (c == '*')\n-\t\t\t\tc = *++pattern;\n-\n-\t\t\tif (*string == '.' && (flags & FNM_PERIOD) &&\n-\t\t\t    (string == stringstart ||\n-\t\t\t    ((flags & FNM_PATHNAME) && *(string - 1) == '/')))\n-\t\t\t\treturn (FNM_NOMATCH);\n-\n-\t\t\t/* Optimize for pattern with * at end or before /. */\n-\t\t\tif (c == EOS)\n-\t\t\t\tif (flags & FNM_PATHNAME)\n-\t\t\t\t\treturn ((flags & FNM_LEADING_DIR) ||\n-\t\t\t\t\t    strchr(string, '/') == NULL ?\n-\t\t\t\t\t    0 : FNM_NOMATCH);\n-\t\t\t\telse\n-\t\t\t\t\treturn (0);\n-\t\t\telse if (c == '/' && flags & FNM_PATHNAME) {\n-\t\t\t\tstring = strchr(string, '/');\n-\t\t\t\tif (string == NULL)\n-\t\t\t\t\treturn (FNM_NOMATCH);\n-\t\t\t\tbreak;\n-\t\t\t}\n-\n-\t\t\t/* General case, use recursion. */\n-\t\t\twhile ((test = *string) != EOS) {\n-\t\t\t\tif (!fnmatch(pattern, string,\n-\t\t\t\t\tflags & ~FNM_PERIOD))\n-\t\t\t\t\treturn (0);\n-\t\t\t\tif (test == '/' && flags & FNM_PATHNAME)\n-\t\t\t\t\tbreak;\n-\t\t\t\t++string;\n-\t\t\t}\n-\t\t\treturn (FNM_NOMATCH);\n-\t\tcase '[':\n-\t\t\tif (*string == EOS)\n-\t\t\t\treturn (FNM_NOMATCH);\n-\t\t\tif (*string == '/' && flags & FNM_PATHNAME)\n-\t\t\t\treturn (FNM_NOMATCH);\n-\t\t\tpattern = rangematch(pattern, *string, flags);\n-\t\t\tif (pattern == NULL)\n-\t\t\t\treturn (FNM_NOMATCH);\n-\t\t\t++string;\n-\t\t\tbreak;\n-\t\tcase '\\\\':\n-\t\t\tif (!(flags & FNM_NOESCAPE)) {\n-\t\t\t\tc = *pattern++;\n-\t\t\t\tif (c == EOS) {\n-\t\t\t\t\tc = '\\\\';\n-\t\t\t\t\t--pattern;\n-\t\t\t\t}\n-\t\t\t}\n-\t\t\t/* FALLTHROUGH */\n-\t\tdefault:\n-\t\t\tif (c == *string)\n-\t\t\t\t;\n-\t\t\telse if ((flags & FNM_CASEFOLD) &&\n-\t\t\t\t (tolower((unsigned char)c) ==\n-\t\t\t\t  tolower((unsigned char)*string)))\n-\t\t\t\t;\n-\t\t\telse if ((flags & FNM_PREFIX_DIRS) && *string == EOS &&\n-\t\t\t     ((c == '/' && string != stringstart) ||\n-\t\t\t     (string == stringstart+1 && *stringstart == '/')))\n-\t\t\t\treturn (0);\n-\t\t\telse\n-\t\t\t\treturn (FNM_NOMATCH);\n-\t\t\tstring++;\n-\t\t\tbreak;\n-\t\t}\n-\t/* NOTREACHED */\n-}\n-\n-static const char *\n-rangematch(const char *pattern, char test, int flags)\n-{\n-\tint negate, ok;\n-\tchar c, c2;\n-\n-\t/*\n-\t * A bracket expression starting with an unquoted circumflex\n-\t * character produces unspecified results (IEEE 1003.2-1992,\n-\t * 3.13.2).  This implementation treats it like '!', for\n-\t * consistency with the regular expression syntax.\n-\t * J.T. Conklin (conklin@ngai.kaleida.com)\n-\t */\n-\tnegate = (*pattern == '!' || *pattern == '^');\n-\tif (negate)\n-\t\t++pattern;\n-\n-\tif (flags & FNM_CASEFOLD)\n-\t\ttest = tolower((unsigned char)test);\n-\n-\tfor (ok = 0; (c = *pattern++) != ']';) {\n-\t\tif (c == '\\\\' && !(flags & FNM_NOESCAPE))\n-\t\t\tc = *pattern++;\n-\t\tif (c == EOS)\n-\t\t\treturn (NULL);\n-\n-\t\tif (flags & FNM_CASEFOLD)\n-\t\t\tc = tolower((unsigned char)c);\n-\n-\t\tc2 = *(pattern + 1);\n-\t\tif (*pattern == '-' && c2 != EOS && c2 != ']') {\n-\t\t\tpattern += 2;\n-\t\t\tif (c2 == '\\\\' && !(flags & FNM_NOESCAPE))\n-\t\t\t\tc2 = *pattern++;\n-\t\t\tif (c2 == EOS)\n-\t\t\t\treturn (NULL);\n-\n-\t\t\tif (flags & FNM_CASEFOLD)\n-\t\t\t\tc2 = tolower((unsigned char)c2);\n-\n-\t\t\tif ((unsigned char)c <= (unsigned char)test &&\n-\t\t\t    (unsigned char)test <= (unsigned char)c2)\n-\t\t\t\tok = 1;\n-\t\t} else if (c == test)\n-\t\t\tok = 1;\n-\t}\n-\treturn (ok == negate ? NULL : pattern);\n-}\ndiff --git a/lib/eal/windows/include/fnmatch.h b/lib/eal/windows/include/fnmatch.h\nindex c6b226bd5d..c9fc14cbcf 100644\n--- a/lib/eal/windows/include/fnmatch.h\n+++ b/lib/eal/windows/include/fnmatch.h\n@@ -1,20 +1,21 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n- * Copyright(c) 2019 Intel Corporation\n+ * Copyright (c) 1989, 1993, 1994\n+ *\tThe Regents of the University of California.  All rights reserved.\n+ *\n+ * This code is derived from software contributed to Berkeley by\n+ * Guido van Rossum.\n  */\n-\n #ifndef _FNMATCH_H_\n #define _FNMATCH_H_\n \n-/**\n- * This file is required to support the common code in eal_common_log.c\n- * as Microsoft libc does not contain fnmatch.h. This may be removed in\n- * future releases.\n+/*\n+ * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6.\n+ * Compares a filename or pathname to a pattern.\n  */\n-#ifdef __cplusplus\n-extern \"C\" {\n-#endif\n \n-#include <rte_common.h>\n+#include <ctype.h>\n+#include <string.h>\n+#include <stdio.h>\n \n #define FNM_NOMATCH 1\n \n@@ -25,6 +26,57 @@ extern \"C\" {\n #define FNM_CASEFOLD 0x10\n #define FNM_PREFIX_DIRS 0x20\n \n+#define FNM_EOS\t'\\0'\n+\n+static inline const char *\n+fnm_rangematch(const char *pattern, char test, int flags)\n+{\n+\tint negate, ok;\n+\tchar c, c2;\n+\n+\t/*\n+\t * A bracket expression starting with an unquoted circumflex\n+\t * character produces unspecified results (IEEE 1003.2-1992,\n+\t * 3.13.2).  This implementation treats it like '!', for\n+\t * consistency with the regular expression syntax.\n+\t * J.T. Conklin (conklin@ngai.kaleida.com)\n+\t */\n+\tnegate = (*pattern == '!' || *pattern == '^');\n+\tif (negate)\n+\t\t++pattern;\n+\n+\tif (flags & FNM_CASEFOLD)\n+\t\ttest = tolower((unsigned char)test);\n+\n+\tfor (ok = 0; (c = *pattern++) != ']';) {\n+\t\tif (c == '\\\\' && !(flags & FNM_NOESCAPE))\n+\t\t\tc = *pattern++;\n+\t\tif (c == FNM_EOS)\n+\t\t\treturn (NULL);\n+\n+\t\tif (flags & FNM_CASEFOLD)\n+\t\t\tc = tolower((unsigned char)c);\n+\n+\t\tc2 = *(pattern + 1);\n+\t\tif (*pattern == '-' && c2 != FNM_EOS && c2 != ']') {\n+\t\t\tpattern += 2;\n+\t\t\tif (c2 == '\\\\' && !(flags & FNM_NOESCAPE))\n+\t\t\t\tc2 = *pattern++;\n+\t\t\tif (c2 == FNM_EOS)\n+\t\t\t\treturn (NULL);\n+\n+\t\t\tif (flags & FNM_CASEFOLD)\n+\t\t\t\tc2 = tolower((unsigned char)c2);\n+\n+\t\t\tif ((unsigned char)c <= (unsigned char)test &&\n+\t\t\t    (unsigned char)test <= (unsigned char)c2)\n+\t\t\t\tok = 1;\n+\t\t} else if (c == test)\n+\t\t\tok = 1;\n+\t}\n+\treturn (ok == negate ? NULL : pattern);\n+}\n+\n /**\n  * This function is used for searching a given string source\n  * with the given regular expression pattern.\n@@ -41,10 +93,101 @@ extern \"C\" {\n  * @return\n  *\tif the pattern is found then return 0 or else FNM_NOMATCH\n  */\n-int fnmatch(const char *pattern, const char *string, int flags);\n+static inline int\n+fnmatch(const char *pattern, const char *string, int flags)\n+{\n+\tconst char *stringstart;\n+\tchar c, test;\n+\n+\tfor (stringstart = string;;)\n+\t\tswitch (c = *pattern++) {\n+\t\tcase FNM_EOS:\n+\t\t\tif ((flags & FNM_LEADING_DIR) && *string == '/')\n+\t\t\t\treturn (0);\n+\t\t\treturn (*string == FNM_EOS ? 0 : FNM_NOMATCH);\n+\t\tcase '?':\n+\t\t\tif (*string == FNM_EOS)\n+\t\t\t\treturn (FNM_NOMATCH);\n+\t\t\tif (*string == '/' && (flags & FNM_PATHNAME))\n+\t\t\t\treturn (FNM_NOMATCH);\n+\t\t\tif (*string == '.' && (flags & FNM_PERIOD) &&\n+\t\t\t    (string == stringstart ||\n+\t\t\t    ((flags & FNM_PATHNAME) && *(string - 1) == '/')))\n+\t\t\t\treturn (FNM_NOMATCH);\n+\t\t\t++string;\n+\t\t\tbreak;\n+\t\tcase '*':\n+\t\t\tc = *pattern;\n+\t\t\t/* Collapse multiple stars. */\n+\t\t\twhile (c == '*')\n+\t\t\t\tc = *++pattern;\n+\n+\t\t\tif (*string == '.' && (flags & FNM_PERIOD) &&\n+\t\t\t    (string == stringstart ||\n+\t\t\t    ((flags & FNM_PATHNAME) && *(string - 1) == '/')))\n+\t\t\t\treturn (FNM_NOMATCH);\n+\n+\t\t\t/* Optimize for pattern with * at end or before /. */\n+\t\t\tif (c == FNM_EOS)\n+\t\t\t\tif (flags & FNM_PATHNAME)\n+\t\t\t\t\treturn ((flags & FNM_LEADING_DIR) ||\n+\t\t\t\t\t    strchr(string, '/') == NULL ?\n+\t\t\t\t\t    0 : FNM_NOMATCH);\n+\t\t\t\telse\n+\t\t\t\t\treturn (0);\n+\t\t\telse if (c == '/' && flags & FNM_PATHNAME) {\n+\t\t\t\tstring = strchr(string, '/');\n+\t\t\t\tif (string == NULL)\n+\t\t\t\t\treturn (FNM_NOMATCH);\n+\t\t\t\tbreak;\n+\t\t\t}\n \n-#ifdef __cplusplus\n+\t\t\t/* General case, use recursion. */\n+\t\t\twhile ((test = *string) != FNM_EOS) {\n+\t\t\t\tif (!fnmatch(pattern, string,\n+\t\t\t\t\tflags & ~FNM_PERIOD))\n+\t\t\t\t\treturn (0);\n+\t\t\t\tif (test == '/' && flags & FNM_PATHNAME)\n+\t\t\t\t\tbreak;\n+\t\t\t\t++string;\n+\t\t\t}\n+\t\t\treturn (FNM_NOMATCH);\n+\t\tcase '[':\n+\t\t\tif (*string == FNM_EOS)\n+\t\t\t\treturn (FNM_NOMATCH);\n+\t\t\tif (*string == '/' && flags & FNM_PATHNAME)\n+\t\t\t\treturn (FNM_NOMATCH);\n+\t\t\tpattern = fnm_rangematch(pattern, *string, flags);\n+\t\t\tif (pattern == NULL)\n+\t\t\t\treturn (FNM_NOMATCH);\n+\t\t\t++string;\n+\t\t\tbreak;\n+\t\tcase '\\\\':\n+\t\t\tif (!(flags & FNM_NOESCAPE)) {\n+\t\t\t\tc = *pattern++;\n+\t\t\t\tif (c == FNM_EOS) {\n+\t\t\t\t\tc = '\\\\';\n+\t\t\t\t\t--pattern;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\t/* FALLTHROUGH */\n+\t\tdefault:\n+\t\t\tif (c == *string)\n+\t\t\t\t;\n+\t\t\telse if ((flags & FNM_CASEFOLD) &&\n+\t\t\t\t (tolower((unsigned char)c) ==\n+\t\t\t\t  tolower((unsigned char)*string)))\n+\t\t\t\t;\n+\t\t\telse if ((flags & FNM_PREFIX_DIRS) && *string == FNM_EOS &&\n+\t\t\t     ((c == '/' && string != stringstart) ||\n+\t\t\t     (string == stringstart+1 && *stringstart == '/')))\n+\t\t\t\treturn (0);\n+\t\t\telse\n+\t\t\t\treturn (FNM_NOMATCH);\n+\t\t\tstring++;\n+\t\t\tbreak;\n+\t\t}\n+\t/* NOTREACHED */\n }\n-#endif\n \n #endif /* _FNMATCH_H_ */\ndiff --git a/lib/eal/windows/meson.build b/lib/eal/windows/meson.build\nindex 845e406ca1..e4b2427610 100644\n--- a/lib/eal/windows/meson.build\n+++ b/lib/eal/windows/meson.build\n@@ -18,7 +18,6 @@ sources += files(\n         'eal_mp.c',\n         'eal_thread.c',\n         'eal_timer.c',\n-        'fnmatch.c',\n         'getopt.c',\n         'rte_thread.c',\n )\n",
    "prefixes": [
        "v8",
        "1/3"
    ]
}