diff --git a/lib/allocators/gc.nelua b/lib/allocators/gc.nelua index e390d859..6e4177b3 100644 --- a/lib/allocators/gc.nelua +++ b/lib/allocators/gc.nelua @@ -533,9 +533,12 @@ end local function nelua_main(): cint end +global arg: span(cstring) + local function main(argc: cint, argv: cchar**): cint gc:start(&argc) gc:_mark_statics() + arg = {data=argv, size=argc} local ret: cint = nelua_main() gc:stop() return ret diff --git a/lib/arg.nelua b/lib/arg.nelua new file mode 100644 index 00000000..34724210 --- /dev/null +++ b/lib/arg.nelua @@ -0,0 +1,21 @@ +-- Include this file to get have the global "arg" +-- with your program command line arguments. + +## if pragmas.nogc then + +require 'span' + +global arg: span(cstring) + +local function nelua_main(): cint end + +local function main(argc: cint, argv: cchar**): cint + arg = {data=argv, size=argc} + return nelua_main() +end + +## else + +require 'allocators.gc' + +## end diff --git a/rockspecs/nelua-dev-1.rockspec b/rockspecs/nelua-dev-1.rockspec index 7edd317d..0e4c395b 100644 --- a/rockspecs/nelua-dev-1.rockspec +++ b/rockspecs/nelua-dev-1.rockspec @@ -122,6 +122,7 @@ build = { ['lib/allocators/stack.nelua'] = 'lib/allocators/stack.nelua', ['lib/allocators/heap.nelua'] = 'lib/allocators/heap.nelua', ['lib/allocators/pool.nelua'] = 'lib/allocators/pool.nelua', + ['lib/arg.nelua'] = 'lib/arg.nelua', ['lib/basic.nelua'] = 'lib/basic.nelua', ['lib/io.nelua'] = 'lib/io.nelua', ['lib/math.nelua'] = 'lib/math.nelua',