aboutsummaryrefslogtreecommitdiff
path: root/bin/sh/cd.c
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>1994-12-26 13:02:05 +0000
committerBruce Evans <bde@FreeBSD.org>1994-12-26 13:02:05 +0000
commit61233bdc2ebae3a26cdf01fe5586a8e8af1d55d4 (patch)
tree699d67d689f14964f232abad4cdeca9fa67c77ee /bin/sh/cd.c
parentabdf111953c36762aa20670a442a6861788d6552 (diff)
downloadsrc-61233bdc2ebae3a26cdf01fe5586a8e8af1d55d4.tar.gz
src-61233bdc2ebae3a26cdf01fe5586a8e8af1d55d4.zip
Obtained from: partly from 1.1.5
Convert "" to "." for "cd" and "cd ''". chdir("") is required to fail on POSIX systems.
Notes
Notes: svn path=/head/; revision=5234
Diffstat (limited to 'bin/sh/cd.c')
-rw-r--r--bin/sh/cd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/bin/sh/cd.c b/bin/sh/cd.c
index 29bc1fdc7267..ac440696e80d 100644
--- a/bin/sh/cd.c
+++ b/bin/sh/cd.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cd.c,v 1.2 1994/09/24 02:57:24 davidg Exp $
+ * $Id: cd.c,v 1.3 1994/11/06 01:29:26 jkh Exp $
*/
#ifndef lint
@@ -88,6 +88,8 @@ cdcmd(argc, argv) char **argv; {
nextopt(nullstr);
if ((dest = *argptr) == NULL && (dest = bltinlookup("HOME", 1)) == NULL)
error("HOME not set");
+ if (*dest == '\0')
+ dest = ".";
if (dest[0] == '-' && dest[1] == '\0') {
dest = prevdir ? prevdir : curdir;
print = 1;
@@ -220,7 +222,7 @@ top:
STPUTC('\0', p);
p = grabstackstr(p);
INTOFF;
- if (chdir(p) < 0) {
+ if (chdir(*p ? p : ".") < 0) {
INTON;
return -1;
}