|
|
1.1 ! root 1: /* Copyright Bell Telephone Laboratories Whippany, N.J. ! 2: ! 3: * ///////////////////////////////////// ! 4: * ///////////////////////////////////// ! 5: * //// SEARCH PATHS AND OPEN FILE ///// ! 6: * /// J. P. Hawkins WH X4610 8C-001 /// ! 7: * ///// Wed Sep 12 11:18:06 1979 ////// ! 8: * ///////////////////////////////////// ! 9: * ///////////////////////////////////// ! 10: ! 11: * call format: ! 12: * FILE *pathopen(),*fp; ! 13: * fp = pathopen(filestring); ! 14: * ! 15: * Search paths specified in bpath for file. If found, ! 16: * open the filename pointed to by filestring and return filepointer fp. ! 17: * If search fails return 0. ! 18: * Same convention as fopen(). ! 19: */ ! 20: /* "@(#) pathopen.c: V 1.2 3/14/81" */ ! 21: #include "bas.h" ! 22: char bpath[100] = ":./:/usr/lib/bites:"; ! 23: ! 24: FILE * ! 25: pathopen(name) ! 26: char name[]; ! 27: { ! 28: FILE *fopen(),*fp; ! 29: char *getpath(); ! 30: char filpath[80]; ! 31: register char *p; ! 32: p = bpath; /* start with first entry in paths */ ! 33: ! 34: while((p = getpath(filpath,p)) != 0) ! 35: { ! 36: strcat(filpath,"/"); ! 37: strcat(filpath,name); ! 38: if((fp = fopen(filpath,"r")) != 0) /* if open succeeds */ ! 39: break; ! 40: } ! 41: if(fp == 0) /* if open did not succeed */ ! 42: { ! 43: error(inst.thing.linno,4); ! 44: return(0); ! 45: } ! 46: return(fp); ! 47: } ! 48: ! 49: /* ! 50: * SCAN PATH STRING ! 51: */ ! 52: char * ! 53: getpath(field,s) ! 54: char *s; ! 55: char field[]; ! 56: { ! 57: int i; ! 58: char *p; ! 59: ! 60: i = 0; ! 61: p = s; ! 62: if(*p == ':') *p++; /* bump past delim */ ! 63: while(*p != '\0' && *p != ':') ! 64: { ! 65: field[i++] = *p++; ! 66: } ! 67: field[i] = '\0'; /* null terminate */ ! 68: ! 69: if(p != s) ! 70: return(p); ! 71: ! 72: return(0); ! 73: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.