Hi,<br><br>I just updated using CVS (CVSROOT=:pserver:anonymous@ecls.cvs.sourceforge.net:/cvsroot/ecls), and tried to compile using MS Visual Studio 2008 and msvc/Makefile.<br><br>In src/c/main.d, I run into the following error:<br>
../../src/c/main.d(726) : error C2065: 'temp' : undeclared identifier<br><br>And indeed, the variable temp is never declared. Fix proposal:<br><br>***************<br>*** 723,729 ****<br>                value = cl_format(4, Cnil, make_constant_base_string("~A=~A"), v<br>
ar,<br>                                  value);<br>                value = si_copy_to_simple_base_string(value);<br>!               putenv((char*)temp->base_string.self);<br>  #endif<br>        }<br>        if (ret_val == -1)<br>
--- 723,729 ----<br>                value = cl_format(4, Cnil, make_constant_base_string("~A=~A"), v<br>ar,<br>                                  value);<br>                value = si_copy_to_simple_base_string(value);<br>
!               putenv((char*)value->base_string.self);<br>  #endif<br>        }<br>        if (ret_val == -1)<br><br><br>With that fixed, I still run into more problems a little later in src/c/unixint.d. A couple of those errors occur because Windows knows SIGSEGV, but not SIGBUS. Those fixes are simple:<br>
<br>RCS file: /cvsroot/ecls/ecl/src/c/unixint.d,v<br>retrieving revision 1.38<br>diff -c -r1.38 unixint.d<br>*** ../src/c/unixint.d  26 Dec 2008 09:47:28 -0000      1.38<br>--- ../src/c/unixint.d  27 Feb 2009 07:32:37 -0000<br>
***************<br>*** 264,269 ****<br>--- 264,270 ----<br>                }<br>                ecl_internal_error("SIGSEGV without handler to jump to.");<br>        }<br>+ #ifdef SIGBUS // {<br>        case SIGBUS: {<br>
                ecl_frame_ptr destination = frs_sch(OBJNULL);<br>                if (destination) {<br>***************<br>*** 272,277 ****<br>--- 273,279 ----<br>                }<br>                ecl_internal_error("SIGSEGV without handler to jump to.");<br>
        }<br>+ #endif // }<br>        default:<br>                FEerror("Serious signal ~D caught.", 1, MAKE_FIXNUM(sig));<br>        }<br>***************<br>*** 352,359 ****<br>--- 354,363 ----<br>                        printf("Postponing signal %d\n", sig);<br>
                        sigaction(SIGSEGV, NULL, &oact);<br>                        printf("SIGSEGV Handler: %x\n", oact.sa_sigaction);<br>+ #ifdef SIGBUS // {<br>                        sigaction(SIGBUS, NULL, &oact);<br>
                        printf("SIGBUS Handler: %x\n", oact.sa_sigaction);<br>+ #endif // }<br>                        printf("sigsegv_handler: %x\n", sigsegv_handler);<br>  #ifdef ECL_USE_MPROTECT<br>
                        printf("Protecting %x\n", the_env);<br>***************<br>*** 497,504 ****<br>--- 501,510 ----<br>                                mysignal(code_int, SIG_DFL);<br>                        else if (code_int == SIGSEGV)<br>
                                mysignal(code_int, sigsegv_handler);<br>+ #ifdef SIGBUS // {<br>                        else if (code_int == SIGBUS)<br>                                mysignal(code_int, sigbus_handler);<br>
+ #endif // }<br>                        else<br>                                mysignal(code_int, non_evil_signal_handler);<br>                        @(return Ct)<br><br><br>With all of the above out of the way, I still run into:<br>
../../src/c/unixint.d(351) : error C2079: 'oact' uses undefined struct 'sigaction'<br>../../src/c/unixint.d(356) : error C2224: left of '.sa_sigaction' must have struct/union type<br>../../src/c/unixint.d(422) : error C2065: 'sigsegv_signal_handler' : undeclared identifier<br>
../../src/c/unixint.d(436) : error C2065: 'info' : undeclared identifier<br>../../src/c/unixint.d(436) : error C2223: left of '->si_addr' must point to struct/union<br><br>These occur because the code relies on UNIX-specific signal handling functionality. I'm not sure how to address those.<br>
<br>  Claus<br><br><a href="http://www.clausbrod.de/Blog">http://www.clausbrod.de/Blog</a><br><br>