Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/lib/libc/gen/getcwd.c,v retrieving revision 1.36.2.1 retrieving revision 1.36.2.2 diff -u -p -r1.36.2.1 -r1.36.2.2 --- src/lib/libc/gen/getcwd.c 2005/08/14 22:08:44 1.36.2.1 +++ src/lib/libc/gen/getcwd.c 2005/12/29 16:23:31 1.36.2.2 @@ -1,4 +1,4 @@ -/* $NetBSD: getcwd.c,v 1.36.2.1 2005/08/14 22:08:44 riz Exp $ */ +/* $NetBSD: getcwd.c,v 1.36.2.2 2005/12/29 16:23:31 riz Exp $ */ /* * Copyright (c) 1989, 1991, 1993, 1995 @@ -37,7 +37,7 @@ #if 0 static char sccsid[] = "@(#)getcwd.c 8.5 (Berkeley) 2/7/95"; #else -__RCSID("$NetBSD: getcwd.c,v 1.36.2.1 2005/08/14 22:08:44 riz Exp $"); +__RCSID("$NetBSD: getcwd.c,v 1.36.2.2 2005/12/29 16:23:31 riz Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -159,6 +159,13 @@ loop: * target to unresolved path. */ if (lstat(resolved, &sb) == -1) { + /* Allow nonexistent component if this is the last one. */ + while (*q == '/') + q++; + + if (*q == 0 && errno == ENOENT) + return (resolved); + return (NULL); } if (S_ISLNK(sb.st_mode)) {