aboutsummaryrefslogtreecommitdiff
path: root/shells/ksh-devel
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2023-06-13 02:34:57 +0000
committerCy Schubert <cy@FreeBSD.org>2023-06-13 02:37:49 +0000
commit6f567e62fac522bf3005a01e23b4fdec9e4dc725 (patch)
treee8ef4f56eabc6947deab8e5f83b1c36d7b0c707b /shells/ksh-devel
parentbf512da48655cf0f5d3d07ef18d93b57942fb7dd (diff)
Diffstat (limited to 'shells/ksh-devel')
-rw-r--r--shells/ksh-devel/Makefile1
-rw-r--r--shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c81
2 files changed, 77 insertions, 5 deletions
diff --git a/shells/ksh-devel/Makefile b/shells/ksh-devel/Makefile
index 50ec6bbbd593..90300f060f96 100644
--- a/shells/ksh-devel/Makefile
+++ b/shells/ksh-devel/Makefile
@@ -10,6 +10,7 @@
PORTNAME= ksh
PORTVERSION= ${AST_COMMIT_DATE}
+PORTREVISION= 1
CATEGORIES= shells
PKGNAMESUFFIX= -devel
diff --git a/shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c b/shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c
index 391cff245ac6..a3b6a4f2585e 100644
--- a/shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c
+++ b/shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c
@@ -1,8 +1,79 @@
-diff --git src/cmd/ksh93/sh/macro.c.orig src/cmd/ksh93/sh/macro.c
-index aba6f9d..0d60219 100644
---- src/cmd/ksh93/sh/macro.c.orig
-+++ src/cmd/ksh93/sh/macro.c
-@@ -2582,7 +2582,7 @@ static void endfield(Mac_t *mp,int split)
+--- src/cmd/ksh93/sh/macro.c.orig 2023-06-08 23:30:08.000000000 -0700
++++ src/cmd/ksh93/sh/macro.c 2023-06-12 19:26:31.718942000 -0700
+@@ -76,6 +76,7 @@
+ char macsub; /* set to 1 when running mac_substitute */
+ int dotdot; /* set for .. in subscript */
+ void *nvwalk; /* for name space walking */
++ char bracketexpr; /* set when in [brackets] within a non-ERE glob pattern */
+ } Mac_t;
+
+ #undef ESCAPE
+@@ -437,7 +438,6 @@
+ char oldquote = mp->quote; /* save "double quoted" state */
+ char ansi_c = 0; /* set when processing ANSI C escape codes */
+ int32_t ere = 0; /* bitmask of pattern options indicating an extended regular expression */
+- char bracketexpr = 0; /* set when in [brackets] within a non-ERE glob pattern */
+ Sfio_t *sp = mp->sp;
+ Stk_t *stkp = sh.stk;
+ char *resume = 0;
+@@ -533,7 +533,7 @@
+ if(mp->pattern)
+ {
+ /* preserve \ for escaping glob pattern bracket expression operators */
+- if(bracketexpr && n==S_BRAOP)
++ if(mp->bracketexpr && n==S_BRAOP)
+ break;
+ /* preserve \digit for pattern matching */
+ /* also \alpha for extended patterns */
+@@ -636,8 +636,8 @@
+ mp->pattern = c;
+ break;
+ case S_ENDCH:
+- if(bracketexpr && cp[-1]==RBRACT && !(mp->quote || mp->lit))
+- bracketexpr--;
++ if(mp->bracketexpr && cp[-1]==RBRACT && !(mp->quote || mp->lit))
++ mp->bracketexpr--;
+ if((mp->lit || cp[-1]!=endch || mp->quote!=newquote))
+ goto pattern;
+ if(endch==RBRACE && mp->pattern && brace)
+@@ -738,12 +738,12 @@
+ cp = first = fcseek(0);
+ break;
+ }
+- if(mp->pattern==1 && !ere && !bracketexpr)
++ if(mp->pattern==1 && !ere && !mp->bracketexpr)
+ {
+- bracketexpr++;
++ mp->bracketexpr++;
+ /* a ] following [, as in []abc], should not close the bracket expression */
+ if(cp[0]==RBRACT && cp[1])
+- bracketexpr++;
++ mp->bracketexpr++;
+ }
+ /* FALLTHROUGH */
+ case S_PAT:
+@@ -883,7 +883,7 @@
+ break;
+ case S_BRAOP:
+ /* escape a quoted !^- within a bracket expression */
+- if(!bracketexpr || !(mp->quote || mp->lit))
++ if(!mp->bracketexpr || !(mp->quote || mp->lit))
+ continue;
+ if(c)
+ sfwrite(stkp,first,c);
+@@ -2481,7 +2481,10 @@
+ continue;
+ }
+ if(n==S_ESC)
+- sfputc(stkp,ESCAPE);
++ {
++ if(!mp->bracketexpr)
++ sfputc(stkp,ESCAPE);
++ }
+ else if(n==S_EPAT)
+ {
+ /* don't allow extended patterns in this case */
+@@ -2583,7 +2586,7 @@
mp->atmode = 0;
if(mp->patfound)
{