OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / user / shutils / which.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <unistd.h>
5
6 int
7 main(argc,argv)
8 int argc;
9 char ** argv;
10 {
11         char *envpath;
12         char *path, *cp;
13         char buf[200];
14         char patbuf[512];
15         int quit, found;
16
17         if (argc < 2) {
18                 write(STDERR_FILENO, "Usage: which cmd [cmd, ..]\n", 37);
19                 exit(1);
20         }
21         if ((envpath = getenv("PATH")) == 0) {
22                 envpath = ".";
23         }
24
25         argv[argc] = 0;
26         for(argv++ ; *argv; argv++) {
27
28                 strcpy(patbuf, envpath);
29                 cp = path = patbuf;
30                 quit = found = 0;
31
32                 while(!quit) {
33                         cp = index(path, ':');
34                         if (cp == NULL) {
35                                 quit++;
36                         } else {
37                                 *cp = '\0'; 
38                         }
39                         sprintf(buf, "%s/%s", (*path ? path:"."), *argv);
40                         path = ++cp;
41
42                         if (access(buf, 1) == 0) {
43                                 printf("%s\n", buf);
44                                 found++;
45                         }
46                 }
47                 if (!found) {
48                         printf("No %s in %s\n", *argv, envpath);
49                 }
50         }
51         exit(0);
52 }