liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

0001-realpath.patch (943B)


      1 diff --git a/lualinux.c b/lualinux.c
      2 index f3d1a4d..9c5dc9c 100644
      3 --- a/lualinux.c
      4 +++ b/lualinux.c
      5 @@ -387,6 +387,18 @@ static int ll_readlink(lua_State *L) {
      6  	RET_STRN(buf, n);
      7  }
      8  
      9 +static int ll_realpath(lua_State *L) {
     10 +	const char *pname = luaL_checkstring(L, 1);
     11 +	char * resolved = realpath(pname, NULL); /* mallocs */
     12 +	if (resolved == 0) {
     13 +	    RET_ERRNO;
     14 +	} else {
     15 +	    lua_pushstring(L, resolved);
     16 +	    free(resolved);
     17 +	    return 1;
     18 +	}
     19 +}
     20 +
     21  static int ll_lstat3(lua_State *L) {
     22  	// lua api: lstat3(path [,statflag:int])
     23  	// if statflag=1: do stat(). default: do lstat
     24 @@ -924,6 +936,7 @@ static const struct luaL_Reg lualinuxlib[] = {
     25  	{"readdir", ll_readdir},
     26  	{"closedir", ll_closedir},
     27  	{"readlink", ll_readlink},
     28 +	{"realpath", ll_realpath},
     29  	{"lstat3", ll_lstat3},
     30  	{"lstat", ll_lstat},
     31  	{"utime", ll_utime},
     32 @@ -969,4 +982,3 @@ int luaopen_lualinux (lua_State *L) {
     33  	lua_settable (L, -3);
     34  	return 1;
     35  }
     36 -