diff --git a/pw3270.cbp b/pw3270.cbp index 17da4bc..efde15d 100644 --- a/pw3270.cbp +++ b/pw3270.cbp @@ -61,6 +61,9 @@ + + diff --git a/src/main/macos/tools.c b/src/main/macos/tools.c new file mode 100644 index 0000000..d0ae14a --- /dev/null +++ b/src/main/macos/tools.c @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: LGPL-3.0-or-later */ + +/* + * Copyright (C) <2008> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + + #include + #include + #include + #include + #include + + static gchar * get_path_from_bundle(const char *name) { + + size_t szBuffer = PATH_MAX; + char buffer[PATH_MAX+1]; + memset(buffer,0,PATH_MAX+1]); + + CFBundleRef mainBundle = CFBundleGetMainBundle(); + + if (mainBundle) { + + CFURLRef url = CFBundleCopyBundleURL(mainBundle); + + if (url) { + + CFURLGetFileSystemRepresentation(url, true, (UInt8 *) buffer, szBuffer); + CFRelease(url); + + gchar * path = g_build_filename(buffer,name,NULL); + + if(access(path,R_OK) == 0) { + return path; + } + + g_free(path); + + } + + } + + return NUL; + + } + + gchar * pw3270_build_data_path(const char *name) { + + gchar * path = get_path_from_bundle(name); + + if(path) { + if(g_file_test(path,G_FILE_TEST_IS_DIR)) { + return path; + } + g_free(path); + } + + g_message("Cant find path for '%s'",path); + return NULL; + + } + + gchar * pw3270_build_data_filename(const char *filename) { + + gchar * path = get_path_from_bundle(name); + + if(path) { + if(g_file_test(path,G_FILE_TEST_IS_REGULAR)) { + return path; + } + g_free(path); + } + + g_error("Cant find '%s'",filename); + return NULL; + } + -- libgit2 0.21.2