/*- * Copyright (c) 1982, 1988 The Regents of the University of California. * All rights reserved. * * %sccs.include.proprietary.c% * * @(#)write.c 7.3 (Berkeley) 05/24/93 */ #include #include #ifndef SMALL write(fdesc, buf, count) int fdesc, count; char *buf; { register i; register struct iob *file; errno = 0; if (fdesc >= 0 && fdesc <= 2) { i = count; while (i--) putchar(*buf++); return (count); } fdesc -= 3; if (fdesc < 0 || fdesc >= SOPEN_MAX || ((file = &iob[fdesc])->i_flgs&F_ALLOC) == 0) { errno = EBADF; return (-1); } if ((file->i_flgs&F_WRITE) == 0) { errno = EBADF; return (-1); } file->i_cc = count; file->i_ma = buf; file->i_bn = file->i_boff + (file->i_offset / DEV_BSIZE); i = devwrite(file); file->i_offset += count; if (i < 0) errno = file->i_error; return (i); } #endif