newLISP Fan Club

Forum => newLISP in the real world => Topic started by: unya on February 15, 2011, 10:56:43 PM

Title: Windows Exe (made by link.lsp) could not read self exe-file.
Post by: unya on February 15, 2011, 10:56:43 PM
Hello,



Japanese (or CJK) may be environmental issues, UT8 version had problems with the execution.



1. executable (module link.lsp made from) will not run correctly from the Japanese path. Failure to read encrypted lisp code from self-execution file.

--> patch - self exeutable-filepath-name UTF-8 on startup.



2. Command Parameters (argv) is still MBCS. problem with main-args function as reference. Or some code to create and process, UTF8 must convert.

   (main-args returns Character is MBCS)

--> changed main-args returns UTF8 string list on startup.



attached diff-file and the chaned file (protos.h, newlisp.c, win32-path.c).

base file is newlisp-10.3.0.



thanks,
Title: Re: Windows Exe (made by link.lsp) could not read self exe-f
Post by: Lutz on February 16, 2011, 04:32:50 AM
Thanks Unya, well done.



The merge is accessible here:



http://www.newlisp.org/downloads/development/inprogress/
Title: Re: Windows Exe (made by link.lsp) could not read self exe-f
Post by: unya on February 17, 2011, 08:06:42 AM
Thank you, Lutz.



"MBSC" is typo in CHANGES-10.3.1.txt, it's "MBCS".



Regards,
Title: Re: Windows Exe (made by link.lsp) could not read self exe-f
Post by: kosh on April 05, 2011, 08:44:35 AM
Hi Lutz.



A ifdef macro syntax errors found. [CentOS 5.5 x86_64]

(It is necessary to be likely to contact Ted Walther, because configure-alt is used..)


$ ./configure-alt && make
...
make -f makefile_build
make[1]: Entering directory `/home/kosh/src/newlisp-10.3.1'
gcc -m64 -Wall -pedantic -Wno-long-long -Wno-strict-aliasing -O2 -c  -DNEWCONFIG newlisp.c
newlisp.c:629:27: error: operator '&&' has no right operand
make[1]: *** [newlisp.o] Error 1
make[1]: Leaving directory `/home/kosh/src/newlisp-10.3.1'
make: *** [default] Error 2


a patch file here:


--- newlisp.orig.c 2011-04-02 23:32:01.000000000 +0900
+++ newlisp.c   2011-04-06 00:06:12.000000000 +0900
@@ -626,7 +626,9 @@
 initStacks();
 initDefaultInAddr();
 
-#if WIN_32 && SUPPORT_UTF8
+/* #if defined(WIN_32) && defined(SUPPORT_UTF8) */
+#ifdef WIN_32
+#ifdef SUPPORT_UTF8
  {
    /*
      command line parameter is MBCS.
@@ -644,7 +646,8 @@
      argv = argv_utf8 ;
    }
  }
-#endif
+#endif  /* SUPPORT_UTF8 */
+#endif  /* WIN_32 */
 mainArgsSymbol->contents = (UINT)getMainArgs(argv);
 
 if((errorReg = setjmp(errorJump)) != 0)