Ejemplo n.º 1
0
static char *APP_CC
read_uni(struct stream *s, int num_chars)
{
    twchar *rchrs;
    char *rv;
    int index;
    int lchars;

    rchrs = 0;
    rv = 0;

    if (num_chars > 0)
    {
        rchrs = (twchar *)g_malloc((num_chars + 1) * sizeof(twchar), 0);

        for (index = 0; index < num_chars; index++)
        {
            in_uint16_le(s, rchrs[index]);
        }

        rchrs[num_chars] = 0;
        lchars = g_wcstombs(0, rchrs, 0);

        if (lchars > 0)
        {
            rv = (char *)g_malloc((lchars + 1) * 4, 0);
            g_wcstombs(rv, rchrs, lchars);
            rv[lchars] = 0;
        }
    }

    g_free(rchrs);
    return rv;
}
Ejemplo n.º 2
0
/* if index = -1 remove it from the end */
int APP_CC
remove_char_at(char* text, int text_size, int index)
{
  int len;
  int i;
  twchar* wstr;

  len = g_mbstowcs(0, text, 0);
  if (len <= 0)
  {
    return 0;
  }
  wstr = (twchar*)g_malloc((len + 16) * sizeof(twchar), 0);
  g_mbstowcs(wstr, text, len + 1);
  if ((index >= (len - 1)) || (index < 0))
  {
    wstr[len - 1] = 0;
    g_wcstombs(text, wstr, text_size);
    g_free(wstr);
    return 0;
  }
  for (i = index; i < (len - 1); i++)
  {
    wstr[i] = wstr[i + 1];
  }
  wstr[len - 1] = 0;
  g_wcstombs(text, wstr, text_size);
  g_free(wstr);
  return 0;
}
Ejemplo n.º 3
0
/* if index = -1 add it to the end */
int APP_CC
add_char_at(char* text, int text_size, twchar ch, int index)
{
  int len;
  int i;
  twchar* wstr;

  len = g_mbstowcs(0, text, 0);
  wstr = (twchar*)g_malloc((len + 16) * sizeof(twchar), 0);
  g_mbstowcs(wstr, text, len + 1);
  if ((index >= len) || (index < 0))
  {
    wstr[len] = ch;
    wstr[len + 1] = 0;
    g_wcstombs(text, wstr, text_size);
    g_free(wstr);
    return 0;
  }
  for (i = (len - 1); i >= index; i--)
  {
    wstr[i + 1] = wstr[i];
  }
  wstr[i + 1] = ch;
  wstr[len + 1] = 0;
  g_wcstombs(text, wstr, text_size);
  g_free(wstr);
  return 0;
}
Ejemplo n.º 4
0
std::string CreateGUID()
{
	std::string guidStr;
#ifdef WIN32
	std::wstring guidWStr;
	guidWStr.resize(50);
	GUID guid;
	CoCreateGuid(&guid);
	StringFromGUID2(guid, (wchar_t*)guidWStr.c_str(), (int)guidWStr.size());
	g_wcstombs(guidStr, guidWStr);
#else
	uuid_t out;
	uuid_generate_time(out);
	for(int i = 0; i < sizeof(out); i++)
	{
	  char num[10] = {0};
	  snprintf(num, 10, "%d", out[i]);
	  guidStr.append(num);
	}
#endif
	return guidStr.c_str();
}