1: /*(@(#)getpath.c 1.2 /ra/csr/presotto/hacks/src/worm/sccs/s.getpath.c)*/
2: #define MAXPATHS 20
3: #define MAXPATHSIZE 100
4:
5: int npaths; /* number of paths to search */
6: char *paths[MAXPATHS]; /* pointers to the paths */
7: char thepath[256]; /* where to copy path */
8:
9: /*
10: * input the execution search path
11: */
12: getpath ()
13: {
14: char *path;
15:
16: path = (char *)getenv ("PATH");
17: strcpy (thepath, path);
18: path = thepath;
19: for (npaths = 0; npaths < MAXPATHS; npaths++) {
20: paths[npaths] = path;
21: while (*path != ':' && *path != 0) path++;
22: if (*path == 0) {
23: npaths++;
24: break;
25: } else {
26: *path++ = 0;
27: }
28: }
29: }
30:
31: /*
32: * see if we can execute a command
33: */
34: findcmd (path)
35: char *path; /* path to the command */
36: {
37: char abspath[MAXPATHSIZE];
38: int rv; /* return value */
39: int indp; /* path index */
40:
41: if (*path == 0)
42: return (0);
43:
44: if (*path == '/') {
45:
46: /* absolute path, don't fool around */
47: rv = access(path, 1);
48: } else {
49:
50: /* relative path, do some work */
51: for (indp = 0; indp < npaths; indp++) {
52: strcpy (abspath, paths[indp]);
53: strcat (abspath, "/");
54: strcat (abspath, path);
55: rv = access(abspath, 1);
56: if (rv == 0)
57: break;
58: }
59: }
60:
61: return (rv);
62: }
Defined functions
Defined variables
npaths
defined in line
5; used 6 times
paths
defined in line
6; used 2 times
Defined macros