From 8b1676e3b7bca183fea725d38d62350d2688078b Mon Sep 17 00:00:00 2001 From: Jun-ichi Takimoto Date: Sat, 12 Sep 2015 20:35:56 +0900 Subject: 36491: Multibyte support for parameter expansion flags B,E,N --- ChangeLog | 5 +++++ Src/glob.c | 6 +++--- Test/D07multibyte.ztst | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index aedeaed4c..c70396dd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-09-12 Jun-ichi Takimoto + + * 36491: Src/glob.c, Test/D07multibyte.ztst: Multibyte + support for the parameter expansion flags B, E and N. + 2015-09-11 Daniel Shahaf * 36443: Doc/Zsh/zle.yo Src/Zle/zle_refresh.c: Set diff --git a/Src/glob.c b/Src/glob.c index dea1bf50e..43d135b99 100644 --- a/Src/glob.c +++ b/Src/glob.c @@ -2491,17 +2491,17 @@ get_match_ret(char *s, int b, int e, int fl, char *replstr, ll += 1 + (l - (e - b)); if (fl & SUB_BIND) { /* position of start of matched portion */ - sprintf(buf, "%d ", b + 1); + sprintf(buf, "%d ", MB_METASTRLEN2END(s, 0, s+b) + 1); ll += (bl = strlen(buf)); } if (fl & SUB_EIND) { /* position of end of matched portion */ - sprintf(buf + bl, "%d ", e + 1); + sprintf(buf + bl, "%d ", MB_METASTRLEN2END(s, 0, s+e) + 1); ll += (bl = strlen(buf)); } if (fl & SUB_LEN) { /* length of matched portion */ - sprintf(buf + bl, "%d ", e - b); + sprintf(buf + bl, "%d ", MB_METASTRLEN2END(s+b, 0, s+e)); ll += (bl = strlen(buf)); } if (bl) diff --git a/Test/D07multibyte.ztst b/Test/D07multibyte.ztst index ace191f06..5ae9b2c12 100644 --- a/Test/D07multibyte.ztst +++ b/Test/D07multibyte.ztst @@ -293,6 +293,21 @@ >Ἐν ἀρχῇ ἦν ὁ λόγος, καὶ ὁ λόγος ἦν πρὸς τὸν θεόν, καὶ ἦν ὁ λόγος >Ἐν ἀρχῇ ἦν ὁ λόγος, καὶ ὁ λόγος ἦν πρὸς τὸν θεόν, καὶ + a="1ë34ë6" + print ${(BEN)a#*4} + print ${(BEN)a##*ë} + print ${(BEN)a%4*} + print ${(BEN)a%%ë*} + print ${(SBEN)a#ë3} + print ${(SBEN)a%4ë} +0:Flags B, E, N and S in ${...#...} and ${...%...} +>1 5 4 +>1 6 5 +>4 7 3 +>2 7 5 +>2 4 2 +>4 6 2 + foo=(κατέβην χθὲς εἰς Πειραιᾶ) print ${(l.3..¥.r.3..£.)foo} print ${(l.4..¥.r.2..£.)foo} -- cgit 1.4.1