From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15019 invoked by alias); 8 Dec 2015 15:03:23 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 37348 Received: (qmail 19869 invoked from network); 8 Dec 2015 15:03:21 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_HDRS_LCASE autolearn=ham autolearn_force=no version=3.4.0 X-AuditID: cbfec7f4-f79026d00000418a-8b-5666f1360c42 Date: Tue, 08 Dec 2015 15:03:15 +0000 From: Peter Stephenson To: Zsh Hackers' List Subject: PATCH: test ${(q+)...} Message-id: <20151208150315.2bbb23e3@pwslap01u.europe.root.pri> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: quoted-printable X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrOLMWRmVeSWpSXmKPExsVy+t/xK7pmH9PCDBYsErM42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGbf/Lmcv+M1T0b73P2MD4xGuLkZODgkBE4njm94yQthiEhfu rWfrYuTiEBJYyijx+/wJKGcGk8Srey/YIZzTjBL/15xjhXDOMErcuDCRBaSfRUBV4ueyTWwg NpuAocTUTbOB5nJwiAhoS7R/FAMJCwvIS9yd9h8szCtgL7H+qzRImF9AX+Lq309MEFfYS8y8 cgbsIl4BQYkfk++BTWcWUJeYNG8RM4StLfHk3QVWEFsIKH7j7m72CYyCs5C0zELSMgtJywJG 5lWMoqmlyQXFSem5hnrFibnFpXnpesn5uZsYIcH5ZQfj4mNWhxgFOBiVeHhPHEsNE2JNLCuu zD3EKMHBrCTCa/UhLUyINyWxsiq1KD++qDQntfgQozQHi5I479xd70OEBNITS1KzU1MLUotg skwcnFINjP7/Ls5kuWzbNv3QrLo2Z5cv2iHXOabpzLmm3rvLwORNQsttFqVPN7U2LTq60Oqg udoivpjfWXn/pu2bfvi+hcjCb54eZUFF7zjrl0UbPt3zin/Dpt1cRcdvv06QePMxnHHuJZ4D Zoc/f3B/mzfJ+f2zmcX5L+/dtby8dU3p/PeTdzM/PbXddJKAEktxRqKhFnNRcSIAmRzVWkoC AAA= Plus an extra dupstring() on the basis that it's better if it doesn't crash. pws diff --git a/Src/utils.c b/Src/utils.c index 1554fa0..6d0f88d 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -5940,7 +5940,7 @@ quotedzputs(char const *s, FILE *stream) /* check for empty string */ if(!*s) { if (!stream) - return "''"; + return dupstring("''"); fputs("''", stream); return NULL; } diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst index 1460ff6..bcea980 100644 --- a/Test/D04parameter.ztst +++ b/Test/D04parameter.ztst @@ -1866,3 +1866,17 @@ >0 >1 /somewhere >2 /random /value + + print -r -- ${(q+):-} + print -r -- ${(q+)IFS} + print -r -- ${(q+):-oneword} + print -r -- ${(q+):-two words} + print -r -- ${(q+):-three so-called \'words\'} + (setopt rcquotes; print -r -- ${(q+):-three so-called \'words\'}) +0:${(q+)...} +>'' +>$' \t\n\C-@' +>oneword +>'two words' +>'three so-called '\''words'\' +>'three so-called ''words''' diff --git a/Test/D07multibyte.ztst b/Test/D07multibyte.ztst index f95c06d..39ba5ef 100644 --- a/Test/D07multibyte.ztst +++ b/Test/D07multibyte.ztst @@ -546,3 +546,10 @@ [[ $'\xe3\x83\x9b' !=3D [[:INCOMPLETE:][:INVALID:]] ]] || print fail 3 [[ $'\xe3\x83\x9b' =3D ? ]] || print fail 4 0:Testing incomplete and invalid multibyte character components + + print -r -- ${(q+):-=E3=83=9B} + foo=3D'She said "=E3=83=9B". I said "You can'\''t '\''=E3=83=9B'\'' me!' + print -r -- ${(q+)foo} +0:${(q+)...} with printable multibyte characters +>=E3=83=9B +>'She said "=E3=83=9B". I said "You can'\''t '\''=E3=83=9B'\'' me!'