diff options
author | Daniel Shahaf <d.s@daniel.shahaf.name> | 2016-07-30 16:16:22 +0000 |
---|---|---|
committer | Daniel Shahaf <d.s@daniel.shahaf.name> | 2016-08-22 03:34:30 +0000 |
commit | 7154052ebe3d810390164a05c39ff83f98a1d858 (patch) | |
tree | de329087e802a17df0dd93aee35fdb5e49b25ac3 /Src/subst.c | |
parent | 4b2810ab2d6be3d1cf811e53d3b4f57630821108 (diff) | |
download | zsh-7154052ebe3d810390164a05c39ff83f98a1d858.tar.gz zsh-7154052ebe3d810390164a05c39ff83f98a1d858.tar.xz zsh-7154052ebe3d810390164a05c39ff83f98a1d858.zip |
39046 + 39061: New :P history modifier.
Diffstat (limited to 'Src/subst.c')
-rw-r--r-- | Src/subst.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Src/subst.c b/Src/subst.c index c61551bf6..15eb59b64 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -4081,6 +4081,7 @@ modify(char **str, char **ptr) case 'u': case 'q': case 'Q': + case 'P': c = **ptr; break; @@ -4287,6 +4288,12 @@ modify(char **str, char **ptr) untokenize(copy); } break; + case 'P': + if (*copy != '/') { + copy = zhtricat(metafy(zgetcwd(), -1, META_HEAPDUP), "/", copy); + } + copy = xsymlink(copy, 1); + break; } tc = *tt; *tt = '\0'; @@ -4363,6 +4370,12 @@ modify(char **str, char **ptr) untokenize(*str); } break; + case 'P': + if (**str != '/') { + *str = zhtricat(metafy(zgetcwd(), -1, META_HEAPDUP), "/", *str); + } + *str = xsymlink(*str, 1); + break; } } if (rec < 0) { |