lua-users home
lua-l archive

Re: lib.sys.listdir Re: C Function returning a table to LUA?

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


Le Mon, Sep 29, 2003 at 05:11:24PM +0300, you write :
 
> Both LuaCheia and GluaX provide the kind of service you mention, and it 
> works for Linux, Win32 and OS X. From gluax 'sys_module.c' (returns a 
> table using gluax macros):
[...]
> struct dirent* entry;
> dir= opendir( path );
> while( (entry= readdir(dir)) != NULL )
> closedir( dir );
Look at lposlib.c you can read :
What's the difference ?
static int pos_dir (lua_State *L)
{
 DIR *d = NULL;
 switch (lua_type(L, 1))
 {
 case LUA_TNONE:
 d=opendir(".");
 break;
 case LUA_TSTRING:
 d=opendir(lua_tostring(L, 1));
 break;
 default:
 lua_error(L, "optional argument to function Dir must be string");
 }
 if (d == NULL)
 {
 return pos_pusherr(L);
 }
 else
 {
 int i = 0;
 struct dirent *entry;
 lua_newtable(L);
 while ((entry = readdir(d)) != NULL)
 {
 lua_pushnumber(L, ++i);
 lua_pushstring(L, entry->d_name);
 lua_settable(L, -3);
 }
 closedir(d);
 lua_pushstring(L, "n");
 lua_pushnumber(L, i);
 lua_settable(L, -3);
 return 1;
 }
}

AltStyle によって変換されたページ (->オリジナル) /