From patchwork Tue Sep 5 20:25:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 111745 Delivered-To: patch@linaro.org Received: by 10.140.94.166 with SMTP id g35csp3324190qge; Tue, 5 Sep 2017 13:27:30 -0700 (PDT) X-Received: by 10.84.241.67 with SMTP id u3mr5637438plm.135.1504643250904; Tue, 05 Sep 2017 13:27:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504643250; cv=none; d=google.com; s=arc-20160816; b=bv9I9X3MTjEkoLpyLgF3Kh7qeKQBDYKx/eYDgl0SQsZaQfYy1gHHc4tIqUlN1i1TyD 8MCptahUlsN5AsnpBTmX3E5R4JCVooVSzDLVNxxYHPT5bDIZBDF90XZAEIiMLUAyUawI y+D3nyOH1SfiNorbj08YBUun3OCnHYTwoyRKfn8p1FrthwnoqxbX+WZ/vaUH4/PIzRv2 p2dNQEyBIz+0peJ6ScYPnxfH8X2MY14PBZciiisbJWDqoN9OKRvL6KBDc2sVm9r3/Lm+ WlL9fJf8IEQOpfTdrdfOfAOaadLNy2kHyCv1uXv7SonR/jkFvskXo1ey+aRJOg5Oy/z8 c6OQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :delivered-to:sender:list-help:list-post:list-archive:list-subscribe :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature:arc-authentication-results; bh=N6l0iGPkELaWch/gSgORHPz1zrEMvr2/7piZU2bJOoU=; b=gLurbTmLWbqNilDHwIRJsqebk7kz2hixbSWUbgKNoTSwPP8ZWmW/MwJnso8h9Sdpnz vQDG5EsXiQDzji/rybuqIQxX4zk2nSN2dDlNYseTs0E9UOHioBSI7pb1t/GidrzCBMJ0 odrod0PzLy9ljZbgUulaLLwwGDqdo8h7nEpx9EvBaU4/pXqRYlWzQz9ExIR1ps5MyUMx 4WPd5d4eh2z73PhN0tADv6Tz3IAuqcf9I7ZOWBvT0hjwbHBhKIqjZFaYNx722N61tFaI tuBxzHtgwhCSsEP3Rxg9s1ye/H18ayy5N5P0jA9XteN5/qhou6loXLiaAhztOR6/NXEc xx1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=d4DT0oHv; spf=pass (google.com: domain of libc-alpha-return-84215-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-84215-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id z3si834207pfa.474.2017.09.05.13.27.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Sep 2017 13:27:30 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-84215-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=d4DT0oHv; spf=pass (google.com: domain of libc-alpha-return-84215-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-84215-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=c3ZX7GFDYG3nqYMzBNOhK73ZodlY+oC 30WWAsLQcvyd9z+bM1Tf8bYs0su7l1MSxMFvEQnZZgBsALuCkdapECN1oUjcfxii 2L30MKRIGvzNxNUU292zH5KAgC/46KfqauRWotGbhiod3xEnaz3CAxaDF/ILqshx Xn1NWj8irGBw= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references; s=default; bh=jc0/RhcRAh/WozwJdyW9qMAcj8g=; b=d4DT0 oHvAvsJttbLLHBiHcQ3+36tk3h2nvQRgLhGDZOGtwhXcZqa1KcWRkGZM0pOEKwR4 T0THumFAQ59hLCMjXl2Aw8qX8Ll9s9spsMuqIVb2JursOvEtRARCwYG8TfVhISgl SbXc+4R4rHUg/3n5QJRGnP6+jLVGtUJ55Xwszw= Received: (qmail 50066 invoked by alias); 5 Sep 2017 20:25:55 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 49902 invoked by uid 89); 5 Sep 2017 20:25:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=bracket X-HELO: mail-qt0-f170.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=N6l0iGPkELaWch/gSgORHPz1zrEMvr2/7piZU2bJOoU=; b=brSgtNRrG+96ocPGBWwpjjXSRnInFdg0y5AJ1nAJp3y87SDiyxxzGrek8dWmDKCe7n AQAbLTNHET5Z616YeDyOtNWutIN4grQUcO0nu0NR7Jcx2PhPLXsFRkO1KznhBLZL3dNe Kz8oDVsupN4cTF7WQoera8AfKd3SpGgZ5ZfiYzwPt3EDckvbOzwTM0T9UJGFtMY7kl1y 8e32VPCUks2jpUxMXnuc4qcp0nQi76o+/hRpZUK/J8u4iiNPMgt1yi3BSJDG7B4H5CTy rTRdsAKp5AKC/0Xv6LmI8iC2HgUMHHJXTN4m4H/TtLJOlKWqoPTSjm6fmMJkNYtqikBe a4dw== X-Gm-Message-State: AHPjjUiiqPEMUpGSWYGUAuyb6PmpuQgGZsBJv939Mx9e+kAxQW4YxJtV dSbw/0qp0JvfGwRXvcL7FA== X-Google-Smtp-Source: ADKCNb5n/pAmqtdYXOXFVYQm53M3FNVaoJIfDeYt47mVZ3khwQVbobcNIgIXtXfGt7soT0ZZl5t5Yg== X-Received: by 10.200.38.199 with SMTP id 7mr414975qtp.251.1504643146949; Tue, 05 Sep 2017 13:25:46 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: Paul Eggert Subject: [PATCH 8/9] posix: Use enum for __glob_pattern_type result Date: Tue, 5 Sep 2017 17:25:21 -0300 Message-Id: <1504643122-14874-9-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1504643122-14874-1-git-send-email-adhemerval.zanella@linaro.org> References: <1504643122-14874-1-git-send-email-adhemerval.zanella@linaro.org> This patch replaces the internal integer constant from __glob_pattern_type return with a proper enum. Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py for all major architectures. * posix/glob_internal.h (glob_pattern_type_t): New enumeration. (__glob_pattern_type): Use __glob_pat_types. * posix/glob_pattern_p.c (__glob_pattern_p): Likewise. * posix/glob.c (glob): Likewise. (glob_in_dir): Likewise. --- ChangeLog | 6 ++++++ posix/glob.c | 8 ++++---- posix/glob_internal.h | 18 +++++++++++++----- posix/glob_pattern_p.c | 2 +- 4 files changed, 24 insertions(+), 10 deletions(-) -- 2.7.4 diff --git a/posix/glob.c b/posix/glob.c index 2c8a3dc..30a4143 100644 --- a/posix/glob.c +++ b/posix/glob.c @@ -903,7 +903,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int), [ which we handle the same, using fnmatch. Broken unterminated pattern bracket expressions ought to be rare enough that it is not worth special casing them, fnmatch will do the right thing. */ - if (meta & 5) + if (meta & (__GLOB_SPECIAL | __GLOB_BRACKET)) { /* The directory name contains metacharacters, so we have to glob for the directory, and then glob for @@ -1044,7 +1044,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int), size_t old_pathc = pglob->gl_pathc; int orig_flags = flags; - if (meta & 2) + if (meta & __GLOB_BACKSLASH) { char *p = strchr (dirname, '\\'), *q; /* We need to unescape the dirname string. It is certainly @@ -1242,14 +1242,14 @@ glob_in_dir (const char *pattern, const char *directory, int flags, / sizeof init_names->name[0]); meta = __glob_pattern_type (pattern, !(flags & GLOB_NOESCAPE)); - if (meta == 0 && (flags & (GLOB_NOCHECK|GLOB_NOMAGIC))) + if (meta == __GLOB_NONE && (flags & (GLOB_NOCHECK|GLOB_NOMAGIC))) { /* We need not do any tests. The PATTERN contains no meta characters and we must not return an error therefore the result will always contain exactly one name. */ flags |= GLOB_NOCHECK; } - else if (meta == 0) + else if (meta == __GLOB_NONE) { union { diff --git a/posix/glob_internal.h b/posix/glob_internal.h index 12c9366..2e09132 100644 --- a/posix/glob_internal.h +++ b/posix/glob_internal.h @@ -19,35 +19,43 @@ #ifndef GLOB_INTERNAL_H # define GLOB_INTERNAL_H +enum glob_pattern_type_t +{ + __GLOB_NONE = 0x0, + __GLOB_SPECIAL = 0x1, + __GLOB_BACKSLASH = 0x2, + __GLOB_BRACKET = 0x4 +}; + static inline int __glob_pattern_type (const char *pattern, int quote) { const char *p; - int ret = 0; + int ret = __GLOB_NONE; for (p = pattern; *p != '\0'; ++p) switch (*p) { case '?': case '*': - return 1; + return __GLOB_SPECIAL; case '\\': if (quote) { if (p[1] != '\0') ++p; - ret |= 2; + ret |= __GLOB_BACKSLASH; } break; case '[': - ret |= 4; + ret |= __GLOB_BRACKET; break; case ']': if (ret & 4) - return 1; + return __GLOB_SPECIAL; break; } diff --git a/posix/glob_pattern_p.c b/posix/glob_pattern_p.c index a17d337..2502772 100644 --- a/posix/glob_pattern_p.c +++ b/posix/glob_pattern_p.c @@ -28,6 +28,6 @@ int __glob_pattern_p (const char *pattern, int quote) { - return __glob_pattern_type (pattern, quote) == 1; + return __glob_pattern_type (pattern, quote) == __GLOB_SPECIAL; } weak_alias (__glob_pattern_p, glob_pattern_p)