From patchwork Wed Dec 7 10:17:58 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Martisko X-Patchwork-Id: 86998 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp236993qgi; Wed, 7 Dec 2016 02:18:30 -0800 (PST) X-Received: by 10.84.135.34 with SMTP id 31mr143377557pli.50.1481105910125; Wed, 07 Dec 2016 02:18:30 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id w5si23433194pgj.87.2016.12.07.02.18.29 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Dec 2016 02:18:30 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-return-75595-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; spf=pass (google.com: domain of libc-alpha-return-75595-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-75595-patch=linaro.org@sourceware.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:subject:to:references:message-id:date :mime-version:in-reply-to:content-type; q=dns; s=default; b=ErCa rZxPHZxmbZD0sPRpSrD4V1vO/z7RdjUJut/ixS5VUBOZrPqegdjwsCLwPObpqmca X7U6JKVkieyOtkAXt4RcRHJ2nV76iOKPN0Epft+/8M8RTO4qQ4C30BPheyjDuFG6 w4bjYqoZC1m8lp4xc/ubIIGGVjDZHZh2UYyRJQ4= 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:subject:to:references:message-id:date :mime-version:in-reply-to:content-type; s=default; bh=YY3bx0H6VY qDuiahN0PVQ44BZSE=; b=GVAS+vFhH7fBIubEKrYJAIjSdAC+1To6B+U4LQ7O9N lYC857cAVsKGPircpt82f+tcwWpSHYytrpYksm7waeMMrvvkpLSRwujoVoaJ0tM0 +LocNF0BtLvZkEhnEE/CSWba64W+7sRxBYPqWjDLVmMSnvfEh6YDiTM4iXzQvA7k 4= Received: (qmail 16128 invoked by alias); 7 Dec 2016 10:18:04 -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 16109 invoked by uid 89); 7 Dec 2016 10:18:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.9 required=5.0 tests=BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=H*Ad:U*vapier, sk:jamarti, jamartis@redhat.com, U*jamartis X-HELO: mx1.redhat.com From: Jakub Martisko Subject: Re: [PATCH][BZ #15527] strftime_l.c: Support lowercase output To: libc-alpha@sourceware.org, Mike Frysinger References: <576117B9.5080105@redhat.com> <57737EE8.8070706@redhat.com> <20161206232035.GH10558@vapier.lan> Message-ID: <5847E1D6.5040509@redhat.com> Date: Wed, 7 Dec 2016 11:17:58 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20161206232035.GH10558@vapier.lan> Oh, my bad. That seems reasonable, sending new patch. JM On 7.12.2016 00:20, Mike Frysinger wrote: > On 29 Jun 2016 09:55, Jakub Martisko wrote: >> thanks for your comment. The reason why I sent the patch is that there >> is a bug/feature request for similar functionality in coreutils' "date" >> program and the maintainers of coreutils/gnulib do not want to diverge >> from the glibc interface. Even though the replacing you mentioned does >> indeed work, built-in version would be imo better (for example when >> using other shell than bash), especially when all of the needed >> functionality was already implemented. > > i think his point is that bash has already defined a syntax, but you > are doing it differently and there's (afaict) no need for it. he isn't > saying you should use bash if you want lower/upper case. > > so instead of adding new syntax like "%#^x", add "%,x" > -mike > >From 1289b48ee174bda5dc6266df1ed216f172fc5dd4 Mon Sep 17 00:00:00 2001 From: Jakub Martisko Date: Wed, 7 Dec 2016 10:52:08 +0100 Subject: [PATCH] time/stfrtime_l.c: add lowercase support * [BZ #15527] * time/strftime_l.c (__strftime_internal): Implement conversion to all lowercase. * manual/time.texi: Document # and , flags. * time/tst-strftime.c (do_test): Test case conversion. --- manual/time.texi | 8 ++++++++ time/strftime_l.c | 4 +++- time/tst-strftime.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/manual/time.texi b/manual/time.texi index f94cbe4..39ed062 100644 --- a/manual/time.texi +++ b/manual/time.texi @@ -1352,6 +1352,14 @@ with spaces. @item ^ The output uses uppercase characters, but only if this is possible (@pxref{Case Conversion}). + +@item # +The output uses opposite case, but only if this is possible +(@pxref{Case Conversion}). + +@item , +The output uses lowercase characters, but only if this is possible +(@pxref{Case Conversion}). @end table The default action is to pad the number with zeros to keep it a constant diff --git a/time/strftime_l.c b/time/strftime_l.c index 1205035..6ed5f63 100644 --- a/time/strftime_l.c +++ b/time/strftime_l.c @@ -671,7 +671,9 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format, case L_('#'): change_case = 1; continue; - + case L_(','): + to_lowcase = 1; + continue; default: break; } diff --git a/time/tst-strftime.c b/time/tst-strftime.c index af3ff72..258d40a 100644 --- a/time/tst-strftime.c +++ b/time/tst-strftime.c @@ -154,6 +154,36 @@ do_test (void) } } + const struct + { + const char *fmt; + const char *exp; + size_t n; + } ctests[] = + { + { "%^A", "SUNDAY", 6 }, + { "%,A", "sunday", 6 }, + { "%A", "Sunday", 6 }, + }; +#define nctests (sizeof (ctests) / sizeof (ctests[0])) + for (cnt = 0; cnt < nctests; ++cnt) + { + char buf[100]; + size_t r = strftime (buf, sizeof (buf), ctests[cnt].fmt, &ttm); + if (r != ctests[cnt].n) + { + printf ("strftime(\"%s\") returned %zu not %zu\n", + ctests[cnt].fmt, r, ctests[cnt].n); + result = 1; + } + if (strcmp (buf, ctests[cnt].exp) != 0) + { + printf ("strftime(\"%s\") produced \"%s\" not \"%s\"\n", + ctests[cnt].fmt, buf, ctests[cnt].exp); + result = 1; + } + } + return result + do_bz18985 (); } -- 2.5.5