static void luaI_addquotedbinary (lua_State *L, luaL_Buffer *b, int arg) { size_t l; if (lua_type(L, arg) == LUA_TWSTRING) { const lua_WChar *s = luaL_checklwstring(L, arg, &l); luaL_putwchar(b, 'L'); luaL_putwchar(b, '"'); while (l--) { switch (*s) { case '"': case '\\': luaL_putwchar(b, '\\'); luaL_putwchar(b, *s); break; case '\a': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'a'); break; case '\b': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'b'); break; case '\f': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'f'); break; case '\n': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'n'); break; case '\r': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'r'); break; case '\t': luaL_putwchar(b, '\\'); luaL_putwchar(b, 't'); break; case '\v': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'v'); break; default: if (*s < 256 && isprint((unsigned char)*s)) { luaL_putwchar(b, *s); } else { lua_WChar str[10]; swprintf(str, L"\\x%04x", (unsigned long)*s); luaL_addwstring(b, str); } } s++; } luaL_putwchar(b, '"'); } else { const char *s = luaL_checklstring(L, arg, &l); luaL_putwchar(b, '"'); while (l--) { switch (*s) { case '"': case '\\': luaL_putwchar(b, '\\'); luaL_putwchar(b, *s); break; case '\a': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'a'); break; case '\b': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'b'); break; case '\f': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'f'); break; case '\n': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'n'); break; case '\r': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'r'); break; case '\t': luaL_putwchar(b, '\\'); luaL_putwchar(b, 't'); break; case '\v': luaL_putwchar(b, '\\'); luaL_putwchar(b, 'v'); break; default: if (isprint((unsigned char)*s)) { luaL_putwchar(b, *s); } else { lua_WChar str[10]; swprintf(str, L"\\x%02x", (unsigned long)(unsigned char)*s); luaL_addwstring(b, str); } } s++; } luaL_putwchar(b, '"'); /* const char *s = luaL_checklstring(L, arg, &l); luaL_putchar(b, '"'); while (l--) { switch (*s) { case '"': case '\\': luaL_putchar(b, '\\'); luaL_putchar(b, *s); break; case '\0': luaL_addlstring(b, "\\000", 4); break; default: if (isprint(*s) && *s != 13 && *s != 10) luaL_putchar(b, *s); else { char buf[5]; sprintf(buf, "\\%03d", *s); luaL_addlstring(b, buf, 4); } } s++; } luaL_putchar(b, '"'); */ } }
static void luaI_addquotedbinary (lua_State *L, luaL_Buffer *b, int arg) { size_t l; if (lua_type(L, arg) == LUA_TWSTRING) { const lua_WChar *s = luaL_checklwstring(L, arg, &l); luaL_addwchar(b, 'L'); luaL_addwchar(b, '"'); while (l--) { switch (*s) { case '"': case '\\': luaL_addwchar(b, '\\'); luaL_addwchar(b, *s); break; case '\a': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'a'); break; case '\b': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'b'); break; case '\f': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'f'); break; case '\n': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'n'); break; case '\r': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'r'); break; case '\t': luaL_addwchar(b, '\\'); luaL_addwchar(b, 't'); break; case '\v': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'v'); break; default: if (*s < 256 && isprint((unsigned char)*s)) { luaL_addwchar(b, *s); } else { char str[10]; lua_WChar wstr[10]; sprintf(str, "\\x%04x", (unsigned long)*s); translate_single_to_wide(str, wstr); luaL_addwstring(b, wstr); } } s++; } luaL_addwchar(b, '"'); } else { const char *s = luaL_checklstring(L, arg, &l); luaL_addwchar(b, '"'); while (l--) { switch (*s) { case '"': case '\\': luaL_addwchar(b, '\\'); luaL_addwchar(b, *s); break; case '\a': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'a'); break; case '\b': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'b'); break; case '\f': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'f'); break; case '\n': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'n'); break; case '\r': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'r'); break; case '\t': luaL_addwchar(b, '\\'); luaL_addwchar(b, 't'); break; case '\v': luaL_addwchar(b, '\\'); luaL_addwchar(b, 'v'); break; default: if (isprint((unsigned char)*s)) { luaL_addwchar(b, *s); } else { char str[10]; lua_WChar wstr[10]; sprintf(str, "\\x%02x", (unsigned int)*s); translate_single_to_wide(str, wstr); luaL_addwstring(b, wstr); } } s++; } luaL_addwchar(b, '"'); } }