6 is_cmd(char** path, char** builtin, const char* p)
12 struct stat stat_buff = {0};
13 char command[PATH_MAX + 1] = {0};
14 char buff[PATH_MAX + 1] = {0};
23 if(p[i] != ' ' && p[i] != '\t' && p[i] != '>')
32 /* check first if it's a shell buitin */
36 for(i = 0; builtin[i] != NULL; i++)
38 if(!strcmp(builtin[i], command))
43 if(stat(command, &stat_buff) || !S_ISREG(stat_buff.st_mode))
47 for (i = 0; path[i] != NULL; i++)
50 sprintf(buff,"%s/%s",path[i], command);
52 if(!stat(buff, &stat_buff) && S_ISREG(stat_buff.st_mode))
55 if(!access(buff, X_OK))
67 if(!access(command, X_OK))
71 return yes ? 0 : ECMDNOTFOUND;