|
|
1.1 ! root 1: /*LINTLIBRARY*/ ! 2: ! 3: /* ! 4: ** Open ``shares'' file and optionally lock it. ! 5: */ ! 6: ! 7: #include <sys/types.h> ! 8: #include <sys/lnode.h> ! 9: #include <sys/filio.h> ! 10: #include <shares.h> ! 11: #include <errno.h> ! 12: #include <libc.h> ! 13: ! 14: ! 15: int ShareFd; ! 16: static char * ShareFile = SHAREFILE; ! 17: static int ShareOpen; ! 18: ! 19: ! 20: ! 21: int ! 22: openshares(lock) ! 23: int lock; /* True if writing desired */ ! 24: { ! 25: if ( ShareOpen ) ! 26: return 1; ! 27: ! 28: if ( (ShareFd = open(ShareFile, 2)) == SYSERROR ) ! 29: { ! 30: if ( !lock && (errno == EACCES) ) ! 31: { ! 32: if ( (ShareFd = open(ShareFile, 0)) == SYSERROR ) ! 33: return 0; ! 34: } ! 35: else ! 36: return 0; ! 37: } ! 38: ! 39: # ifdef FIOCLEX ! 40: (void)ioctl(ShareFd, FIOCLEX, 0); /* close on exec */ ! 41: # endif ! 42: ! 43: ShareOpen = 1; ! 44: errno = 0; ! 45: ! 46: return 1; ! 47: } ! 48: ! 49: ! 50: void ! 51: closeshares() ! 52: { ! 53: if ( !ShareOpen ) ! 54: return; ! 55: ! 56: (void)close(ShareFd); ! 57: ! 58: ShareOpen = 0; ! 59: } ! 60: ! 61: ! 62: void ! 63: sharesfile(file) ! 64: char * file; ! 65: { ! 66: closeshares(); ! 67: ShareFile = file; ! 68: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.