summaryrefslogtreecommitdiffstats
path: root/apps/plugins/lua/rockaux.c
diff options
context:
space:
mode:
authorWilliam Wilgus <me.theuser@yahoo.com>2018-10-13 13:35:01 -0400
committerWilliam Wilgus <me.theuser@yahoo.com>2018-10-15 18:24:10 +0200
commit07fed9053a476b4c6e5ecd23fc43ec84f4094978 (patch)
treeda366faad51087b2e5000a1d9d3659d5bd1a73a8 /apps/plugins/lua/rockaux.c
parent0b7a8d5afd3d751fd0f6454098bc9fd1d05ee764 (diff)
downloadrockbox-07fed9053a476b4c6e5ecd23fc43ec84f4094978.tar.gz
rockbox-07fed9053a476b4c6e5ecd23fc43ec84f4094978.zip
lua optimize current_path function
frees up around 500 bytes by using the builtin string functionality Change-Id: Icd4ec921d3fec339b8a4b7f80c9c63d51d4c101c
Diffstat (limited to 'apps/plugins/lua/rockaux.c')
-rw-r--r--apps/plugins/lua/rockaux.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/apps/plugins/lua/rockaux.c b/apps/plugins/lua/rockaux.c
index f10a1cb021..b51364f718 100644
--- a/apps/plugins/lua/rockaux.c
+++ b/apps/plugins/lua/rockaux.c
@@ -73,9 +73,8 @@ int strcoll(const char * str1, const char * str2)
return rb->strcmp(str1, str2);
}
-const char* get_current_path(lua_State *L, int level)
+int get_current_path(lua_State *L, int level)
{
- static char buffer[MAX_PATH];
lua_Debug ar;
if(lua_getstack(L, level, &ar))
@@ -84,22 +83,15 @@ const char* get_current_path(lua_State *L, int level)
and write it to dest. */
lua_getinfo(L, "S", &ar);
- char* curfile = (char*) &ar.source[1];
- char* pos = rb->strrchr(curfile, '/');
+ const char* curfile = &ar.source[1];
+ const char* pos = rb->strrchr(curfile, '/');
if(pos != NULL)
{
- unsigned int len = (unsigned int)(pos - curfile);
- len = len + 1 > sizeof(buffer) ? sizeof(buffer) - 1 : len;
-
- if(len > 0)
- memcpy(buffer, curfile, len);
-
- buffer[len] = '/';
- buffer[len+1] = '\0';
-
- return buffer;
+ lua_pushlstring (L, curfile, pos - curfile + 1);
+ return 1;
}
}
- return NULL;
+ lua_pushnil(L);
+ return 1;
}