diff --git a/src/include/pw3270.h b/src/include/pw3270.h index 6b98e6e..7828d94 100644 --- a/src/include/pw3270.h +++ b/src/include/pw3270.h @@ -63,6 +63,7 @@ struct _Pw3270SettingsPage { }; void gtk_file_chooser_set_pw3270_filters(GtkFileChooser *chooser); +gchar * pw3270_build_data_filename(const char *filename); G_END_DECLS diff --git a/src/main/builder.c b/src/main/builder.c index 79b5808..6b8528f 100644 --- a/src/main/builder.c +++ b/src/main/builder.c @@ -20,12 +20,37 @@ #include "private.h" #include #include + #include + + gchar * pw3270_build_data_filename(const char *filename) { + + g_autofree gchar * pkgdir = g_win32_get_package_installation_directory_of_module(NULL); + + gchar * path = g_build_filename(pkgdir,filename,NULL); + if(g_file_test(path,G_FILE_TEST_IS_REGULAR)) { + return path; + } + g_free(path); + + path = g_build_filename(pkgdir,"share",G_STRINGIFY(PRODUCT_NAME),filename,NULL); + if(g_file_test(path,G_FILE_TEST_IS_REGULAR)) { + return path; + } + g_free(path); + + g_error("Cant find '%s'",filename); + return NULL; + } GtkBuilder * pw3270_application_builder_new(GApplication *application) { #if !defined(DEBUG) - lib3270_autoptr(char) filename = lib3270_build_data_filename(G_STRINGIFY(PRODUCT_NAME) ".ui.xml",NULL); + #if defined(G_OS_WIN32) + g_autofree gchar * filename = pw3270_build_data_filename(G_STRINGIFY(PRODUCT_NAME) ".ui.xml"); + #else + lib3270_autoptr(char) filename = lib3270_build_data_filename(G_STRINGIFY(PRODUCT_NAME) ".ui.xml",NULL); + #endif // G_OS_WIN32 #elif defined(G_OS_UNIX) -- libgit2 0.21.2