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