Annotation of xinu/sys/LSI/lfgetc.c, revision 1.1.1.1

1.1       root        1: /* lfgetc.c - lfgetc */
                      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:  *  lfgetc  --  get next character from (buffered) disk file
                     12:  *------------------------------------------------------------------------
                     13:  */
                     14: lfgetc(devptr)
                     15: struct devsw   *devptr;
                     16: {
                     17:        struct  flblk   *flptr;
                     18:        char    nextch;
                     19:        char    ps;
                     20: 
                     21:        disable(ps);
                     22:        flptr = (struct flblk *)devptr->dvioblk;
                     23:        if (flptr->fl_pid!=currpid || !(flptr->fl_mode&FLREAD)) {
                     24:                restore(ps);
                     25:                return(SYSERR);
                     26:        }
                     27:        if (flptr->fl_pos >= (flptr->fl_dent)->fdlen) {
                     28:                restore(ps);
                     29:                return(EOF);
                     30:        }
                     31:        if (flptr->fl_bptr >= &flptr->fl_buff[DBUFSIZ]) {
                     32:                if (flptr->fl_dch)
                     33:                        lfsflush(flptr);
                     34:                lfsetup(flptr->fl_dev, flptr);
                     35:        }
                     36:        nextch = *(flptr->fl_bptr)++;
                     37:        flptr->fl_pos++;
                     38:        restore(ps);
                     39:        return(nextch);
                     40: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.