mirror of https://github.com/rusefi/lua.git
"%q" can handle strings with '\0'.
This commit is contained in:
parent
176cb39feb
commit
ad446a0eb0
23
lstrlib.c
23
lstrlib.c
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
** $Id: lstrlib.c,v 1.17 1998/06/29 18:24:06 roberto Exp roberto $
|
||||
** $Id: lstrlib.c,v 1.18 1998/07/01 14:21:57 roberto Exp roberto $
|
||||
** Standard library for strings and pattern-matching
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
|
@ -446,13 +446,20 @@ static void str_gsub (void)
|
|||
}
|
||||
|
||||
|
||||
static void luaI_addquoted (char *s)
|
||||
{
|
||||
static void luaI_addquoted (int arg) {
|
||||
long l;
|
||||
char *s = luaL_check_lstr(arg, &l);
|
||||
luaL_addchar('"');
|
||||
for (; *s; s++) {
|
||||
if (strchr("\"\\\n", *s))
|
||||
luaL_addchar('\\');
|
||||
luaL_addchar(*s);
|
||||
while (l--) {
|
||||
switch (*s) {
|
||||
case '"': case '\\': case '\n':
|
||||
luaL_addchar('\\');
|
||||
luaL_addchar(*s);
|
||||
break;
|
||||
case '\0': addnchar("\\000", 4); break;
|
||||
default: luaL_addchar(*s);
|
||||
}
|
||||
s++;
|
||||
}
|
||||
luaL_addchar('"');
|
||||
}
|
||||
|
@ -490,7 +497,7 @@ static void str_format (void)
|
|||
buff = luaL_openspace(1000); /* to store the formatted value */
|
||||
switch (*strfrmt++) {
|
||||
case 'q':
|
||||
luaI_addquoted(luaL_check_string(arg));
|
||||
luaI_addquoted(arg);
|
||||
continue;
|
||||
case 's': {
|
||||
char *s = luaL_check_string(arg);
|
||||
|
|
Loading…
Reference in New Issue