|
|
1.1 ! root 1: /* ! 2: * find a file on a path in the environment, or a default path ! 3: * with an access priveledge. ! 4: * ! 5: * example: pathn("helpfile", "LIBPATH", ",,\lib", "r"); ! 6: * ! 7: * Returns full path name. ! 8: */ ! 9: #include <stdio.h> ! 10: #include <path.h> ! 11: ! 12: #define PATHSIZE 64 ! 13: ! 14: char *getenv(), *path(), *strchr(); ! 15: char * ! 16: pathn(name, envpath, deflpath, acs) ! 17: char *name, *envpath, *deflpath, *acs; ! 18: { ! 19: register char *pathptr; ! 20: ! 21: if((NULL == envpath) || (NULL == (pathptr = getenv(envpath)))) ! 22: pathptr = deflpath; ! 23: ! 24: if(NULL == strchr(acs, 'w')) { ! 25: if ((pathptr = path(pathptr, name, AREAD)) == NULL) ! 26: return(name); ! 27: else ! 28: return(pathptr); ! 29: } ! 30: else { ! 31: register char *p, c; ! 32: static char fullname[PATHSIZE]; ! 33: ! 34: if((p = path(pathptr, name, AWRITE)) == NULL) { ! 35: for(p = fullname; (c = *pathptr++) && c != LISTSEP;) ! 36: *p++ = c; ! 37: *p++ = PATHSEP; ! 38: strcpy(p, name); ! 39: return(fullname); ! 40: } else ! 41: return(p); ! 42: } ! 43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.