From 09b4b2d62ccd962d18ea56f493b12ad338cdb209 Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Tue, 28 Mar 2006 13:23:10 -0500 Subject: [PATCH] ENH: Check if files exist --- Tests/BundleTest/BundleLib.cxx | 62 ++++++++++++++++++++++++++++++++- Tests/BundleTest/BundleTest.cxx | 9 +++-- 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/Tests/BundleTest/BundleLib.cxx b/Tests/BundleTest/BundleLib.cxx index 9fe07f82f..bc757b11c 100644 --- a/Tests/BundleTest/BundleLib.cxx +++ b/Tests/BundleTest/BundleLib.cxx @@ -1 +1,61 @@ -int foo() { return 0; } +#include +#include +#include +#include + +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) +{ + int res1 = findBundleFile(exec, "Resources/randomResourceFile.plist"); + int res2 = findBundleFile(exec, "MacOS/SomeRandomFile.txt"); + if ( !res1 || + !res2 ) + { + return 1; + } + + return 0; +} diff --git a/Tests/BundleTest/BundleTest.cxx b/Tests/BundleTest/BundleTest.cxx index c879be14d..1e508ac09 100644 --- a/Tests/BundleTest/BundleTest.cxx +++ b/Tests/BundleTest/BundleTest.cxx @@ -1,6 +1,9 @@ -extern int foo(); +#include -int main() +extern int foo(char* exec); + +int main(int argc, char* argv[]) { - return foo(); + printf("Started with: %d arguments\n", argc); + return foo(argv[0]); }