Solidify Modifier "Rim Only" Option
[blender-staging.git] / source / creator / creator_launch_win.c
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2014 by Blender Foundation.
19  * All rights reserved.
20  *
21  * Contributor(s): Sergey Sharybin.
22  *
23  * ***** END GPL LICENSE BLOCK *****
24  */
25
26 /* Binary name to launch. */
27 #define BLENDER_BINARY "blender-app.exe"
28
29 #define WIN32_LEAN_AND_MEAN
30 #include <stdio.h>
31 #include <stdlib.h>
32 #include <windows.h>
33
34 int main(int argc, char **argv)
35 {
36         PROCESS_INFORMATION processInformation = {0};
37         STARTUPINFOA startupInfo = {0};
38         BOOL result;
39         char command[65536];
40         int i, len = sizeof(command);
41
42         _putenv_s("OMP_WAIT_POLICY", "PASSIVE");
43
44         startupInfo.cb = sizeof(startupInfo);
45
46         strncpy(command, BLENDER_BINARY, len - 1);
47         len -= strlen(BLENDER_BINARY);
48         for (i = 1; i < argc; ++i) {
49                 strncat(command, " ", len - 1);
50                 strncat(command, argv[i], len - 2);
51                 len -= strlen(argv[i]) + 1;
52         }
53
54         result = CreateProcessA(NULL, command, NULL, NULL, TRUE,
55                                 0, NULL, NULL,
56                                 &startupInfo, &processInformation);
57
58         if (!result) {
59                 fprintf(stderr, "Error launching " BLENDER_BINARY "\n");
60                 return EXIT_FAILURE;
61         }
62
63         WaitForSingleObject(processInformation.hProcess, INFINITE);
64
65         CloseHandle(processInformation.hProcess);
66         CloseHandle(processInformation.hThread);
67
68         return EXIT_SUCCESS;
69 }