summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2001-05-14 13:28:24 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2001-05-14 13:28:24 +0000
commit995b695f2b06ee188ae993334bc83e25a3bc3fd0 (patch)
tree4e9dd1175963150f3333bc4515116450a9d370b2 /sys
parent21e55531a498e82f6643babf57257f1ebe43fb71 (diff)
use fo_stat in fileops instead of huge switch statements.
Diffstat (limited to 'sys')
-rw-r--r--sys/compat/common/vfs_syscalls_43.c23
-rw-r--r--sys/compat/netbsd/netbsd_stat.c22
-rw-r--r--sys/compat/osf1/osf1_descrip.c23
-rw-r--r--sys/kern/kern_descrip.c25
4 files changed, 9 insertions, 84 deletions
diff --git a/sys/compat/common/vfs_syscalls_43.c b/sys/compat/common/vfs_syscalls_43.c
index 0a5aa07e8b6..91e03cf4076 100644
--- a/sys/compat/common/vfs_syscalls_43.c
+++ b/sys/compat/common/vfs_syscalls_43.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_syscalls_43.c,v 1.13 2001/05/14 12:11:53 art Exp $ */
+/* $OpenBSD: vfs_syscalls_43.c,v 1.14 2001/05/14 13:28:22 art Exp $ */
/* $NetBSD: vfs_syscalls_43.c,v 1.4 1996/03/14 19:31:52 christos Exp $ */
/*
@@ -199,26 +199,7 @@ compat_43_sys_fstat(p, v, retval)
if ((u_int)fd >= fdp->fd_nfiles ||
(fp = fdp->fd_ofiles[fd]) == NULL)
return (EBADF);
- switch (fp->f_type) {
-
- case DTYPE_VNODE:
- error = vn_statfile(fp, &ub, p);
- break;
-
- case DTYPE_SOCKET:
- error = soo_stat(fp, &ub, p);
- break;
-
-#ifndef OLD_PIPE
- case DTYPE_PIPE:
- error = pipe_stat(fp, &ub, p);
- break;
-#endif
-
- default:
- panic("ofstat");
- /*NOTREACHED*/
- }
+ error = (*fp->f_ops->fo_stat)(fp, &ub, p);
cvtstat(&ub, &oub);
if (error == 0)
error = copyout((caddr_t)&oub, (caddr_t)SCARG(uap, sb),
diff --git a/sys/compat/netbsd/netbsd_stat.c b/sys/compat/netbsd/netbsd_stat.c
index a3735bf6a20..e8a82fe9210 100644
--- a/sys/compat/netbsd/netbsd_stat.c
+++ b/sys/compat/netbsd/netbsd_stat.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: netbsd_stat.c,v 1.9 2001/05/14 12:11:53 art Exp $ */
+/* $OpenBSD: netbsd_stat.c,v 1.10 2001/05/14 13:28:22 art Exp $ */
/*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
@@ -195,26 +195,8 @@ netbsd_sys___fstat13(p, v, retval)
if ((u_int)fd >= fdp->fd_nfiles ||
(fp = fdp->fd_ofiles[fd]) == NULL)
return (EBADF);
- switch (fp->f_type) {
- case DTYPE_VNODE:
- error = vn_statfile(fp, &sb, p);
- break;
-
- case DTYPE_SOCKET:
- error = soo_stat(fp, &sb, p);
- break;
-
-#ifndef OLD_PIPE
- case DTYPE_PIPE:
- error = pipe_stat(fp, &sb, p);
- break;
-#endif
-
- default:
- panic("netbsd_sys___fstat13");
- /*NOTREACHED*/
- }
+ error = (*fp->f_ops->fo_stat)(fp, &ub, p);
if (error)
return (error);
openbsd_to_netbsd_stat(&sb, &nsb);
diff --git a/sys/compat/osf1/osf1_descrip.c b/sys/compat/osf1/osf1_descrip.c
index e5302d41554..784f4ec7511 100644
--- a/sys/compat/osf1/osf1_descrip.c
+++ b/sys/compat/osf1/osf1_descrip.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: osf1_descrip.c,v 1.5 2001/05/14 12:11:54 art Exp $ */
+/* $OpenBSD: osf1_descrip.c,v 1.6 2001/05/14 13:28:23 art Exp $ */
/* $NetBSD: osf1_descrip.c,v 1.5 1999/06/26 01:24:41 cgd Exp $ */
/*
@@ -249,26 +249,7 @@ osf1_sys_fstat(p, v, retval)
(fp->f_iflags & FIF_WANTCLOSE) != 0) */
return (EBADF);
- switch (fp->f_type) {
-
- case DTYPE_VNODE:
- error = vn_statfile(fp, &ub, p);
- break;
-
- case DTYPE_SOCKET:
- error = soo_stat(fp, &ub, p);
- break;
-
-#ifndef OLD_PIPE
- case DTYPE_PIPE:
- error = pipe_stat(fp, &sb, p);
- break;
-#endif
-
- default:
- panic("osf1_sys_fstat");
- /*NOTREACHED*/
- }
+ error = (*fp->f_ops->fo_stat)(fp, &ub, p);
osf1_cvt_stat_from_native(&ub, &oub);
if (error == 0)
error = copyout((caddr_t)&oub, (caddr_t)SCARG(uap, sb),
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index ed48ef1171a..754659f3510 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_descrip.c,v 1.26 2001/05/14 12:11:52 art Exp $ */
+/* $OpenBSD: kern_descrip.c,v 1.27 2001/05/14 13:28:20 art Exp $ */
/* $NetBSD: kern_descrip.c,v 1.42 1996/03/30 22:24:38 christos Exp $ */
/*
@@ -500,7 +500,7 @@ sys_fstat(p, v, retval)
void *v;
register_t *retval;
{
- register struct sys_fstat_args /* {
+ struct sys_fstat_args /* {
syscallarg(int) fd;
syscallarg(struct stat *) sb;
} */ *uap = v;
@@ -513,26 +513,7 @@ sys_fstat(p, v, retval)
if ((u_int)fd >= fdp->fd_nfiles ||
(fp = fdp->fd_ofiles[fd]) == NULL)
return (EBADF);
- switch (fp->f_type) {
-
- case DTYPE_VNODE:
- error = vn_statfile(fp, &ub, p);
- break;
-
- case DTYPE_SOCKET:
- error = soo_stat(fp, &ub, p);
- break;
-
-#ifndef OLD_PIPE
- case DTYPE_PIPE:
- error = pipe_stat(fp, &ub, p);
- break;
-#endif
-
- default:
- panic("fstat");
- /*NOTREACHED*/
- }
+ error = (*fp->f_ops->fo_stat)(fp, &ub, p);
if (error == 0) {
/* Don't let non-root see generation numbers
(for NFS security) */