Update to 2.0.0 tree from current Fremantle build
[opencv] / apps / cvenv / cvenv2.cpp
diff --git a/apps/cvenv/cvenv2.cpp b/apps/cvenv/cvenv2.cpp
deleted file mode 100644 (file)
index 651bdf0..0000000
+++ /dev/null
@@ -1,776 +0,0 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
-//                        Intel License Agreement
-//                For Open Source Computer Vision Library
-//
-// Copyright (C) 2000, Intel Corporation, all rights reserved.
-// Third party copyrights are property of their respective owners.
-//
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-//
-//   * Redistribution's of source code must retain the above copyright notice,
-//     this list of conditions and the following disclaimer.
-//
-//   * Redistribution's in binary form must reproduce the above copyright notice,
-//     this list of conditions and the following disclaimer in the documentation
-//     and/or other materials provided with the distribution.
-//
-//   * The name of Intel Corporation may not be used to endorse or promote products
-//     derived from this software without specific prior written permission.
-//
-// This software is provided by the copyright holders and contributors "as is" and
-// any express or implied warranties, including, but not limited to, the implied
-// warranties of merchantability and fitness for a particular purpose are disclaimed.
-// In no event shall the Intel Corporation or contributors be liable for any direct,
-// indirect, incidental, special, exemplary, or consequential damages
-// (including, but not limited to, procurement of substitute goods or services;
-// loss of use, data, or profits; or business interruption) however caused
-// and on any theory of liability, whether in contract, strict liability,
-// or tort (including negligence or otherwise) arising in any way out of
-// the use of this software, even if advised of the possibility of such damage.
-//
-//M*/
-
-#include "tcl.h"
-#include "tk.h"
-
-#ifndef WIN32
-#include <pthread.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <signal.h>
-#include <wait.h>
-#include <stdlib.h>
-#include <string.h>
-#endif
-
-//#include <string>
-//using namespace std;
-
-#ifdef WIN32
-#include <windows.h>
-
-#define PIPESIZE 100
-
-PROCESS_INFORMATION pi;
-
-HANDLE g_hReadPipe = NULL;
-HANDLE g_hWritePipe = NULL;
-HANDLE g_hErrReadPipe = NULL;
-HANDLE g_hErrWritePipe = NULL;
-HANDLE g_hInputReadPipe = NULL;
-HANDLE g_hInputWritePipe = NULL;
-
-#else
-static char home_path[200];
-#endif
-
-char cmd[300];
-char* g_pchBuf = NULL;
-
-void   MainEx(int argc, char **argv, Tcl_AppInitProc *pfappInitProc, Tcl_Interp *pintrp,
-               char *pchfileName);
-int            Tcl_AppInit(Tcl_Interp *pintrp);
-void   Panic (Tcl_Interp * pintrp, const char * pch);
-void    WishPanic TCL_VARARGS_DEF(char *,arg1);
-
-#include "colorer.h"
-#include "cvenv.h"
-
-//string g_sCfgFile = "colors.cfg";
-
-bool g_bNonStop = true;
-bool g_bRun = false;
-
-/*
- *----------------------------------------------------------------------
- *
- * Commands routines.
- *
- * Results:
- *  TCL_OK - if sucsess, or TCL_ERROR
- *
- *----------------------------------------------------------------------
- */
-
-static char* module_path;
-
-static char* GetPathFromModuleName( char* modulename )
-{
-    int i;
-    if( !modulename )
-        return 0;
-#ifndef WIN32
-    /* if module is link find real path */
-    int  len;
-    char real[1000];
-    strcpy( real, modulename );
-    while( (len = readlink( real, real, 1000 )) > 0 )
-        real[len] = 0;
-    char* path = (char*)malloc( strlen( real ) + 10 );
-    strcpy( path, real );
-#else
-    char* path = (char*)malloc( strlen( modulename ) + 10 );
-    strcpy( path, modulename );
-#endif
-
-    for( i = strlen( path ) - 1;
-         i > 0 && path[i] != '\\' && path[i] != '/';
-         i-- );
-
-    if( i <= 0 )
-    {
-        path[0] = '.';
-        i = 1;
-    }
-
-    path[i] = '/';
-    path[i + 1] = 0;
-
-#ifdef WIN32
-    for( i = 0; i < (int)strlen( path ); i++ )
-        if( path[i] == '\\' )
-            path[i] = '/';
-#endif
-
-    return path;
-}
-
-int _LoadColors (ClientData cd, Tcl_Interp *pintrp,
-    int argc, char **argv)
-{
-    
-       char fn[300];
-#ifdef WIN32
-    strcat( strcpy( fn, module_path ), "/colors.tcl" );
-#else
-       strcat( strcpy( fn, home_path ), "/.cvenv/colors.tcl" );
-#endif
-    LoadColors( pintrp, fn );
-    return TCL_OK;
-}
-
-int _SaveColors (ClientData cd, Tcl_Interp *pintrp,
-    int argc, char **argv)
-{
-    char fn[300];
-#ifdef WIN32
-    strcat( strcpy( fn, module_path ), "/colors.tcl" );
-#else
-       strcat( strcpy( fn, home_path ), "/.cvenv" );
-    mkdir( fn, 0700 );
-    strcat( fn, "/colors.tcl" );
-#endif
-    SaveColors( pintrp, fn );
-    return TCL_OK;
-}
-
-static int finished = 0;
-static int started = 0;
-static char* buffer = 0;
-static char* errbuffer = 0;
-
-#ifdef WIN32
-CRITICAL_SECTION  mutex;
-
-DWORD WINAPI ErrReaderFun (LPVOID pvParam)
-{
-    DWORD cchReadBuffer,cchErrReadBuffer,counter = 0;  /* number of bytes read or to be written */
-
-    char * chErrReadBuffer = (char*)malloc( PIPESIZE + 1 );  /* pipe read buffer */
-
-    while( ReadFile( g_hErrReadPipe, chErrReadBuffer, PIPESIZE, &cchErrReadBuffer, 0 ) )
-    {
-        counter++;
-        chErrReadBuffer[cchErrReadBuffer] = 0;
-        EnterCriticalSection( &mutex );
-        if(!errbuffer)
-        {
-            errbuffer = (char*)malloc( strlen( chErrReadBuffer ) + 1 );
-            strcpy( errbuffer, chErrReadBuffer );
-        }
-        else
-        {
-            errbuffer = (char*)realloc( errbuffer, strlen( errbuffer ) + strlen( chErrReadBuffer ) + 2 );
-            strcat( errbuffer, chErrReadBuffer );
-        }
-        LeaveCriticalSection( &mutex );
-    }
-
-    free(chErrReadBuffer);
-return 0;
-}
-
-DWORD WINAPI ReaderFun (LPVOID pvParam)
-{
-    char* comline = (char*)pvParam;
-    
-    //-----------------------------------------------------------------------
-    BOOL bOk;  /* BOOL return code for APIs */
-    
-    DWORD cchReadBuffer,cchErrReadBuffer,counter = 0;  /* number of bytes read or to be written */
-    STARTUPINFO si;  /* for CreateProcess call */
-    SECURITY_ATTRIBUTES saPipe,saErrPipe;  /* security for anonymous pipe */
-    DWORD  retCode;                     // Used to trap return codes.
-    //-----------------------------------------------------------------------
-
-    //-----------------------------------------------------------------------
-    /* set up the security attributes for the anonymous pipe */
-    saPipe.nLength = sizeof(SECURITY_ATTRIBUTES);
-    saPipe.lpSecurityDescriptor = NULL;
-    saErrPipe.nLength = sizeof(SECURITY_ATTRIBUTES);
-    saErrPipe.lpSecurityDescriptor = NULL;
-
-    /* In order for the child to be able to write to the pipe, the handle */
-    /* must be marked as inheritable by setting this flag: */
-    saPipe.bInheritHandle = TRUE;
-    saErrPipe.bInheritHandle = TRUE;
-    //-----------------------------------------------------------------------
-  
-    bOk = CreatePipe(&g_hReadPipe,
-                     &g_hWritePipe,
-                     &saPipe,      
-                     PIPESIZE);    
-    
-    if (!bOk)
-    {
-            retCode = GetLastError();
-            printf("Reader: Can't create STDOUT pipe, Error #%d\n",GetLastError());
-            return 0;
-    }
-
-    bOk = CreatePipe(&g_hErrReadPipe,
-                     &g_hErrWritePipe,
-                     &saErrPipe,
-                     PIPESIZE);
-    
-    if (!bOk)
-    {
-            retCode = GetLastError();
-            printf("Reader: Can't create STDERR pipe, Error #%d\n",GetLastError());
-            return 0;
-    }
-
-    bOk = CreatePipe(&g_hInputReadPipe,
-                     &g_hInputWritePipe,
-                     &saErrPipe,
-                     PIPESIZE);
-    
-    if (!bOk)
-    {
-            retCode = GetLastError();
-            printf("Reader: Can't create STDIN pipe, Error #%d\n",GetLastError());
-            return 0;
-    }
-
-    
-    /* Set up the STARTUPINFO structure for the CreateProcess() call */
-    memset(&si, 0, sizeof(si));
-    si.cb = sizeof(si);    
-    //si.hStdError = si.hStdOutput = g_hWritePipe;
-    //si.dwFlags = STARTF_USESTDHANDLES;
-    
-    //Out//
-    //si.hStdOutput = g_hWritePipe; /* write end of the pipe */
-    //si.dwFlags = STARTF_USESTDHANDLES;
-
-    char buf[1000] ="";
-    char ln[300];
-    strcpy( buf, module_path );
-    strcat( buf, comline );
-    sprintf(ln," %u",g_hWritePipe);
-    strcat( buf, ln );
-    sprintf(ln," %u",g_hErrWritePipe);
-    strcat( buf, ln );
-    sprintf(ln," %u",g_hInputReadPipe);
-    strcat( buf, ln );
-
-    
-    /* Now create the child process, inheriting handles */
-    bOk = CreateProcess(NULL,       /* filename */
-                        buf,        /* full command line for child */
-                        NULL,       /* process security descriptor */
-                        NULL,       /* thread security descriptor */
-                        TRUE,       /* inherit handles? Also use if STARTF_USESTDHANDLES */
-                        /*DETACHED_PROCESS*/0,          /* creation flags */ //Out// 0
-                        NULL,       /* inherited environment address */
-                        NULL,       /* startup dir; NULL = start in current */
-                        &si,        /* pointer to startup info (input) */
-                        &pi);       /* pointer to process info (output) */
-
-    CloseHandle( g_hWritePipe ); g_hWritePipe = NULL;
-    CloseHandle( g_hErrWritePipe ); g_hErrWritePipe = NULL;
-    CloseHandle( g_hInputReadPipe ); g_hInputReadPipe = NULL;
-
-    started = 1;
-    
-    char * chReadBuffer = (char*)malloc( PIPESIZE + 1 );  /* pipe read buffer */
-    
-    DWORD tid;
-    CloseHandle(CreateThread(NULL, 0, ErrReaderFun,
-                             NULL, 0, &tid));
-
-    while( ReadFile( g_hReadPipe, chReadBuffer, PIPESIZE, &cchReadBuffer, 0 ) )
-    {
-        chReadBuffer[cchReadBuffer] = 0;
-        EnterCriticalSection( &mutex );
-        if(!buffer)
-        {
-            buffer = (char*)malloc( strlen( chReadBuffer ) + 1 );
-            strcpy( buffer, chReadBuffer );
-        }
-        else
-        {
-            buffer = (char*)realloc( buffer, strlen( buffer ) + strlen( chReadBuffer ) + 2 );
-            strcat( buffer, chReadBuffer );
-        }
-        LeaveCriticalSection( &mutex );
-    }
-
-    free(chReadBuffer);
-    finished = 1;
-    //--------------------------------------------------
-    printf("ReaderID: I finish myself\n");
-    //--------------------------------------------------
-
-    return 0;
-}
-#else
-
-char** global_argv;
-int    global_argc;
-int    main_seance( int argc, char** argv );
-
-static pid_t child;
-static pthread_mutex_t mutex;
-static int fd[2];
-static int err[2];
-static int fdi[2];
-
-static void* errrun_process( void* a )
-{
-    int nbytes;
-    char buff[100];
-    while( (nbytes = read( err[0], buff, sizeof(errbuffer) )) > 0 )
-    {
-        buff[nbytes] = 0;
-        pthread_mutex_lock( &mutex );
-        if( !errbuffer )
-        {
-            errbuffer = (char*)malloc( strlen( buff ) + 1 );
-            errbuffer[0] = 0;
-        }
-        else
-            errbuffer = (char*)realloc( errbuffer, strlen( errbuffer ) + strlen( buff ) + 2 );
-        strcat( errbuffer, buff );
-        pthread_mutex_unlock( &mutex );
-    }
-    
-    close( err[0] );
-
-    return 0;
-}
-
-static void* run_process( void* a )
-{
-    char* argv = (char*)a;
-    // creating pipe for interproc communications
-    pipe( fd );
-    pipe( err );
-    pipe( fdi );
-    
-    // creating child process
-    if( (child = fork()) == -1 )
-    {
-        printf( "can't fork\n" );
-        exit( 1 );
-    }
-
-    if( !child )
-    {
-        /* we are in child process */
-        char pip[100];
-        char errp[100];
-        char pipi[100];
-        sprintf( pip, "%d", fd[1] );
-        sprintf( errp, "%d", err[1] );
-        sprintf( pipi, "%d", fdi[0] );
-        close( fd[0] );
-        close( err[0] );
-        close( fdi[1] );
-        char* _argv[] = {global_argv[0], argv, pip, errp, pipi,0};
-        main_seance( 5, _argv );
-        close( fd[1] );
-        close( err[1] );
-        close( fdi[0] );
-        exit( 0 );
-    }
-    else
-    {
-        // we are in parent process
-        close( fd[1] );
-        close( err[1] );
-        close( fdi[0] );
-        char buff[100];
-
-        pthread_t thread;
-        pthread_create( &thread, 0, errrun_process, 0 );
-    
-        int nbytes;
-        while( (nbytes = read( fd[0], buff, sizeof(buffer) )) > 0 )
-        {
-            buff[nbytes] = 0;
-            pthread_mutex_lock( &mutex );
-            if( !buffer )
-            {
-                buffer = (char*)malloc( strlen( buff ) + 1 );
-                buffer[0] = 0;
-            }
-            else
-                buffer = (char*)realloc( buffer, strlen( buffer ) + strlen( buff ) + 2 );
-            strcat( buffer, buff );
-            pthread_mutex_unlock( &mutex );
-        }
-
-        close( fd[0] );
-        finished = 1;
-        wait( 0 );
-    }
-    
-    return 0;
-}
-#endif
-
-static char filename[1000];
-
-int InputData (ClientData, Tcl_Interp *interp,
-    int, char **argv)
-{
-
-#ifdef WIN32
-    if (g_hInputWritePipe)
-#else
-    if( fdi[1] )
-#endif
-    {
-        char* data =  Tcl_GetVar(interp, "CVEnv::inputdata", TCL_GLOBAL_ONLY);
-            
-        if (*data)
-        {
-            size_t len = strlen( data );
-            unsigned long num;
-
-#           ifdef WIN32
-                WriteFile(g_hInputWritePipe,
-                        (LPCVOID) data,
-                        len,
-                        &num,
-                        NULL);
-#           else
-                write( fdi[1], data, len );
-#           endif
-        
-        }
-    }
-    return TCL_OK;
-}
-
-int Execute_Command (ClientData, Tcl_Interp *interp,
-    int, char **argv)
-{
-    Tcl_Eval(interp,
-        "$CVEnv::tb.bbox3.b0 configure -state disable -relief link\n"
-        "$CVEnv::tb.bbox3.b1 configure -state active -relief link\n"
-        //"$CVEnv::tb.bbox3.b1 _leave\n"
-        );
-
-#ifdef WIN32
-    DWORD tid;
-    strcpy(cmd , "seance ");
-    strcat(cmd, argv[1] );
-    CloseHandle(CreateThread(NULL, 0, ReaderFun,
-                             cmd, 0, &tid));
-#else
-    strcpy( filename, argv[1] );
-    pthread_t thread;
-    pthread_create( &thread, 0, run_process, filename );
-#endif
-    
-    return TCL_OK;
-}
-
-
-int Stop_Command (ClientData, Tcl_Interp *interp, int, char**)
-{   
-    Tcl_Eval(interp,
-        "$CVEnv::tb.bbox3.b1 configure -state disable -relief link\n"
-        "$CVEnv::tb.bbox3.b0 configure -state active -relief link\n"
-        //"$CVEnv::tb.bbox3.b0 _leave"
-           );
-
-#ifdef WIN32
-    if (TerminateProcess(pi.hProcess,1))
-        return TCL_OK;
-    else return TCL_ERROR;
-#else
-    if( kill( child, 9 ) )
-    {
-        printf( "kill error\n" );
-    }
-    return TCL_OK;
-#endif
-}
-
-////////////////////////////////////////////////////////////////////////
-
-/*
- *----------------------------------------------------------------------
- *
- * Commands_Init --    Commands initialisation routine.
- *
- * Results:
- *     TCL_OK - if sucsess, or TCL_ERROR
- *
- *----------------------------------------------------------------------
- */
-int
-Commands_Init(Tcl_Interp *interp)
-{
-    Tcl_CreateCommand (interp, "pExecute", Execute_Command,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pStop", Stop_Command,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pLoadColors", _LoadColors,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pSaveColors", _SaveColors,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pParsebegin", ParseTextBegin,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pParseend", ParseTextEnd,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pInput", InputData,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-
-    return TCL_OK;
-}
-
-
-/*
- *----------------------------------------------------------------------
- *
- * MainEx -- Main program for Tk-based applications.
- *
- *----------------------------------------------------------------------
- */
-void
-MainEx( int argc, char** argv, Tcl_AppInitProc *appInitProc,
-        Tcl_Interp *pintrp, char *fileName )
-{
-#ifndef WIN32
-    global_argv = argv;
-    global_argc = argc;
-#endif
-
-    int code;
-
-    (*appInitProc)(pintrp);
-
-    if ( Commands_Init(pintrp) != TCL_OK) 
-        Panic (pintrp,"Can't initialise commands!");
-
-    //if (!LoadColors(pintrp,string("colors.tcl")))
-    //    Panic (pintrp,"Can't load config file!");
-    
-    char set_path[1000];
-    strcat( strcat( strcpy( set_path, "set ::image_path \"" ), module_path ), "\"" );
-    code = Tcl_Eval( pintrp, set_path );
-    
-       if (fileName != NULL) 
-    {
-        char  script[1000];
-        strcat( strcat( strcpy( script, module_path ), "" ), fileName );
-        code = Tcl_EvalFile(pintrp, script);
-        if (code != TCL_OK)
-            Panic (pintrp,"Evaluate file error!");
-    }
-    else Tcl_SourceRCFile(pintrp);
-
-    Tcl_ResetResult(pintrp);
-    
-#ifdef WIN32
-    InitializeCriticalSection( &mutex );
-#else
-    pthread_mutex_init( &mutex, 0 );
-#endif
-    
-    while( Tk_GetNumMainWindows() > 0 )
-    {
-        while( Tcl_DoOneEvent( TCL_DONT_WAIT ) );
-        
-#ifdef WIN32
-        EnterCriticalSection( &mutex );
-#else
-        pthread_mutex_lock( &mutex );
-#endif
-        if( buffer )
-        {
-            char* pchcom = (char*)malloc( strlen( buffer ) + 1000 );
-            strcpy(pchcom , "set outputText \"");
-            strcat(pchcom , (const char*)buffer);
-            strcat(pchcom , "\"\n");
-            //strcat(pchcom , "$CVEnv::outtx configure -state normal\n");
-            strcat(pchcom , "$CVEnv::outtx insert end $outputText\n");
-            //strcat(pchcom , "$CVEnv::outtx configure -state disabled\n");
-            strcat(pchcom , "$CVEnv::outtx see \"end -1 lines\"\n");
-            strcat(pchcom , "unset outputText\n");
-            Tcl_Eval( pintrp, pchcom );
-            free( pchcom );
-
-            free( buffer );
-            buffer = 0;
-        }
-
-        if( errbuffer )
-        {
-            char* pchcom = (char*)malloc( strlen( errbuffer ) + 1000 );
-            strcpy(pchcom , "set errText \"");
-            strcat(pchcom , (const char*)errbuffer);
-            strcat(pchcom , "\"\n");
-            //strcat(pchcom , "$CVEnv::outtx configure -state normal\n");
-            strcat(pchcom , "$CVEnv::parsetx insert end $errText\n");
-            //strcat(pchcom , "$CVEnv::outtx configure -state disabled\n");
-            strcat(pchcom , "$CVEnv::parsetx see \"end -1 lines\"\n");
-            strcat(pchcom , "unset errText\n");
-            Tcl_Eval( pintrp, pchcom );
-            free( pchcom );
-
-            free( errbuffer );
-            errbuffer = 0;
-        }
-
-        if( finished )
-        {
-            finished = 0;
-            Tcl_Eval(pintrp,
-                    "$CVEnv::tb.bbox3.b1 configure -state disable -relief link\n"
-                    "$CVEnv::tb.bbox3.b0 configure -state active -relief link\n"
-                    //"$CVEnv::tb.bbox3.b0 _leave"
-                       );
-
-#ifdef WIN32
-            CloseHandle( g_hReadPipe ); g_hReadPipe = NULL;
-            CloseHandle( g_hErrReadPipe ); g_hErrReadPipe = NULL;
-            CloseHandle( g_hInputWritePipe ); g_hInputWritePipe = NULL;
-#else
-#endif
-           }
-#ifdef WIN32
-        LeaveCriticalSection( &mutex );
-        Sleep( 1 );
-#else
-        pthread_mutex_unlock( &mutex );
-        usleep( 100 );
-#endif
-    }
-    Tcl_DeleteInterp(pintrp);
-    return;
-}
-
-
-/*
- *----------------------------------------------------------------------
- *
- * WishPanic -- escape function.
- *
- *----------------------------------------------------------------------
- */
-
-void WishPanic TCL_VARARGS_DEF(char *,arg1)
-{
-    va_list argList;
-    char buf[1024];
-    char *format;
-
-    format = TCL_VARARGS_START(char *,arg1,argList);
-    printf(buf, format, argList);
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * Panic -- error output & exit function.
- *
- *----------------------------------------------------------------------
- */
-
-void Panic (Tcl_Interp * pintrp, const char * pch)
-{
-    printf("Thread %P:",Tcl_GetCurrentThread());
-       printf(pch);
-       printf("\n    Reason:");
-       printf(pintrp->result);
-       printf("\n");
-
-       Tcl_DeleteInterp(pintrp);
-    Tcl_Exit(1);
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * Tcl_AppInit -- Initialisation function.
- *
- *----------------------------------------------------------------------
- */
-
-int Tcl_AppInit(Tcl_Interp *pintrp)
-{
-
-    if (Tcl_InitStubs(pintrp, TCL_VERSION, 1) == NULL)
-        Panic (pintrp,"Tcl stub's initialisation failed!");
-        
-       if (Tcl_Init(pintrp) == TCL_ERROR)
-           Panic (pintrp,"Tcl's initialisation failed!");
-       
-    if (Tk_Init(pintrp) == TCL_ERROR)
-        Panic (pintrp,"Tk's initialisation failed!");
-// in unix disable multythread support
-    return TCL_OK;
-}
-
-//-----------------------------------------------------------------------------
-
-int main(int argc, char* argv[])
-{
-    module_path = GetPathFromModuleName( argv[0] );
-
-#ifndef WIN32
-    if( argc == 2 )
-        main_seance( argc, argv );
-
-       char* hdir = getenv( "HOME" );
-       if( hdir )
-               strcpy( home_path, hdir );
-#endif
-
-    Tcl_Interp* g_pInterp = Tcl_CreateInterp();
-       
-       Tcl_SetPanicProc(WishPanic);
-    Tcl_FindExecutable(argv[0]);
-
-    MainEx(argc, argv, Tcl_AppInit, g_pInterp, "cvenv.tcl");
-
-    Tcl_DeleteInterp(g_pInterp);
-
-    return 0;
-}
-