| #include <CoreFoundation/CoreFoundation.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <unistd.h> |
| |
| int fileExists(char* filename) |
| { |
| #ifndef R_OK |
| # define R_OK 04 |
| #endif |
| if (access(filename, R_OK) != 0) { |
| printf("Cannot find file: %s\n", filename); |
| return 0; |
| } |
| return 1; |
| } |
| |
| int findBundleFile(char* exec, const char* file) |
| { |
| int res; |
| char* nexec = strdup(exec); |
| char* fpath = (char*)malloc(strlen(exec) + 100); |
| int cc; |
| int cnt = 0; |
| printf("Process executable name: %s\n", exec); |
| |
| // Remove the executable name and directory name |
| for (cc = strlen(nexec) - 1; cc > 0; cc--) { |
| if (nexec[cc] == '/') { |
| nexec[cc] = 0; |
| if (cnt == 1) { |
| break; |
| } |
| cnt++; |
| } |
| } |
| printf("Process executable path: %s\n", nexec); |
| sprintf(fpath, "%s/%s", nexec, file); |
| printf("Check for file: %s\n", fpath); |
| res = fileExists(fpath); |
| free(nexec); |
| free(fpath); |
| return res; |
| } |
| |
| int foo(char* exec) |
| { |
| // Call a CoreFoundation function... |
| // |
| CFBundleRef br = CFBundleGetMainBundle(); |
| (void)br; |
| |
| int res1 = findBundleFile(exec, "Resources/randomResourceFile.plist"); |
| int res2 = findBundleFile(exec, "Other/SomeRandomFile.txt"); |
| int res3 = findBundleFile(exec, "Other/README.rst"); |
| if (!res1 || !res2 || !res3) { |
| return 1; |
| } |
| |
| return 0; |
| } |