diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-08-02 16:50:05 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-08-02 16:50:05 +0000 |
commit | 8f006137ed6bb25243fdc5435f04348016f34aea (patch) | |
tree | 2376de8c9730a4d1f55e49f7dc082e3eac5733c8 /Src/Zle | |
parent | f8f577cd2490046dcf693a554a2dbfedc415845e (diff) | |
download | zsh-8f006137ed6bb25243fdc5435f04348016f34aea.tar.gz zsh-8f006137ed6bb25243fdc5435f04348016f34aea.tar.xz zsh-8f006137ed6bb25243fdc5435f04348016f34aea.zip |
zsh-workers:7343
Diffstat (limited to 'Src/Zle')
-rw-r--r-- | Src/Zle/zle_tricky.c | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c index 9f4fa0c93..f73460407 100644 --- a/Src/Zle/zle_tricky.c +++ b/Src/Zle/zle_tricky.c @@ -3726,7 +3726,7 @@ int addmatches(Cadata dat, char **argv) { char *s, *ms, *lipre = NULL, *lisuf = NULL, *lpre = NULL, *lsuf = NULL; - char **aign = NULL, **dparr = NULL, oaq = autoq; + char **aign = NULL, **dparr = NULL, oaq = autoq, *oppre = dat->ppre; char *oqp = qipre, *oqs = qisuf, qc; int lpl, lsl, pl, sl, bpl, bsl, llpl = 0, llsl = 0, nm = mnum; int oisalt = 0, isalt, isexact, doadd, ois = instring, oib = inbackt; @@ -3847,12 +3847,21 @@ addmatches(Cadata dat, char **argv) else if (lisuf) dat->isuf = lisuf; if (dat->ppre) { - dat->ppre = dupstring(dat->ppre); + if (!(dat->aflags & CAF_QUOTE)) { + dat->ppre = quotename(dat->ppre, NULL); + if ((dat->flags & CMF_FILE) && + dat->ppre[0] == '\\' && dat->ppre[1] == '~') + chuck(dat->ppre); + } else + dat->ppre = dupstring(dat->ppre); lpl = strlen(dat->ppre); } else lpl = 0; if (dat->psuf) { - dat->psuf = dupstring(dat->psuf); + if (!(dat->aflags & CAF_QUOTE)) + dat->psuf = quotename(dat->psuf, NULL); + else + dat->psuf = dupstring(dat->psuf); lsl = strlen(dat->psuf); } else lsl = 0; @@ -3877,7 +3886,7 @@ addmatches(Cadata dat, char **argv) dat->pre = dupstring(dat->pre); if (dat->suf) dat->suf = dupstring(dat->suf); - if (!dat->prpre && (dat->prpre = dat->ppre)) { + if (!dat->prpre && (dat->prpre = oppre)) { singsub(&(dat->prpre)); untokenize(dat->prpre); } else @@ -3901,22 +3910,6 @@ addmatches(Cadata dat, char **argv) dat->rems = NULL; } else if (dat->rems) dat->rems = dupstring(dat->rems); - - /* Probably quote the prefix and suffix for testing. */ - if (!(dat->aflags & CAF_QUOTE)) { - if (!cp && (dat->aflags & CAF_MATCH)) { - lpre = quotename(lpre, NULL); - lsuf = quotename(lsuf, NULL); - } - if (dat->ppre) { - dat->ppre = quotename(dat->ppre, NULL); - if ((dat->flags & CMF_FILE) && - dat->ppre[0] == '\\' && dat->ppre[1] == '~') - chuck(dat->ppre); - } - if (dat->psuf) - dat->psuf = quotename(dat->psuf, NULL); - } } /* Walk through the matches given. */ for (; (s = *argv); argv++) { |