From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id gW1FM3w2mmofTicAWB0awg (envelope-from ) for ; Thu, 03 Sep 2026 23:09:48 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256 header.s=qcppdkim1 header.b=OcnEuXne; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.a=rsa-sha256 header.s=google header.b=jK4gtlA+; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id B4CB21E166; Thu, 03 Sep 2026 23:09:48 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 11A8A1E09B for ; Thu, 03 Sep 2026 23:09:47 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 984954BB3B83 for ; Fri, 4 Sep 2026 03:09:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 984954BB3B83 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256 header.s=qcppdkim1 header.b=OcnEuXne; dkim=pass (2048-bit key, unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.a=rsa-sha256 header.s=google header.b=jK4gtlA+ Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by sourceware.org (Postfix) with ESMTPS id 63B944BB24E9 for ; Fri, 4 Sep 2026 03:09:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 63B944BB24E9 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=oss.qualcomm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oss.qualcomm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 63B944BB24E9 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=205.220.168.131 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1788491358; cv=pass; b=pS/nvd6EB6Xf5UBQoB6P2DjMt0ad0JZsEXrdIJ36MQGOc5SoKgQ8uxdsaVxC5PDl0I2H1xTPQPgEJWQr2Gszjqi2VHgDvgSBi9ojqAC87jtbtmeD9/ALCXlpfeBdIXfm1yCC9M07FoXn4GA4gs8quRYlrRI7Sjeju/IgjBP2Yg8= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1788491358; c=relaxed/simple; bh=0qjPfXfcHBq8DACZSvZiLUWmWqa8eralwz/OgYVs4CE=; h=DKIM-Signature:DKIM-Signature:MIME-Version:From:Date:Message-ID: Subject:To; b=GrEMG5SnsTc6sz8EBJkKJjWWwHZCaL3twprfNAbzsi9+0dfHuWXyuHPYBoNJTXsbocH4TJks/+FMy5FM7wSzGy9FnotBmJ1OF4jLe8hWpNiAISGGntouX3ERYWYj5rGOY5kdwzwgCm+xqLTrKD37F6RvlGhvuwzDcGGvAv9d6kk= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256 header.s=qcppdkim1 header.b=OcnEuXne; dkim=pass (2048-bit key, unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.a=rsa-sha256 header.s=google header.b=jK4gtlA+ DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 63B944BB24E9 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6842lOjR2341562 for ; Fri, 4 Sep 2026 03:09:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ixmr44uKOXjllTvGfWaopqqyo+PQnu6yzYfxqLx39AU=; b=OcnEuXnepPBxPmwv NNLCSQaazQ+nmXpzzRf5l5ddn8RJmBIeT0kHmavplcqUSzVJHPmhkxdPbkIp2QsB HvU+ZKe0Ex7OYh/Vee9U8hWXkxtMmuF8h8bSvpVx7qP3kTZa2kweYi+gti8Ub+m8 ndXubSBUo2na3dDNaCgorq6ilBoCribbIc2VM7fNwQ3CFjV6gmE+RkSK3ox0ipAq rP3og34y8OLJm0NBbHX/3JC7TzH4r04fhoqQk/SKeGVQaFdGZggY9dZFKn1jmnWf PRzCGbpHSJxZgBehxj3OfpScbi0nGQs6utROX1kwW/KvLR9+30cU2tXikgSNhb9V 0tPqJw== Received: from mail-oo1-f71.google.com (mail-oo1-f71.google.com [209.85.161.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gfdyxhs0w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 04 Sep 2026 03:09:05 +0000 (GMT) Received: by mail-oo1-f71.google.com with SMTP id 006d021491bc7-6b1281dd14aso528470eaf.2 for ; Thu, 03 Sep 2026 20:09:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1788491345; cv=none; d=google.com; s=arc-20260327; b=GA2k2XFT1AkPbGPC/H1lwf1jpt11VzqCzpRzkLom7GmN9kQMmeRwKLwAkcOfKKmq5J KtugN76TPfHSn9VTAT0v2Bhb0ZL9EALfEq8c5pfRQs+DUDt2+ECD5H2xT7DSl1XG0LYv 4BaAbEE8Wo+Rx4vyBPDlZ5K7blTvC+tzCHKSUeFq8b89O+OzuwafmHJbXOUxWIsCvWBB RQ1tdf3twPXQmELVLDYWGfSBrn0CIY4jOGIpQWbqupsgiUTkAf/nG7d3WCbks7vAQiqS 8Df/Ja522qQtAepfK3MF/fbdhQWNCoB+S3w5VzoTaaojOm/fTz3KL+z1k3U05PBAPxF3 eLpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=ixmr44uKOXjllTvGfWaopqqyo+PQnu6yzYfxqLx39AU=; fh=BX7ZRefaRGTAWL5DNbQn+coKfMNi775KEDiazpAVOF0=; b=bxvOXr77q+UoXUfNrZi94gx4/W/Yncun6LCaLO5Cd+qUj78C1m759sCTRnhA53t6EP Noe1SC55SFBfSQZjCT/RF8EfQoBr2KwJ3y9H8ZMYQj2WKuNVEJwBzT3aMfs22fB3awQ1 usG3lYFZpNF2U4/YvZ+GhJlSCnIzn6TEka3tp8oTm058qIHGByLpfbjDPJvsEGogsy57 fTHp+3GWPFowL0rx5QEfNSS9E9pm+OjtOzrqx7VMYx1uMgAjT4V70GXRH1TNNOWt7irm e0Q3tF/q4p42Je6J+KVz8vNWEITwq4D43TjA/kzaWhWO9xvJXOhK14j5EuIiRq6vvRLq uzfw==; darn=sourceware.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788491345; x=1789096145; darn=sourceware.org; h=content-transfer-encoding:content-type:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:from:to:cc:subject :date:message-id:reply-to:content-type; bh=ixmr44uKOXjllTvGfWaopqqyo+PQnu6yzYfxqLx39AU=; b=jK4gtlA+lQY3GoJgaiGrwR8geCpgXkXHP6fwtPxf7R5x4ToKKQ4i26q0sAVkT292R/ YCaiofGby/MBQwhgmm2hVMXBe7EKIm7OLA5bpRMHVVoI3Ta4K8LgQKoqxZArM5jl0jID j1nPDZONaBdjVgq4yAZV9KOWaCYmQhTsZMvz9klOcQQj01QHuU2TAyUkO9E4Ah1gUWfe kPdd3nOQSxoy293mmaR+hl66oWzeGl1/+q4D5kA41rAfJNH6mp8bzKdzL9bHJhO6vRnx M6Ank334K4AlYyQLBr31I2rTl8NYBa2RFb64n0cSCI0YxYwKYQ3a5r8BFtk9EROXknSm OuLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788491345; x=1789096145; h=content-transfer-encoding:content-type:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ixmr44uKOXjllTvGfWaopqqyo+PQnu6yzYfxqLx39AU=; b=Wb3IJevrXDtxQ37/I/WKwuKdH+IF7t0o/zRDwtPJPSL8u69pIfAL2+FrH0GY++KQnX Yb+FIBhZ8wLqlX0u7G4BVqL1W0WVdG7GfHlwRNUf0ThyaUm5G8cDbJ3Prrp4dhTLUb2D 3WNXOG7h+BQ5uFRFD96gc4R538PgaqPLgac7e5zIp2D2iTFUNt7sMhhXKIfTvqyPa2Im ttL0vQEgqH48wXd6E//9SkgvoufBkPWzJbo+sbsfrWFIt+ooN0zF+KNCOyafIvFuQPGm As7IGIV7i7r93qGma0dS98q6As9fF2z94cdv8nQhm+H/FBNfNzzNlBId/uZnochSgFIN LrPw== X-Forwarded-Encrypted: i=1; AKwUvBw25pfNmfXTjVEhir83+OxTGwvnJ2xNV3+96mXGq0fRpN0O2GCVJPoed8ZvejaQG9MPYZNMJzv3ueJCeA==@sourceware.org X-Gm-Message-State: AFuF++mcdhDcbFNnlohqHN5T05aGPoY47PAyPVowLdyIgqSGeqa4PV7Z RNdUucKrwSGa3mimAzcrB21W3hx+kA1H/YLldHkztAuOqUJEkmNfbDYCnc+yAYTfHvVxo/mGi85 NrRrrIN0pKdq6KzbmXuYvKRq7n1gcfLOGCi8t4iIIFQqGEDQsYsXjbW+ohDipv60ghRxsdbAO0J GOw9cZfgkcHGZfWzK0b2kzY77mbswEyJThjeAnhyqvgmgFRqMTsg== X-Gm-Gg: AYBFou23rOXzm96TBpq/xcaThc/0t6oQQbnWTwqnBQg3/5J/3NBbY3YB/rWH8x2F17+ OqCGuHK3GI4niPNrFn3m9f0rNFYndbA9Nj6sOIWYml0vMSIOfCX4U7JOb054nFDgCCu19oj5UxM E5Kw0OAf/DsA9EsewSToN4sSLt9UqxwYxO/99J+V8mWMr+rPyPJ1c2Zz8= X-Received: by 2002:a4a:e845:0:b0:6b7:46fc:1da with SMTP id 006d021491bc7-6b746fc02b9mr846284eaf.57.1788491344758; Thu, 03 Sep 2026 20:09:04 -0700 (PDT) X-Received: by 2002:a4a:e845:0:b0:6b7:46fc:1da with SMTP id 006d021491bc7-6b746fc02b9mr846250eaf.57.1788491344184; Thu, 03 Sep 2026 20:09:04 -0700 (PDT) MIME-Version: 1.0 References: <20260903185528.2542431-1-pedro@palves.net> <20260903185528.2542431-2-pedro@palves.net> In-Reply-To: <20260903185528.2542431-2-pedro@palves.net> From: Andrea Pinski Date: Thu, 3 Sep 2026 20:08:53 -0700 X-Gm-Features: AcwNN1X1cvxouxgRSBYA9GH_wYvmcb2FKnEc5HxEcsvwhpk71dNynEsStctSb4s Message-ID: Subject: Re: [PATCH 1/1] dg-extract-results.{sh, py}: Optionally read file list from stdin/file To: Pedro Alves Cc: gcc-patches@gcc.gnu.org, gdb-patches@sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: 39V7z3V0uv1R-nsCcoXEQUPTRiH7Bm3C X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA0MDAyNiBTYWx0ZWRfX8BG2SMiUho3w WhGWqIi/aFl4RtUW21L9Rb271feaEUnfEVRcEtCR47FIDnXIgJUcXtezP/CXOlkAF/FSdpTE7wd ZjiWiHuw4RLdL5oTCiScF5Snd+xljFo= X-Proofpoint-GUID: 39V7z3V0uv1R-nsCcoXEQUPTRiH7Bm3C X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA0MDAyNiBTYWx0ZWRfX2X9OHeiMsBho zOIAiKEGUZww5tUdDroL24TiRCfmC6dfkjSm5o+ChXbC13INUZF7ZlXpbEuh0b+hjxwy/KpnUlE kS+d5S16duRFlPGY9ETUKpM3H/TH1vAIpu3qq0U72Tz2aqbCLvM3LYJLC9p1+Curu4kiyDhVqKp 5qadvjjuGryo9GoA577tmuisF/TqoMjmPq6CVwJhxiKmiVkAx9295coQhmMqyMthk0xnCQfDWey Dvpzuh3htPHdDRg0DWBG3mDCdJmoFt28gWgzZAjNo3Czrbiqap364qTWn5V/Qd+AcNKgTDXhml2 AsUXheMbgAOJO9Dp7Y0uC9NdPzNnK3kuUUsKkUhCYvIrf3OOcw4Ub2v3S/qA2WgsdziWpeSr5/g h546YaUIHGFR4RJsIm80l+mAJr6qT/ZkpsgoAPokRz8phb6fT2zwuEPPHbf1mv82O9FBPBf0XdX C2j584he5nrWpW2P2YA== X-Authority-Analysis: v=2.4 cv=X9Zi7mTe c=1 sm=1 tr=0 ts=6a9a3651 cx=c_pps a=V4L7fE8DliODT/OoDI2WOg==:117 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=T_Alst9gAAAA:8 a=wsTiWQ9plPdPJ14apGcA:9 a=QEXdDO2ut3YA:10 a=WZGXeFmKUf7gPmL3hEjn:22 a=DvZ5ixILWSEuw56YIEpp:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-04_01,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0 suspectscore=0 priorityscore=1501 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609040026 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org On Thu, Sep 3, 2026 at 11:57=E2=80=AFAM Pedro Alves wrot= e: > > dg-extract-results.sh and dg-extract-results.py take the summary/log > files to combine as command-line arguments, one argument per file. > > That is fine for GCC, whose parallel harness produces a handful of > files. > > GDB uses these scripts too, but its parallel harness writes one .sum > (and one .log) per test script, of which there are 2657 at the moment. > > On Windows, with native Windows python, passing that many sum or log > files to dg-extract-results overflows the command-line length limit > (~32 KB), and the combine step dies. > > The .sh wrapper re-execs the faster Python implementation, forwarding > the file list, so the overflow can also surface at the re-exec. > > E.g.: > > $ make check -j$(nproc) > ... > make[1]: Leaving directory '/c/msys2/home/alves/gdb/build-testsuite-wind= ows' > /c/gdb/src/gdb/testsuite/../../contrib/dg-extract-results.sh: line 39: /= ucrt64/bin/python3: Argument list too long > /c/gdb/src/gdb/testsuite/../../contrib/dg-extract-results.sh: line 39: /= ucrt64/bin/python3: Argument list too long > make: *** [Makefile:274: check-parallel] Error 2 > ... > $ find outputs/ -name gdb.sum | wc -l > 2657 > > Fix it by teaching both dg-extract-results.sh and > dg-extract-results.py a new -f option that reads the list of files to > process, one per line, from a named file, or from standard input when > the argument is "-". The option may be given more than once and mixed > with file arguments. > > A caller can then pipe the file list straight in via "-f -" instead of > expanding it onto the command line, so the length limit no longer > applies regardless of host or Python flavor. > > Existing callers can continue working as they were, as passing the > file list as one file per argument is still supported. > > contrib/ChangeLog: > > * dg-extract-results.py: Handle new "-f list-file" option. > * dg-extract-results.sh: Ditto. Ok. > > Change-Id: Iaced5ba228972ce267f355de65fe5ad8a1e38c68 Note we normally don't have Change-Id in the commit message; I know it is from gerrit so please remove it before pushing the patch. > --- > contrib/dg-extract-results.py | 30 ++++++++++++++++++++++++++---- > contrib/dg-extract-results.sh | 17 +++++++++++++++-- > 2 files changed, 41 insertions(+), 6 deletions(-) > > diff --git a/contrib/dg-extract-results.py b/contrib/dg-extract-results.p= y > index 98b0f4989c96..b5d890f64063 100644 > --- a/contrib/dg-extract-results.py > +++ b/contrib/dg-extract-results.py > @@ -164,7 +164,7 @@ class Prog: > def usage (self): > name =3D sys.argv[0] > sys.stderr.write ('Usage: ' + name > - + ''' [-t tool] [-l variant-list] [-L] log-or-= sum-file ... > + + ''' [-t tool] [-l variant-list] [-L] [-f lis= t-file] log-or-sum-file ... > > tool The tool (e.g. g++, libffi) for which to create a > new test summary file. If not specified then output > @@ -174,6 +174,12 @@ class Prog: > variants in the files for . > sum-file A test summary file with the format of those > created by runtest from DejaGnu. > + list-file A file listing the log-or-sum files to process, one > + per line. Use "-" to read the list from standard > + input. This avoids the command-line length limit > + when combining very many files. May be given more > + than once, and may be mixed with log-or-sum-file > + arguments. > If -L is used, merge *.log files instead of *.sum. In this > mode the exact order of lines may not be preserved, just different > Running *.exp chunks should be in correct order. > @@ -189,19 +195,35 @@ class Prog: > # Parse the command-line arguments. > def parse_cmdline (self): > try: > - (options, self.files) =3D getopt.getopt (sys.argv[1:], 'l:t:= L') > - if len (self.files) =3D=3D 0: > - self.usage() > + (options, self.files) =3D getopt.getopt (sys.argv[1:], 'l:t:= Lf:') > for (option, value) in options: > if option =3D=3D '-l': > self.variations.append (value) > elif option =3D=3D '-t': > self.tools.append (value) > + elif option =3D=3D '-f': > + self.read_file_list (value) > else: > self.do_sum =3D False > + if len (self.files) =3D=3D 0: > + self.usage() > except getopt.GetoptError as e: > self.fatal (None, e.msg) > > + # Append the files listed in FILENAME, one per line, to self.files. > + # FILENAME of "-" means read the list from standard input. Blank > + # lines are ignored. > + def read_file_list (self, filename): > + f =3D sys.stdin if filename =3D=3D '-' else open (filename, 'r') > + try: > + for line in f: > + line =3D line.strip() > + if line: > + self.files.append (line) > + finally: > + if f is not sys.stdin: > + f.close() > + > # Try to parse time string TIME, returning an arbitrary time on fail= ure. > # Getting this right is just a nice-to-have so failures should be si= lent. > def parse_time (self, time): > diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.s= h > index 6ea897033b57..f3093f94582e 100755 > --- a/contrib/dg-extract-results.sh > +++ b/contrib/dg-extract-results.sh > @@ -42,7 +42,7 @@ done > > usage() { > cat <&2 > -Usage: $PROGNAME [-t tool] [-l variant-list] [-L] sum-file ... > +Usage: $PROGNAME [-t tool] [-l variant-list] [-L] [-f list-file] sum-fil= e ... > > tool The tool (e.g. g++, libffi) for which to create a > new test summary file. If not specified then all > @@ -52,6 +52,11 @@ Usage: $PROGNAME [-t tool] [-l variant-list] [-L] sum-= file ... > variants in the files for . > sum-file A test summary file with the format of those > created by runtest from DejaGnu. > + list-file A file listing the sum-files to process, one per line= . > + Use "-" to read the list from standard input. This > + avoids the command-line length limit when combining > + very many files. May be given more than once, and > + may be mixed with sum-file arguments. > If -L is used, merge *.log files instead of *.sum. In this > mode the exact order of lines may not be preserved, just different > Running *.exp chunks should be in correct order. > @@ -69,18 +74,26 @@ msg() { > VARIANTS=3D"" > TOOL=3D"" > MODE=3D"sum" > +LIST_FILES=3D"" > > -while getopts "l:t:L" ARG; do > +while getopts "l:t:Lf:" ARG; do > case $ARG in > l) VARIANTS=3D"${VARIANTS} ${OPTARG}";; > t) test -z "$TOOL" || (msg "${PROGNAME}: only one tool can be specifi= ed"; exit 1); > TOOL=3D"${OPTARG}";; > L) MODE=3D"log";; > + f) if test "${OPTARG}" =3D "-" ; then > + LIST_FILES=3D"${LIST_FILES} `cat`" > + else > + LIST_FILES=3D"${LIST_FILES} `cat "${OPTARG}"`" > + fi;; > \?) usage; exit 0;; > esac > done > shift `expr ${OPTIND} - 1` > > +set -- ${LIST_FILES} "$@" > + > if test $# -lt 1 ; then > usage > exit 1 > -- > 2.54.0 >