about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Doc/Zsh/builtins.yo7
-rw-r--r--Src/builtin.c24
2 files changed, 3 insertions, 28 deletions
diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo
index fb1d63569..328e7db80 100644
--- a/Doc/Zsh/builtins.yo
+++ b/Doc/Zsh/builtins.yo
@@ -682,12 +682,7 @@ item(tt(pwd) [ tt(-rLP) ])(
 Print the absolute pathname of the current working directory.
 If the tt(-r) or the tt(-P) flag is specified, or the tt(CHASE_LINKS)
 option is set and the tt(-L) flag is not given, the printed path will not
-contain symbolic links.  Otherwise, the shell will print the stored
-directory, i.e. the value to which tt($PWD) was last set.  In this case, it
-will check that the current tt($PWD) is still valid; if it is, or if it is
-unable to find a valid path because the current directory no longer exists,
-it will print that, and if it is not, it will print the full path without
-symbolic links and update tt($PWD) accordingly.
+contain symbolic links.
 )
 alias(r)(fc -e -)
 findex(read)
diff --git a/Src/builtin.c b/Src/builtin.c
index e159c1e85..ae608cc39 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -572,28 +572,8 @@ bin_pwd(char *name, char **argv, char *ops, int func)
     if (ops['r'] || ops['P'] || (isset(CHASELINKS) && !ops['L']))
 	printf("%s\n", zgetcwd());
     else {
-	struct stat stdot, stpwd;
-	char *tmppwd;
-	/*
-	 * We could print nothing and return status 1 if we can't
-	 * stat ., but that's incompatible with both ksh and what
-	 * we used to do.
-	 */
-	if (stat(".", &stdot) < 0 ||
-	    stat(pwd, &stpwd) >= 0 && stpwd.st_ino == stdot.st_ino) {
-	    zputs(pwd, stdout);
-	    putchar('\n');
-	} else {
-	    /*
-	     * The directory has changed without us noticing it.  We
-	     * need to change pwd, since directory changing commands
-	     * are liable to fail otherwise.
-	     */
-	    zsfree(pwd);
-	    printf("%s\n", tmppwd = zgetcwd());
-	    pwd = metafy(tmppwd, -1, META_DUP);
-	    set_pwd_env();
-	}
+	zputs(pwd, stdout);
+	putchar('\n');
     }
     return 0;
 }