|
|
1.1 ! root 1: /* dsopen.c - dsopen */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <disk.h> ! 6: #include <lfile.h> ! 7: #include <dir.h> ! 8: ! 9: /*------------------------------------------------------------------------ ! 10: * dsopen -- open/create a file on the specified disk device ! 11: *------------------------------------------------------------------------ ! 12: */ ! 13: #ifdef Ndf ! 14: dsopen(devptr, filenam, mode) ! 15: struct devsw *devptr; ! 16: char *filenam; ! 17: char *mode; ! 18: { ! 19: struct dir *dirptr; ! 20: struct flblk *flptr; ! 21: struct fdes *fdptr; ! 22: DBADDR dba; ! 23: int mbits, findex; ! 24: int retcode; ! 25: char ps; ! 26: ! 27: disable(ps); ! 28: dirptr = dsdirec(devptr->dvnum); ! 29: if ( (mbits=ckmode(mode)) == SYSERR) ! 30: retcode = SYSERR; ! 31: else if( (int)(fdptr=dfdsrch(devptr->dvioblk,filenam,mbits)) ! 32: == SYSERR) ! 33: retcode = SYSERR; ! 34: else if ( (findex=dfalloc()) == SYSERR) ! 35: retcode = SYSERR; ! 36: else { ! 37: flptr = &fltab[findex]; ! 38: flptr->fl_dev = devptr->dvnum; ! 39: flptr->fl_dent = fdptr; ! 40: flptr->fl_mode = mbits & FLRW; ! 41: flptr->fl_iba = fdptr->fdiba; ! 42: ibget(flptr->fl_dev, flptr->fl_iba, &(flptr->fl_iblk)); ! 43: flptr->fl_pos = 0L; ! 44: flptr->fl_dch = FALSE; ! 45: dba = flptr->fl_iblk.ib_dba[flptr->fl_ipnum = 0]; ! 46: if (dba != DBNULL) { ! 47: read(flptr->fl_dev, flptr->fl_buff, dba); ! 48: flptr->fl_bptr = flptr->fl_buff; ! 49: } else ! 50: flptr->fl_bptr = &flptr->fl_buff[DBUFSIZ]; ! 51: retcode = flptr->fl_id; ! 52: } ! 53: restore(ps); ! 54: return(retcode); ! 55: } ! 56: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.