Changeset 21104

Show
Ignore:
Timestamp:
10/11/08 08:36:18 (3 months ago)
Author:
tokuhirom
Message:

added --eval option support with gengetopt++

Location:
lang/cplusplus/llv8call/trunk
Files:
3 added
3 modified

Legend:

Unmodified
Added
Removed
  • lang/cplusplus/llv8call/trunk/Sconstruct

    r20951 r21104  
     1PACKAGE='llv8call' 
    12VERSION='0.12' 
    23 
     
    6364    '-DPATHSEP=%s' % fixquote(re.sub("\\\\", "\\\\\\\\", os.pathsep)), 
    6465    '-DVERSION=%s' % fixquote(VERSION), 
     66    '-DCMDLINE_PARSER_VERSION=%s' % fixquote(VERSION), 
     67    '-DCMDLINE_PARSER_PACKAGE=%s' % fixquote(PACKAGE), 
    6568    '-DSHLIBPREFIX=%s' % fixquote(env.subst(env['SHLIBPREFIX'])), 
    6669    '-DSHLIBSUFFIX=%s' % fixquote(env.subst(env['SHLIBSUFFIX'])), 
  • lang/cplusplus/llv8call/trunk/src/SConscript

    r20608 r21104  
    1616prog = env.Program( 
    1717    "llv8call", 
    18     Split("main.cc util.cc builtins.cc ../v8ext/v8ext.cc sys.cc "), 
     18    Split("main.cc util.cc builtins.cc ../v8ext/v8ext.cc sys.cc cmdline.c"), 
    1919    LIBS=libs, 
    2020) 
  • lang/cplusplus/llv8call/trunk/src/main.cc

    r20862 r21104  
    1212#endif 
    1313#include "util.h" 
     14#include "cmdline.h" 
    1415#include "v8ext.h" 
    1516 
     
    117118 
    118119int main(int argc, char ** argv) { 
     120    gengetopt_args_info args_info; 
     121    if (cmdline_parser (argc, argv, &args_info) != 0) { 
     122        return 1; 
     123    } 
     124 
    119125    // initialize 
    120126    V8::SetFlagsFromCommandLine(&argc, argv, true); 
     
    134140 
    135141    // setup argv 
    136     Handle<Array> ARGV = Array::New(argc); 
    137     for (int i=1; i<argc; i++) { 
    138         ARGV->Set(Int32::New(i-1), String::New(argv[i])); 
     142    Handle<Array> ARGV = Array::New(args_info.inputs_num); 
     143    for (unsigned int i=1; i<args_info.inputs_num; i++) { 
     144        ARGV->Set(Int32::New(i-1), String::New(args_info.inputs[i])); 
    139145    } 
    140146    context->Global()->Set(String::New("ARGV"), ARGV); 
    141147 
    142148    // process main 
    143     if (argc >= 2) { 
     149    if (args_info.eval_given) { 
     150        if (!Exec(String::New(args_info.eval_arg), Undefined(), false)) { 
     151            return 1; 
     152        } else { 
     153            return 0; 
     154        } 
     155    } else if (args_info.inputs_num >= 1) { 
    144156        const char *srcfile = argv[1]; 
    145157        Handle<String> file_name = String::New(srcfile);