Example #1
0
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, '"');
*/
  }
}
Example #2
0
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, '"');
  }
}