zsh: Add pwd -W option

This commit is contained in:
James Ross-Gowan 2014-09-26 23:27:27 +10:00
parent 91fde11d84
commit bb2a107a8a
2 changed files with 42 additions and 4 deletions

View File

@ -3,7 +3,7 @@
pkgbase=zsh
pkgname=('zsh' 'zsh-doc')
pkgver=5.0.6
pkgrel=1
pkgrel=2
arch=('i686' 'x86_64')
url='http://www.zsh.org/'
license=('custom')
@ -14,19 +14,22 @@ source=("http://sourceforge.net/projects/zsh/files/zsh/${pkgver}/zsh-${pkgver}.t
'zprofile::https://projects.archlinux.org/svntogit/packages.git/plain/trunk/zprofile?h=packages/zsh'
zsh-doc.install
zsh.install
Makefile.in.patch)
Makefile.in.patch
add-pwd-W-option.patch)
md5sums=('7150a6abc2aa1a79d81ed9a282594225'
'SKIP'
'SKIP'
'SKIP'
'2a719c1ff8d61db68164e8a0a57d83c8'
'92625ebc2c387157c5d05bfe4b04c8b5'
'ca9d481e1aa03e864734734d2267afb0')
'ca9d481e1aa03e864734734d2267afb0'
'df6860fd5b5b46d59ad03220e9125c9d')
prepare() {
cd ${srcdir}/${pkgname}-${pkgver}
patch -p0 -i ${srcdir}/Makefile.in.patch
patch -p0 -i "${srcdir}/Makefile.in.patch"
patch -p1 -i "${srcdir}/add-pwd-W-option.patch"
mv -f ${srcdir}/config.guess ${srcdir}/config.sub ${srcdir}/${pkgname}-${pkgver}/
# Set correct keymap path

View File

@ -0,0 +1,35 @@
diff -rupN zsh-5.0.6/Src/builtin.c zsh-5.0.6-patch/Src/builtin.c
--- zsh-5.0.6/Src/builtin.c 2014-08-01 04:41:49.000000000 +1000
+++ zsh-5.0.6-patch/Src/builtin.c 2014-09-26 22:48:35.215974400 +1000
@@ -103,7 +103,7 @@ static struct builtin builtins[] =
BUILTIN("printf", 0, bin_print, 1, -1, BIN_PRINTF, NULL, NULL),
BUILTIN("pushd", BINF_SKIPINVALID | BINF_SKIPDASH | BINF_DASHDASHVALID, bin_cd, 0, 2, BIN_PUSHD, "qsPL", NULL),
BUILTIN("pushln", 0, bin_print, 0, -1, BIN_PRINT, NULL, "-nz"),
- BUILTIN("pwd", 0, bin_pwd, 0, 0, 0, "rLP", NULL),
+ BUILTIN("pwd", 0, bin_pwd, 0, 0, 0, "rLPW", NULL),
BUILTIN("r", 0, bin_fc, 0, -1, BIN_R, "nrl", NULL),
BUILTIN("read", 0, bin_read, 0, -1, 0, "cd:ek:%lnpqrst:%zu:AE", NULL),
BUILTIN("readonly", BINF_PLUSOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AE:%F:%HL:%R:%TUZ:%afghi:%lptux", "r"),
@@ -672,7 +672,21 @@ int doprintdir = 0; /* set in exec.c (f
int
bin_pwd(UNUSED(char *name), UNUSED(char **argv), Options ops, UNUSED(int func))
{
- if (OPT_ISSET(ops,'r') || OPT_ISSET(ops,'P') ||
+ if (OPT_ISSET(ops,'W')) {
+ char *wpath = zalloc(PATH_MAX);
+ if (cygwin_conv_path(CCP_POSIX_TO_WIN_A, zgetcwd(), wpath, PATH_MAX) < 0) {
+ free(wpath);
+ perror("cygwin_conv_path");
+ return 1;
+ }
+
+ char *c = wpath;
+ while ((c = strchr(c, '\\')))
+ *c = '/';
+
+ printf("%s\n", wpath);
+ free(wpath);
+ } else if (OPT_ISSET(ops,'r') || OPT_ISSET(ops,'P') ||
(isset(CHASELINKS) && !OPT_ISSET(ops,'L')))
printf("%s\n", zgetcwd());
else {