static int Main(string[] args)
{
if( args.Length < 1 )
{
PrintErr( "need to specify at least one file" );
PrintHelp();
return 1;
}
for( int i = 0; i < args.Length; ++i )
{
if( args[ i ] == "--separate" || args[ i ] == "-s" ){ separate = true; args[ i ] = null; }
// else if( args[ i ] == "--debug" || args[ i ] == "-d" ){ idbg = 1; args[ i ] = null; }
// else if( args[ i ] == "--profile" ){ prof = 1; args[ i ] = null; }
// else if( args[ i ] == "--profile-ops" ){ prof = 2; args[ i ] = null; }
// else if( args[ i ] == "--profile-mem" ){ prof = 3; args[ i ] = null; }
else if( args[ i ] == "--help" || args[ i ] == "-h" ){ PrintHelp(); return 0; }
else if( args[ i ] == "--version" || args[ i ] == "-v" ){ printVersion = true; args[ i ] = null; }
else if( args[ i ] == "--stats" ){ printStats = true; args[ i ] = null; }
else if( args[ i ] == "--program" || args[ i ] == "-p" )
{
i++;
if( i == args.Length )
{
PrintErr( "file name expected" );
return 1;
}
PrintVersion();
Init();
for( int j = i; j < args.Length; ++j )
engine.Push( args[ j ] );
engine.PushArray( args.Length - i );
engine.SetGlobal( "argv", engine.StackItem( -1 ) );
engine.Pop( 1 );
engine.SetGlobal( "argc", engine.Var( args.Length - i ) );
try
{
engine.Include( args[ i ] );
}
catch( SGSException ex )
{
PrintErr( string.Format( "failed to run \"{0}\": {1}", args[ i ], ex.Message ) );
}
Free();
return 0;
}
}
PrintVersion();
Init();
for( int i = 0; i < args.Length; ++i )
{
if( args[ i ] != null )
{
try
{
engine.ExecFile( args[ i ] );
}
catch( SGSException ex )
{
PrintErr( string.Format( "failed to execute \"{0}\": {1}", args[ i ], ex.Message ) );
}
if( separate )
{
Free();
Init();
}
}
}
Free();
return 0;
}