|
|
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.