diff options
Diffstat (limited to 'Tests/BundleTest/BundleLib.cxx')
-rw-r--r-- | Tests/BundleTest/BundleLib.cxx | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Tests/BundleTest/BundleLib.cxx b/Tests/BundleTest/BundleLib.cxx new file mode 100644 index 000000000..b68ee25dd --- /dev/null +++ b/Tests/BundleTest/BundleLib.cxx @@ -0,0 +1,70 @@ +#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/ChangeLog.txt"); + if ( !res1 || + !res2 || + !res3 ) + { + return 1; + } + + return 0; +} |