Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/AndroWish%2FPatch+for+Tcl+8%2E6?V=0
QUERY_STRINGV=0
CONTENT_TYPE
DOCUMENT_URI/revision/AndroWish/Patch+for+Tcl+8.6
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.70.131.49
REMOTE_PORT47376
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR3.134.87.95
HTTP_CF_RAY87dbf089c8492c90-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_CF_CONNECTING_IP3.134.87.95
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: TR -> LINE

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: TR -> LINE} {}} CALL {my render_wikit {AndroWish/Patch for Tcl 8.6} #\ HG\ changeset\ patch\n#\ Parent\ 5eba39fc66c40cffb2b76b1130493b623087d3e3\n\[mq\]:\ androwish\n\ndiff\ --git\ a/Android.mk\ b/Android.mk\n---\ a/Android.mk\n+++\ b/Android.mk\n@@\ -15,11\ +15,76\ @@\ LOCAL_C_INCLUDES\ :=\ \$(LOCAL_PATH)/generi\n\ LOCAL_EXPORT_C_INCLUDES\ :=\ \$(LOCAL_C_INCLUDES)\n\ \n\ LOCAL_SRC_FILES\ :=\ \\\n+\ \ \ \ \ \ \ \ libtommath/bncore.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_reverse.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_fast_s_mp_mul_digs.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_fast_s_mp_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_add.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_add_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_and.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_clamp.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_clear.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_clear_multi.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_cmp.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_cmp_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_cmp_mag.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_copy.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_cnt_lsb.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_count_bits.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div_2.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div_2d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div_3.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_exch.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_expt_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_grow.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_copy.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_multi.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_set.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_set_int.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_size.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_karatsuba_mul.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_karatsuba_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_lshd.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mod.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mod_2d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mul.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mul_2.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mul_2d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mul_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_neg.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_or.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_radix_size.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_radix_smap.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_read_radix.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_rshd.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_set.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_set_int.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_shrink.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_sqrt.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_sub.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_sub_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_to_unsigned_bin.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_to_unsigned_bin_n.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_toom_mul.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_toom_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_toradix_n.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_unsigned_bin_size.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_xor.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_zero.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_s_mp_add.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_s_mp_mul_digs.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_s_mp_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_s_mp_sub.c\ \\\n\ \ \ \ \ \ \ \ \ generic/regcomp.c\ \\\n\ \ \ \ \ \ \ \ \ generic/regexec.c\ \\\n\ \ \ \ \ \ \ \ \ generic/regfree.c\ \\\n\ \ \ \ \ \ \ \ \ generic/regerror.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclAlloc.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclAssembly.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclAsync.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclBasic.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclBinary.c\ \\\n@@\ -29,10\ +94,15\ @@\ LOCAL_SRC_FILES\ :=\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCmdIL.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCmdMZ.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCompCmds.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclCompCmdsGR.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclCompCmdsSZ.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCompExpr.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCompile.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclConfig.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclDate.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclDictObj.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclEncoding.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclEnsemble.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclEnv.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclEvent.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclExecute.c\ \\\n@@\ -48,6\ +118,8\ @@\ LOCAL_SRC_FILES\ :=\ \\\n\ \ \ \ \ \ \ \ \ generic/tclIOGT.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclIOSock.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclIOUtil.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclIORChan.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclIORTrans.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclLink.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclListObj.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclLiteral.c\ \\\n@@\ -56,11\ +128,12\ @@\ LOCAL_SRC_FILES\ :=\ \\\n\ \ \ \ \ \ \ \ \ generic/tclNamesp.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclNotify.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclObj.c\ \\\n-\ \ \ \ \ \ \ \ generic/tclPanic.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOptimize.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclParse.c\ \\\n-\ \ \ \ \ \ \ \ generic/tclParseExpr.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclPathObj.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclPipe.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclPkg.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclPkgConfig.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclPosixStr.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclPreserve.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclProc.c\ \\\n@@\ -69,18\ +142,33\ @@\ LOCAL_SRC_FILES\ :=\ \\\n\ \ \ \ \ \ \ \ \ generic/tclResult.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclScan.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclStubInit.c\ \\\n-\ \ \ \ \ \ \ \ generic/tclStubLib.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclStringObj.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclStrToD.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTest.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTestObj.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTestProcBodyObj.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclThread.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclThreadAlloc.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclThreadJoin.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclThreadStorage.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclTimer.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTrace.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclUtil.c\ \\\n-\ \ \ \ \ \ \ \ generic/tclUtf.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclVar.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclZlib.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOO.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOBasic.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOCall.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOODefineCmds.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOInfo.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOMethod.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOStubInit.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclStubLib.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTomMathStubLib.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOStubLib.c\ \\\n\ \ \ \ \ \ \ \ \ generic/zipfs.c\ \\\n-\ \ \ \ \ \ \ \ unix/tclAppInit.c\ \\\n-\ \ \ \ \ \ \ \ unix/tclLoadDl.c\ \\\n+\ \ \ \ \ \ \ \ unix/tclAppInit.c\ \\\n+\ \ \ \ \ \ \ \ unix/tclLoadDl.c\ \\\n\ \ \ \ \ \ \ \ \ unix/tclUnixChan.c\ \\\n\ \ \ \ \ \ \ \ \ unix/tclUnixCompat.c\ \\\n\ \ \ \ \ \ \ \ \ unix/tclUnixEvent.c\ \\\n@@\ -112,6\ +200,7\ @@\ LOCAL_CFLAGS\ +=\ \\\n\ \ \ \ \ \ \ \ \ -DHAVE_TMPNAM=1\ \\\n\ \ \ \ \ \ \ \ \ -DHAVE_WAITPID=1\ \\\n\ \ \ \ \ \ \ \ \ -DUSE_TERMIOS=1\ \\\n+\ \ \ \ \ \ \ \ -DUSE_INTERP_ERRORLINE=1\ \\\n\ \ \ \ \ \ \ \ \ -DHAVE_SYS_TIME_H=1\ \\\n\ \ \ \ \ \ \ \ \ -DTIME_WITH_SYS_TIME=1\ \\\n\ \ \ \ \ \ \ \ \ -DHAVE_TM_ZONE=1\ \\\ndiff\ --git\ a/generic/tclInt.decls\ b/generic/tclInt.decls\n---\ a/generic/tclInt.decls\n+++\ b/generic/tclInt.decls\n@@\ -1006,6\ +1006,18\ @@\ declare\ 249\ \{\n\ declare\ 250\ \{\n\ \ \ \ \ void\ TclSetSlaveCancelFlags(Tcl_Interp\ *interp,\ int\ flags,\ int\ force)\n\ \}\n+\n+declare\ 251\ \{\n+\ \ \ \ int\ Tclzipfs_Init(Tcl_Interp\ *interp)\n+\}\n+declare\ 252\ \{\n+\ \ \ \ int\ Tclzipfs_Mount(Tcl_Interp\ *interp,\ const\ char\ *zipname,\n+\ \ \ \ \ \ \ \ const\ char\ *mntpt,\ const\ char\ *passwd)\n+\}\n+declare\ 253\ \{\n+\ \ \ \ int\ Tclzipfs_Unmount(Tcl_Interp\ *interp,\ const\ char\ *zipname)\n+\}\n+\n\ \f\n\ ##############################################################################\n\ \ndiff\ --git\ a/generic/tclIntDecls.h\ b/generic/tclIntDecls.h\n---\ a/generic/tclIntDecls.h\n+++\ b/generic/tclIntDecls.h\n@@\ -610,6\ +610,15\ @@\ EXTERN\ char\ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TclDoubleDigits(double\ dv\n\ /*\ 250\ */\n\ EXTERN\ void\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TclSetSlaveCancelFlags(Tcl_Interp\ *interp,\ int\ flags,\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int\ force)\;\n+/*\ 251\ */\n+EXTERN\ int\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tclzipfs_Init(Tcl_Interp\ *interp)\;\n+/*\ 252\ */\n+EXTERN\ int\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tclzipfs_Mount(Tcl_Interp\ *interp,\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ char\ *zipname,\ const\ char\ *mntpt,\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ char\ *passwd)\;\n+/*\ 253\ */\n+EXTERN\ int\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tclzipfs_Unmount(Tcl_Interp\ *interp,\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ char\ *zipname)\;\n\ \n\ typedef\ struct\ TclIntStubs\ \{\n\ \ \ \ \ int\ magic\;\n@@\ -866,6\ +875,9\ @@\ typedef\ struct\ TclIntStubs\ \{\n\ \ \ \ \ int\ (*tclCopyChannel)\ (Tcl_Interp\ *interp,\ Tcl_Channel\ inChan,\ Tcl_Channel\ outChan,\ Tcl_WideInt\ toRead,\ Tcl_Obj\ *cmdPtr)\;\ /*\ 248\ */\n\ \ \ \ \ char\ *\ (*tclDoubleDigits)\ (double\ dv,\ int\ ndigits,\ int\ flags,\ int\ *decpt,\ int\ *signum,\ char\ **endPtr)\;\ /*\ 249\ */\n\ \ \ \ \ void\ (*tclSetSlaveCancelFlags)\ (Tcl_Interp\ *interp,\ int\ flags,\ int\ force)\;\ /*\ 250\ */\n+\ \ \ \ int\ (*tclzipfs_Init)\ (Tcl_Interp\ *interp)\;\ /*\ 251\ */\n+\ \ \ \ int\ (*tclzipfs_Mount)\ (Tcl_Interp\ *interp,\ const\ char\ *zipname,\ const\ char\ *mntpt,\ const\ char\ *passwd)\;\ /*\ 252\ */\n+\ \ \ \ int\ (*tclzipfs_Unmount)\ (Tcl_Interp\ *interp,\ const\ char\ *zipname)\;\ /*\ 253\ */\n\ \}\ TclIntStubs\;\n\ \n\ #ifdef\ __cplusplus\n@@\ -1297,6\ +1309,12\ @@\ extern\ const\ TclIntStubs\ *tclIntStubsPtr\n\ \ \ \ \ \ \ \ \ (tclIntStubsPtr->tclDoubleDigits)\ /*\ 249\ */\n\ #define\ TclSetSlaveCancelFlags\ \\\n\ \ \ \ \ \ \ \ \ (tclIntStubsPtr->tclSetSlaveCancelFlags)\ /*\ 250\ */\n+#define\ Tclzipfs_Init\ \\\n+\ \ \ \ \ \ \ \ (tclIntStubsPtr->tclzipfs_Init)\ /*\ 251\ */\n+#define\ Tclzipfs_Mount\ \\\n+\ \ \ \ \ \ \ \ (tclIntStubsPtr->tclzipfs_Mount)\ /*\ 252\ */\n+#define\ Tclzipfs_Unmount\ \\\n+\ \ \ \ \ \ \ \ (tclIntStubsPtr->tclzipfs_Unmount)\ /*\ 253\ */\n\ \n\ #endif\ /*\ defined(USE_TCL_STUBS)\ */\n\ \ndiff\ --git\ a/generic/tclMain.c\ b/generic/tclMain.c\n---\ a/generic/tclMain.c\n+++\ b/generic/tclMain.c\n@@\ -34,6\ +34,10\ @@\n\ \n\ #include\ \"tclInt.h\"\n\ \n+#ifdef\ ZIPFS_IN_TCL\n+#include\ \"zipfs.h\"\n+#endif\n+\n\ /*\n\ \ *\ The\ default\ prompt\ used\ when\ the\ user\ has\ not\ overridden\ it.\n\ \ */\n@@\ -308,10\ +312,15\ @@\ Tcl_MainEx(\n\ \{\n\ \ \ \ \ Tcl_Obj\ *path,\ *resultPtr,\ *argvPtr,\ *appName\;\n\ \ \ \ \ const\ char\ *encodingName\ =\ NULL\;\n-\ \ \ \ int\ code,\ exitCode\ =\ 0\;\n+\ \ \ \ int\ code,\ length,\ exitCode\ =\ 0\;\n\ \ \ \ \ Tcl_MainLoopProc\ *mainLoopProc\;\n\ \ \ \ \ Tcl_Channel\ chan\;\n\ \ \ \ \ InteractiveState\ is\;\n+\ \ \ \ CONST\ char\ *zipFile\ =\ NULL\;\n+\ \ \ \ int\ autoRun\ =\ 1\;\n+#ifdef\ ZIPFS_IN_TCL\n+\ \ \ \ int\ zipOk\ =\ TCL_ERROR\;\n+#endif\n\ \n\ \ \ \ \ TclpSetInitialEncodings()\;\n\ \ \ \ \ TclpFindExecutable((const\ char\ *)argv\[0\])\;\n@@\ -329,6\ +338,19\ @@\ Tcl_MainEx(\n\ \ \ \ \ \ */\n\ \n\ \ \ \ \ if\ (NULL\ ==\ Tcl_GetStartupScript(NULL))\ \{\n+\ \ \ \ \ \ \ \ if\ (argc\ >\ 1)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ length\ =\ strlen(argv\[1\])\;\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ ((length\ >=\ 2)\ &&\ (strncmp(argv\[1\],\ \"-zip\",\ length)\ ==\ 0))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argc--\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argv++\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ ((argc\ >\ 1)\ &&\ (argv\[1\]\[0\]\ !=\ '-'))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ zipFile\ =\ argv\[1\]\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ autoRun\ =\ 0\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argc--\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argv++\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\ \n+\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ /*\n\ \ \ \ \ \ \ \ \ \ *\ Check\ whether\ first\ 3\ args\ (argv\[1\]\ -\ argv\[3\])\ look\ like\n\ \ \ \ \ \ \ \ \ \ *\ \ -encoding\ ENCODING\ FILENAME\n@@\ -377,6\ +399,48\ @@\ Tcl_MainEx(\n\ \ \ \ \ Tcl_SetVar2Ex(interp,\ \"tcl_interactive\",\ NULL,\n\ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_NewIntObj(!path\ &&\ is.tty),\ TCL_GLOBAL_ONLY)\;\n\ \n+\n+#ifdef\ ZIPFS_IN_TCL\n+\ \ \ \ zipOk\ =\ Tclzipfs_Init(interp)\;\n+\ \ \ \ if\ (zipOk\ ==\ TCL_OK)\ \{\n+\ \ \ \ \ \ \ \ int\ relax\ =\ 0\;\n+\n+\ \ \ \ \ \ \ \ if\ (zipFile\ ==\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ relax\ =\ 1\;\n+#ifdef\ ANDROID\n+\ \ \ \ \ \ \ \ \ \ \ \ zipFile\ =\ getenv(\"PACKAGE_CODE_PATH\")\;\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ (zipFile\ ==\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ zipFile\ =\ Tcl_GetNameOfExecutable()\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\n+#else\n+\ \ \ \ \ \ \ \ \ \ \ \ zipFile\ =\ Tcl_GetNameOfExecutable()\;\n+#endif\n+\ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ if\ (zipFile\ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ zipOk\ =\ Tclzipfs_Mount(interp,\ zipFile,\ \"\",\ NULL)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ (!relax\ &&\ (zipOk\ !=\ TCL_OK))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ exitCode\ =\ 1\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ goto\ done\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \}\ else\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ zipOk\ =\ TCL_ERROR\;\n+\ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ Tcl_ResetResult(interp)\;\n+\ \ \ \ \}\n+\ \ \ \ if\ (zipOk\ ==\ TCL_OK)\ \{\n+\ \ \ \ \ \ \ \ char\ *tcl_lib\ =\ \"/assets/tcl\"\ TCL_VERSION\;\n+\ \ \ \ \ \ \ \ char\ *tcl_pkg\ =\ \"/assets\"\;\n+\n+\ \ \ \ \ \ \ \ Tcl_SetVar2(interp,\ \"env\",\ \"TCL_LIBRARY\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_libPath\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_library\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_pkgPath\",\ tcl_pkg,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"auto_path\",\ tcl_lib,\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TCL_GLOBAL_ONLY\ |\ TCL_LIST_ELEMENT)\;\n+\n+\ \ \ \ \}\n+#endif\n+\ \ \ \ \n\ \ \ \ \ /*\n\ \ \ \ \ \ *\ Invoke\ application-specific\ initialization.\n\ \ \ \ \ \ */\n@@\ -390,6\ +454,9\ @@\ Tcl_MainEx(\n\ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_WriteObj(chan,\ Tcl_GetObjResult(interp))\;\n\ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_WriteChars(chan,\ \"\\n\",\ 1)\;\n\ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ if\ (zipFile\ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_DeleteInterp(interp)\;\n+\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \}\n\ \ \ \ \ if\ (Tcl_InterpDeleted(interp))\ \{\n\ \ \ \ \ \ \ \ \ goto\ done\;\n@@\ -406,6\ +473,77\ @@\ Tcl_MainEx(\n\ \ \ \ \ \ \ \ \ Tcl_CreateExitHandler(FreeMainInterp,\ interp)\;\n\ \ \ \ \ \}\n\ \n+#ifdef\ ZIPFS_IN_TCL\n+\ \ \ \ /*\n+\ \ \ \ \ *\ Setup\ auto\ loading\ info\ to\ point\ to\ mounted\ ZIP\ file.\n+\ \ \ \ \ */\n+\n+\ \ \ \ if\ (zipOk\ ==\ TCL_OK)\ \{\n+\ \ \ \ \ \ \ \ char\ *tcl_lib\ =\ \"/assets/tcl\"\ TCL_VERSION\;\n+\ \ \ \ \ \ \ \ char\ *tcl_pkg\ =\ \"/assets\"\;\n+\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_libPath\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_library\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_pkgPath\",\ tcl_pkg,\ TCL_GLOBAL_ONLY)\;\n+\n+\ \ \ \ \ \ \ \ /*\n+\ \ \ \ \ \ \ \ \ *\ We\ need\ to\ re-init\ encoding\ (after\ initializing\ Tcl),\n+\ \ \ \ \ \ \ \ \ *\ otherwise\ \"encoding\ system\"\ will\ return\ \"identity\"\n+\ \ \ \ \ \ \ \ \ */\n+\n+\ \ \ \ \ \ \ \ TclpSetInitialEncodings()\;\n+\ \ \ \ \}\n+\n+\ \ \ \ /*\n+\ \ \ \ \ *\ Set\ embedded\ application\ startup\ file,\ if\ any.\n+\ \ \ \ \ */\n+\n+\ \ \ \ if\ ((zipOk\ ==\ TCL_OK)\ &&\ autoRun)\ \{\n+\ \ \ \ \ \ \ \ char\ *filename\;\n+\ \ \ \ \ \ \ \ Tcl_Channel\ chan\;\n+\n+\ \ \ \ \ \ \ \ filename\ =\ \"/assets/app/main.tcl\"\;\n+\ \ \ \ \ \ \ \ chan\ =\ Tcl_OpenFileChannel(NULL,\ filename,\ \"r\",\ 0)\;\n+\ \ \ \ \ \ \ \ if\ (chan\ !=\ (Tcl_Channel)\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ CONST\ char\ *arg\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_Close(NULL,\ chan)\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ /*\n+\ \ \ \ \ \ \ \ \ \ \ \ \ *\ Push\ back\ script\ file\ to\ argv,\ if\ any.\n+\ \ \ \ \ \ \ \ \ \ \ \ \ */\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ ((arg\ =\ Tcl_GetStartupScript(NULL))\ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_Obj\ *v,\ *no\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ no\ =\ Tcl_NewStringObj(\"argv\",\ 4)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ v\ =\ Tcl_ObjGetVar2(interp,\ no,\ NULL,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (v\ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_Obj\ **objv,\ *n,\ *nv\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int\ objc,\ i\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ objc\ =\ 0\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_ListObjGetElements(NULL,\ v,\ &objc,\ &objv)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ n\ =\ Tcl_NewStringObj(arg,\ -1)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ nv\ =\ Tcl_NewListObj(1,\ &n)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ for\ (i\ =\ 0\;\ i\ <\ objc\;\ i++)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_ListObjAppendElement(NULL,\ nv,\ objv\[i\])\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_IncrRefCount(nv)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (Tcl_ObjSetVar2(interp,\ no,\ NULL,\ nv,\ TCL_GLOBAL_ONLY)\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_GlobalEval(interp,\ \"incr\ argc\")\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DecrRefCount(nv)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DecrRefCount(no)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_SetStartupScript(filename,\ NULL)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"argv0\",\ filename,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_interactive\",\ \"0\",\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ \}\n+\ \ \ \ \}\n+#endif\n+\n\ \ \ \ \ /*\n\ \ \ \ \ \ *\ Invoke\ the\ script\ specified\ on\ the\ command\ line,\ if\ any.\ Must\ fetch\ it\n\ \ \ \ \ \ *\ again,\ as\ the\ appInitProc\ might\ have\ reset\ it.\ndiff\ --git\ a/generic/tclStubInit.c\ b/generic/tclStubInit.c\n---\ a/generic/tclStubInit.c\n+++\ b/generic/tclStubInit.c\n@@\ -553,6\ +553,9\ @@\ static\ const\ TclIntStubs\ tclIntStubs\ =\ \{\n\ \ \ \ \ TclCopyChannel,\ /*\ 248\ */\n\ \ \ \ \ TclDoubleDigits,\ /*\ 249\ */\n\ \ \ \ \ TclSetSlaveCancelFlags,\ /*\ 250\ */\n+\ \ \ \ Tclzipfs_Init,\ /*\ 251\ */\n+\ \ \ \ Tclzipfs_Mount,\ /*\ 252\ */\n+\ \ \ \ Tclzipfs_Unmount,\ /*\ 253\ */\n\ \}\;\n\ \n\ static\ const\ TclIntPlatStubs\ tclIntPlatStubs\ =\ \{\ndiff\ --git\ a/unix/Makefile.in\ b/unix/Makefile.in\n---\ a/unix/Makefile.in\n+++\ b/unix/Makefile.in\n@@\ -308,7\ +308,7\ @@\ GENERIC_OBJS\ =\ regcomp.o\ regexec.o\ regfr\n\ \ \ \ \ \ \ \ \ tclStrToD.o\ tclThread.o\ \\\n\ \ \ \ \ \ \ \ \ tclThreadAlloc.o\ tclThreadJoin.o\ tclThreadStorage.o\ tclStubInit.o\ \\\n\ \ \ \ \ \ \ \ \ tclTimer.o\ tclTrace.o\ tclUtf.o\ tclUtil.o\ tclVar.o\ tclZlib.o\ \\\n-\ \ \ \ \ \ \ \ tclTomMathInterface.o\n+\ \ \ \ \ \ \ \ tclTomMathInterface.o\ zipfs.o\n\ \n\ OO_OBJS\ =\ tclOO.o\ tclOOBasic.o\ tclOOCall.o\ tclOODefineCmds.o\ tclOOInfo.o\ \\\n\ \ \ \ \ \ \ \ \ tclOOMethod.o\ tclOOStubInit.o\n@@\ -382,7\ +382,8\ @@\ GENERIC_HDRS\ =\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclPatch.h\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclPlatDecls.h\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclPort.h\ \\\n-\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclRegexp.h\n+\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclRegexp.h\ \\\n+\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/zipfs.h\n\ \n\ GENERIC_SRCS\ =\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/regcomp.c\ \\\n@@\ -462,7\ +463,8\ @@\ GENERIC_SRCS\ =\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclUtil.c\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclVar.c\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclAssembly.c\ \\\n-\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclZlib.c\n+\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclZlib.c\ \\\n+\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/zipfs.c\n\ \n\ OO_SRCS\ =\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclOO.c\ \\\n@@\ -1315,6\ +1317,9\ @@\ tclUtf.o:\ \$(GENERIC_DIR)/tclUtf.c\ \$(GENE\n\ tclVar.o:\ \$(GENERIC_DIR)/tclVar.c\n\ \ \ \ \ \ \ \ \ \$(CC)\ -c\ \$(CC_SWITCHES)\ \$(GENERIC_DIR)/tclVar.c\n\ \n+zipfs.o:\ \$(GENERIC_DIR)/zipfs.c\n+\ \ \ \ \ \ \ \ \$(CC)\ -c\ \$(CC_SWITCHES)\ \$(GENERIC_DIR)/zipfs.c\n+\n\ tclZlib.o:\ \$(GENERIC_DIR)/tclZlib.c\n\ \ \ \ \ \ \ \ \ \$(CC)\ -c\ \$(CC_SWITCHES)\ \$(ZLIB_INCLUDE)\ \$(GENERIC_DIR)/tclZlib.c\n\ \ndiff\ --git\ a/unix/tclLoadDl.c\ b/unix/tclLoadDl.c\n---\ a/unix/tclLoadDl.c\n+++\ b/unix/tclLoadDl.c\n@@\ -114,6\ +114,24\ @@\ TclpDlopen(\n\ \ \ \ \ \ \ \ \ \ */\n\ \ \ \ \ \ \ \ \ handle\ =\ dlopen(native,\ dlopenflags)\;\n\ #ifdef\ ANDROID\n+\ \ \ \ \ \ \ \ /*\n+\ \ \ \ \ \ \ \ \ *\ If\ not\ an\ absolute\ or\ relative\ path,\ try\ to\ load\n+\ \ \ \ \ \ \ \ \ *\ from\ \$INTERNAL_STORAGE/../lib\ (the\ place\ where\ the\n+\ \ \ \ \ \ \ \ \ *\ system\ has\ installed\ bundled\ .so\ files\ from\ the\ .APK)\n+\ \ \ \ \ \ \ \ \ */\n+\ \ \ \ \ \ \ \ if\ ((handle\ ==\ NULL)\ &&\ (strchr(native,\ '/')\ ==\ NULL))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ char\ *storage\ =\ getenv(\"INTERNAL_STORAGE\")\;\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_DString\ ds2\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ ((storage\ !=\ NULL)\ &&\ (storage\[0\]\ !=\ '\\0'))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringInit(&ds2)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringAppend(&ds2,\ storage,\ -1)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringAppend(&ds2,\ \"/../lib/\",\ -1)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringAppend(&ds2,\ native,\ -1)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ handle\ =\ dlopen(Tcl_DStringValue(&ds2),\ RTLD_NOW\ |\ RTLD_GLOBAL)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringFree(&ds2)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \}\n\ #endif\n\ \ \ \ \ \ \ \ \ Tcl_DStringFree(&ds)\;\n\ \ \ \ \ \} regexp2} CALL {my render {AndroWish/Patch for Tcl 8.6} #\ HG\ changeset\ patch\n#\ Parent\ 5eba39fc66c40cffb2b76b1130493b623087d3e3\n\[mq\]:\ androwish\n\ndiff\ --git\ a/Android.mk\ b/Android.mk\n---\ a/Android.mk\n+++\ b/Android.mk\n@@\ -15,11\ +15,76\ @@\ LOCAL_C_INCLUDES\ :=\ \$(LOCAL_PATH)/generi\n\ LOCAL_EXPORT_C_INCLUDES\ :=\ \$(LOCAL_C_INCLUDES)\n\ \n\ LOCAL_SRC_FILES\ :=\ \\\n+\ \ \ \ \ \ \ \ libtommath/bncore.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_reverse.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_fast_s_mp_mul_digs.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_fast_s_mp_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_add.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_add_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_and.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_clamp.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_clear.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_clear_multi.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_cmp.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_cmp_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_cmp_mag.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_copy.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_cnt_lsb.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_count_bits.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div_2.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div_2d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_div_3.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_exch.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_expt_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_grow.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_copy.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_multi.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_set.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_set_int.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_init_size.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_karatsuba_mul.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_karatsuba_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_lshd.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mod.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mod_2d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mul.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mul_2.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mul_2d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_mul_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_neg.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_or.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_radix_size.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_radix_smap.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_read_radix.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_rshd.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_set.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_set_int.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_shrink.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_sqrt.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_sub.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_sub_d.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_to_unsigned_bin.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_to_unsigned_bin_n.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_toom_mul.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_toom_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_toradix_n.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_unsigned_bin_size.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_xor.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_mp_zero.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_s_mp_add.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_s_mp_mul_digs.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_s_mp_sqr.c\ \\\n+\ \ \ \ \ \ \ \ libtommath/bn_s_mp_sub.c\ \\\n\ \ \ \ \ \ \ \ \ generic/regcomp.c\ \\\n\ \ \ \ \ \ \ \ \ generic/regexec.c\ \\\n\ \ \ \ \ \ \ \ \ generic/regfree.c\ \\\n\ \ \ \ \ \ \ \ \ generic/regerror.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclAlloc.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclAssembly.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclAsync.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclBasic.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclBinary.c\ \\\n@@\ -29,10\ +94,15\ @@\ LOCAL_SRC_FILES\ :=\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCmdIL.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCmdMZ.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCompCmds.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclCompCmdsGR.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclCompCmdsSZ.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCompExpr.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclCompile.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclConfig.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclDate.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclDictObj.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclEncoding.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclEnsemble.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclEnv.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclEvent.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclExecute.c\ \\\n@@\ -48,6\ +118,8\ @@\ LOCAL_SRC_FILES\ :=\ \\\n\ \ \ \ \ \ \ \ \ generic/tclIOGT.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclIOSock.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclIOUtil.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclIORChan.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclIORTrans.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclLink.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclListObj.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclLiteral.c\ \\\n@@\ -56,11\ +128,12\ @@\ LOCAL_SRC_FILES\ :=\ \\\n\ \ \ \ \ \ \ \ \ generic/tclNamesp.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclNotify.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclObj.c\ \\\n-\ \ \ \ \ \ \ \ generic/tclPanic.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOptimize.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclParse.c\ \\\n-\ \ \ \ \ \ \ \ generic/tclParseExpr.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclPathObj.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclPipe.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclPkg.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclPkgConfig.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclPosixStr.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclPreserve.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclProc.c\ \\\n@@\ -69,18\ +142,33\ @@\ LOCAL_SRC_FILES\ :=\ \\\n\ \ \ \ \ \ \ \ \ generic/tclResult.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclScan.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclStubInit.c\ \\\n-\ \ \ \ \ \ \ \ generic/tclStubLib.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclStringObj.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclStrToD.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTest.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTestObj.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTestProcBodyObj.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclThread.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclThreadAlloc.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclThreadJoin.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclThreadStorage.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclTimer.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTrace.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclUtil.c\ \\\n-\ \ \ \ \ \ \ \ generic/tclUtf.c\ \\\n\ \ \ \ \ \ \ \ \ generic/tclVar.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclZlib.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOO.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOBasic.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOCall.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOODefineCmds.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOInfo.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOMethod.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOStubInit.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclStubLib.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclTomMathStubLib.c\ \\\n+\ \ \ \ \ \ \ \ generic/tclOOStubLib.c\ \\\n\ \ \ \ \ \ \ \ \ generic/zipfs.c\ \\\n-\ \ \ \ \ \ \ \ unix/tclAppInit.c\ \\\n-\ \ \ \ \ \ \ \ unix/tclLoadDl.c\ \\\n+\ \ \ \ \ \ \ \ unix/tclAppInit.c\ \\\n+\ \ \ \ \ \ \ \ unix/tclLoadDl.c\ \\\n\ \ \ \ \ \ \ \ \ unix/tclUnixChan.c\ \\\n\ \ \ \ \ \ \ \ \ unix/tclUnixCompat.c\ \\\n\ \ \ \ \ \ \ \ \ unix/tclUnixEvent.c\ \\\n@@\ -112,6\ +200,7\ @@\ LOCAL_CFLAGS\ +=\ \\\n\ \ \ \ \ \ \ \ \ -DHAVE_TMPNAM=1\ \\\n\ \ \ \ \ \ \ \ \ -DHAVE_WAITPID=1\ \\\n\ \ \ \ \ \ \ \ \ -DUSE_TERMIOS=1\ \\\n+\ \ \ \ \ \ \ \ -DUSE_INTERP_ERRORLINE=1\ \\\n\ \ \ \ \ \ \ \ \ -DHAVE_SYS_TIME_H=1\ \\\n\ \ \ \ \ \ \ \ \ -DTIME_WITH_SYS_TIME=1\ \\\n\ \ \ \ \ \ \ \ \ -DHAVE_TM_ZONE=1\ \\\ndiff\ --git\ a/generic/tclInt.decls\ b/generic/tclInt.decls\n---\ a/generic/tclInt.decls\n+++\ b/generic/tclInt.decls\n@@\ -1006,6\ +1006,18\ @@\ declare\ 249\ \{\n\ declare\ 250\ \{\n\ \ \ \ \ void\ TclSetSlaveCancelFlags(Tcl_Interp\ *interp,\ int\ flags,\ int\ force)\n\ \}\n+\n+declare\ 251\ \{\n+\ \ \ \ int\ Tclzipfs_Init(Tcl_Interp\ *interp)\n+\}\n+declare\ 252\ \{\n+\ \ \ \ int\ Tclzipfs_Mount(Tcl_Interp\ *interp,\ const\ char\ *zipname,\n+\ \ \ \ \ \ \ \ const\ char\ *mntpt,\ const\ char\ *passwd)\n+\}\n+declare\ 253\ \{\n+\ \ \ \ int\ Tclzipfs_Unmount(Tcl_Interp\ *interp,\ const\ char\ *zipname)\n+\}\n+\n\ \f\n\ ##############################################################################\n\ \ndiff\ --git\ a/generic/tclIntDecls.h\ b/generic/tclIntDecls.h\n---\ a/generic/tclIntDecls.h\n+++\ b/generic/tclIntDecls.h\n@@\ -610,6\ +610,15\ @@\ EXTERN\ char\ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TclDoubleDigits(double\ dv\n\ /*\ 250\ */\n\ EXTERN\ void\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TclSetSlaveCancelFlags(Tcl_Interp\ *interp,\ int\ flags,\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int\ force)\;\n+/*\ 251\ */\n+EXTERN\ int\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tclzipfs_Init(Tcl_Interp\ *interp)\;\n+/*\ 252\ */\n+EXTERN\ int\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tclzipfs_Mount(Tcl_Interp\ *interp,\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ char\ *zipname,\ const\ char\ *mntpt,\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ char\ *passwd)\;\n+/*\ 253\ */\n+EXTERN\ int\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tclzipfs_Unmount(Tcl_Interp\ *interp,\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ char\ *zipname)\;\n\ \n\ typedef\ struct\ TclIntStubs\ \{\n\ \ \ \ \ int\ magic\;\n@@\ -866,6\ +875,9\ @@\ typedef\ struct\ TclIntStubs\ \{\n\ \ \ \ \ int\ (*tclCopyChannel)\ (Tcl_Interp\ *interp,\ Tcl_Channel\ inChan,\ Tcl_Channel\ outChan,\ Tcl_WideInt\ toRead,\ Tcl_Obj\ *cmdPtr)\;\ /*\ 248\ */\n\ \ \ \ \ char\ *\ (*tclDoubleDigits)\ (double\ dv,\ int\ ndigits,\ int\ flags,\ int\ *decpt,\ int\ *signum,\ char\ **endPtr)\;\ /*\ 249\ */\n\ \ \ \ \ void\ (*tclSetSlaveCancelFlags)\ (Tcl_Interp\ *interp,\ int\ flags,\ int\ force)\;\ /*\ 250\ */\n+\ \ \ \ int\ (*tclzipfs_Init)\ (Tcl_Interp\ *interp)\;\ /*\ 251\ */\n+\ \ \ \ int\ (*tclzipfs_Mount)\ (Tcl_Interp\ *interp,\ const\ char\ *zipname,\ const\ char\ *mntpt,\ const\ char\ *passwd)\;\ /*\ 252\ */\n+\ \ \ \ int\ (*tclzipfs_Unmount)\ (Tcl_Interp\ *interp,\ const\ char\ *zipname)\;\ /*\ 253\ */\n\ \}\ TclIntStubs\;\n\ \n\ #ifdef\ __cplusplus\n@@\ -1297,6\ +1309,12\ @@\ extern\ const\ TclIntStubs\ *tclIntStubsPtr\n\ \ \ \ \ \ \ \ \ (tclIntStubsPtr->tclDoubleDigits)\ /*\ 249\ */\n\ #define\ TclSetSlaveCancelFlags\ \\\n\ \ \ \ \ \ \ \ \ (tclIntStubsPtr->tclSetSlaveCancelFlags)\ /*\ 250\ */\n+#define\ Tclzipfs_Init\ \\\n+\ \ \ \ \ \ \ \ (tclIntStubsPtr->tclzipfs_Init)\ /*\ 251\ */\n+#define\ Tclzipfs_Mount\ \\\n+\ \ \ \ \ \ \ \ (tclIntStubsPtr->tclzipfs_Mount)\ /*\ 252\ */\n+#define\ Tclzipfs_Unmount\ \\\n+\ \ \ \ \ \ \ \ (tclIntStubsPtr->tclzipfs_Unmount)\ /*\ 253\ */\n\ \n\ #endif\ /*\ defined(USE_TCL_STUBS)\ */\n\ \ndiff\ --git\ a/generic/tclMain.c\ b/generic/tclMain.c\n---\ a/generic/tclMain.c\n+++\ b/generic/tclMain.c\n@@\ -34,6\ +34,10\ @@\n\ \n\ #include\ \"tclInt.h\"\n\ \n+#ifdef\ ZIPFS_IN_TCL\n+#include\ \"zipfs.h\"\n+#endif\n+\n\ /*\n\ \ *\ The\ default\ prompt\ used\ when\ the\ user\ has\ not\ overridden\ it.\n\ \ */\n@@\ -308,10\ +312,15\ @@\ Tcl_MainEx(\n\ \{\n\ \ \ \ \ Tcl_Obj\ *path,\ *resultPtr,\ *argvPtr,\ *appName\;\n\ \ \ \ \ const\ char\ *encodingName\ =\ NULL\;\n-\ \ \ \ int\ code,\ exitCode\ =\ 0\;\n+\ \ \ \ int\ code,\ length,\ exitCode\ =\ 0\;\n\ \ \ \ \ Tcl_MainLoopProc\ *mainLoopProc\;\n\ \ \ \ \ Tcl_Channel\ chan\;\n\ \ \ \ \ InteractiveState\ is\;\n+\ \ \ \ CONST\ char\ *zipFile\ =\ NULL\;\n+\ \ \ \ int\ autoRun\ =\ 1\;\n+#ifdef\ ZIPFS_IN_TCL\n+\ \ \ \ int\ zipOk\ =\ TCL_ERROR\;\n+#endif\n\ \n\ \ \ \ \ TclpSetInitialEncodings()\;\n\ \ \ \ \ TclpFindExecutable((const\ char\ *)argv\[0\])\;\n@@\ -329,6\ +338,19\ @@\ Tcl_MainEx(\n\ \ \ \ \ \ */\n\ \n\ \ \ \ \ if\ (NULL\ ==\ Tcl_GetStartupScript(NULL))\ \{\n+\ \ \ \ \ \ \ \ if\ (argc\ >\ 1)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ length\ =\ strlen(argv\[1\])\;\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ ((length\ >=\ 2)\ &&\ (strncmp(argv\[1\],\ \"-zip\",\ length)\ ==\ 0))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argc--\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argv++\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ ((argc\ >\ 1)\ &&\ (argv\[1\]\[0\]\ !=\ '-'))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ zipFile\ =\ argv\[1\]\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ autoRun\ =\ 0\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argc--\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argv++\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\ \n+\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ /*\n\ \ \ \ \ \ \ \ \ \ *\ Check\ whether\ first\ 3\ args\ (argv\[1\]\ -\ argv\[3\])\ look\ like\n\ \ \ \ \ \ \ \ \ \ *\ \ -encoding\ ENCODING\ FILENAME\n@@\ -377,6\ +399,48\ @@\ Tcl_MainEx(\n\ \ \ \ \ Tcl_SetVar2Ex(interp,\ \"tcl_interactive\",\ NULL,\n\ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_NewIntObj(!path\ &&\ is.tty),\ TCL_GLOBAL_ONLY)\;\n\ \n+\n+#ifdef\ ZIPFS_IN_TCL\n+\ \ \ \ zipOk\ =\ Tclzipfs_Init(interp)\;\n+\ \ \ \ if\ (zipOk\ ==\ TCL_OK)\ \{\n+\ \ \ \ \ \ \ \ int\ relax\ =\ 0\;\n+\n+\ \ \ \ \ \ \ \ if\ (zipFile\ ==\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ relax\ =\ 1\;\n+#ifdef\ ANDROID\n+\ \ \ \ \ \ \ \ \ \ \ \ zipFile\ =\ getenv(\"PACKAGE_CODE_PATH\")\;\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ (zipFile\ ==\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ zipFile\ =\ Tcl_GetNameOfExecutable()\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\n+#else\n+\ \ \ \ \ \ \ \ \ \ \ \ zipFile\ =\ Tcl_GetNameOfExecutable()\;\n+#endif\n+\ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ if\ (zipFile\ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ zipOk\ =\ Tclzipfs_Mount(interp,\ zipFile,\ \"\",\ NULL)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ (!relax\ &&\ (zipOk\ !=\ TCL_OK))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ exitCode\ =\ 1\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ goto\ done\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \}\ else\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ zipOk\ =\ TCL_ERROR\;\n+\ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ Tcl_ResetResult(interp)\;\n+\ \ \ \ \}\n+\ \ \ \ if\ (zipOk\ ==\ TCL_OK)\ \{\n+\ \ \ \ \ \ \ \ char\ *tcl_lib\ =\ \"/assets/tcl\"\ TCL_VERSION\;\n+\ \ \ \ \ \ \ \ char\ *tcl_pkg\ =\ \"/assets\"\;\n+\n+\ \ \ \ \ \ \ \ Tcl_SetVar2(interp,\ \"env\",\ \"TCL_LIBRARY\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_libPath\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_library\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_pkgPath\",\ tcl_pkg,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"auto_path\",\ tcl_lib,\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TCL_GLOBAL_ONLY\ |\ TCL_LIST_ELEMENT)\;\n+\n+\ \ \ \ \}\n+#endif\n+\ \ \ \ \n\ \ \ \ \ /*\n\ \ \ \ \ \ *\ Invoke\ application-specific\ initialization.\n\ \ \ \ \ \ */\n@@\ -390,6\ +454,9\ @@\ Tcl_MainEx(\n\ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_WriteObj(chan,\ Tcl_GetObjResult(interp))\;\n\ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_WriteChars(chan,\ \"\\n\",\ 1)\;\n\ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ if\ (zipFile\ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_DeleteInterp(interp)\;\n+\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \}\n\ \ \ \ \ if\ (Tcl_InterpDeleted(interp))\ \{\n\ \ \ \ \ \ \ \ \ goto\ done\;\n@@\ -406,6\ +473,77\ @@\ Tcl_MainEx(\n\ \ \ \ \ \ \ \ \ Tcl_CreateExitHandler(FreeMainInterp,\ interp)\;\n\ \ \ \ \ \}\n\ \n+#ifdef\ ZIPFS_IN_TCL\n+\ \ \ \ /*\n+\ \ \ \ \ *\ Setup\ auto\ loading\ info\ to\ point\ to\ mounted\ ZIP\ file.\n+\ \ \ \ \ */\n+\n+\ \ \ \ if\ (zipOk\ ==\ TCL_OK)\ \{\n+\ \ \ \ \ \ \ \ char\ *tcl_lib\ =\ \"/assets/tcl\"\ TCL_VERSION\;\n+\ \ \ \ \ \ \ \ char\ *tcl_pkg\ =\ \"/assets\"\;\n+\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_libPath\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_library\",\ tcl_lib,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_pkgPath\",\ tcl_pkg,\ TCL_GLOBAL_ONLY)\;\n+\n+\ \ \ \ \ \ \ \ /*\n+\ \ \ \ \ \ \ \ \ *\ We\ need\ to\ re-init\ encoding\ (after\ initializing\ Tcl),\n+\ \ \ \ \ \ \ \ \ *\ otherwise\ \"encoding\ system\"\ will\ return\ \"identity\"\n+\ \ \ \ \ \ \ \ \ */\n+\n+\ \ \ \ \ \ \ \ TclpSetInitialEncodings()\;\n+\ \ \ \ \}\n+\n+\ \ \ \ /*\n+\ \ \ \ \ *\ Set\ embedded\ application\ startup\ file,\ if\ any.\n+\ \ \ \ \ */\n+\n+\ \ \ \ if\ ((zipOk\ ==\ TCL_OK)\ &&\ autoRun)\ \{\n+\ \ \ \ \ \ \ \ char\ *filename\;\n+\ \ \ \ \ \ \ \ Tcl_Channel\ chan\;\n+\n+\ \ \ \ \ \ \ \ filename\ =\ \"/assets/app/main.tcl\"\;\n+\ \ \ \ \ \ \ \ chan\ =\ Tcl_OpenFileChannel(NULL,\ filename,\ \"r\",\ 0)\;\n+\ \ \ \ \ \ \ \ if\ (chan\ !=\ (Tcl_Channel)\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ CONST\ char\ *arg\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_Close(NULL,\ chan)\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ /*\n+\ \ \ \ \ \ \ \ \ \ \ \ \ *\ Push\ back\ script\ file\ to\ argv,\ if\ any.\n+\ \ \ \ \ \ \ \ \ \ \ \ \ */\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ ((arg\ =\ Tcl_GetStartupScript(NULL))\ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_Obj\ *v,\ *no\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ no\ =\ Tcl_NewStringObj(\"argv\",\ 4)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ v\ =\ Tcl_ObjGetVar2(interp,\ no,\ NULL,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (v\ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_Obj\ **objv,\ *n,\ *nv\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int\ objc,\ i\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ objc\ =\ 0\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_ListObjGetElements(NULL,\ v,\ &objc,\ &objv)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ n\ =\ Tcl_NewStringObj(arg,\ -1)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ nv\ =\ Tcl_NewListObj(1,\ &n)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ for\ (i\ =\ 0\;\ i\ <\ objc\;\ i++)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_ListObjAppendElement(NULL,\ nv,\ objv\[i\])\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_IncrRefCount(nv)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (Tcl_ObjSetVar2(interp,\ no,\ NULL,\ nv,\ TCL_GLOBAL_ONLY)\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ !=\ NULL)\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_GlobalEval(interp,\ \"incr\ argc\")\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DecrRefCount(nv)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DecrRefCount(no)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_SetStartupScript(filename,\ NULL)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"argv0\",\ filename,\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_SetVar(interp,\ \"tcl_interactive\",\ \"0\",\ TCL_GLOBAL_ONLY)\;\n+\ \ \ \ \ \ \ \ \}\n+\ \ \ \ \}\n+#endif\n+\n\ \ \ \ \ /*\n\ \ \ \ \ \ *\ Invoke\ the\ script\ specified\ on\ the\ command\ line,\ if\ any.\ Must\ fetch\ it\n\ \ \ \ \ \ *\ again,\ as\ the\ appInitProc\ might\ have\ reset\ it.\ndiff\ --git\ a/generic/tclStubInit.c\ b/generic/tclStubInit.c\n---\ a/generic/tclStubInit.c\n+++\ b/generic/tclStubInit.c\n@@\ -553,6\ +553,9\ @@\ static\ const\ TclIntStubs\ tclIntStubs\ =\ \{\n\ \ \ \ \ TclCopyChannel,\ /*\ 248\ */\n\ \ \ \ \ TclDoubleDigits,\ /*\ 249\ */\n\ \ \ \ \ TclSetSlaveCancelFlags,\ /*\ 250\ */\n+\ \ \ \ Tclzipfs_Init,\ /*\ 251\ */\n+\ \ \ \ Tclzipfs_Mount,\ /*\ 252\ */\n+\ \ \ \ Tclzipfs_Unmount,\ /*\ 253\ */\n\ \}\;\n\ \n\ static\ const\ TclIntPlatStubs\ tclIntPlatStubs\ =\ \{\ndiff\ --git\ a/unix/Makefile.in\ b/unix/Makefile.in\n---\ a/unix/Makefile.in\n+++\ b/unix/Makefile.in\n@@\ -308,7\ +308,7\ @@\ GENERIC_OBJS\ =\ regcomp.o\ regexec.o\ regfr\n\ \ \ \ \ \ \ \ \ tclStrToD.o\ tclThread.o\ \\\n\ \ \ \ \ \ \ \ \ tclThreadAlloc.o\ tclThreadJoin.o\ tclThreadStorage.o\ tclStubInit.o\ \\\n\ \ \ \ \ \ \ \ \ tclTimer.o\ tclTrace.o\ tclUtf.o\ tclUtil.o\ tclVar.o\ tclZlib.o\ \\\n-\ \ \ \ \ \ \ \ tclTomMathInterface.o\n+\ \ \ \ \ \ \ \ tclTomMathInterface.o\ zipfs.o\n\ \n\ OO_OBJS\ =\ tclOO.o\ tclOOBasic.o\ tclOOCall.o\ tclOODefineCmds.o\ tclOOInfo.o\ \\\n\ \ \ \ \ \ \ \ \ tclOOMethod.o\ tclOOStubInit.o\n@@\ -382,7\ +382,8\ @@\ GENERIC_HDRS\ =\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclPatch.h\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclPlatDecls.h\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclPort.h\ \\\n-\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclRegexp.h\n+\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclRegexp.h\ \\\n+\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/zipfs.h\n\ \n\ GENERIC_SRCS\ =\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/regcomp.c\ \\\n@@\ -462,7\ +463,8\ @@\ GENERIC_SRCS\ =\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclUtil.c\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclVar.c\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclAssembly.c\ \\\n-\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclZlib.c\n+\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclZlib.c\ \\\n+\ \ \ \ \ \ \ \ \$(GENERIC_DIR)/zipfs.c\n\ \n\ OO_SRCS\ =\ \\\n\ \ \ \ \ \ \ \ \ \$(GENERIC_DIR)/tclOO.c\ \\\n@@\ -1315,6\ +1317,9\ @@\ tclUtf.o:\ \$(GENERIC_DIR)/tclUtf.c\ \$(GENE\n\ tclVar.o:\ \$(GENERIC_DIR)/tclVar.c\n\ \ \ \ \ \ \ \ \ \$(CC)\ -c\ \$(CC_SWITCHES)\ \$(GENERIC_DIR)/tclVar.c\n\ \n+zipfs.o:\ \$(GENERIC_DIR)/zipfs.c\n+\ \ \ \ \ \ \ \ \$(CC)\ -c\ \$(CC_SWITCHES)\ \$(GENERIC_DIR)/zipfs.c\n+\n\ tclZlib.o:\ \$(GENERIC_DIR)/tclZlib.c\n\ \ \ \ \ \ \ \ \ \$(CC)\ -c\ \$(CC_SWITCHES)\ \$(ZLIB_INCLUDE)\ \$(GENERIC_DIR)/tclZlib.c\n\ \ndiff\ --git\ a/unix/tclLoadDl.c\ b/unix/tclLoadDl.c\n---\ a/unix/tclLoadDl.c\n+++\ b/unix/tclLoadDl.c\n@@\ -114,6\ +114,24\ @@\ TclpDlopen(\n\ \ \ \ \ \ \ \ \ \ */\n\ \ \ \ \ \ \ \ \ handle\ =\ dlopen(native,\ dlopenflags)\;\n\ #ifdef\ ANDROID\n+\ \ \ \ \ \ \ \ /*\n+\ \ \ \ \ \ \ \ \ *\ If\ not\ an\ absolute\ or\ relative\ path,\ try\ to\ load\n+\ \ \ \ \ \ \ \ \ *\ from\ \$INTERNAL_STORAGE/../lib\ (the\ place\ where\ the\n+\ \ \ \ \ \ \ \ \ *\ system\ has\ installed\ bundled\ .so\ files\ from\ the\ .APK)\n+\ \ \ \ \ \ \ \ \ */\n+\ \ \ \ \ \ \ \ if\ ((handle\ ==\ NULL)\ &&\ (strchr(native,\ '/')\ ==\ NULL))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ char\ *storage\ =\ getenv(\"INTERNAL_STORAGE\")\;\n+\ \ \ \ \ \ \ \ \ \ \ \ Tcl_DString\ ds2\;\n+\n+\ \ \ \ \ \ \ \ \ \ \ \ if\ ((storage\ !=\ NULL)\ &&\ (storage\[0\]\ !=\ '\\0'))\ \{\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringInit(&ds2)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringAppend(&ds2,\ storage,\ -1)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringAppend(&ds2,\ \"/../lib/\",\ -1)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringAppend(&ds2,\ native,\ -1)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ handle\ =\ dlopen(Tcl_DStringValue(&ds2),\ RTLD_NOW\ |\ RTLD_GLOBAL)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Tcl_DStringFree(&ds2)\;\n+\ \ \ \ \ \ \ \ \ \ \ \ \}\n+\ \ \ \ \ \ \ \ \}\n\ #endif\n\ \ \ \ \ \ \ \ \ Tcl_DStringFree(&ds)\;\n\ \ \ \ \ \}} CALL {my revision {AndroWish/Patch for Tcl 8.6}} CALL {::oo::Obj4534677 process revision/AndroWish%2FPatch+for+Tcl+8%2E6} CALL {::oo::Obj4534675 process}

-errorcode

NONE

-errorinfo

Unknow state transition: TR -> LINE
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4