|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)access_.c 5.1 6/7/85 ! 7: */ ! 8: ! 9: /* ! 10: * determine accessability of a file ! 11: * ! 12: * calling format: ! 13: * integer access ! 14: * ierror = access(filename, mode) ! 15: * where: ! 16: * ierror will be 0 for successful access; an error number otherwise. ! 17: * filename is a character string ! 18: * mode is a character string which may include any combination of ! 19: * 'r', 'w', 'x', ' '. (' ' => test for existence) ! 20: */ ! 21: ! 22: #include "../libI77/f_errno.h" ! 23: #include <sys/param.h> ! 24: #ifndef MAXPATHLEN ! 25: #define MAXPATHLEN 128 ! 26: #endif ! 27: ! 28: long access_(name, mode, namlen, modlen) ! 29: char *name, *mode; ! 30: long namlen, modlen; ! 31: { ! 32: char buf[MAXPATHLEN]; ! 33: int m = 0; ! 34: ! 35: if (namlen >= sizeof buf) ! 36: return((long)(errno=F_ERARG)); ! 37: g_char(name, namlen, buf); ! 38: if (buf[0] == '\0') ! 39: return((long)(errno=ENOENT)); ! 40: if (access(buf, 0) < 0) ! 41: return((long)errno); ! 42: while (modlen--) switch(*mode++) ! 43: { ! 44: case 'x': ! 45: m |= 1; ! 46: break; ! 47: ! 48: case 'w': ! 49: m |= 2; ! 50: break; ! 51: ! 52: case 'r': ! 53: m |= 4; ! 54: break; ! 55: } ! 56: if (m > 0 && access(buf, m) < 0) ! 57: return((long)errno); ! 58: return(0L); ! 59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.