Assaf Gordon <assafgordon@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at 29832) by debbugs.gnu.org; 24 Dec 2017 12:26:34 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 24 07:26:34 2017 Received: from localhost ([127.0.0.1]:50143 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1eT5MQ-0002EW-Gy for submit <at> debbugs.gnu.org; Sun, 24 Dec 2017 07:26:34 -0500 Received: from mail.magicbluesmoke.com ([82.195.144.49]:44538) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <P@HIDDEN>) id 1eT5MO-0002EO-Lz for 29832 <at> debbugs.gnu.org; Sun, 24 Dec 2017 07:26:33 -0500 Received: from localhost.localdomain (unknown [109.79.105.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.magicbluesmoke.com (Postfix) with ESMTPSA id 478B8998D; Sun, 24 Dec 2017 12:26:31 +0000 (GMT) Subject: Re: bug#29832: Bug in 'ls -FQ': incorrectly quoted characters To: hackerb9@HIDDEN, 29832 <at> debbugs.gnu.org References: <CAO+cPoMAHZfLthJa55aq2OQjhyPFgZ+bG5ERaA_Q=GsK06wiMw@HIDDEN> From: =?UTF-8?Q?P=c3=a1draig_Brady?= <P@HIDDEN> Message-ID: <642746a6-f1e1-5546-159f-4c84342677b5@HIDDEN> Date: Sun, 24 Dec 2017 12:26:30 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <CAO+cPoMAHZfLthJa55aq2OQjhyPFgZ+bG5ERaA_Q=GsK06wiMw@HIDDEN> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 29832 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) On 24/12/17 07:14, hackerb9@HIDDEN wrote: > Hello! > > Thank you for your continued improvements and maintenance of 'ls' in > coreutils-8.28. > > I have found a somewhat subtle bug. I've included a patch and a test script > to make sure there are no regressions. > > In short, the problem is that a backlash is incorrectly put in front of the > characters @, =, >, and |. This only happens when using filetype indicators > and C style quoting. > > $ touch @ > $ ls > @ > $ ls -F > @ > $ ls -Q > "@" > $ ls -FQ > "\@" # <-- incorrect > > There should be no backslash before the @. > > This was a little bit tricky to track down as the code responsible is not > commented and appears to have been prematurely optimized by the programmer: > > ls.c:2141 > if (file_type <= indicator_style) > { > char const *p; > for (p = &"*=>@|"[indicator_style - file_type]; *p; p++) > set_char_quoting (filename_quoting_options, *p, 1); > } > > Basically, it says, if --file-type was used, then we should be sure to > quote '=', '>', and '@'. If --classify is used, then we should do the same > but also add in '*'. Or, to put it in less compressed C: > > if (indicator_style == file_type) > { > char const *p; > for (p = "=>@|"; *p; p++) > set_char_quoting (filename_quoting_options, *p, 1); > } > if (indicator_style == classify) > { > char const *p; > for (p = "*=>@|"; *p; p++) > set_char_quoting (filename_quoting_options, *p, 1); > } > > However, there is no need to quote those characters when the quoting-style > is set to C. In fact, it is an error to do so as these are not valid C > escape sequences. > > I am guessing the idea of the code was that those characters would not be > backslash escaped, but rather the entire filename would be wrapped in > quotes so the indicator character cannot be confused for part of the > filename. And, indeed, this does work for some of the quoting styles: > "shell[-escape][-always]" work that way. Strangely, "c-maybe" also works > that way. > > $ ls -F --quoting-style=literal > @ > $ ls -F --quoting-style=shell > '@' > $ ls -F --quoting-style=shell-always > '@' > $ ls -F --quoting-style=shell-escape > '@' > $ ls -F --quoting-style=shell-escape-always > '@' > $ ls -F --quoting-style=c-maybe > "@" # <-- This is correct! > > I spent some time debugging it, but I didn't find the perfect fix as I > don't understand why it was written the way it was. Rather, I found > something that I think is an improvement and a step towards doing things > right. I've made a patch that simply checks if the quoting style is C and > skips the problematic lines. Ideally, somebody who understands why this > code was written this way in the first place can make a better patch, but > this should work for now and not break anything for anybody else. > > Please find attached below, my patch for src/ls.c and a regression test > script to be placed in tests/ls/quoting-style-c.sh. > > --b9 > > P.S. This bug may also apply to the -b (--quoting-style=escape). However, > the output from it appears to be more like a mish-mash of C and shell > escapes. (For example, tabs are shown as "\t", as in C, but spaces are > shown as "\ ", as in bourne shell. ) The -Q option, on the other hand, > generates perfectly acceptable C strings (tested with gcc and python), > except for those few buggy characters fixed in this patch. Thanks for the detailed analysis. c-maybe is correct here as quotearg explicitly ignores these extra chars to be quoted when outer quotes are added. Therefore we should probably ignore these extra chars to be quoted when we're adding outer quotes unconditionally. This gnulib patch would handle this specific case. I'll look into generalizing for all outer quoted cases: diff --git a/lib/quotearg.c b/lib/quotearg.c index 8e432e1..47ffc5c 100644 --- a/lib/quotearg.c +++ b/lib/quotearg.c @@ -709,7 +709,9 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize, } } - if (! (((backslash_escapes && quoting_style != shell_always_quoting_style) + if (! (((backslash_escapes + && quoting_style != shell_always_quoting_style + && quoting_style != c_quoting_style) || elide_outer_quotes) && quote_these_too && quote_these_too[c / INT_BITS] >> (c % INT_BITS) & 1) cheers, Pádraig
bug-coreutils@HIDDEN
:bug#29832
; Package coreutils
.
Full text available.Received: (at submit) by debbugs.gnu.org; 24 Dec 2017 07:14:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 24 02:14:43 2017 Received: from localhost ([127.0.0.1]:49883 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1eT0Ud-0002yl-9w for submit <at> debbugs.gnu.org; Sun, 24 Dec 2017 02:14:43 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59884) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <benjamin.a.wong@HIDDEN>) id 1eT0Ub-0002yO-BG for submit <at> debbugs.gnu.org; Sun, 24 Dec 2017 02:14:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <benjamin.a.wong@HIDDEN>) id 1eT0UU-00053F-ED for submit <at> debbugs.gnu.org; Sun, 24 Dec 2017 02:14:36 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,HTML_NONELEMENT_30_40,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:60966) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <benjamin.a.wong@HIDDEN>) id 1eT0UU-000533-8S for submit <at> debbugs.gnu.org; Sun, 24 Dec 2017 02:14:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50809) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <benjamin.a.wong@HIDDEN>) id 1eT0US-0006DT-J8 for bug-coreutils@HIDDEN; Sun, 24 Dec 2017 02:14:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <benjamin.a.wong@HIDDEN>) id 1eT0UR-00051Z-3M for bug-coreutils@HIDDEN; Sun, 24 Dec 2017 02:14:32 -0500 Received: from mail-qk0-x230.google.com ([2607:f8b0:400d:c09::230]:47026) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from <benjamin.a.wong@HIDDEN>) id 1eT0UQ-00050W-P9 for bug-coreutils@HIDDEN; Sun, 24 Dec 2017 02:14:31 -0500 Received: by mail-qk0-x230.google.com with SMTP id b132so9109714qkc.13 for <bug-coreutils@HIDDEN>; Sat, 23 Dec 2017 23:14:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:from:date:message-id:subject:to; bh=Snhc8SVEyvwWx/F0zUgmWpfAeSgca16vFi/unqvlrsA=; b=BWFEfhVVmEAu9fIPBzsWtfSw9zoB0WeahKjfxuFPI+t46VtHnQowk30qLyJN6JxkxF wi+Ajvdkth/kpKtke3g5XQkL53aN6rZAlLalRlq9zahz+s9r/a/C1m4WTkAjORciXg85 tgxhf1d8C1CS4ULZ+toVjUoVbJsZOvOUlPYsvozw8NEBFv8CCX1gRg/y7Ep1AqcaVdxv 7vRZ9TvYjh8loYWi1y7ztOrSbeQcvwpBtUHDsPcTLyR0rDyrb+9X2AfF//RygvuNesq+ Q2+sODRwFrjUMexyyLjI3xwqmcXWUhIn1eAaL9arq93qihXZgYOxi9d+qidwBNsZXAgi huXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to; bh=Snhc8SVEyvwWx/F0zUgmWpfAeSgca16vFi/unqvlrsA=; b=A7WYTbiK6WC3elks4xbaCLygDj4v0T4wJZoWOpg7CDFk0MTjs0lLOJxm/jk5zbFUSb hhOaJq2k5V6U0OX9VdVCuVV3lYC5HbktD4vgk1TiwLGN4xp0nUm26gi4FEhySgwoBvg9 3LVux2YNMuzRM4knvNHYQbUJCgAie79l/oHGSobUq/ssxQypp2nZqh/5QF1pMCkcBB9M rodJgQYNKTOWdSqiJO9lS7JdvDQ7lFo57gCNHXwPsFjdjg4u1KP+CoYaAwLprtnbQsNc JPktxCiVTFt4Iw9FuEvQJrBOGWUFEdpUbFnPEr1yZ8/VbTRpBzohi73i4mAn1kJ5vEgx A4MQ== X-Gm-Message-State: AKGB3mIqgGQX2RT6YE36ybwEKeD9AL4wEl0PkMP6GlkRlznUD5d5v7EY ivmfuTTUMv7uEoQ063MLD20ybc9T1QgPq/T9bA== X-Google-Smtp-Source: ACJfBouuu3lXRd9vpgix2ydnhstpl9jKTUKUfOTUmSF57PupuC7YTbEHJajZ3sezdq4Li8M2j4mvR0aRcUP5VacCzYY= X-Received: by 10.55.17.211 with SMTP id 80mr23814546qkr.120.1514099669396; Sat, 23 Dec 2017 23:14:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.140.39.42 with HTTP; Sat, 23 Dec 2017 23:14:28 -0800 (PST) From: hackerb9@HIDDEN Date: Sat, 23 Dec 2017 23:14:28 -0800 X-Google-Sender-Auth: c288CBf2g6bpHkuJWo-huoG9cSY Message-ID: <CAO+cPoMAHZfLthJa55aq2OQjhyPFgZ+bG5ERaA_Q=GsK06wiMw@HIDDEN> Subject: Bug in 'ls -FQ': incorrectly quoted characters To: bug-coreutils@HIDDEN Content-Type: multipart/mixed; boundary="001a113ac54cf31658056110cc39" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.5 (---) --001a113ac54cf31658056110cc39 Content-Type: multipart/alternative; boundary="001a113ac54cf31655056110cc37" --001a113ac54cf31655056110cc37 Content-Type: text/plain; charset="UTF-8" Hello! Thank you for your continued improvements and maintenance of 'ls' in coreutils-8.28. I have found a somewhat subtle bug. I've included a patch and a test script to make sure there are no regressions. In short, the problem is that a backlash is incorrectly put in front of the characters @, =, >, and |. This only happens when using filetype indicators and C style quoting. $ touch @ $ ls @ $ ls -F @ $ ls -Q "@" $ ls -FQ "\@" # <-- incorrect There should be no backslash before the @. This was a little bit tricky to track down as the code responsible is not commented and appears to have been prematurely optimized by the programmer: ls.c:2141 if (file_type <= indicator_style) { char const *p; for (p = &"*=>@|"[indicator_style - file_type]; *p; p++) set_char_quoting (filename_quoting_options, *p, 1); } Basically, it says, if --file-type was used, then we should be sure to quote '=', '>', and '@'. If --classify is used, then we should do the same but also add in '*'. Or, to put it in less compressed C: if (indicator_style == file_type) { char const *p; for (p = "=>@|"; *p; p++) set_char_quoting (filename_quoting_options, *p, 1); } if (indicator_style == classify) { char const *p; for (p = "*=>@|"; *p; p++) set_char_quoting (filename_quoting_options, *p, 1); } However, there is no need to quote those characters when the quoting-style is set to C. In fact, it is an error to do so as these are not valid C escape sequences. I am guessing the idea of the code was that those characters would not be backslash escaped, but rather the entire filename would be wrapped in quotes so the indicator character cannot be confused for part of the filename. And, indeed, this does work for some of the quoting styles: "shell[-escape][-always]" work that way. Strangely, "c-maybe" also works that way. $ ls -F --quoting-style=literal @ $ ls -F --quoting-style=shell '@' $ ls -F --quoting-style=shell-always '@' $ ls -F --quoting-style=shell-escape '@' $ ls -F --quoting-style=shell-escape-always '@' $ ls -F --quoting-style=c-maybe "@" # <-- This is correct! I spent some time debugging it, but I didn't find the perfect fix as I don't understand why it was written the way it was. Rather, I found something that I think is an improvement and a step towards doing things right. I've made a patch that simply checks if the quoting style is C and skips the problematic lines. Ideally, somebody who understands why this code was written this way in the first place can make a better patch, but this should work for now and not break anything for anybody else. Please find attached below, my patch for src/ls.c and a regression test script to be placed in tests/ls/quoting-style-c.sh. --b9 P.S. This bug may also apply to the -b (--quoting-style=escape). However, the output from it appears to be more like a mish-mash of C and shell escapes. (For example, tabs are shown as "\t", as in C, but spaces are shown as "\ ", as in bourne shell. ) The -Q option, on the other hand, generates perfectly acceptable C strings (tested with gcc and python), except for those few buggy characters fixed in this patch. --001a113ac54cf31655056110cc37 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div><div><div><div><div><div>Hello!<br><br></div>Thank yo= u for your continued improvements and maintenance of 'ls' in coreut= ils-8.28.<br><br></div>I have found a somewhat subtle bug. I've include= d a patch and a test script to make sure there are no regressions.<br><br><= /div>In short, the problem is that a backlash is incorrectly put in front o= f the characters @, =3D, >, and |. This only happens when using filetype= indicators and C style quoting.<br><br>=C2=A0 $ touch @<br>=C2=A0 $ ls <br= >=C2=A0 @<br>=C2=A0 $ ls -F<br>=C2=A0 @<br>=C2=A0 $ ls -Q<br>=C2=A0 "@= "<br>=C2=A0 $ ls -FQ<br></div><div>=C2=A0 "\@"=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # <-- incorrect<br><br></div>There should= be no backslash before the @. <br><br>This was a little bit tricky to trac= k down as the code responsible is not commented and appears to have been pr= ematurely optimized by the programmer:<br><br></div>=C2=A0 ls.c:2141<br>=C2= =A0 if (file_type <=3D indicator_style)<br>=C2=A0=C2=A0=C2=A0 {<br>=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 char const *p;<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 for (p =3D &"*=3D>@|"[indicator_style - file_type]; *p= ; p++)<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 set_char_quoting (file= name_quoting_options, *p, 1);<br>=C2=A0=C2=A0=C2=A0 }<br><br></div>Basicall= y, it says, if --file-type was used, then we should be sure to quote '= =3D', '>', and '@'. If --classify is used, then we s= hould do the same but also add in '*'. Or, to put it in less compre= ssed C:<br><div><div><br>=C2=A0 if (indicator_style =3D=3D file_type)<br>= =C2=A0=C2=A0=C2=A0 {<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 char const *p;<br>= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for (p =3D "=3D>@|"; *p; p++)<b= r>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 set_char_quoting (filename_quo= ting_options, *p, 1);<br>=C2=A0=C2=A0=C2=A0 }<br>=C2=A0 if (indicator_style= =3D=3D classify)<br>=C2=A0=C2=A0=C2=A0 {<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= char const *p;<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for (p =3D "*=3D>= @|"; *p; p++)<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 set_char_q= uoting (filename_quoting_options, *p, 1);<br>=C2=A0=C2=A0=C2=A0 }<br><br></= div><div>However, there is no need to quote those characters when the quoti= ng-style is set to C. In fact, it is an error to do so as these are not val= id C escape sequences.<br><br></div><div>I am guessing the idea of the code= was that those characters would not be backslash escaped, but rather the e= ntire filename would be wrapped in quotes so the indicator character cannot= be confused for part of the filename. And, indeed, this does work for some= of the quoting styles: "shell[-escape][-always]" work that way. = Strangely, "c-maybe" also works that way.<br><br>=C2=A0 $ ls -F -= -quoting-style=3Dliteral<br>=C2=A0 @<br>=C2=A0 $ ls -F --quoting-style=3Dsh= ell<br>=C2=A0 '@'<br>=C2=A0 $ ls -F --quoting-style=3Dshell-always<= br>=C2=A0 '@'<br>=C2=A0 $ ls -F --quoting-style=3Dshell-escape<br>= =C2=A0 '@'<br>=C2=A0 $ ls -F --quoting-style=3Dshell-escape-<wbr>al= ways<br>=C2=A0 '@'<br>=C2=A0 $ ls -F --quoting-style=3Dc-maybe<br><= /div><div>=C2=A0 "@"=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # = <-- This is correct!<br></div><div><br></div><div>I spent some time debu= gging it, but I didn't find the perfect fix as I don't understand w= hy it was written the way it was. Rather, I found something that I think is= an improvement and a step towards doing things right. I've made a patc= h that simply checks if the quoting style is C and skips the problematic li= nes. Ideally, somebody who understands why this code was written this way i= n the first place can make a better patch, but this should work for now and= not break anything for anybody else.<br><br></div><div>Please find attache= d below, my patch for src/ls.c and a regression test script to be placed in= tests/ls/quoting-style-c.sh. <br><br></div><div>--b9<br><br></div><div>P.S= . This bug may also apply to the -b (--quoting-style=3Descape). However, th= e output from it appears to be more like a mish-mash of C and shell escapes= . (For example, tabs are shown as "\t", as in C, but spaces are s= hown as "\ ", as in bourne shell. ) The -Q option, on the other h= and, generates perfectly acceptable C strings (tested with gcc and python),= except for those few buggy characters fixed in this patch. <br><br><br></d= iv></div></div> --001a113ac54cf31655056110cc37-- --001a113ac54cf31658056110cc39 Content-Type: text/x-patch; charset="US-ASCII"; name="ls-FQ.patch" Content-Disposition: attachment; filename="ls-FQ.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jbkf5quy0 LS0tIHNyYy9scy5jLm9yaWcJMjAxNy0wOS0wMSAwMDoxMTowMy4wMDAwMDAwMDAgLTA3MDAKKysr IHNyYy9scy5jCTIwMTctMTItMjMgMjI6NTM6NTcuNDQ4NTk0NTA3IC0wODAwCkBAIC0yMTM4LDEy ICsyMTM4LDE5IEBACiAgIGZpbGVuYW1lX3F1b3Rpbmdfb3B0aW9ucyA9IGNsb25lX3F1b3Rpbmdf b3B0aW9ucyAoTlVMTCk7CiAgIGlmIChxcyA9PSBlc2NhcGVfcXVvdGluZ19zdHlsZSkKICAgICBz ZXRfY2hhcl9xdW90aW5nIChmaWxlbmFtZV9xdW90aW5nX29wdGlvbnMsICcgJywgMSk7Ci0gIGlm IChmaWxlX3R5cGUgPD0gaW5kaWNhdG9yX3N0eWxlKQotICAgIHsKLSAgICAgIGNoYXIgY29uc3Qg KnA7Ci0gICAgICBmb3IgKHAgPSAmIio9PkB8IltpbmRpY2F0b3Jfc3R5bGUgLSBmaWxlX3R5cGVd OyAqcDsgcCsrKQotICAgICAgICBzZXRfY2hhcl9xdW90aW5nIChmaWxlbmFtZV9xdW90aW5nX29w dGlvbnMsICpwLCAxKTsKLSAgICB9CisKKworICAvKiBUaGlzIGNvZGUgd2FzIGNhdXNpbmcgYnVn cyBpbiBscyAtRlEuIFRoZXJlIHdlcmUgbm8gY29tbWVudHMsIHNvCisgICAgIGl0J3MgdW5jbGVh ciBleGFjdGx5IHdoYXQgaXQgd2FzIHRyeWluZyB0byBhY2NvbXBsaXNoLiAKKyAgICAgRm9yIG5v dywgd2UnbGwgc2tpcCBpdCBmb3IgQyBxdW90aW5nLXN0eWxlLiAoLVEpLiAgKi8KKyAgaWYgKHFz ICE9IGNfcXVvdGluZ19zdHlsZSkgeworICAgIGlmIChmaWxlX3R5cGUgPD0gaW5kaWNhdG9yX3N0 eWxlKQorICAgICAgeworCWNoYXIgY29uc3QgKnA7CisJZm9yIChwID0gJiIqPT5AfCJbaW5kaWNh dG9yX3N0eWxlIC0gZmlsZV90eXBlXTsgKnA7IHArKykKKwkgIHNldF9jaGFyX3F1b3RpbmcgKGZp bGVuYW1lX3F1b3Rpbmdfb3B0aW9ucywgKnAsIDEpOworICAgICAgfQorICB9CiAKICAgZGlybmFt ZV9xdW90aW5nX29wdGlvbnMgPSBjbG9uZV9xdW90aW5nX29wdGlvbnMgKE5VTEwpOwogICBzZXRf Y2hhcl9xdW90aW5nIChkaXJuYW1lX3F1b3Rpbmdfb3B0aW9ucywgJzonLCAxKTsK --001a113ac54cf31658056110cc39 Content-Type: application/x-sh; name="quoting-style-c.sh" Content-Disposition: attachment; filename="quoting-style-c.sh" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jbkfbbu41 IyEvYmluL3NoCiMgVGhpcyBpcyB0ZXN0cy9scy9xdW90aW5nLXN0eWxlLWMuc2gKIyB0ZXN0IC0t cXVvdGluZy1zdHlsZT1jICgtUSkKCiMgVXNhZ2U6CiMgICBjZCB0ZXN0cwojICAgbWFrZSBjaGVj ayBURVNUUz1scy9xdW90aW5nLXN0eWxlLWMuc2gKCiMgdjE6IEZvciBub3csIHdlJ3JlIGp1c3Qg d2F0Y2hpbmcgZm9yIHJlZ3Jlc3Npb25zIHdpdGggLS1jbGFzc2lmeSAoLUYpCiMKCiMgQ29weXJp Z2h0IChDKSAyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgoKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKLiAiJHtz cmNkaXI9Ln0vdGVzdHMvaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi9zcmMKcHJpbnRfdmVyXyBs cwoKIyBDcmVhdGUgYWxsIHBvc3NpYmxlIDgtYml0IGNoYXJhY3RlcnMgaW4gZmlsZW5hbWVzLgoj IE5vdGUgdGhhdCwgd2hpbGUgYmFzaCB3b3JrcyBmaW5lLCBkYXNoJ3MgYnVpbHRpbiBwcmludGYg aXMgdW5hYmxlIHRvCiMgZG8gdGhpcywgc28gd2UgdXNlIC91c3IvYmluL3ByaW50ZiBqdXN0IGlu IGNhc2UuCmZvciB4IGluICQoc2VxIDAgMjU1KTsgZG8KICAgIHk9JChwcmludGYgIiUwMngiICR4 KQogICAgdG91Y2ggIiQoL3Vzci9iaW4vcHJpbnRmICJiYXJceCR7eX1mb28iKSIgfHwgZWNobyAi U2tpcHBpbmc6IDB4JHkiCmRvbmUgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCgojIEluY2x1ZGUgc29t ZSBzcGVjaWZpYyBmaWxlcyB3ZSBrbm93IHNob3VsZCAob3Igc2hvdWxkIG5vdCkgYmUgcXVvdGVk Lgpta25vZCAnQ2VjaSBlc3QgdW5lIHBpcGUnIHAgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCm1rZGly IDQxMSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KbG4gLXMgb3Vyb2Jvcm9zIHx8IGZyYW1ld29ya19m YWlsdXJlXwoKdG91Y2ggJ3llc2JhY2tzbGFzaGJlZm9yZWRvdWJsZXF1b3RlIicgJ3llc2JhY2tz bGFzaGJlZm9yZWJhY2tzbGFzaFwnCnRvdWNoICdub2JhY2tzbGFzaD0nICdub2JhY2tzbGFzaD4n ICdub2JhY2tzbGFzaEAnICdub2JhY2tzbGFzaHwnIFwKICAgICAgJ25vYmFja3NsYXNoOicgJ25v YmFja3NsYXNoICcgJ25vYmFja3NsYXNoKicgJ25vYmFja3NsYXNoPCcKCmNhdCA8PCdFT0YnID5l eHAgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCiI0MTEiLwoiQ2VjaSBlc3QgdW5lIHBpcGUifAoiYmFy XDAwMWZvbyIKImJhclwwMDJmb28iCiJiYXJcMDAzZm9vIgoiYmFyXDAwNGZvbyIKImJhclwwMDVm b28iCiJiYXJcMDA2Zm9vIgoiYmFyXGFmb28iCiJiYXJcYmZvbyIKImJhclx0Zm9vIgoiYmFyXG5m b28iCiJiYXJcdmZvbyIKImJhclxmZm9vIgoiYmFyXHJmb28iCiJiYXJcMDE2Zm9vIgoiYmFyXDAx N2ZvbyIKImJhclwwMjBmb28iCiJiYXJcMDIxZm9vIgoiYmFyXDAyMmZvbyIKImJhclwwMjNmb28i CiJiYXJcMDI0Zm9vIgoiYmFyXDAyNWZvbyIKImJhclwwMjZmb28iCiJiYXJcMDI3Zm9vIgoiYmFy XDAzMGZvbyIKImJhclwwMzFmb28iCiJiYXJcMDMyZm9vIgoiYmFyXDAzM2ZvbyIKImJhclwwMzRm b28iCiJiYXJcMDM1Zm9vIgoiYmFyXDAzNmZvbyIKImJhclwwMzdmb28iCiJiYXIgZm9vIgoiYmFy IWZvbyIKImJhclwiZm9vIgoiYmFyI2ZvbyIKImJhciRmb28iCiJiYXIlZm9vIgoiYmFyJmZvbyIK ImJhcidmb28iCiJiYXIoZm9vIgoiYmFyKWZvbyIKImJhcipmb28iCiJiYXIrZm9vIgoiYmFyLGZv byIKImJhci1mb28iCiJiYXIuZm9vIgoiYmFyMGZvbyIKImJhcjFmb28iCiJiYXIyZm9vIgoiYmFy M2ZvbyIKImJhcjRmb28iCiJiYXI1Zm9vIgoiYmFyNmZvbyIKImJhcjdmb28iCiJiYXI4Zm9vIgoi YmFyOWZvbyIKImJhcjpmb28iCiJiYXI7Zm9vIgoiYmFyPGZvbyIKImJhcj1mb28iCiJiYXI+Zm9v IgoiYmFyP2ZvbyIKImJhckBmb28iCiJiYXJBZm9vIgoiYmFyQmZvbyIKImJhckNmb28iCiJiYXJE Zm9vIgoiYmFyRWZvbyIKImJhckZmb28iCiJiYXJHZm9vIgoiYmFySGZvbyIKImJhcklmb28iCiJi YXJKZm9vIgoiYmFyS2ZvbyIKImJhckxmb28iCiJiYXJNZm9vIgoiYmFyTmZvbyIKImJhck9mb28i CiJiYXJQZm9vIgoiYmFyUWZvbyIKImJhclJmb28iCiJiYXJTZm9vIgoiYmFyVGZvbyIKImJhclVm b28iCiJiYXJWZm9vIgoiYmFyV2ZvbyIKImJhclhmb28iCiJiYXJZZm9vIgoiYmFyWmZvbyIKImJh cltmb28iCiJiYXJcXGZvbyIKImJhcl1mb28iCiJiYXJeZm9vIgoiYmFyX2ZvbyIKImJhcmBmb28i CiJiYXJhZm9vIgoiYmFyYmZvbyIKImJhcmNmb28iCiJiYXJkZm9vIgoiYmFyZWZvbyIKImJhcmZm b28iCiJiYXJmb28iCiJiYXJnZm9vIgoiYmFyaGZvbyIKImJhcmlmb28iCiJiYXJqZm9vIgoiYmFy a2ZvbyIKImJhcmxmb28iCiJiYXJtZm9vIgoiYmFybmZvbyIKImJhcm9mb28iCiJiYXJwZm9vIgoi YmFycWZvbyIKImJhcnJmb28iCiJiYXJzZm9vIgoiYmFydGZvbyIKImJhcnVmb28iCiJiYXJ2Zm9v IgoiYmFyd2ZvbyIKImJhcnhmb28iCiJiYXJ5Zm9vIgoiYmFyemZvbyIKImJhcntmb28iCiJiYXJ8 Zm9vIgoiYmFyfWZvbyIKImJhcn5mb28iCiJiYXJcMTc3Zm9vIgoiYmFyXDIwMGZvbyIKImJhclwy MDFmb28iCiJiYXJcMjAyZm9vIgoiYmFyXDIwM2ZvbyIKImJhclwyMDRmb28iCiJiYXJcMjA1Zm9v IgoiYmFyXDIwNmZvbyIKImJhclwyMDdmb28iCiJiYXJcMjEwZm9vIgoiYmFyXDIxMWZvbyIKImJh clwyMTJmb28iCiJiYXJcMjEzZm9vIgoiYmFyXDIxNGZvbyIKImJhclwyMTVmb28iCiJiYXJcMjE2 Zm9vIgoiYmFyXDIxN2ZvbyIKImJhclwyMjBmb28iCiJiYXJcMjIxZm9vIgoiYmFyXDIyMmZvbyIK ImJhclwyMjNmb28iCiJiYXJcMjI0Zm9vIgoiYmFyXDIyNWZvbyIKImJhclwyMjZmb28iCiJiYXJc MjI3Zm9vIgoiYmFyXDIzMGZvbyIKImJhclwyMzFmb28iCiJiYXJcMjMyZm9vIgoiYmFyXDIzM2Zv byIKImJhclwyMzRmb28iCiJiYXJcMjM1Zm9vIgoiYmFyXDIzNmZvbyIKImJhclwyMzdmb28iCiJi YXJcMjQwZm9vIgoiYmFyXDI0MWZvbyIKImJhclwyNDJmb28iCiJiYXJcMjQzZm9vIgoiYmFyXDI0 NGZvbyIKImJhclwyNDVmb28iCiJiYXJcMjQ2Zm9vIgoiYmFyXDI0N2ZvbyIKImJhclwyNTBmb28i CiJiYXJcMjUxZm9vIgoiYmFyXDI1MmZvbyIKImJhclwyNTNmb28iCiJiYXJcMjU0Zm9vIgoiYmFy XDI1NWZvbyIKImJhclwyNTZmb28iCiJiYXJcMjU3Zm9vIgoiYmFyXDI2MGZvbyIKImJhclwyNjFm b28iCiJiYXJcMjYyZm9vIgoiYmFyXDI2M2ZvbyIKImJhclwyNjRmb28iCiJiYXJcMjY1Zm9vIgoi YmFyXDI2NmZvbyIKImJhclwyNjdmb28iCiJiYXJcMjcwZm9vIgoiYmFyXDI3MWZvbyIKImJhclwy NzJmb28iCiJiYXJcMjczZm9vIgoiYmFyXDI3NGZvbyIKImJhclwyNzVmb28iCiJiYXJcMjc2Zm9v IgoiYmFyXDI3N2ZvbyIKImJhclwzMDBmb28iCiJiYXJcMzAxZm9vIgoiYmFyXDMwMmZvbyIKImJh clwzMDNmb28iCiJiYXJcMzA0Zm9vIgoiYmFyXDMwNWZvbyIKImJhclwzMDZmb28iCiJiYXJcMzA3 Zm9vIgoiYmFyXDMxMGZvbyIKImJhclwzMTFmb28iCiJiYXJcMzEyZm9vIgoiYmFyXDMxM2ZvbyIK ImJhclwzMTRmb28iCiJiYXJcMzE1Zm9vIgoiYmFyXDMxNmZvbyIKImJhclwzMTdmb28iCiJiYXJc MzIwZm9vIgoiYmFyXDMyMWZvbyIKImJhclwzMjJmb28iCiJiYXJcMzIzZm9vIgoiYmFyXDMyNGZv byIKImJhclwzMjVmb28iCiJiYXJcMzI2Zm9vIgoiYmFyXDMyN2ZvbyIKImJhclwzMzBmb28iCiJi YXJcMzMxZm9vIgoiYmFyXDMzMmZvbyIKImJhclwzMzNmb28iCiJiYXJcMzM0Zm9vIgoiYmFyXDMz NWZvbyIKImJhclwzMzZmb28iCiJiYXJcMzM3Zm9vIgoiYmFyXDM0MGZvbyIKImJhclwzNDFmb28i CiJiYXJcMzQyZm9vIgoiYmFyXDM0M2ZvbyIKImJhclwzNDRmb28iCiJiYXJcMzQ1Zm9vIgoiYmFy XDM0NmZvbyIKImJhclwzNDdmb28iCiJiYXJcMzUwZm9vIgoiYmFyXDM1MWZvbyIKImJhclwzNTJm b28iCiJiYXJcMzUzZm9vIgoiYmFyXDM1NGZvbyIKImJhclwzNTVmb28iCiJiYXJcMzU2Zm9vIgoi YmFyXDM1N2ZvbyIKImJhclwzNjBmb28iCiJiYXJcMzYxZm9vIgoiYmFyXDM2MmZvbyIKImJhclwz NjNmb28iCiJiYXJcMzY0Zm9vIgoiYmFyXDM2NWZvbyIKImJhclwzNjZmb28iCiJiYXJcMzY3Zm9v IgoiYmFyXDM3MGZvbyIKImJhclwzNzFmb28iCiJiYXJcMzcyZm9vIgoiYmFyXDM3M2ZvbyIKImJh clwzNzRmb28iCiJiYXJcMzc1Zm9vIgoiYmFyXDM3NmZvbyIKImJhclwzNzdmb28iCiJleHAiCiJu b2JhY2tzbGFzaCAiCiJub2JhY2tzbGFzaCoiCiJub2JhY2tzbGFzaDoiCiJub2JhY2tzbGFzaDwi CiJub2JhY2tzbGFzaD0iCiJub2JhY2tzbGFzaD4iCiJub2JhY2tzbGFzaEAiCiJub2JhY2tzbGFz aHwiCiJvdXJvYm9yb3MiQAoib3V0IgoieWVzYmFja3NsYXNoYmVmb3JlYmFja3NsYXNoXFwiCiJ5 ZXNiYWNrc2xhc2hiZWZvcmVkb3VibGVxdW90ZVwiIgpFT0YKCmxzIC0tY2xhc3NpZnkgLS1xdW90 aW5nLXN0eWxlPWMgPiBvdXQgfHwgZmFpbD0xCgpjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xCgpF eGl0ICRmYWlsCg== --001a113ac54cf31658056110cc39--
hackerb9@HIDDEN
:bug-coreutils@HIDDEN
.
Full text available.bug-coreutils@HIDDEN
:bug#29832
; Package coreutils
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.