wok-6.x rev 20387

Add tcl2c
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Jun 23 11:56:52 2018 +0200 (2018-06-23)
parents 29ddbebcc777
children 32c2394f606d
files tcl2c/receipt tcl2c/stuff/tcl2c.u
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/tcl2c/receipt	Sat Jun 23 11:56:52 2018 +0200
     1.3 @@ -0,0 +1,28 @@
     1.4 +# SliTaz package receipt v2.
     1.5 +
     1.6 +PACKAGE="tcl2c"
     1.7 +VERSION="2016.4"
     1.8 +CATEGORY="development"
     1.9 +SHORT_DESC="Create a C file from Tcl file for C compiler"
    1.10 +MAINTAINER="al.bobylev@gmail.com"
    1.11 +LICENSE="GPL2"
    1.12 +WEB_SITE="http://tcl2c.sourceforge.net/"
    1.13 +
    1.14 +TARBALL="$PACKAGE.$VERSION.zip"
    1.15 +WGET_URL="$SF_MIRROR/tcl2c/$TARBALL"
    1.16 +
    1.17 +DEPENDS="tcl"
    1.18 +BUILD_DEPENDS="tcl-dev"
    1.19 +
    1.20 +compile_rules() {
    1.21 +	cd generic
    1.22 +	sed -i 's|libtcl8\.5\.so|-ltcl8.6|' makefile
    1.23 +	patch -p1 < $stuff/tcl2c.u
    1.24 +
    1.25 +	make linux &&
    1.26 +	install -Dm755 tcl2c $install/usr/bin/tcl2c
    1.27 +}
    1.28 +
    1.29 +genpkg_rules() {
    1.30 +	cp -a $install/usr $fs
    1.31 +}
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/tcl2c/stuff/tcl2c.u	Sat Jun 23 11:56:52 2018 +0200
     2.3 @@ -0,0 +1,932 @@
     2.4 +http://web.tiscali.it/pas80/tklauncher.htm
     2.5 +http://web.tiscali.it/pas80/tcl2c.tar.gz
     2.6 +@@ -1,26 +1,10 @@
     2.7 +-//tcl2c @ 1997-2016 (04/2016) - Under G.P.L. License
     2.8 +-//Based on tcl2c.c written by: Jan Nijtmans
     2.9 +-//Cyril BARBATO 
    2.10 +-//tcl2c.sourceforge.net
    2.11 +-//cyril.barbato@gmx.com
    2.12 ++#include <tcl.h>
    2.13 + 
    2.14 +-#include "tcl.h"
    2.15 +-#include <stdio.h>
    2.16 +-#include <stdlib.h>
    2.17 +-
    2.18 +-#ifdef _APPLICATION_IS_ROOT_PATH_
    2.19 +-#include <string.h>
    2.20 +-#include <limits.h>
    2.21 +-#include <unistd.h>
    2.22 +-#endif
    2.23 +-
    2.24 + #ifdef __cplusplus
    2.25 + extern C {
    2.26 + #endif
    2.27 + 
    2.28 + extern void exit _ANSI_ARGS_((int status));
    2.29 +-extern int isupper _ANSI_ARGS_((int ch));
    2.30 +-extern int tolower _ANSI_ARGS_((int ch));
    2.31 + 
    2.32 + #ifdef __cplusplus
    2.33 + }
    2.34 +@@ -44,55 +28,48 @@
    2.35 + 
    2.36 + static tableitem table[] = {
    2.37 + {"Tcl"  ,"-tcl"  ,  1},
    2.38 +-{"Tk"   ,"-tk"   ,  3},
    2.39 +-{"Tclx" ,"-tclx" ,  5},
    2.40 +-{"Itcl" ,"-itcl" ,  9},
    2.41 +-{"Otcl" ,"-otcl" , 17},	/* not tested yet */
    2.42 +-{"Pvm"  ,"-pvm"  , 33},
    2.43 +-{"Tkx"  ,"-tkx"  , 71},
    2.44 +-{"Itk"  ,"-itk" ,  139},
    2.45 +-{"Iwidgets" ,"-iwidgets" ,  395},
    2.46 +-{"Img"  ,"-img"  ,515},
    2.47 +-{"Tix"  ,"-tix"  ,1027}, /* not tested yet */
    2.48 +-{"Blt"  ,"-blt"  ,2051}, /* not tested yet */
    2.49 +-{"Vtcl" ,"-vtcl" ,4103}, /* not tested yet */
    2.50 ++{"Tclx" ,"-tclx" ,  3},
    2.51 ++{"Itcl" ,"-itcl" ,  5},
    2.52 ++{"Otcl" ,"-otcl" ,  9},	/* not tested yet */
    2.53 ++{"Pvm"  ,"-pvm"  , 17},
    2.54 ++{"Tk"   ,"-tk"   , 33},
    2.55 ++{"Tkx"  ,"-tkx"  , 99},
    2.56 ++{"Itk"  ,"-itk" ,  165},
    2.57 ++{"Iwidgets" ,"-iwidgets" ,  421},
    2.58 ++{"Img"  ,"-img"  ,545},
    2.59 ++{"Tix"  ,"-tix"  ,1057},  /* not tested yet */
    2.60 ++{"Blt"  ,"-blt"  ,2081}, /* not tested yet */
    2.61 ++{"Vtcl" ,"-vtcl" ,4261}, /* not tested yet */
    2.62 + };
    2.63 + 
    2.64 +-static char verbose[] = "\n\
    2.65 ++static char *verbose = "\n\
    2.66 + *************************** tcl2c ********************************\n\
    2.67 +-Based on tcl2c.c written by: Jan Nijtmans\n\
    2.68 +-            CMG (Computer Management Group) Arnhem B.V.\n\
    2.69 +-	    email: Jan.Nijtmans@wxs.nl (private)\n\
    2.70 +-	           Jan.Nijtmans@cmg.nl (work)\n\
    2.71 +-	    url:   http://home.wxs.nl/~nijtmans/\n\n\
    2.72 +-    new options for gcc by:  Cyril Barbato (cyril.barbato@gmx.com)\n\
    2.73 +-            -D__MALLOC__ : for using malloc()\n\
    2.74 +-            -D__LIBPATH__=\"your lib\" : change tcl lib path\n\
    2.75 +-            -D_APPLICATION_IS_ROOT_PATH_ : for application is root path\n\\n\
    2.76 +-			-D_CONSOLEWOZHIDE_ : Hide windows console\n\\n\
    2.77 +-	new, add 2 tcl commands for windows console :\n\
    2.78 +-			_tcl2c_consoleWOZHide for Hide windows console\n\
    2.79 +-			_tcl2c_consoleWOZShow for Show windows console\n\\n\
    2.80 +-	url :   http://tcl2c.sourceforge.net/\n\n\
    2.81 +-	usage:	tcl2c -o file source1 source2 ... ?options?\n\
    2.82 ++written by: Jan Nijtmans\n\
    2.83 ++            NICI (Nijmegen Institute of Cognition and Information)\n\
    2.84 ++	    email: nijtmans@nici.kun.nl\n\
    2.85 ++	    url:   http://www.cogsci.kun.nl/~nijtmans/\n\n\
    2.86 ++usage:	tcl2c -o file source1 source2 ... ?options?\n\
    2.87 + 			tcl2c -help\n\
    2.88 + ";
    2.89 + 
    2.90 +-static char help[] = "\n\
    2.91 ++static char *help = "\n\
    2.92 + available options:\n\
    2.93 +         -a              use character array instead of string for script\n\
    2.94 +         -n script_name  name of script variable\n\
    2.95 +         -o filename	output file (default is stdout)\n\
    2.96 + 	-tcl		use Tcl\n\
    2.97 + 	-tclx		use Tclx\n\
    2.98 ++	-itcl		use Itcl\n\
    2.99 + 	-otcl		use Otcl (not tested yet)\n\
   2.100 + 	-pvm		use tkPvm\n\
   2.101 + 	-tk		use Tk\n\
   2.102 +-	-tkx		use Tkx (not really useful)\n\
   2.103 +-	-img		use Img\n\
   2.104 ++	-tkx		use Tkx (not really usefull)\n\
   2.105 ++	-itk		use Itk\n\
   2.106 ++	-iwidgets	use Iwidgets\n\
   2.107 + 	-tix		use Tix (not tested yet)\n\
   2.108 + 	-blt		use Blt (not tested yet)\n\
   2.109 + 	-vtcl		use Vtcl (not tested yet)\n\
   2.110 ++	-index		convert tclIndex files\n\n\
   2.111 + Other command line arguments are assumed to be tcl script-files. It is \n\
   2.112 + possible to include C-files (with the extension .c), which are already\n\
   2.113 + converted tcl-scripts. These are included using the \"#include\".\n\n\
   2.114 +@@ -101,7 +78,7 @@
   2.115 + 
   2.116 + static char *part1 = "\n\
   2.117 + /* This file is created by the \"tcl2c\" utility, which is included in\n\
   2.118 +- * most \"plus\"-patches (e.g. for Tcl8.6). Standalone\n\
   2.119 ++ * most \"plus\"-patches (e.g. for Tcl7.6 and Tcl8.0). Standalone\n\
   2.120 +  * executables can be made by providing alternative initialization\n\
   2.121 +  * functions which don't read files any more. Sometimes, small\n\
   2.122 +  * adaptations to the original libraries are needed to get the\n\
   2.123 +@@ -111,68 +88,29 @@
   2.124 +  * easyly extend the \"tcl2c\" utility to your own requirements.\n\
   2.125 +  *\n\
   2.126 +  *	Jan Nijtmans\n\
   2.127 +- *	CMG (Computer Management Group) Arnhem B.V.\n\
   2.128 +- *	email: Jan.Nijtmans@wxs.nl (private)\n\
   2.129 +- *	       Jan.Nijtmans@cmg.nl (work)\n\
   2.130 +- *	url:   http://home.wxs.nl/~nijtmans/\n\
   2.131 +- *\n\
   2.132 +- *new options for gcc by:  Cyril Barbato (cyril.barbato@gmx.com)\n\
   2.133 +- *          -D__MALLOC__ : for using malloc()\n\
   2.134 +- *          -D__LIBPATH__=\"your lib\" : change tcl lib path\n\
   2.135 +- *			-D_APPLICATION_IS_ROOT_PATH_ : for application is root path\n\\n\
   2.136 +-			-D_CONSOLEWOZHIDE_ : Hide windows console\n\
   2.137 +- *\n\
   2.138 +-	new, add 2 tcl commands for windows console :\n\
   2.139 +-			_tcl2c_consoleWOZHide for Hide windows console\n\
   2.140 +-			_tcl2c_consoleWOZShow for Show windows console\n\\n\
   2.141 +- *\n\
   2.142 +- *	    url:   http://tcl2c.sourceforge.net/\n\
   2.143 +- *\n\
   2.144 +- * usage:	tcl2c -o file source1 source2 ... ?options?\n\
   2.145 +- *			tcl2c -help\n\
   2.146 ++ *	NICI (Nijmegen Institute of Cognition and Information)\n\
   2.147 ++ *	email: nijtmans@nici.kun.nl\n\
   2.148 ++ *	url:   http://www.cogsci.kun.nl/~nijtmans/\n\
   2.149 +  */\n\
   2.150 ++#define USE_INTERP_RESULT 1\n\
   2.151 + #include \"tcl.h\"\n\
   2.152 +-#ifdef _MACOSX_APP_\n\
   2.153 +-#import <crt_externs.h>\n\
   2.154 +-#endif\n\
   2.155 +-#ifdef __WIN32__\n\
   2.156 +-#define _WIN32_WINNT 0x0500\n\
   2.157 +-#define WIN32_LEAN_AND_MEAN\n\
   2.158 +-#include <windows.h>\n\
   2.159 +-#undef WIN32_LEAN_AND_MEAN\n\
   2.160 +-#ifndef __MALLOC_H__\n\
   2.161 +-#include <malloc.h>\n\
   2.162 +-#endif\n\
   2.163 +-#include <locale.h>\n\
   2.164 +-#ifndef __LIBPATH__\n\
   2.165 +-#define __LIBPATH__ \"lib\"\n\
   2.166 +-#endif\n\
   2.167 +-#include <unistd.h>\n\
   2.168 +-#ifdef _APPLICATION_IS_ROOT_PATH_\n\
   2.169 +-#include <string.h>\n\
   2.170 +-#include <limits.h>\n\
   2.171 +-#include <unistd.h>\n\
   2.172 +-#endif\n\
   2.173 + \n\
   2.174 +-static int setargv _ANSI_ARGS_((char ***argvPtr));\n\
   2.175 +-static void TclshPanic _ANSI_ARGS_(TCL_VARARGS(char *,format));\n\
   2.176 +-extern void TclWinInit(HINSTANCE instance);\n\
   2.177 +-extern int  Registry_Init _ANSI_ARGS_((Tcl_Interp *interp));\n\
   2.178 +-\n\
   2.179 +-#endif\n\
   2.180 +-\n\
   2.181 + /*\n\
   2.182 +  * Defines to replace the standard Xxx_Init calls to Xxx_InitStandAlone.\n\
   2.183 +  * If you don't have this function, just delete the corresponding\n\
   2.184 +  * define such that the normal initialization function is used.\n\
   2.185 +- * If no Xxx_SafeInit function exists, use NULL pointers instead\n\
   2.186 +- * by commenting out the appropriate lines below.\n\
   2.187 ++ * Similar: If SafeInit functions exists, you can use these\n\
   2.188 ++ * by commenting out the corresponding lines below.\n\
   2.189 +  */\n\
   2.190 + \n\
   2.191 +-#if defined(TCL_ACTIVE) && !defined(SHARED)\n\
   2.192 ++#ifdef TCL_ACTIVE\n\
   2.193 + ";
   2.194 + 
   2.195 +-static char *part2 = "\n\
   2.196 ++static char *part2 = "#endif\n\
   2.197 ++\n\
   2.198 ++";
   2.199 ++
   2.200 ++static char *part3 = "\n\
   2.201 + /*\n\
   2.202 +  * Prototypes of all initialization functions and the free() function.\n\
   2.203 +  * So, only \"tcl.h\" needs to be included now.\n\
   2.204 +@@ -182,27 +120,8 @@
   2.205 + extern \"C\" {\n\
   2.206 + #endif\n\
   2.207 + \n\
   2.208 +-#ifndef USE_TCLALLOC\n\
   2.209 +-#   define USE_TCLALLOC 0\n\
   2.210 +-#endif\n\
   2.211 +-#if USE_TCLALLOC == 0\n\
   2.212 + extern void free _ANSI_ARGS_((void *));\n\
   2.213 +-extern VOID *malloc _ANSI_ARGS_((int));\n\
   2.214 +-#endif\n\
   2.215 +-extern int  Tcl_Init _ANSI_ARGS_((Tcl_Interp *interp));\n\
   2.216 +-\n\
   2.217 + ";
   2.218 +-
   2.219 +-static char *part3 = "\n\
   2.220 +-extern void Tk_MainLoop _ANSI_ARGS_((void));\n\
   2.221 +-#define HAS_TK\n\
   2.222 +-#ifdef __WIN32__\n\
   2.223 +-extern void TkWinXInit _ANSI_ARGS_((HINSTANCE hinstance));\n\
   2.224 +-extern void TkWinXCleanup _ANSI_ARGS_((HINSTANCE hinstance));\n\
   2.225 +-#endif\n\
   2.226 +-\n\
   2.227 +-";
   2.228 +-
   2.229 + static char *part4 = "\n\
   2.230 + #ifdef __cplusplus\n\
   2.231 + }\n\
   2.232 +@@ -213,64 +132,10 @@
   2.233 +  * It will be executed in tclAppInit() after the other initializations.\n\
   2.234 +  */\n\
   2.235 + \n\
   2.236 +-";
   2.237 +-
   2.238 +-static char *part4a = "\
   2.239 +-static char *lineformat = \"%%.0s%%d\";\n\
   2.240 + static int line = (__LINE__ + 1);\n\
   2.241 + ";
   2.242 + 
   2.243 +-static char *part4b = "\
   2.244 +-static char *lineformat = \"%%s_line%%d\";\n\
   2.245 +-static int line = 0;\n\
   2.246 +-";
   2.247 +-
   2.248 + static char *part5 = "\
   2.249 +-#ifdef _APPLICATION_IS_ROOT_PATH_\n\
   2.250 +-#define PATH_MAX 1024\n\
   2.251 +-char abs_exe_path[PATH_MAX];\n\
   2.252 +-char *\n\
   2.253 +-#ifdef _USING_PROTOTYPES_\n\
   2.254 +-app_GetPath(\n\
   2.255 +-	int argc,\n\
   2.256 +-	char *argv[])\n\
   2.257 +-#else\n\
   2.258 +-app_GetPath(argc, argv)\n\
   2.259 +-	int argc;\n\
   2.260 +-	char *argv[];\n\
   2.261 +-#endif\n\
   2.262 +-{\n\
   2.263 +-  char path_save[PATH_MAX];\n\
   2.264 +-  char *p;\n\
   2.265 +-  if(!(p = strrchr(argv[0], '/')))\n\
   2.266 +-    getcwd(abs_exe_path, sizeof(abs_exe_path));\n\
   2.267 +-  else\n\
   2.268 +-  {\n\
   2.269 +-    *p = '\\0';\n\
   2.270 +-    getcwd(path_save, sizeof(path_save));\n\
   2.271 +-    chdir(argv[0]);\n\
   2.272 +-    getcwd(abs_exe_path, sizeof(abs_exe_path));\n\
   2.273 +-    chdir(path_save);\n\
   2.274 +-  }\n\
   2.275 +-  //printf(\"Absolute path to executable is: %s\\n\", abs_exe_path);\n\
   2.276 +-  return abs_exe_path;\n\
   2.277 +-};\n\
   2.278 +-#endif\n\
   2.279 +-#ifdef __WIN32__\n\
   2.280 +-HWND hConsoleWnd=NULL;\n\
   2.281 +-int _tcl2c_consoleWOZHideCmd(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) {\n\
   2.282 +-	if (hConsoleWnd==NULL) {hConsoleWnd = GetConsoleWindow();};\n\
   2.283 +-	if (hConsoleWnd==NULL) {return TCL_OK;};\n\
   2.284 +-	SetWindowPos(hConsoleWnd,HWND_NOTOPMOST,0,0,320,240,SWP_HIDEWINDOW);\n\
   2.285 +-	return TCL_OK;\n\
   2.286 +-};\n\
   2.287 +-int _tcl2c_consoleWOZShowCmd(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) {\n\
   2.288 +-	if (hConsoleWnd==NULL) {hConsoleWnd = GetConsoleWindow();};\n\
   2.289 +-	if (hConsoleWnd==NULL) {return TCL_OK;};\n\
   2.290 +-	ShowWindow(hConsoleWnd,SW_SHOW);\n\
   2.291 +-	return TCL_OK;\n\
   2.292 +-};\n\
   2.293 +-#endif\n\
   2.294 + /*\n\
   2.295 +  *----------------------------------------------------------------------\n\
   2.296 +  *\n\
   2.297 +@@ -287,18 +152,7 @@
   2.298 +  *----------------------------------------------------------------------\n\
   2.299 +  */\n\
   2.300 + \n\
   2.301 +-#if defined(__WIN32__) && defined(HAS_TK)\n\
   2.302 +-int APIENTRY\n\
   2.303 +-WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\n\
   2.304 +-    LPSTR lpszCmdLine, int nCmdShow)\n\
   2.305 +-{\n\
   2.306 +-    char **argv;\n\
   2.307 +-    int argc;\n\
   2.308 +-#else\n\
   2.309 +-";
   2.310 +-//MAIN Tcl App
   2.311 +-static char *part5a = "\
   2.312 +-int\n\
   2.313 ++void\n\
   2.314 + #ifdef _USING_PROTOTYPES_\n\
   2.315 + main (int    argc,		/* Number of command-line arguments. */\n\
   2.316 +       char **argv)		/* Values of command-line arguments. */\n\
   2.317 +@@ -308,78 +162,12 @@
   2.318 +     char **argv;		/* Values of command-line arguments. */\n\
   2.319 + #endif\n\
   2.320 + {\n\
   2.321 +-#endif\n\
   2.322 +     Tcl_Interp *interp;\n\
   2.323 +     char **p = %s;\n\
   2.324 +-    char *q, buffer[16];\n\
   2.325 ++    char *q, buffer[10];\n\
   2.326 +     Tcl_DString data;\n\
   2.327 +     Tcl_Channel inChannel, outChannel, errChannel;\n\
   2.328 + \n\
   2.329 +-#ifdef __LIBPATH__\n\
   2.330 +-	////char _cwd[1024];\n\
   2.331 +-	char _libpath[2048];\n\
   2.332 +-#endif\n\
   2.333 +-#ifdef __WIN32__\n\
   2.334 +-    char argv0[128];\n\
   2.335 +-#endif\n\
   2.336 +-#ifdef _MACOSX_APP_\n\
   2.337 +-argc = *_NSGetArgc();\n\
   2.338 +-char *progname = *_NSGetProgname();\n\
   2.339 +-char **envp = *_NSGetEnviron();\n\
   2.340 +-argv = *_NSGetArgv();\n\
   2.341 +-#endif\n\
   2.342 +-#ifdef _APPLICATION_IS_ROOT_PATH_\n\
   2.343 +-	/* GOTO APPLICATION PATH FOR MAC OS*/\n\
   2.344 +-	chdir(app_GetPath(argc, argv));\n\
   2.345 +-#endif\n\
   2.346 +-#ifdef __WIN32__\n\
   2.347 +-#ifdef _CONSOLEWOZHIDE_\n\
   2.348 +-_tcl2c_consoleWOZHideCmd(NULL, NULL, NULL, (char **) NULL);\n\
   2.349 +-#endif\n\
   2.350 +-#if defined(TCL_ACTIVE) && !defined(SHARED) && defined(HAS_TK)\n\
   2.351 +-    TclWinInit(hInstance);\n\
   2.352 +-    TkWinXInit(hInstance);\n\
   2.353 +-    Tcl_CreateExitHandler((Tcl_ExitProc *) TkWinXCleanup, (ClientData) hInstance);\n\
   2.354 +-#endif\n\
   2.355 +-\n\
   2.356 +-    Tcl_SetPanicProc(TclshPanic);\n\
   2.357 +-\n";
   2.358 +-
   2.359 +-static char *part5b = "\n\
   2.360 +-    /*\n\
   2.361 +-     * Set up the default locale to be standard \"C\" locale so parsing\n\
   2.362 +-     * is performed correctly.\n\
   2.363 +-     */\n\
   2.364 +-\n\
   2.365 +-    setlocale(LC_ALL, \"C\");\n\
   2.366 +-\n\
   2.367 +-    /*\n\
   2.368 +-     * Increase the application queue size from default value of 8.\n\
   2.369 +-     * At the default value, cross application SendMessage of WM_KILLFOCUS\n\
   2.370 +-     * will fail because the handler will not be able to do a PostMessage!\n\
   2.371 +-     * This is only needed for Windows 3.x, since NT dynamically expands\n\
   2.372 +-     * the queue.\n\
   2.373 +-     */\n\
   2.374 +-    SetMessageQueue(64);\n\
   2.375 +-\n\
   2.376 +-    argc = setargv(&argv);\n\
   2.377 +-\n\
   2.378 +-    /*\n\
   2.379 +-     * Replace argv[0] with full pathname of executable, and forward\n\
   2.380 +-     * slashes substituted for backslashes.\n\
   2.381 +-     */\n\
   2.382 +-\n\
   2.383 +-";
   2.384 +-static char *part5c = "\
   2.385 +-    GetModuleFileName(NULL, argv0, sizeof(argv0));\n\
   2.386 +-    argv[0] = argv0;\n\
   2.387 +-    for (q = argv0; *q != '\\0'; q++) {\n\
   2.388 +-	if (*q == '\\\\') {\n\
   2.389 +-	    *q = '/';\n\
   2.390 +-	}\n\
   2.391 +-    }\n\
   2.392 +-\n\
   2.393 +-#endif\n\
   2.394 +     Tcl_FindExecutable(argv[0]);\n\
   2.395 +     interp = Tcl_CreateInterp();\n\
   2.396 + \n\
   2.397 +@@ -391,32 +179,8 @@
   2.398 +     Tcl_SetVar(interp, \"argv0\", argv[0],TCL_GLOBAL_ONLY);\n\
   2.399 +     Tcl_SetVar(interp, \"tcl_interactive\",\"0\", TCL_GLOBAL_ONLY);\n\
   2.400 + \n\
   2.401 +-#ifdef __LIBPATH__\n\
   2.402 +-	////chdir(__LIBPATH__);\n\
   2.403 +-	////getcwd(_cwd,sizeof(_cwd));\n\
   2.404 +-	////printf(\"libpath:%%s\\n\", _cwd);\n\
   2.405 +-	sprintf(_libpath, \"set env(PWD) [pwd]\");\n\
   2.406 +-	Tcl_Eval(interp, _libpath);\n\
   2.407 +-	sprintf(_libpath, \"%%s/%%s/tcl%%s\", Tcl_GetVar2(interp, \"env\", \"PWD\", TCL_GLOBAL_ONLY),__LIBPATH__, Tcl_GetVar(interp,\"tcl_version\", TCL_GLOBAL_ONLY));\n\
   2.408 +-	Tcl_SetVar2(interp, \"env\", \"TCL_LIBRARY\", _libpath, TCL_GLOBAL_ONLY);\n\
   2.409 +-	Tcl_SetVar2(interp, \"env\", \"TK_LIBRARY\", _libpath, TCL_GLOBAL_ONLY);\n\
   2.410 +-	Tcl_SetVar(interp, \"auto_path\", _libpath, TCL_GLOBAL_ONLY);\n\
   2.411 +-	Tcl_SetVar(interp, \"tcl_libPath\", _libpath, TCL_GLOBAL_ONLY);\n\
   2.412 +-#endif\n\
   2.413 +-\n\
   2.414 +-if (Tcl_Init(interp) != TCL_OK) {\n\
   2.415 +-        goto error;\n\
   2.416 +-    }\n\
   2.417 +-\n\
   2.418 +-#ifdef __WIN32__\n\
   2.419 +-	Tcl_StaticPackage((Tcl_Interp *) NULL, \"registry\", Registry_Init,\n\
   2.420 +-	    (Tcl_PackageInitProc *) NULL);\n\n\
   2.421 +-	//Create commands _tcl2c_consoleWOZHide and _tcl2c_consoleWOZShow\n\
   2.422 +-	Tcl_CreateCommand(interp, \"_tcl2c_consoleWOZHide\", _tcl2c_consoleWOZHideCmd, NULL, NULL);\n\
   2.423 +-	Tcl_CreateCommand(interp, \"_tcl2c_consoleWOZShow\", _tcl2c_consoleWOZShowCmd, NULL, NULL);\n\n\
   2.424 +-#endif\n\
   2.425 +-\n\
   2.426 + ";
   2.427 ++
   2.428 + static char *part6 = "\n\
   2.429 +     /*\n\
   2.430 +      * Execute the script that is compiled in.\n\
   2.431 +@@ -436,17 +200,27 @@
   2.432 + 		}\n\
   2.433 + 		line++;\n\
   2.434 + 	    }\n\
   2.435 +-	    sprintf(buffer,lineformat,\"%s\",line);\n\
   2.436 +-		printf(\"ERROR : (line %%s) : %%s\\n\", buffer, Tcl_GetVar(interp, \"errorInfo\", TCL_GLOBAL_ONLY));\n\
   2.437 ++	    sprintf(buffer,\"%%d\",line);\n\
   2.438 ++	    Tcl_AddErrorInfo(interp,\"\\n	( Error in file: \\\"\");\n\
   2.439 ++	    Tcl_AddErrorInfo(interp,__FILE__);\n\
   2.440 ++	    Tcl_AddErrorInfo(interp,\"\\\", line: \");\n\
   2.441 ++	    Tcl_AddErrorInfo(interp,buffer);\n\
   2.442 ++	    Tcl_AddErrorInfo(interp,\")\");\n\
   2.443 ++	    errChannel = Tcl_GetStdChannel(TCL_STDERR);\n\
   2.444 ++	    if (errChannel) {\n\
   2.445 ++		Tcl_Write(errChannel,\n\
   2.446 ++			Tcl_GetVar(interp, \"errorInfo\", TCL_GLOBAL_ONLY), -1);\n\
   2.447 ++		Tcl_Write(errChannel, \"\\n\", 1);\n\
   2.448 ++	    }\n\
   2.449 ++	    sprintf(buffer, \"exit %%d\", 1);\n\
   2.450 + 	    Tcl_Eval(interp, buffer);\n\
   2.451 +-	}};\n\
   2.452 +-";
   2.453 +-
   2.454 +-static char *part6a = "\
   2.455 +-    Tk_MainLoop();\n\
   2.456 +-";
   2.457 +-
   2.458 +-static char *part6b = "\
   2.459 ++	}\n\
   2.460 ++    }\n\
   2.461 ++    Tcl_DStringFree(&data);\n\
   2.462 ++\n\
   2.463 ++    while (Tcl_DoOneEvent(0)) {\n\
   2.464 ++	/* empty loop body */ ;\n\
   2.465 ++    }\n\
   2.466 +     sprintf(buffer, \"exit %%d\", 0);\n\
   2.467 +     Tcl_Eval(interp, buffer);\n\
   2.468 + \n\
   2.469 +@@ -455,185 +229,20 @@
   2.470 +     if (errChannel) {\n\
   2.471 + 	Tcl_Write(errChannel,\n\
   2.472 + 		\"application-specific initialization failed: \", -1);\n\
   2.473 +-	Tcl_Write(errChannel, Tcl_GetStringResult(interp), -1);\n\
   2.474 ++	Tcl_Write(errChannel, interp->result, -1);\n\
   2.475 + 	Tcl_Write(errChannel, \"\\n\", 1);\n\
   2.476 +     }\n\
   2.477 +-#ifdef __WIN32__\n\
   2.478 +-    TclshPanic(Tcl_GetStringResult(interp));\n\
   2.479 +-#endif\n\
   2.480 +     sprintf(buffer, \"exit %%d\", 1);\n\
   2.481 +     Tcl_Eval(interp, buffer);\n\
   2.482 +-    return 0;\n\
   2.483 + }\n\
   2.484 +-\n\
   2.485 +-#ifdef __WIN32__\n\
   2.486 +-/*\n\
   2.487 +- *----------------------------------------------------------------------\n\
   2.488 +- *\n\
   2.489 +- * TclshPanic --\n\
   2.490 +- *\n\
   2.491 +- *	Display a message and exit.\n\
   2.492 +- *\n\
   2.493 +- * Results:\n\
   2.494 +- *	None.\n\
   2.495 +- *\n\
   2.496 +- * Side effects:\n\
   2.497 +- *	Exits the program.\n\
   2.498 +- *\n\
   2.499 +- *----------------------------------------------------------------------\n\
   2.500 +- */\n\
   2.501 +-\n\
   2.502 +-void\n\
   2.503 +-TclshPanic TCL_VARARGS_DEF(char *,arg1)\n\
   2.504 +-{\n\
   2.505 +-    va_list argList;\n\
   2.506 +-    char buf[1024];\n\
   2.507 +-    char *format;\n\
   2.508 +-\n\
   2.509 +-    format = TCL_VARARGS_START(char *,arg1,argList);\n\
   2.510 +-    vsprintf(buf, format, argList);\n\
   2.511 +-\n\
   2.512 +-    MessageBeep(MB_ICONEXCLAMATION);\n\
   2.513 +-    MessageBox(NULL, buf, \"Fatal Error in Tclsh\",\n\
   2.514 +-	    MB_ICONSTOP | MB_OK | MB_TASKMODAL | MB_SETFOREGROUND);\n\
   2.515 +-#ifdef _MSC_VER\n\
   2.516 +-    DebugBreak();\n\
   2.517 +-#endif\n\
   2.518 +-    ExitProcess(1);\n\
   2.519 +-}\n\
   2.520 + ";
   2.521 + 
   2.522 +-static char *part6c = "\
   2.523 +-\n\
   2.524 +-/*\n\
   2.525 +- *-------------------------------------------------------------------------\n\
   2.526 +- *\n\
   2.527 +- * setargv --\n\
   2.528 +- *\n\
   2.529 +- *	Parse the Windows command line string into argc/argv.  Done here\n\
   2.530 +- *	because we don't trust the builtin argument parser in crt0.  \n\
   2.531 +- *	Windows applications are responsible for breaking their command\n\
   2.532 +- *	line into arguments.\n\
   2.533 +- *\n\
   2.534 +- *	2N backslashes + quote -> N backslashes + begin quoted string\n\
   2.535 +- *	2N + 1 backslashes + quote -> literal\n\
   2.536 +- *	N backslashes + non-quote -> literal\n\
   2.537 +- *	quote + quote in a quoted string -> single quote\n\
   2.538 +- *	quote + quote not in quoted string -> empty string\n\
   2.539 +- *	quote -> begin quoted string\n\
   2.540 +- *\n\
   2.541 +- * Results:\n\
   2.542 +- *	returns the number of arguments and fill argvPtr with the\n\
   2.543 +- *	array of arguments.\n\
   2.544 +- *\n\
   2.545 +- * Side effects:\n\
   2.546 +- *	Memory allocated.\n\
   2.547 +- *\n\
   2.548 +- *--------------------------------------------------------------------------\n\
   2.549 +- */\n\
   2.550 +-\n\
   2.551 +-";
   2.552 +-
   2.553 +-static char *part6d = "\
   2.554 +-static int\n\
   2.555 +-setargv(argvPtr)\n\
   2.556 +-    char ***argvPtr;		/* Filled with argument strings (malloc'd). */\n\
   2.557 +-{\n\
   2.558 +-    char *cmdLine, *p, *arg, *argSpace;\n\
   2.559 +-    char **argv;\n\
   2.560 +-    int argc, size, inquote, copy, slashes;\n\
   2.561 +-\n\
   2.562 +-    cmdLine = GetCommandLine();\n\
   2.563 +-\n\
   2.564 +-    /*\n\
   2.565 +-     * Precompute an overly pessimistic guess at the number of arguments\n\
   2.566 +-     * in the command line by counting non-space spans.\n\
   2.567 +-     */\n\
   2.568 +-\n\
   2.569 +-    size = 2;\n\
   2.570 +-    for (p = cmdLine; *p != '\\0'; p++) {\n\
   2.571 +-	if (isspace(*p)) {\n\
   2.572 +-	    size++;\n\
   2.573 +-	    while (isspace(*p)) {\n\
   2.574 +-		p++;\n\
   2.575 +-	    }\n\
   2.576 +-	    if (*p == '\\0') {\n\
   2.577 +-		break;\n\
   2.578 +-	    }\n\
   2.579 +-	}\n\
   2.580 +-    }\n\
   2.581 +-    argSpace = (char *) ckalloc((unsigned) (size * sizeof(char *)\n\
   2.582 +-	    + strlen(cmdLine) + 1));\n\
   2.583 +-    argv = (char **) argSpace;\n\
   2.584 +-    argSpace += size * sizeof(char *);\n\
   2.585 +-    size--;\n\
   2.586 +-\n\
   2.587 +-    p = cmdLine;\n\
   2.588 +-    for (argc = 0; argc < size; argc++) {\n\
   2.589 +-	argv[argc] = arg = argSpace;\n\
   2.590 +-	while (isspace(*p)) {\n\
   2.591 +-	    p++;\n\
   2.592 +-	}\n\
   2.593 +-	if (*p == '\\0') {\n\
   2.594 +-	    break;\n\
   2.595 +-	}\n\
   2.596 +-\n\
   2.597 +-";
   2.598 +-
   2.599 +-static char *part6e = "\
   2.600 +-	inquote = 0;\n\
   2.601 +-	slashes = 0;\n\
   2.602 +-	while (1) {\n\
   2.603 +-	    copy = 1;\n\
   2.604 +-	    while (*p == '\\\\') {\n\
   2.605 +-		slashes++;\n\
   2.606 +-		p++;\n\
   2.607 +-	    }\n\
   2.608 +-	    if (*p == '\"') {\n\
   2.609 +-		if ((slashes & 1) == 0) {\n\
   2.610 +-		    copy = 0;\n\
   2.611 +-		    if ((inquote) && (p[1] == '\"')) {\n\
   2.612 +-			p++;\n\
   2.613 +-			copy = 1;\n\
   2.614 +-		    } else {\n\
   2.615 +-			inquote = !inquote;\n\
   2.616 +-		    }\n\
   2.617 +-                }\n\
   2.618 +-                slashes >>= 1;\n\
   2.619 +-            }\n\
   2.620 +-\n\
   2.621 +-            while (slashes) {\n\
   2.622 +-		*arg = '\\\\';\n\
   2.623 +-		arg++;\n\
   2.624 +-		slashes--;\n\
   2.625 +-	    }\n\
   2.626 +-\n\
   2.627 +-	    if ((*p == '\\0') || (!inquote && isspace(*p))) {\n\
   2.628 +-		break;\n\
   2.629 +-	    }\n\
   2.630 +-	    if (copy != 0) {\n\
   2.631 +-		*arg = *p;\n\
   2.632 +-		arg++;\n\
   2.633 +-	    }\n\
   2.634 +-	    p++;\n\
   2.635 +-        }\n\
   2.636 +-	*arg = '\\0';\n\
   2.637 +-	argSpace = arg + 1;\n\
   2.638 +-    }\n\
   2.639 +-    argv[argc] = NULL;\n\
   2.640 +-\n\
   2.641 +-    *argvPtr = argv;\n\
   2.642 +-    return argc;\n\
   2.643 +-}\n\
   2.644 +-#endif /* __WIN32__ */\n\
   2.645 +-";
   2.646 +-
   2.647 +-static char *defineproto = "\
   2.648 ++static char *defineproto1 = "\
   2.649 + #define %s_Init %s_InitStandAlone\n\
   2.650 + ";
   2.651 + 
   2.652 + static char *defineproto2 = "\
   2.653 +-/*#define %s_SafeInit ((Tcl_PackageInitProc *) NULL)*/\n\
   2.654 ++#define %s_SafeInit (Tcl_PackageInitProc *) NULL\n\
   2.655 + ";
   2.656 + 
   2.657 + static char *initproto = "\
   2.658 +@@ -653,9 +262,8 @@
   2.659 +     }\n\
   2.660 + ";
   2.661 + 
   2.662 +-static char *buffer;
   2.663 ++static char buffer[32768];
   2.664 + static unsigned int max_buffer = 0;
   2.665 +-static unsigned int buffer_size = MAX_STRING_LEN;
   2.666 + static char max_buffer_content[80];
   2.667 + 
   2.668 + static char array_instead_of_string = 0;
   2.669 +@@ -663,23 +271,25 @@
   2.670 + 
   2.671 + static char script_name[256];
   2.672 + 
   2.673 +-int printline _ANSI_ARGS_((FILE *f, char *dir, int flags));
   2.674 ++int printline _ANSI_ARGS_((FILE *f, char *buf, char *dir, int flags));
   2.675 + int printfile _ANSI_ARGS_((FILE *fout, char *filename, char *dir, int flags));
   2.676 + 
   2.677 + int
   2.678 + #ifdef _USING_PROTOTYPES_
   2.679 + printline (
   2.680 +     FILE *f,
   2.681 ++    char *buf,
   2.682 +     char *dir,
   2.683 +     int flags)
   2.684 + #else
   2.685 +-printline(f, dir, flags)
   2.686 ++printline(f,buf,dir,flags)
   2.687 +     FILE *f;
   2.688 ++    char *buf;
   2.689 +     char *dir;
   2.690 +     int flags;
   2.691 + #endif
   2.692 + {
   2.693 +-    char *p, *q, *buf = buffer;
   2.694 ++    char *p,*q;
   2.695 +     char path[128];
   2.696 +     unsigned int l;
   2.697 + 
   2.698 +@@ -730,7 +340,7 @@
   2.699 + 	    *q='}';
   2.700 + 	}
   2.701 +     }
   2.702 +-    p = buffer;
   2.703 ++    p = buf;
   2.704 +     while ((p = strstr(p, "[list source [file join $dir")) != NULL) {
   2.705 + 	q = strstr(p,".tcl]]");
   2.706 + 	if (q != NULL) {
   2.707 +@@ -805,14 +415,6 @@
   2.708 +     p = q = buffer;
   2.709 +     while ((c=fgetc(fin))!=EOF) {
   2.710 + 	*p = 0;
   2.711 +-        if (p + 10 > buffer + buffer_size) {
   2.712 +-	    char *new;
   2.713 +-	    buffer_size += MAX_STRING_LEN;
   2.714 +-	    new = (char *) realloc(buffer, buffer_size);
   2.715 +-	    p = new + (p - buffer);
   2.716 +-	    q = new + (q - buffer);
   2.717 +-	    buffer = new;
   2.718 +-        }
   2.719 + 	if (c=='\n') {
   2.720 + 	    if (!strncmp(buffer,"if {[info exists tk_library] && [string compare $tk_library {}]} {",66)) {
   2.721 + 		int flag = 1;
   2.722 +@@ -823,6 +425,7 @@
   2.723 + 			flag--;
   2.724 + 		    }
   2.725 + 		}
   2.726 ++		flag=0;
   2.727 + 		p=q=buffer;
   2.728 + 	    } else if ((p==buffer)||(*q=='\n')||(*q=='#')) {
   2.729 + 		if ((*q=='#') && (*(p-1)=='\\')) {
   2.730 +@@ -833,54 +436,23 @@
   2.731 + 	    } else {
   2.732 + 		*p++ = '\n'; *p=0;
   2.733 + 		if (Tcl_CommandComplete(buffer)) {
   2.734 +-		    p--; *p = 0; printline(fout,dir,flags);
   2.735 ++		    p--; *p = 0; printline(fout,buffer,dir,flags);
   2.736 + 		    p = q = buffer;
   2.737 + 		} else {
   2.738 + 		    q=p;
   2.739 + 		}
   2.740 + 	    }
   2.741 + 	} else {
   2.742 +-	    *p++ = (char) c;
   2.743 ++	    *p++ = c;
   2.744 + 	}
   2.745 +     }
   2.746 +     if (p!=buffer) {
   2.747 +-	*p=0; printline(fout, dir, flags);
   2.748 ++	*p=0; printline(fout,buffer,dir,flags);
   2.749 +     }
   2.750 +     fclose(fin);
   2.751 +     return 0; /* O.K. */
   2.752 + }
   2.753 + 
   2.754 +-#ifdef _APPLICATION_IS_ROOT_PATH_
   2.755 +-char abs_exe_path[PATH_MAX];
   2.756 +-char *
   2.757 +-#ifdef _USING_PROTOTYPES_
   2.758 +-app_GetPath(
   2.759 +-	int argc,
   2.760 +-	char *argv[])
   2.761 +-#else
   2.762 +-app_GetPath(argc, argv)
   2.763 +-	int argc;
   2.764 +-	char *argv[];
   2.765 +-#endif
   2.766 +-{
   2.767 +-  char path_save[PATH_MAX];
   2.768 +-  char *p;
   2.769 +-  if(!(p = strrchr(argv[0], '/')))
   2.770 +-    getcwd(abs_exe_path, sizeof(abs_exe_path));
   2.771 +-  else
   2.772 +-  {
   2.773 +-    *p = '\0';
   2.774 +-    getcwd(path_save, sizeof(path_save));
   2.775 +-    chdir(argv[0]);
   2.776 +-    getcwd(abs_exe_path, sizeof(abs_exe_path));
   2.777 +-    chdir(path_save);
   2.778 +-  }
   2.779 +-  //printf("Absolute path to executable is: %s\n", abs_exe_path);
   2.780 +-  return abs_exe_path;
   2.781 +-};
   2.782 +-#endif
   2.783 +-
   2.784 +-/* MAIN */
   2.785 + int
   2.786 + #ifdef _USING_PROTOTYPES_
   2.787 + main (
   2.788 +@@ -898,11 +470,6 @@
   2.789 +     tableitem *t;
   2.790 +     int c,i, flags=0;
   2.791 + 
   2.792 +-#ifdef _APPLICATION_IS_ROOT_PATH_
   2.793 +-	/* GOTO APPLICATION PATH */
   2.794 +-	chdir(app_GetPath(argc, argv));
   2.795 +-#endif
   2.796 +-
   2.797 +     if (argc==1) {
   2.798 + 	printf(verbose);
   2.799 + 	exit(0);
   2.800 +@@ -921,6 +488,8 @@
   2.801 + 	    i++; strcpy(script_name,argv[i]);
   2.802 + 	} else if (!strcmp(argv[i],"-o")) {
   2.803 + 	    i++; filename = argv[i];
   2.804 ++	} else if (!strcmp(argv[i],"-index")) {
   2.805 ++	    flags = -1;
   2.806 + 	} else {
   2.807 + 	    for (t=table;t<table+(sizeof(table)/sizeof(tableitem));t++) {
   2.808 + 		if (!strcmp(argv[i],t->option)) {
   2.809 +@@ -950,61 +519,41 @@
   2.810 + 	p = q+1;
   2.811 +     }
   2.812 +     strcpy(script_name,p);
   2.813 +-    q = script_name;
   2.814 +-    while (*q) {
   2.815 +-	if (*q == '.') {
   2.816 +-	    *q = '_';
   2.817 +-	} else if (isupper(*q)) {
   2.818 +-	    *q = tolower(*q);
   2.819 +-	}
   2.820 +-	q++;
   2.821 +-    }
   2.822 +     while ((q = strchr(script_name,'.')) != NULL) {
   2.823 + 	*q = '_';
   2.824 +     }
   2.825 + /* create prototypes for all initialization functions that are used */
   2.826 +-    if (flags) {
   2.827 ++    if (flags  && (flags != -1)) {
   2.828 + 	if (script_name[0] == 0) {
   2.829 + 	    strcpy(script_name,"script");
   2.830 + 	}
   2.831 + 	fprintf(fout, part1);
   2.832 + 	for (i=0,c=1;i<(sizeof(table)/sizeof(tableitem));i++,c<<=1) {
   2.833 + 	    if (flags & c) {
   2.834 +-		fprintf(fout,defineproto,table[i].package,
   2.835 ++		fprintf(fout,defineproto1,table[i].package,
   2.836 + 			table[i].package);
   2.837 + 	    }
   2.838 + 	}
   2.839 +-	fprintf(fout, "#endif\n\n");
   2.840 +-	for (i=1,c=2;i<(sizeof(table)/sizeof(tableitem));i++,c<<=1) {
   2.841 ++	fprintf(fout, part2);
   2.842 ++	for (i=0,c=1;i<(sizeof(table)/sizeof(tableitem));i++,c<<=1) {
   2.843 + 	    if (flags & c) {
   2.844 + 		fprintf(fout,defineproto2,table[i].package);
   2.845 + 	    }
   2.846 + 	}
   2.847 +-	fprintf(fout, part2);
   2.848 +-
   2.849 +-	if (flags & 2) {
   2.850 + 	    fprintf(fout, part3);
   2.851 +-	}
   2.852 +-	for (i=1,c=2;i<(sizeof(table)/sizeof(tableitem));i++,c<<=1) {
   2.853 ++	for (i=0,c=1;i<(sizeof(table)/sizeof(tableitem));i++,c<<=1) {
   2.854 + 	    if (flags & c) {
   2.855 + 		fprintf(fout,initproto,table[i].package,
   2.856 + 			table[i].package,table[i].package);
   2.857 + 	    }
   2.858 + 	}
   2.859 + 	fprintf(fout, part4, script_name);
   2.860 +-	if (array_instead_of_string) {
   2.861 +-	    fprintf(fout, part4b);
   2.862 +-	} else {
   2.863 +-	    fprintf(fout, part4a);
   2.864 + 	}
   2.865 +-    }
   2.866 +     if ( !array_instead_of_string && script_name[0]) {
   2.867 + 	fprintf(fout, "static char *%s[] = {\n", script_name);
   2.868 +     }
   2.869 + /* handle all remaining arguments */
   2.870 +     if (argc) {argc--; argv++;}
   2.871 +-    buffer = (char *) malloc(4*MAX_STRING_LEN);
   2.872 +-    buffer_size = 4*MAX_STRING_LEN;
   2.873 +     while(argc) {
   2.874 + 	if ((*argv)[0]=='-') {
   2.875 + 	    if ((((*argv)[1]=='o')||((*argv)[1]=='n'))&&((*argv)[2]==0)) {
   2.876 +@@ -1021,7 +570,6 @@
   2.877 + 	}
   2.878 + 	argc--; argv++;
   2.879 +     }
   2.880 +-    free(buffer);
   2.881 +     if ( array_instead_of_string ) {
   2.882 +       fprintf(fout, "static char *%s[] = {\n", script_name);
   2.883 +       for (i = 0; (unsigned int)i < num_lines;)
   2.884 +@@ -1031,39 +579,34 @@
   2.885 +       fprintf(fout, "(char *) NULL\n};\n\n");
   2.886 +     }
   2.887 + /* end of scripts, finally the functions main() and tclAppInit()  */
   2.888 +-    if (flags) {
   2.889 ++    if (flags  && (flags != -1)) {
   2.890 + 	fprintf(fout, part5, script_name);
   2.891 +-	fprintf(fout, part5a, script_name);
   2.892 +-	fprintf(fout, part5b);
   2.893 +-	fprintf(fout, part5c);
   2.894 +-	for (i=1,c=2;i<(sizeof(table)/sizeof(tableitem));i++,c<<=1) {
   2.895 +-	    if (flags & c) {
   2.896 +-		fprintf(fout,callinit,table[i].package);
   2.897 ++	fprintf(fout,callinit,table[0].package);
   2.898 ++	if (flags & 0x20) {
   2.899 ++	    fprintf(fout,callinit,table[5].package);
   2.900 ++	}
   2.901 ++	for (i=0,c=1;i<(sizeof(table)/sizeof(tableitem));i++,c<<=1) {
   2.902 ++	    if ((flags & c) && (i!=0))
   2.903 + 		fprintf(fout,packageproto,table[i].package,table[i].package,table[i].package);
   2.904 + 	    }
   2.905 ++	for (i=0,c=1;i<(sizeof(table)/sizeof(tableitem));i++,c<<=1) {
   2.906 ++	    if ((flags & c) && (i!=0) && (i!=5))
   2.907 ++		fprintf(fout,callinit,table[i].package);
   2.908 + 	}
   2.909 + 	p=filename?filename:"app";
   2.910 + 	if ((q=strrchr(p,'/')) != NULL) p=q+1;
   2.911 + 	if ((q=strchr(p,'.')) != NULL) *q=0;
   2.912 + 	if (!*p) p="app";
   2.913 +-	fprintf(fout, part6,script_name,script_name,p,p);
   2.914 +-	if (flags & 2) {
   2.915 +-	    fprintf(fout, part6a);
   2.916 ++	fprintf(fout, part6,script_name,p,p);
   2.917 + 	}
   2.918 +-	fprintf(fout, part6b);
   2.919 +-	fprintf(fout, part6c);
   2.920 +-	fprintf(fout, part6d);
   2.921 +-	fprintf(fout, part6e);
   2.922 +-    }
   2.923 + /* close output-file, if not stdout */
   2.924 +     if (fout!=stdout) {
   2.925 + 	fclose(fout);
   2.926 +     }
   2.927 +     if (max_buffer>MAX_STRING_LEN) {
   2.928 +-	fprintf(stderr,"warning: largest sting in output file is %d bytes\n\
   2.929 ++	fprintf(stderr,"warning: largest string in output file is %d bytes\n\
   2.930 +          many compilers can only handle %d characters in a string\n\
   2.931 + 	 first line: %s\n",max_buffer,MAX_STRING_LEN,max_buffer_content);
   2.932 +     }
   2.933 +     exit(0);
   2.934 +-    return 0;
   2.935 + }