| #include <stdio.h> |
| #include <string.h> |
| #include <stdlib.h> |
| #include <unistd.h> |
| |
| #include <CoreFoundation/CoreFoundation.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, "MacOS/SomeRandomFile.txt"); |
| int res3 = findBundleFile(exec, "MacOS/README.rst"); |
| if ( !res1 || |
| !res2 || |
| !res3 ) |
| { |
| return 1; |
| } |
| |
| return 0; |
| } |