34#include <libFreeWRL.h>
36#include "../lib/main/MainLoop.h"
54static int CaughtSEGV = FALSE;
55void fv_catch_SIGQUIT();
56void fv_catch_SIGSEGV();
59void fv_catch_SIGALRM(
int);
60void fv_catch_SIGHUP();
65char *get_current_dir();
66char *strBackslash2fore(
char *str);
76void fwg_register_consolemessage_callback(
void(*callback)(
char *));
77void fw_printstring(
char *str){
83int main (
int argc,
char **argv)
98 char * libpath = getenv(
"LD_LIBRARY_PATH");
100 libpath =
"/usr/lib64";
102 printf(
"\nlibrary path %s\n",libpath);
103 if(strstr(libpath,
"/tmp/.mount")){
105 char targetdir[2000];
107 char *ce = strstr(libpath,
"/lib/:");
109 strcpy(targetdir,libpath);
110 strcat(targetdir,
"/fonts");
111 printf(
"setting FONTS_DIR %s\n",targetdir);
112 setenv(
"FREEWRL_FONTS_DIR",targetdir,1);
115 char consoleBuffer[200];
117 fwg_register_consolemessage_callback(fw_printstring);
118 fwg_setConsoleParam_maxLines(30);
119 fwg_setConsoleParam_maxLineLength(70);
120 fwg_setConsoleParam_replaceTabs(1);
123 libver = libFreeWRL_get_version();
124 progver = freewrl_get_version();
125 if (strcmp(progver, libver)) {
126 sprintf(consoleBuffer ,
"FreeWRL expected library version %s, got %s...\n",progver, libver);
127 fwl_StringConsoleMessage(consoleBuffer);
129 sprintf(consoleBuffer,
"libfreewrl version %s\n", libver);
130 fwl_StringConsoleMessage(consoleBuffer);
138 if(strstr(argv[0],
"projectfiles"))
143 fdir = malloc(MAX_PATH);
144 xdir = malloc(MAX_PATH);
145 strcpy(fdir,
"FREEWRL_FONTS_DIR=");
147 strcpy(xdir,argv[0]);
148 xe = strstr(xdir,
"projectfiles");
150 xdir = strcat(xdir,
"appleOSX/OSX_Specific/fonts");
164 syspath = getenv(
"windir");
166 fdir = malloc(MAX_PATH);
167 strcpy(fdir,
"FREEWRL_FONTS_DIR=");
168 strcat(fdir,syspath);
169 strcat(fdir,
"/Fonts");
174 _putenv(
"FREEWRL_NO_VBOS=1");
184#ifdef WANT_SIGNALHANDLERS
185 signal(SIGTERM, (
void(*)(
int)) fv_catch_SIGQUIT);
186 signal(SIGSEGV, (
void(*)(
int)) fv_catch_SIGSEGV);
189 signal(SIGQUIT, (
void(*)(
int)) fv_catch_SIGQUIT);
190 signal(SIGALRM, (
void(*)(
int)) fv_catch_SIGALRM);
191 signal(SIGHUP, (
void(*)(
int)) fv_catch_SIGHUP);
198 fv_params->width = 672;
199 fv_params->height = 480;
201 fv_params->fullscreen = FALSE;
202 fv_params->winToEmbedInto = INT_ID_UNDEFINED;
203 fv_params->verbose = FALSE;
209 if (fv_parseCommandLine(argc, argv,fv_params, &url_index)) {
211 start_url = argv[url_index];
214 start_url = strBackslash2fore(start_url);
230 if (!fwl_initFreeWRL(fv_params)) {
231 ERROR_MSG(
"main: aborting during initialization.\n");
234 fwl_startFreeWRL(start_url);
248void fv_catch_SIGQUIT()
257void fv_catch_SIGSEGV()
263 printf(
"FreeWRL got a SIGSEGV - please feel free to report this - http://freewrl.sf.net.\n");
271void fv_catch_SIGHUP()
277void fv_catch_SIGALRM(
int sig)
279 signal(SIGALRM, SIG_IGN);
290 signal(SIGALRM, fv_catch_SIGALRM);