forked from len0rd/rockbox
Lua fix strip_extension and create_numbered_filename
Both of these functions modified the string in the lua stack per lua manual: 'When a C function receives a string argument from Lua, there are only two rules that it must observe: Not to pop the string from the stack while accessing it and never to modify the string' strip_extension will still work with old parameters and is thus backwards compatible strip_extension("filename") create_numbered_filename has changed slightly and IS NOT backwards compatible create_numbered_filename(path, prefix, suffix, [number]) (number defaults to -1) Change-Id: I34cf7e2f6f691f33d5ac2b2e995855a171fb99b3
This commit is contained in:
parent
948984309a
commit
df4cb9bafc
2 changed files with 38 additions and 0 deletions
|
@ -363,6 +363,39 @@ RB_WRAP(get_plugin_action)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RB_WRAP(strip_extension)
|
||||||
|
{
|
||||||
|
const char* filename = luaL_checkstring(L, -1);
|
||||||
|
const char* pos = rb->strrchr(filename, '.');
|
||||||
|
if(pos != NULL)
|
||||||
|
lua_pushlstring (L, filename, pos - filename);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
RB_WRAP(create_numbered_filename)
|
||||||
|
{
|
||||||
|
luaL_Buffer b;
|
||||||
|
luaL_buffinit(L, &b);
|
||||||
|
char *buffer = luaL_prepbuffer(&b);
|
||||||
|
buffer[0] = '\0';
|
||||||
|
|
||||||
|
const char * path = luaL_checkstring(L, 1);
|
||||||
|
const char * prefix = luaL_checkstring(L, 2);
|
||||||
|
const char * suffix = luaL_checkstring(L, 3);
|
||||||
|
int numberlen = luaL_optint(L, 4, -1);
|
||||||
|
|
||||||
|
if(rb->create_numbered_filename(buffer, path, prefix, suffix, numberlen))
|
||||||
|
{
|
||||||
|
luaL_addstring(&b, buffer);
|
||||||
|
luaL_pushresult(&b);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
#define RB_FUNC(func) {#func, rock_##func}
|
#define RB_FUNC(func) {#func, rock_##func}
|
||||||
static const luaL_Reg rocklib[] =
|
static const luaL_Reg rocklib[] =
|
||||||
{
|
{
|
||||||
|
@ -410,6 +443,9 @@ static const luaL_Reg rocklib[] =
|
||||||
|
|
||||||
RB_FUNC(get_plugin_action),
|
RB_FUNC(get_plugin_action),
|
||||||
|
|
||||||
|
RB_FUNC(strip_extension),
|
||||||
|
RB_FUNC(create_numbered_filename),
|
||||||
|
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
#undef RB_FUNC
|
#undef RB_FUNC
|
||||||
|
|
|
@ -65,6 +65,8 @@ my @forbidden_functions = ('^open$',
|
||||||
'^fdprintf$',
|
'^fdprintf$',
|
||||||
'^read_line$',
|
'^read_line$',
|
||||||
'^[a-z]+dir$',
|
'^[a-z]+dir$',
|
||||||
|
'^strip_extension$',
|
||||||
|
'^create_numbered_filename$',
|
||||||
'^s?+rand$',
|
'^s?+rand$',
|
||||||
'^strl?+cpy$',
|
'^strl?+cpy$',
|
||||||
'^strl?+cat$',
|
'^strl?+cat$',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue