00001 00005 #include <zakdef.h> 00006 #include <unistd.h> 00007 #include <sys/stat.h> 00008 #include <stdio.h> 00009 #include <stdlib.h> 00010 #include <string.h> 00011 #include <errno.h> 00012 #include <strings.h> 00013 #include <nix_utils.h> 00014 00015 int 00016 searchForFile(Char *file, UInt16 length, Char *path) 00017 { 00018 char *buffer; 00019 char *atp = strdup(path); 00020 char *tat = atp; 00021 char *cap; 00022 struct stat sbuf; 00023 size_t max_path = pathconf("/", _PC_PATH_MAX); 00024 00025 buffer = malloc(max_path + 1); 00026 00027 do { 00028 cap = strchr(atp, ':'); 00029 if (cap != NULL) 00030 *cap = '\0'; 00031 snprintf(buffer, max_path, "%s/%s", atp, file); 00032 if (stat(buffer, &sbuf) != -1) { 00033 strlcpy(file, buffer, length); 00034 free(tat); 00035 free(buffer); 00036 return (1); 00037 } 00038 if (cap != NULL) 00039 atp = cap + 1; 00040 } while (cap != NULL); 00041 if (tat != NULL) free(tat); 00042 free(buffer); 00043 return (0); 00044 } 00045