163279Smckusick /*- 2*63370Sbostic * Copyright (c) 1993 3*63370Sbostic * The Regents of the University of California. All rights reserved. 463279Smckusick * 563279Smckusick * %sccs.include.redist.c% 663279Smckusick * 7*63370Sbostic * @(#)stat.c 8.1 (Berkeley) 06/11/93 863279Smckusick */ 963279Smckusick 1063279Smckusick #include <stand/stand.h> 1163279Smckusick fstat(fd,sb)1263279Smckusickfstat(fd, sb) 1363279Smckusick int fd; 1463279Smckusick struct stat *sb; 1563279Smckusick { 1663279Smckusick register struct open_file *f = &files[fd]; 1763279Smckusick 1863279Smckusick if ((unsigned)fd >= SOPEN_MAX || f->f_flags == 0) { 1963279Smckusick errno = EBADF; 2063279Smckusick return (-1); 2163279Smckusick } 2263279Smckusick 2363279Smckusick /* operation not defined on raw devices */ 2463279Smckusick if (f->f_flags & F_RAW) { 2563279Smckusick errno = EOPNOTSUPP; 2663279Smckusick return (-1); 2763279Smckusick } 2863279Smckusick 2963279Smckusick errno = (f->f_ops->stat)(f, sb); 3063279Smckusick return (0); 3163279Smckusick } 3263279Smckusick stat(str,sb)3363279Smckusickstat(str, sb) 3463279Smckusick const char *str; 3563279Smckusick struct stat *sb; 3663279Smckusick { 3763279Smckusick int fd, rv; 3863279Smckusick 3963279Smckusick fd = open(str, 0); 4063279Smckusick if (fd < 0) 4163279Smckusick return (-1); 4263279Smckusick rv = fstat(fd, sb); 4363279Smckusick (void)close(fd); 4463279Smckusick return (rv); 4563279Smckusick } 46