123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "main/main.h"
- #include "os_osx.h"
- #include <string.h>
- #include <unistd.h>
- int main(int argc, char **argv) {
- int first_arg = 1;
- const char *dbg_arg = "-NSDocumentRevisionsDebugMode";
- printf("arguments\n");
- for (int i = 0; i < argc; i++) {
- if (strcmp(dbg_arg, argv[i]) == 0)
- first_arg = i + 2;
- printf("%i: %s\n", i, argv[i]);
- };
- if (argc >= 1 && argv[0][0] == '/') {
-
- int len = strlen(argv[0]);
- while (len--) {
- if (argv[0][len] == '/') break;
- }
- if (len >= 0) {
- char *path = (char *)malloc(len + 1);
- memcpy(path, argv[0], len);
- path[len] = 0;
- char *pathinfo = (char *)malloc(strlen(path) + strlen("/../Info.plist") + 1);
-
- strcpy(pathinfo, path);
- strcat(pathinfo, "/../Info.plist");
- FILE *f = fopen(pathinfo, "rb");
- if (f) {
-
- fclose(f);
- chdir(path);
- chdir("../Resources");
- }
- free(path);
- free(pathinfo);
- }
- }
- #ifdef DEBUG_ENABLED
-
- char cwd[4096];
- getcwd(cwd, 4096);
- printf("Current path: %s\n", cwd);
- #endif
- OS_OSX os;
- Error err;
- if (os.open_with_filename != "") {
- char *argv_c = (char *)malloc(os.open_with_filename.utf8().size());
- memcpy(argv_c, os.open_with_filename.utf8().get_data(), os.open_with_filename.utf8().size());
- err = Main::setup(argv[0], 1, &argv_c);
- free(argv_c);
- } else {
- err = Main::setup(argv[0], argc - first_arg, &argv[first_arg]);
- }
- if (err != OK)
- return 255;
- if (Main::start())
- os.run();
- Main::cleanup();
- return os.get_exit_code();
- };
|