xref: /csrg-svn/sys/stand.att/stat.c (revision 60328)
149182Sbostic /*-
249182Sbostic  * Copyright (c) 1991 The Regents of the University of California.
349182Sbostic  * All rights reserved.
449182Sbostic  *
549182Sbostic  * %sccs.include.redist.c%
649182Sbostic  *
7*60328Smckusick  *	@(#)stat.c	7.3 (Berkeley) 05/24/93
849182Sbostic  */
949182Sbostic 
1049182Sbostic #include <sys/param.h>
1149182Sbostic #include <sys/stat.h>
12*60328Smckusick #include <stand.att/saio.h>
1349182Sbostic 
1449182Sbostic #ifndef SMALL
1549182Sbostic fstat(fd, sb)
1649182Sbostic 	int fd;
1749182Sbostic 	struct stat *sb;
1849182Sbostic {
1949182Sbostic 	register struct iob *io;
2049182Sbostic 
2149182Sbostic 	fd -= 3;
2249182Sbostic 	if (fd < 0 || fd >= SOPEN_MAX ||
2349182Sbostic 	    ((io = &iob[fd])->i_flgs & F_ALLOC) == 0) {
2449182Sbostic 		errno = EBADF;
2549182Sbostic 		return (-1);
2649182Sbostic 	}
2749182Sbostic 	/* only important stuff */
2849182Sbostic 	sb->st_mode = io->i_ino.di_mode;
2949182Sbostic 	sb->st_uid = io->i_ino.di_uid;
3049182Sbostic 	sb->st_gid = io->i_ino.di_gid;
3149182Sbostic 	sb->st_size = io->i_ino.di_size;
3249182Sbostic 	return (0);
3349182Sbostic }
3449182Sbostic 
3549182Sbostic stat(str, sb)
3649182Sbostic 	const char *str;
3749182Sbostic 	struct stat *sb;
3849182Sbostic {
3949182Sbostic 	int fd, rv;
4049182Sbostic 
4149182Sbostic 	fd = open(str, 0);
4249182Sbostic 	if (fd < 0)
4349182Sbostic 		return(-1);
4449182Sbostic 	rv = fstat(fd, sb);
4549182Sbostic 	close(fd);
4649182Sbostic 	return(rv);
4749182Sbostic }
4849182Sbostic #endif SMALL
49