|
|
1.1 ! root 1: /* rfopen.c - rfopen */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <network.h> ! 6: ! 7: /*------------------------------------------------------------------------ ! 8: * rfopen -- open a remote file ! 9: *------------------------------------------------------------------------ ! 10: */ ! 11: rfopen(devptr, name, mode) ! 12: struct devsw *devptr; ! 13: char *name; ! 14: char *mode; ! 15: { ! 16: struct rfblk *rfptr; ! 17: int i; ! 18: int mbits; ! 19: int devnum; ! 20: PStype ps; ! 21: ! 22: disable(ps); ! 23: if (strlen(name) > RNAMLEN || (mbits=ckmode(mode)) == SYSERR ! 24: || (i=rfalloc()) == SYSERR) { ! 25: restore(ps); ! 26: return(SYSERR); ! 27: } ! 28: rfptr = &Rf.rftab[i]; ! 29: devnum = rfptr->rf_dnum; ! 30: strcpy(rfptr->rf_name, name); ! 31: rfptr->rf_mode = mbits; ! 32: rfptr->rf_pos = 0L; ! 33: ! 34: /* send remote file open request */ ! 35: ! 36: if ( rfio(&devtab[devnum], FS_OPEN, NULLSTR, mbits) == SYSERR ) { ! 37: rfptr->rf_state = RFREE; ! 38: restore(ps); ! 39: return(SYSERR); ! 40: } ! 41: restore(ps); ! 42: return(devnum); ! 43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.