|
|
1.1 ! root 1: #include <path.h> ! 2: #define NULL ((char *)0) ! 3: char *path(p, f, m) char *p, *f; int m; ! 4: { ! 5: static char pathname[MAXPATH]; ! 6: register char *p1, *p2, *p3; ! 7: register int c, d; ! 8: ! 9: if ((p1 = p) == NULL) ! 10: return NULL; ! 11: do { ! 12: p2 = pathname; ! 13: while ((c = *p1++) != 0 && c != LISTSEP) ! 14: if (p2 < pathname+MAXPATH) ! 15: *p2++ = c; ! 16: if (p2 > pathname && p2[-1] != PATHSEP) ! 17: if (p2 < pathname+MAXPATH) ! 18: *p2++ = PATHSEP; ! 19: if ((p3 = f) == NULL) ! 20: break; ! 21: while ((d = *p3++) != 0) ! 22: if (p2 < pathname+MAXPATH) ! 23: *p2++ = d; ! 24: if (p2 < pathname+MAXPATH) { ! 25: *p2 = 0; ! 26: if (access(pathname, m) >= 0) ! 27: return pathname; ! 28: } ! 29: } while (c != 0); ! 30: return NULL; ! 31: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.