summaryrefslogtreecommitdiff
path: root/Src/subst.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/subst.c')
-rw-r--r--Src/subst.c13
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) {