1*63279Smckusick /*- 2*63279Smckusick * Copyright (c) 1993 The Regents of the University of California. 3*63279Smckusick * All rights reserved. 4*63279Smckusick * 5*63279Smckusick * %sccs.include.redist.c% 6*63279Smckusick * 7*63279Smckusick * @(#)stat.c 7.1 (Berkeley) 06/11/93 8*63279Smckusick */ 9*63279Smckusick 10*63279Smckusick #include <stand/stand.h> 11*63279Smckusick 12*63279Smckusick fstat(fd, sb) 13*63279Smckusick int fd; 14*63279Smckusick struct stat *sb; 15*63279Smckusick { 16*63279Smckusick register struct open_file *f = &files[fd]; 17*63279Smckusick 18*63279Smckusick if ((unsigned)fd >= SOPEN_MAX || f->f_flags == 0) { 19*63279Smckusick errno = EBADF; 20*63279Smckusick return (-1); 21*63279Smckusick } 22*63279Smckusick 23*63279Smckusick /* operation not defined on raw devices */ 24*63279Smckusick if (f->f_flags & F_RAW) { 25*63279Smckusick errno = EOPNOTSUPP; 26*63279Smckusick return (-1); 27*63279Smckusick } 28*63279Smckusick 29*63279Smckusick errno = (f->f_ops->stat)(f, sb); 30*63279Smckusick return (0); 31*63279Smckusick } 32*63279Smckusick 33*63279Smckusick stat(str, sb) 34*63279Smckusick const char *str; 35*63279Smckusick struct stat *sb; 36*63279Smckusick { 37*63279Smckusick int fd, rv; 38*63279Smckusick 39*63279Smckusick fd = open(str, 0); 40*63279Smckusick if (fd < 0) 41*63279Smckusick return (-1); 42*63279Smckusick rv = fstat(fd, sb); 43*63279Smckusick (void)close(fd); 44*63279Smckusick return (rv); 45*63279Smckusick } 46