X-Git-Url: https://repo.or.cz/w/wmaker-crm.git/blobdiff_plain/59fc927dc9f183802621138534fa6eaafe5593ba..688a56e8ab67b56550e2874d9d7423f0d435bfd9:/WINGs/wapplication.c diff --git a/WINGs/wapplication.c b/WINGs/wapplication.c dissimilarity index 93% index e59b5ce0..e9a6cf00 100644 --- a/WINGs/wapplication.c +++ b/WINGs/wapplication.c @@ -1,201 +1,182 @@ - - -#include - -#include "WINGsP.h" - -#include "wconfig.h" - -#include "X11/Xlocale.h" - - -extern void W_InitNotificationCenter(void); - - -struct W_Application WMApplication; - - -char *_WINGS_progname = NULL; - - - -Bool -W_ApplicationInitialized(void) -{ - return _WINGS_progname!=NULL; -} - - -void -WMInitializeApplication(char *applicationName, int *argc, char **argv) -{ - int i; - - assert(argc!=NULL); - assert(argv!=NULL); - assert(applicationName!=NULL); - - setlocale(LC_ALL, ""); - -#ifdef I18N - if (getenv("NLSPATH")) - bindtextdomain("WINGs", getenv("NLSPATH")); - else - bindtextdomain("WINGs", LOCALEDIR); - bind_textdomain_codeset("WINGs", "UTF-8"); -#endif - - _WINGS_progname = argv[0]; - - WMApplication.applicationName = wstrdup(applicationName); - WMApplication.argc = *argc; - - WMApplication.argv = wmalloc((*argc+1)*sizeof(char*)); - for (i=0; i<*argc; i++) { - WMApplication.argv[i] = wstrdup(argv[i]); - } - WMApplication.argv[i] = NULL; - - /* initialize notification center */ - W_InitNotificationCenter(); -} - - -void -WMSetResourcePath(char *path) -{ - if (WMApplication.resourcePath) - wfree(WMApplication.resourcePath); - WMApplication.resourcePath = wstrdup(path); -} - - -char* -WMGetApplicationName() -{ - return WMApplication.applicationName; -} - - -static char* -checkFile(char *path, char *folder, char *ext, char *resource) -{ - char *ret; - int extralen; - - extralen = (ext ? strlen(ext) : 0) + (folder ? strlen(folder) : 0) + 4; - ret = wmalloc(strlen(path)+strlen(resource)+extralen+8); - strcpy(ret, path); - if (folder) { - strcat(ret, "/"); - strcat(ret, folder); - } - if (ext) { - strcat(ret, "/"); - strcat(ret, ext); - } - strcat(ret, "/"); - strcat(ret, resource); - - if (access(ret, F_OK)!=0) { - wfree(ret); - ret = NULL; - } - - return ret; -} - - -char* -WMPathForResourceOfType(char *resource, char *ext) -{ - char *path = NULL; - char *tmp, *appdir; - int i; - - /* - * Paths are searched in this order: - * - resourcePath/ext - * - argv[0]/ext - * - GNUSTEP_USER_ROOT/Applications/ApplicationName.app/ext - * - ~/GNUstep/Applications/ApplicationName.app/ext - * - GNUSTEP_LOCAL_ROOT/Applications/ApplicationName.app/ext - * - /usr/local/GNUstep/Applications/ApplicationName.app/ext - * - GNUSTEP_SYSTEM_ROOT/Applications/ApplicationName.app/ext - * - /usr/GNUstep/Applications/ApplicationName.app/ext - */ - - if (WMApplication.resourcePath) { - path = checkFile(WMApplication.resourcePath, NULL, ext, resource); - if (path) - return path; - } - - if (WMApplication.argv[0]) { - tmp = wstrdup(WMApplication.argv[0]); - i = strlen(tmp); - while (i > 0 && tmp[i]!='/') - i--; - tmp[i] = 0; - if (i>0) { - path = checkFile(tmp, NULL, ext, resource); - } else { - path = NULL; - } - wfree(tmp); - if (path) - return path; - } - - appdir = wmalloc(strlen(WMApplication.applicationName)+20); - sprintf(appdir, "Applications/%s.app", WMApplication.applicationName); - - if (getenv("GNUSTEP_USER_ROOT")) { - path = checkFile(getenv("GNUSTEP_USER_ROOT"), appdir, ext, resource); - if (path) { - wfree(appdir); - return path; - } - } - - tmp = wusergnusteppath(); - if (tmp) { - path = checkFile(tmp, appdir, ext, resource); - if (path) { - wfree(appdir); - return path; - } - } - - if (getenv("GNUSTEP_LOCAL_ROOT")) { - path = checkFile(getenv("GNUSTEP_LOCAL_ROOT"), appdir, ext, resource); - if (path) { - wfree(appdir); - return path; - } - } - - path = checkFile("/usr/local/GNUstep", appdir, ext, resource); - if (path) { - wfree(appdir); - return path; - } - - if (getenv("GNUSTEP_SYSTEM_ROOT")) { - path = checkFile(getenv("GNUSTEP_SYSTEM_ROOT"), appdir, ext, resource); - if (path) { - wfree(appdir); - return path; - } - } - - path = checkFile("/usr/GNUstep", appdir, ext, resource); - if (path) { - wfree(appdir); - return path; - } - - return NULL; -} - - + +#include + +#include "WINGsP.h" + +#include "wconfig.h" + +#include "X11/Xlocale.h" + +extern void W_InitNotificationCenter(void); + +struct W_Application WMApplication; + +char *_WINGS_progname = NULL; + +Bool W_ApplicationInitialized(void) +{ + return _WINGS_progname != NULL; +} + +void WMInitializeApplication(char *applicationName, int *argc, char **argv) +{ + int i; + + assert(argc != NULL); + assert(argv != NULL); + assert(applicationName != NULL); + + setlocale(LC_ALL, ""); + +#ifdef I18N + if (getenv("NLSPATH")) + bindtextdomain("WINGs", getenv("NLSPATH")); + else + bindtextdomain("WINGs", LOCALEDIR); + bind_textdomain_codeset("WINGs", "UTF-8"); +#endif + + _WINGS_progname = argv[0]; + + WMApplication.applicationName = wstrdup(applicationName); + WMApplication.argc = *argc; + + WMApplication.argv = wmalloc((*argc + 1) * sizeof(char *)); + for (i = 0; i < *argc; i++) { + WMApplication.argv[i] = wstrdup(argv[i]); + } + WMApplication.argv[i] = NULL; + + /* initialize notification center */ + W_InitNotificationCenter(); +} + +void WMSetResourcePath(char *path) +{ + if (WMApplication.resourcePath) + wfree(WMApplication.resourcePath); + WMApplication.resourcePath = wstrdup(path); +} + +char *WMGetApplicationName() +{ + return WMApplication.applicationName; +} + +static char *checkFile(char *path, char *folder, char *ext, char *resource) +{ + char *ret; + int extralen; + + extralen = (ext ? strlen(ext) : 0) + (folder ? strlen(folder) : 0) + 4; + ret = wmalloc(strlen(path) + strlen(resource) + extralen + 8); + strcpy(ret, path); + if (folder) { + strcat(ret, "/"); + strcat(ret, folder); + } + if (ext) { + strcat(ret, "/"); + strcat(ret, ext); + } + strcat(ret, "/"); + strcat(ret, resource); + + if (access(ret, F_OK) != 0) { + wfree(ret); + ret = NULL; + } + + return ret; +} + +char *WMPathForResourceOfType(char *resource, char *ext) +{ + char *path = NULL; + char *tmp, *appdir; + int i; + + /* + * Paths are searched in this order: + * - resourcePath/ext + * - argv[0]/ext + * - GNUSTEP_USER_ROOT/Applications/ApplicationName.app/ext + * - ~/GNUstep/Applications/ApplicationName.app/ext + * - GNUSTEP_LOCAL_ROOT/Applications/ApplicationName.app/ext + * - /usr/local/GNUstep/Applications/ApplicationName.app/ext + * - GNUSTEP_SYSTEM_ROOT/Applications/ApplicationName.app/ext + * - /usr/GNUstep/Applications/ApplicationName.app/ext + */ + + if (WMApplication.resourcePath) { + path = checkFile(WMApplication.resourcePath, NULL, ext, resource); + if (path) + return path; + } + + if (WMApplication.argv[0]) { + tmp = wstrdup(WMApplication.argv[0]); + i = strlen(tmp); + while (i > 0 && tmp[i] != '/') + i--; + tmp[i] = 0; + if (i > 0) { + path = checkFile(tmp, NULL, ext, resource); + } else { + path = NULL; + } + wfree(tmp); + if (path) + return path; + } + + appdir = wmalloc(strlen(WMApplication.applicationName) + 20); + sprintf(appdir, "Applications/%s.app", WMApplication.applicationName); + + if (getenv("GNUSTEP_USER_ROOT")) { + path = checkFile(getenv("GNUSTEP_USER_ROOT"), appdir, ext, resource); + if (path) { + wfree(appdir); + return path; + } + } + + tmp = wusergnusteppath(); + if (tmp) { + path = checkFile(tmp, appdir, ext, resource); + if (path) { + wfree(appdir); + return path; + } + } + + if (getenv("GNUSTEP_LOCAL_ROOT")) { + path = checkFile(getenv("GNUSTEP_LOCAL_ROOT"), appdir, ext, resource); + if (path) { + wfree(appdir); + return path; + } + } + + path = checkFile("/usr/local/GNUstep", appdir, ext, resource); + if (path) { + wfree(appdir); + return path; + } + + if (getenv("GNUSTEP_SYSTEM_ROOT")) { + path = checkFile(getenv("GNUSTEP_SYSTEM_ROOT"), appdir, ext, resource); + if (path) { + wfree(appdir); + return path; + } + } + + path = checkFile("/usr/GNUstep", appdir, ext, resource); + if (path) { + wfree(appdir); + return path; + } + + return NULL; +}