lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


What I'm doing is to use ... or arg[1]

local myname = ... or arg[1]
print( myname )

... would be filled if require() has been used, and arg[1] if load() (I think, but that might be only for the main app, not sure - lua newbie still).

From there I'm stripping things that I don't need.

On 5/30/2011 8:08 AM, voxner wrote:
Hi,

My requirement is to load an embedded lua script file using C api. I am
unable to load the script file using C apis like lual_loadfile or
lual_dofile because the path is not properly setup as I use relative
names. I have tried adding my path to package.path but still i get
"Cannot open <file>" error. I cannot modify luaconf.h file so changing
LUA_DEFAULT_PATH is out of question.

I set package.path using C-APIs & then try to use relative filenames but
it doesn't work. Is there any other way of specifying the path (from C)
so that lua C apis work with relative names? Absolute path works fine.

I can see that the code sets the package.path to

"./?.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua;/usr/lib/lua/5.1/?.lua;/usr/lib/lua/5.1/?/init.lua*;/path/to/mydir/?.lua;*


but still luaL_loadfile fails... [1]

My code is based on [2].


      37     L = luaL_newstate();
      38     luaL_openlibs(L); /* Load Lua libraries */
      39     setLuaPath(L, "/path/to/mydir/");
      40     status = luaL_loadfile(L, "my.lua");
      41     if (status) {
      42         printf("Couldn't load file: %s\n", lua_tostring(L, -1));
      43         exit(1);
      44     }



      48 int setLuaPath( lua_State* L, const char* path )
      49 {
      50     char *cur_path;
      51     size_t len;
      52     char* mypath;
      53     lua_getglobal( L, "package" );
      54     lua_getfield( L, -1, "path" );
      55     cur_path = lua_tostring( L, -1);
      56     mypath = malloc(strlen(cur_path) + strlen(path) + 9);
      57     strcpy(mypath,cur_path);
      58     strcat(mypath,";");
      59     strcat(mypath,path);
      60     strcat(mypath,"?.lua;");
      61     lua_pop( L, 1 );
      62     lua_pushstring( L, mypath) ;
      63     lua_setfield( L, -2, "path" );
      64     lua_pop( L, 1 );
      65     return 0;
      66 }


[1] http://pastebin.com/xPjx8Vpy
[2]
http://stackoverflow.com/questions/4125971/setting-the-global-lua-path-variable-from-c-c

Thanks for your time,
Prasad