|
|
1.1 root 1: /* lfputc.c - lfputc */
2:
3: #include <conf.h>
4: #include <kernel.h>
5: #include <proc.h>
6: #include <disk.h>
7: #include <lfile.h>
8: #include <dir.h>
9:
10: /*------------------------------------------------------------------------
11: * lfputc -- put a character onto a (buffered) disk file
12: *------------------------------------------------------------------------
13: */
14: lfputc(devptr, ch)
15: struct devsw *devptr;
16: char ch;
17: {
18: struct flblk *flptr;
19: char ps;
20:
21: disable(ps);
22: flptr = (struct flblk *) devptr->dvioblk;
23: if (flptr->fl_pid != currpid || !(flptr->fl_mode&FLWRITE)) {
24: restore(ps);
25: return(SYSERR);
26: }
27: if (flptr->fl_bptr >= &flptr->fl_buff[DBUFSIZ]) {
28: if (flptr->fl_dch)
29: lfsflush(flptr);
30: lfsetup(flptr->fl_dev, flptr);
31: }
32: if (flptr->fl_pos >= (flptr->fl_dent)->fdlen)
33: (flptr->fl_dent)->fdlen++;
34: flptr->fl_pos++;
35: *(flptr->fl_bptr)++ = ch;
36: flptr->fl_dch = TRUE;
37: restore(ps);
38: return(OK);
39: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.