summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1997-12-02 10:32:21 +0000
committerbde <bde@FreeBSD.org>1997-12-02 10:32:21 +0000
commit65d8d62f5977cdb1ed59b934acfa8f65a0b85202 (patch)
tree4f6e25dc4f6b3d929e30d0275b3d62682ef3f0fe
parenta4d6fae045ffd29e59cfdfac01ef83a0fd2bc1fe (diff)
downloadFreeBSD-src-65d8d62f5977cdb1ed59b934acfa8f65a0b85202.zip
FreeBSD-src-65d8d62f5977cdb1ed59b934acfa8f65a0b85202.tar.gz
Cleaned up __getcwd(). This should be cosmetic except disabled calls
are now counted. Reviewed by: phk
-rw-r--r--sys/kern/vfs_extattr.c21
-rw-r--r--sys/kern/vfs_syscalls.c21
2 files changed, 20 insertions, 22 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index b417fbb..e9497c7 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.83 1997/11/22 06:10:36 bde Exp $
+ * $Id: vfs_syscalls.c,v 1.84 1997/11/22 06:41:21 bde Exp $
*/
/*
@@ -2752,17 +2752,15 @@ __getcwd(p, uap)
struct proc *p;
struct __getcwd_args *uap;
{
+ char *bp, *buf;
+ int error, i, slash_prefixed;
struct filedesc *fdp;
- struct vnode *vp;
struct namecache *ncp;
- char *buf, *bp;
- int i, j, error;
+ struct vnode *vp;
+ numcwdcalls++;
if (disablecwd)
return (ENODEV);
- fdp = p->p_fd;
- j = 0;
- error = 0;
if (uap->buflen < 2)
return (EINVAL);
if (uap->buflen > MAXPATHLEN)
@@ -2770,7 +2768,8 @@ __getcwd(p, uap)
buf = bp = malloc(uap->buflen, M_TEMP, M_WAITOK);
bp += uap->buflen - 1;
*bp = '\0';
- numcwdcalls++;
+ fdp = p->p_fd;
+ slash_prefixed = 0;
for (vp = fdp->fd_cdir; vp != fdp->fd_rdir && vp != rootvnode;) {
if (vp->v_flag & VROOT) {
vp = vp->v_mount->mnt_vnodecovered;
@@ -2792,7 +2791,7 @@ __getcwd(p, uap)
free(buf, M_TEMP);
return (EBADF);
}
- for (i=ncp->nc_nlen - 1; i >= 0; i--) {
+ for (i = ncp->nc_nlen - 1; i >= 0; i--) {
if (bp == buf) {
numcwdfail4++;
free(buf, M_TEMP);
@@ -2806,10 +2805,10 @@ __getcwd(p, uap)
return (ENOMEM);
}
*--bp = '/';
- j++;
+ slash_prefixed = 1;
vp = vp->v_dd;
}
- if (!j) {
+ if (!slash_prefixed) {
if (bp == buf) {
numcwdfail4++;
free(buf, M_TEMP);
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index b417fbb..e9497c7 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.83 1997/11/22 06:10:36 bde Exp $
+ * $Id: vfs_syscalls.c,v 1.84 1997/11/22 06:41:21 bde Exp $
*/
/*
@@ -2752,17 +2752,15 @@ __getcwd(p, uap)
struct proc *p;
struct __getcwd_args *uap;
{
+ char *bp, *buf;
+ int error, i, slash_prefixed;
struct filedesc *fdp;
- struct vnode *vp;
struct namecache *ncp;
- char *buf, *bp;
- int i, j, error;
+ struct vnode *vp;
+ numcwdcalls++;
if (disablecwd)
return (ENODEV);
- fdp = p->p_fd;
- j = 0;
- error = 0;
if (uap->buflen < 2)
return (EINVAL);
if (uap->buflen > MAXPATHLEN)
@@ -2770,7 +2768,8 @@ __getcwd(p, uap)
buf = bp = malloc(uap->buflen, M_TEMP, M_WAITOK);
bp += uap->buflen - 1;
*bp = '\0';
- numcwdcalls++;
+ fdp = p->p_fd;
+ slash_prefixed = 0;
for (vp = fdp->fd_cdir; vp != fdp->fd_rdir && vp != rootvnode;) {
if (vp->v_flag & VROOT) {
vp = vp->v_mount->mnt_vnodecovered;
@@ -2792,7 +2791,7 @@ __getcwd(p, uap)
free(buf, M_TEMP);
return (EBADF);
}
- for (i=ncp->nc_nlen - 1; i >= 0; i--) {
+ for (i = ncp->nc_nlen - 1; i >= 0; i--) {
if (bp == buf) {
numcwdfail4++;
free(buf, M_TEMP);
@@ -2806,10 +2805,10 @@ __getcwd(p, uap)
return (ENOMEM);
}
*--bp = '/';
- j++;
+ slash_prefixed = 1;
vp = vp->v_dd;
}
- if (!j) {
+ if (!slash_prefixed) {
if (bp == buf) {
numcwdfail4++;
free(buf, M_TEMP);
OpenPOWER on IntegriCloud