From 27105ec73d89c41cedd1ec686b1b5f429a3f213a Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sat, 10 May 2014 15:13:14 -0400 Subject: [PATCH] removing obselete export and build files --- build/windows/export/Makefile | 22 -- build/windows/export/application.exe | Bin 57156 -> 0 bytes build/windows/export/launcher.cpp | 407 --------------------------- java/application/template.exe | Bin 57156 -> 0 bytes java/application/template.plist | 77 ----- 5 files changed, 506 deletions(-) delete mode 100755 build/windows/export/Makefile delete mode 100755 build/windows/export/application.exe delete mode 100644 build/windows/export/launcher.cpp delete mode 100755 java/application/template.exe delete mode 100755 java/application/template.plist diff --git a/build/windows/export/Makefile b/build/windows/export/Makefile deleted file mode 100755 index 6c1dce21c..000000000 --- a/build/windows/export/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -CXXFLAGS = -mwindows -mno-cygwin -O2 -Wall -#POBJS = launcher.o launcher-rc.o -# don't want to include the p5 icons for the exported feller -AOBJS = launcher.o - -#processing.exe: $(POBJS) -# $(LINK.cc) $(CXXFLAGS) -o $@ $(POBJS) -# cp processing.exe ../work/ - -application.exe: $(AOBJS) - $(LINK.cc) $(CXXFLAGS) -DEXPORT -o $@ $(AOBJS) - cp application.exe ../work/modes/java/application/template.exe - cp application.exe ../../../java/application/template.exe - -$(POBJS): Makefile - -#launcher-rc.o: launcher.rc -# windres -i $< -o $@ - -clean: - $(RM) $(OBJS) application.exe -# $(RM) $(OBJS) processing.exe application.exe diff --git a/build/windows/export/application.exe b/build/windows/export/application.exe deleted file mode 100755 index 03d8d5753833e09d0a301454e2fc65a5913f2593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57156 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 aVE8LnRiZBug 112) - -// For revision 0201 (love that symmetry), the 'lib' folder was added to -// the java.library.path, so that we can hide the pile of DLLs included -// with some libraries (I'm looking at you, video), inside the lib folder. -// QTJAVA mess was also excised, now that we're switching to gstreamer. - -// The size of all of the strings was made sort of ambiguously large, since -// 1) nothing is hurt by allocating an extra few bytes temporarily and -// 2) if the user has a long path, and it gets copied five times over for the -// CLASSPATH, the program runs the risk of crashing. Bad bad. - -// TODO this code leaks memory all over the place because nothing has been -// done to properly handle creation/deletion of new strings. - -// TODO switch to unicode versions of all methods in order to better support -// running on non-English (non-Roman especially) versions of Windows. - -#define ARGS_FILE_PATH "\\lib\\args.txt" - -#include -#include -#include - - -void removeLineEndings(char *what); -char *scrubPath(char *incoming); -char *mallocChars(int count); -void removeQuotes(char *quoted); -void removeTrailingSlash(char *slashed); - -//#define DEBUG - -int STDCALL -WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow) -{ - // command line that was passed to this application - char *incoming_cmd_line = (char *)malloc((strlen(lpCmd) + 1) * sizeof(char)); - strcpy(incoming_cmd_line, lpCmd); - - // get the full path to the application that was launched, - // drop the app name but keep the path - char *exe_directory = (char *)malloc(MAX_PATH * sizeof(char)); - //*exe_directory = 0; - GetModuleFileName(NULL, exe_directory, MAX_PATH); - // remove the application name - *(strrchr(exe_directory, '\\')) = '\0'; - - - // open the file that contains the main class name and java args - - char *args_file_path = (char*) - malloc(strlen(exe_directory) * sizeof(char) + - strlen(ARGS_FILE_PATH) * sizeof(char) + 1); - strcpy(args_file_path, exe_directory); - strcat(args_file_path, ARGS_FILE_PATH); - - char java_args[512]; - char java_main_class[512]; - char jar_list[512]; - char *app_classpath = (char *)malloc(10 * strlen(exe_directory) + 4096); - - FILE *argsfile = fopen(args_file_path, "r"); - if (argsfile == NULL) { - sprintf(app_classpath, - "This program is missing the \"lib\" folder, " - "which should be located at\n%s", - exe_directory); - MessageBox(NULL, app_classpath, "Folder Missing", MB_OK); - return 0; - - } else { - fgets(java_args, 511, argsfile); - removeLineEndings(java_args); - fgets(java_main_class, 511, argsfile); - removeLineEndings(java_main_class); - fgets(jar_list, 511, argsfile); - removeLineEndings(jar_list); - -#ifdef DEBUG - MessageBox(NULL, java_args, "args", MB_OK); - MessageBox(NULL, java_main_class, "class", MB_OK); - MessageBox(NULL, jar_list, "jarlist", MB_OK); -#endif - - app_classpath[0] = 0; - char *jar = (char*) strtok(jar_list, ","); - while (jar != NULL) { - char entry[1024]; - sprintf(entry, "%s\\lib\\%s;", exe_directory, jar); - strcat(app_classpath, entry); - jar = (char*) strtok(NULL, ","); - } - fclose(argsfile); - } - - // - - char *cp = (char *)malloc(10 * strlen(exe_directory) + 4096); - - // test to see if running with a java runtime nearby or not - char *testpath = (char *)malloc(MAX_PATH * sizeof(char)); - *testpath = 0; - strcpy(testpath, exe_directory); - strcat(testpath, "\\java\\bin\\java.exe"); - FILE *fp = fopen(testpath, "rb"); - int local_jre_installed = (fp != NULL); - if (fp != NULL) fclose(fp); - - //const char *envClasspath = getenv("CLASSPATH"); - //char *env_classpath = (char *)malloc(16384 * sizeof(char)); - - // ignoring CLASSPATH for now, because it's not needed - // and causes more trouble than it's worth [0060] - //env_classpath[0] = 0; - - // don't put quotes around contents of cp, even though %s might have - // spaces in it. don't put quotes in it, because it's setting the - // environment variable for CLASSPATH, not being included on the - // command line. so setting the env var it's ok to have spaces, - // and the quotes prevent javax.comm.properties from being found. - - strcpy(cp, app_classpath); - if (local_jre_installed) { - char *local_jre = mallocChars(64 + strlen(exe_directory) * 2); - sprintf(local_jre, "%s\\java\\lib\\rt.jar;%s\\java\\lib\\tools.jar;", exe_directory, exe_directory); - strcat(cp, local_jre); - } - - char *clean_cp = scrubPath(cp); - //if (!SetEnvironmentVariable("CLASSPATH", cp)) { - if (!SetEnvironmentVariable("CLASSPATH", clean_cp)) { - MessageBox(NULL, "Could not set CLASSPATH environment variable", - "Processing Error", MB_OK); - return 1; - } - -#ifdef DEBUG - MessageBox(NULL, "done with classpath cleaning", "2", MB_OK); -#endif - - int env_path_length = strlen(getenv("PATH")); - char *env_path = mallocChars(env_path_length); - strcpy(env_path, getenv("PATH")); - char *clean_path; - - // need to add the local jre to the path for 'java mode' in the env - if (local_jre_installed) { - char *path_to_clean = - mallocChars(env_path_length + strlen(exe_directory) + 30); - sprintf(path_to_clean, "%s\\java\\bin;%s", exe_directory, env_path); - clean_path = scrubPath(path_to_clean); - } else { - clean_path = scrubPath(getenv("PATH")); - } - - //MessageBox(NULL, clean_path, "after scrubbing PATH", MB_OK); - //MessageBox(NULL, "3", "checking", MB_OK); - - if (!SetEnvironmentVariable("PATH", clean_path)) { - MessageBox(NULL, "Could not set PATH environment variable", - "Processing Error", MB_OK); - return 0; - } - - // what gets put together to pass to jre - char *outgoing_cmd_line = (char *)malloc(16384 * sizeof(char)); - - // prepend the args for -mx and -ms - strcpy(outgoing_cmd_line, java_args); - strcat(outgoing_cmd_line, " "); - - // for 2.0a2, add the 'lib' folder to the java.library.path - strcat(outgoing_cmd_line, "\"-Djava.library.path="); - strcat(outgoing_cmd_line, exe_directory); - strcat(outgoing_cmd_line, "\\lib\" "); - - // Ignore JNA from the system path - // https://github.com/processing/processing/issues/2239 - strcat(outgoing_cmd_line, "-Djna.nosys=true "); - - // add the name of the class to execute and a space before the next arg - strcat(outgoing_cmd_line, java_main_class); - strcat(outgoing_cmd_line, " "); - - // append additional incoming stuff (document names), if any - strcat(outgoing_cmd_line, incoming_cmd_line); - - //MessageBox(NULL, outgoing_cmd_line, "cmd_line", MB_OK); - - char *executable = - (char *)malloc((strlen(exe_directory) + 256) * sizeof(char)); - // exe_directory is the name path to the current application - - if (local_jre_installed) { - strcpy(executable, exe_directory); - // copy in the path for javaw, relative to launcher.exe - strcat(executable, "\\java\\bin\\javaw.exe"); - } else { -#ifdef DEBUG - strcpy(executable, "java.exe"); -#else - strcpy(executable, "javaw.exe"); -#endif - } - - SHELLEXECUTEINFO ShExecInfo; - -#ifdef DEBUG - MessageBox(NULL, outgoing_cmd_line, executable, MB_OK); -#endif - - // set up the execution info - ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); - ShExecInfo.fMask = 0; - ShExecInfo.hwnd = 0; - ShExecInfo.lpVerb = "open"; - ShExecInfo.lpFile = executable; - ShExecInfo.lpParameters = outgoing_cmd_line; - ShExecInfo.lpDirectory = exe_directory; - ShExecInfo.nShow = SW_SHOWNORMAL; - ShExecInfo.hInstApp = NULL; - - if (!ShellExecuteEx(&ShExecInfo)) { - MessageBox(NULL, "Error calling ShellExecuteEx()", - "Processing Error", MB_OK); - return 0; - } - - if (reinterpret_cast(ShExecInfo.hInstApp) <= 32) { - // some type of error occurred - switch (reinterpret_cast(ShExecInfo.hInstApp)) { - case ERROR_FILE_NOT_FOUND: - case ERROR_PATH_NOT_FOUND: - MessageBox(NULL, "A required file could not be found. \n" - "You may need to install a Java runtime\n" - "or re-install Processing.", - "Processing Error", MB_OK); - break; - case 0: - case SE_ERR_OOM: - MessageBox(NULL, "Not enough memory or resources to run at" - " this time.", "Processing Error", MB_OK); - - break; - default: - MessageBox(NULL, "There is a problem with your installation.\n" - "If the problem persists, re-install the program.", - "Processing Error", MB_OK); - break; - } - } - - return 0; - - /* - PROCESS_INFORMATION pi; - memset(&pi, 0, sizeof(pi)); - STARTUPINFO si; - memset(&si, 0, sizeof(si)); - si.cb = sizeof(si); - int wait = 0; - - DWORD dwExitCode = (DWORD) -1; - char cmdline[32768]; - //executable; - //outgoing_cmd_line; - //exe_directory; - strcpy(cmdline, "\""); - strcat(cmdline, executable); - strcat(cmdline, "\" "); - strcat(cmdline, outgoing_cmd_line); - - if (CreateProcess(NULL, cmdline, NULL, NULL, - //TRUE, priority, NULL, NULL, - TRUE, 0, NULL, exe_directory, - &si, &pi)) { - if (wait) { - WaitForSingleObject(pi.hProcess, INFINITE); - GetExitCodeProcess(pi.hProcess, &dwExitCode); - //debug("Exit code:\t%d\n", dwExitCode); - //closeHandles(); - char big_trouble[128]; - sprintf(big_trouble, "Sorry, could not launch. (Error %d)", - (int) dwExitCode); - MessageBox(NULL, big_trouble, "Apologies", MB_OK); - } else { - dwExitCode = 0; - } - } - return dwExitCode; - */ -} - - -void removeLineEndings(char *what) { - int index = strlen(what) - 1; - while (index >= 0) { - if ((what[index] == 10) || (what[index] == 13)) { - what[index] = 0; - --index; - } else { - return; - } - } -} - - -// take a PATH environment variable, split on semicolons, -// remove extraneous quotes, perhaps even make 8.3 syntax if necessary -char *scrubPath(char *incoming) { - char *cleaned = mallocChars(strlen(incoming) * 2); - - int found_so_far = 0; - char *p = (char*) strtok(incoming, ";"); - while (p != NULL) { - char entry[1024]; - /* - if (*p == '\"') { - // if this segment of the path contains quotes, remove them - int fixed_length = strlen(p) - 2; - strncpy(entry, &p[1], fixed_length); - entry[fixed_length] = 0; - //MessageBox(NULL, entry, "clipped", MB_OK); - - // if it doesn't actually end with a quote, then the person - // is screwed anyway.. they can deal with that themselves - } else { - strcpy(entry, p); - } - */ - strcpy(entry, p); - removeQuotes(entry); - // a trailing slash will cause FindFirstFile to fail.. grr [0109] - removeTrailingSlash(entry); - //MessageBox(NULL, entry, "entry", MB_OK); - - // if this path doesn't exist, don't add it - WIN32_FIND_DATA find_file_data; - HANDLE hfind = FindFirstFile(entry, &find_file_data); - if (hfind != INVALID_HANDLE_VALUE) { - if (found_so_far) strcat(cleaned, ";"); - strcat(cleaned, entry); - //MessageBox(NULL, cleaned, "cleaned so far", MB_OK); - FindClose(hfind); - found_so_far = 1; - //} else { - //MessageBox(NULL, entry, "removing", MB_OK); - } - // grab the next entry - p = (char*) strtok(NULL, ";"); - } - //MessageBox(NULL, cleaned, "scrubPath", MB_OK); - return cleaned; -} - - -// eventually make this handle unicode -char *mallocChars(int count) { - // add one for the terminator - char *outgoing = (char*) malloc(count * sizeof(char) + 1); - outgoing[0] = 0; // for safety - return outgoing; -} - - -void removeQuotes(char *quoted) { - int len = strlen(quoted); - // remove quote at the front - if (quoted[0] == '\"') { - for (int i = 0; i < len - 1; i++) { - quoted[i] = quoted[i+1]; - } - len--; - quoted[len] = 0; - } - // remove quote at the end - if (len > 1) { - if (quoted[len - 1] == '\"') { - len--; - quoted[len] = 0; - } - } -} - - -void removeTrailingSlash(char *slashed) { - int len = strlen(slashed); - if (len > 1) { - if (slashed[len - 1] == '\\') { - len--; - slashed[len] = 0; - } - } -} diff --git a/java/application/template.exe b/java/application/template.exe deleted file mode 100755 index 03d8d5753833e09d0a301454e2fc65a5913f2593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57156 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 aVE8LnRiZ - - - - CFBundleName - @@sketch@@ - CFBundleVersion - 1.0 - CFBundleAllowMixedLocalizations - true - CFBundleExecutable - JavaApplicationStub - CFBundleDevelopmentRegion - English - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleInfoDictionaryVersion - 6.0 - CFBundleIconFile - sketch.icns - CFBundleIdentifier - @@sketch@@ - - - LSUIPresentationMode - @@lsuipresentationmode@@ - - LSArchitecturePriority - - @@lsarchitecturepriority@@ - - - Java - - VMOptions - @@vmoptions@@ - - MainClass - @@sketch@@ - - - JVMVersion - 1.6* - - ClassPath - @@classpath@@ - - - Properties - - apple.laf.useScreenMenuBar - true - apple.awt.showGrowBox - false - com.apple.smallTabs - true - apple.awt.Antialiasing - false - apple.awt.TextAntialiasing - true - com.apple.hwaccel - true - - apple.awt.use-file-dialog-packages - true - - - -