4.4BSD snapshot (revision 8.1); add 1993 to copyright
[unix-history] / usr / src / sys / stand.att / write.c
/*-
* Copyright (c) 1982, 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* %sccs.include.proprietary.c%
*
* @(#)write.c 8.1 (Berkeley) %G%
*/
#include <sys/param.h>
#include <stand.att/saio.h>
#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