Exemplo n.º 1
0
const char *
c_getenv(const char *variable)
{
    c_utf16_t *var, *buffer;
    char *val = NULL;
    int32_t buffer_size = 1024;
    int32_t retval;
    var = u8to16(variable);
    buffer = c_malloc(buffer_size * sizeof(c_utf16_t));
    retval = GetEnvironmentVariableW(var, buffer, buffer_size);
    if (retval != 0) {
        if (retval > buffer_size) {
            c_free(buffer);
            buffer_size = retval;
            buffer = c_malloc(buffer_size * sizeof(c_utf16_t));
            retval = GetEnvironmentVariableW(var, buffer, buffer_size);
        }
        val = u16to8(buffer);
    } else {
        if (GetLastError() != ERROR_ENVVAR_NOT_FOUND) {
            val = c_malloc(1);
            *val = 0;
        }
    }
    c_free(var);
    c_free(buffer);
    return val;
}
Exemplo n.º 2
0
const gchar *
g_module_error (void)
{
	gchar* ret = NULL;
	TCHAR* buf = NULL;
	DWORD code = GetLastError ();

	FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, 
		code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, 0, NULL);

	ret = u16to8 (buf);
	LocalFree(buf);

	return ret;
}