[Player-cvs] app/gtk switchboard.cpp, NONE, 1.1.2.1 switchboard.h, NONE, 1.1.2.1 sysinfo.cpp, NONE, 1.1.2.1 sysinfo.h, NONE, 1.1.2.1
rggammon at helixcommunity.org rggammon at helixcommunity.orgUpdate of /cvsroot/player/app/gtk
In directory cvs-new:/tmp/cvs-serv19469
Added Files:
Tag: bingo-beta
switchboard.cpp switchboard.h sysinfo.cpp sysinfo.h
Log Message:
backporting bug fixes
--- NEW FILE: switchboard.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
* Source last modified: $Id: switchboard.cpp,v 1.1.2.1 2004/07/15 02:00:34 rggammon Exp $
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file,
* are subject to the current version of the RealNetworks Public
* Source License (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the current version of the RealNetworks Community
* Source License (the "RCSL") available at
* http://www.helixcommunity.org/content/rcsl, in which case the RCSL
* will apply. You may also obtain the license terms directly from
* RealNetworks. You may not use this file except in compliance with
* the RPSL or, if you have a valid RCSL with RealNetworks applicable
* to this file, the RCSL. Please see the applicable RPSL or RCSL for
* the rights, obligations and limitations governing use of the
* contents of the file.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (the
* "GPL") in which case the provisions of the GPL are applicable
* instead of those above. If you wish to allow use of your version of
* this file only under the terms of the GPL, and not to allow others
* to use your version of this file under the terms of either the RPSL
* or RCSL, indicate your decision by deleting the provisions above
* and replace them with the notice and other provisions required by
* the GPL. If you do not delete the provisions above, a recipient may
* use your version of this file under the terms of any one of the
* RPSL, the RCSL or the GPL.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the
* portions it created.
*
* This file, and the files included with this file, is distributed
* and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
* ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
#include "switchboard.h"
#include "sysinfo.h"
#include "commonapp.h"
#define SWITCHBOARD "https://player.helixcommunity.org/sitecode/redirect/?"
static void
append_param(GString* str,
const gchar* url_name,
HXSysInfo* info,
HXSysInfoParamType type,
gboolean escape)
{
gchar* raw_val;
gchar* val;
raw_val = hx_sys_info_get_param(info, type);
if(raw_val)
{
if(escape)
{
val = hxcommon_strdup_and_escape_url(raw_val);
g_string_append_printf(str, "&%s=%s", url_name, val);
g_free(val);
}
else
{
g_string_append_printf(str, "&%s=%s", url_name, raw_val);
}
g_free(raw_val);
}
}
static void
append_player_information (GString* str, HXSysInfo* info)
{
append_param(str, "playerVersion", info, HX_SYS_INFO_PLAYER_VERSION, FALSE);
append_param(str, "playerName", info, HX_SYS_INFO_PLAYER_NAME, TRUE);
append_param(str, "playerInstaller", info, HX_SYS_INFO_PLAYER_INSTALLER, TRUE);
append_param(str, "playerOrigin", info, HX_SYS_INFO_PLAYER_ORIGIN, TRUE);
}
static void
append_platform_information (GString* str, HXSysInfo* info)
{
/* Append misc information that we need to do a proper update,
potentially to RealPlayer. */
append_param(str, "operatingSystem", info, HX_SYS_INFO_OPERATING_SYSTEM, TRUE);
append_param(str, "kernelVersion", info, HX_SYS_INFO_KERNEL_VERSION, TRUE);
append_param(str, "processorType", info, HX_SYS_INFO_PROCESSOR_TYPE, TRUE);
append_param(str, "lsbVersion", info, HX_SYS_INFO_LSB_VERSION, TRUE);
append_param(str, "distribId", info, HX_SYS_INFO_DISTRIB_ID, TRUE);
append_param(str, "distribRelease", info, HX_SYS_INFO_DISTRIB_RELEASE, TRUE);
append_param(str, "distribDescription", info, HX_SYS_INFO_DISTRIB_DESCRIPTION, TRUE);
append_param(str, "distribCodename", info, HX_SYS_INFO_DISTRIB_CODENAME, TRUE);
append_param(str, "gccVersion", info, HX_SYS_INFO_GCC_VERSION, TRUE);
}
gchar*
hx_switchboard_get_context_help_url (const gchar* context)
{
GString* str;
gchar* val;
HXSysInfo* info;
info = hx_sys_info_new();
str = g_string_new(SWITCHBOARD);
val = hxcommon_strdup_and_escape_url(context);
g_string_append_printf(str, "action=ContextHelp&context=%s", val);
g_free(val);
append_player_information (str, info);
hx_sys_info_destroy(info);
/* return the internal c string, free the GString wrapper */
return g_string_free(str, FALSE);
}
gchar*
hx_switchboard_get_error_help_url (guint error_code)
{
GString* str;
HXSysInfo* info;
info = hx_sys_info_new();
str = g_string_new(SWITCHBOARD);
g_string_append_printf(str, "action=ErrorHelp&error=0x%08x", error_code);
append_player_information (str, info);
hx_sys_info_destroy(info);
/* return the internal c string, free the GString wrapper */
return g_string_free(str, FALSE);
}
gchar*
hx_switchboard_get_upgrade_url (const gchar* components)
{
GString* str;
HXSysInfo* info;
info = hx_sys_info_new();
str = g_string_new(SWITCHBOARD);
g_string_append_printf(str, "action=CheckUpdate");
if(components)
{
gchar* val;
val = hxcommon_strdup_and_escape_url(components);
g_string_append_printf(str, "&components=%s", val);
g_free(val);
}
append_player_information (str, info);
append_platform_information (str, info);
hx_sys_info_destroy(info);
/* return the internal c string, free the GString wrapper */
return g_string_free(str, FALSE);
}
gchar*
hx_switchboard_get_privacy_url(void)
{
gchar* url = NULL;
#ifdef HELIX_FEATURE_REAL_BRANDING
url = g_strdup("http://www.realnetworks.com/company/privacy");
#else
url = g_strdup("https://helixcommunity.org/2002/intro/privacy.php");
#endif
return url;
}
--- NEW FILE: switchboard.h ---
/* ***** BEGIN LICENSE BLOCK *****
* Source last modified: $Id: switchboard.h,v 1.1.2.1 2004/07/15 02:00:34 rggammon Exp $
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file,
* are subject to the current version of the RealNetworks Public
* Source License (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the current version of the RealNetworks Community
* Source License (the "RCSL") available at
* http://www.helixcommunity.org/content/rcsl, in which case the RCSL
* will apply. You may also obtain the license terms directly from
* RealNetworks. You may not use this file except in compliance with
* the RPSL or, if you have a valid RCSL with RealNetworks applicable
* to this file, the RCSL. Please see the applicable RPSL or RCSL for
* the rights, obligations and limitations governing use of the
* contents of the file.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (the
* "GPL") in which case the provisions of the GPL are applicable
* instead of those above. If you wish to allow use of your version of
* this file only under the terms of the GPL, and not to allow others
* to use your version of this file under the terms of either the RPSL
* or RCSL, indicate your decision by deleting the provisions above
* and replace them with the notice and other provisions required by
* the GPL. If you do not delete the provisions above, a recipient may
* use your version of this file under the terms of any one of the
* RPSL, the RCSL or the GPL.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the
* portions it created.
*
* This file, and the files included with this file, is distributed
* and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
* ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
#ifndef _SWITCHBOARD_H_
#define _SWITCHBOARD_H_
#include <glib.h>
gchar* hx_switchboard_get_context_help_url (const gchar* context);
gchar* hx_switchboard_get_error_help_url (guint error_code);
gchar* hx_switchboard_get_upgrade_url (const gchar* components);
gchar* hx_switchboard_get_privacy_url (void);
#endif
--- NEW FILE: sysinfo.h ---
/* ***** BEGIN LICENSE BLOCK *****
* Source last modified: $Id: sysinfo.h,v 1.1.2.1 2004/07/15 02:00:34 rggammon Exp $
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file,
* are subject to the current version of the RealNetworks Public
* Source License (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the current version of the RealNetworks Community
* Source License (the "RCSL") available at
* http://www.helixcommunity.org/content/rcsl, in which case the RCSL
* will apply. You may also obtain the license terms directly from
* RealNetworks. You may not use this file except in compliance with
* the RPSL or, if you have a valid RCSL with RealNetworks applicable
* to this file, the RCSL. Please see the applicable RPSL or RCSL for
* the rights, obligations and limitations governing use of the
* contents of the file.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (the
* "GPL") in which case the provisions of the GPL are applicable
* instead of those above. If you wish to allow use of your version of
* this file only under the terms of the GPL, and not to allow others
* to use your version of this file under the terms of either the RPSL
* or RCSL, indicate your decision by deleting the provisions above
* and replace them with the notice and other provisions required by
* the GPL. If you do not delete the provisions above, a recipient may
* use your version of this file under the terms of any one of the
* RPSL, the RCSL or the GPL.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the
* portions it created.
*
* This file, and the files included with this file, is distributed
* and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
* ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
#ifndef _SYSINFO_H_
#define _SYSINFO_H_
#include <glib.h>
typedef enum
{
/* from uname() */
HX_SYS_INFO_OPERATING_SYSTEM = 0,
HX_SYS_INFO_KERNEL_VERSION,
HX_SYS_INFO_PROCESSOR_TYPE,
/* from /etc/lsb-release (may also get filled in by another /etc
file, as this is not a very widely implemented standard) */
HX_SYS_INFO_LSB_VERSION, /* 1.3 */
HX_SYS_INFO_DISTRIB_ID, /* Debian */
HX_SYS_INFO_DISTRIB_RELEASE, /* 3.1 */
HX_SYS_INFO_DISTRIB_DESCRIPTION, /* Debian GNU/Linux */
HX_SYS_INFO_DISTRIB_CODENAME, /* Sarge */
/* from the player */
HX_SYS_INFO_PLAYER_NAME, /* RealPlayer, Helix Player */
HX_SYS_INFO_PLAYER_VERSION, /* 0.4.0.123 */
HX_SYS_INFO_PLAYER_INSTALLER, /* rpm, binary */
HX_SYS_INFO_PLAYER_ORIGIN, /* helixcommunity.org */
/* set at compile time */
HX_SYS_INFO_GCC_VERSION, /* 3.3.3 */
/* XXXRGG: Implement the rest of these */
/* for shared clients, down the road... */
// HX_SYS_INFO_CLIENT_VERSION,
// HX_SYS_INFO_CLIENT_INSTALLER, /* rpm, binary, unknown */
// HX_SYS_INFO_CLIENT_ORIGIN, /* helixcommunity.org */
/* xdpyinfo information */
// HX_SYS_INFO_XSERVER_VERSION, /* 4.3.0.1 */
/* from gtk */
// HX_SYS_INFO_GTK_VERSION, /* 2.0.9 */
// HX_SYS_INFO_LIBC_VERSION, /* 2.3.2 */
/* xvinfo information */
// HX_SYS_INFO_XV_DRIVER, /* ATI Radeon Video Overlay */
/* maybe /dev/sndstat? */
// HX_SYS_INFO_SOUND_DRIVER, /* emu10k1 */
// HX_SYS_INFO_SOUND_DRIVER_TYPE /* oss */
} HXSysInfoParamType;
typedef struct _HXSysInfo HXSysInfo;
HXSysInfo* hx_sys_info_new (void);
gchar* hx_sys_info_get_param (HXSysInfo* info,
HXSysInfoParamType param);
void hx_sys_info_destroy (HXSysInfo* info);
#endif
--- NEW FILE: sysinfo.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
* Source last modified: $Id: sysinfo.cpp,v 1.1.2.1 2004/07/15 02:00:34 rggammon Exp $
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file,
* are subject to the current version of the RealNetworks Public
* Source License (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the current version of the RealNetworks Community
* Source License (the "RCSL") available at
* http://www.helixcommunity.org/content/rcsl, in which case the RCSL
* will apply. You may also obtain the license terms directly from
* RealNetworks. You may not use this file except in compliance with
* the RPSL or, if you have a valid RCSL with RealNetworks applicable
* to this file, the RCSL. Please see the applicable RPSL or RCSL for
* the rights, obligations and limitations governing use of the
* contents of the file.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (the
* "GPL") in which case the provisions of the GPL are applicable
* instead of those above. If you wish to allow use of your version of
* this file only under the terms of the GPL, and not to allow others
* to use your version of this file under the terms of either the RPSL
* or RCSL, indicate your decision by deleting the provisions above
* and replace them with the notice and other provisions required by
* the GPL. If you do not delete the provisions above, a recipient may
* use your version of this file under the terms of any one of the
* RPSL, the RCSL or the GPL.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the
* portions it created.
*
* This file, and the files included with this file, is distributed
* and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
* ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
#include "sysinfo.h"
#include "commonapp.h"
#include "appver.h"
#include <sys/utsname.h>
#include "hlxclib/stdio.h"
#include "hlxclib/ctype.h"
#include "hlxclib/string.h"
typedef struct _HXSysInfo
{
gboolean distribution_info_set;
gchar* lsb_version;
gchar* distrib_id;
gchar* distrib_release;
gchar* distrib_description;
gchar* distrib_codename;
} _HXSysInfo;
HXSysInfo*
hx_sys_info_new (void)
{
return g_new0(HXSysInfo, 1);
}
void
hx_sys_info_destroy (HXSysInfo* info)
{
g_free(info->lsb_version);
g_free(info->distrib_id);
g_free(info->distrib_release);
g_free(info->distrib_description);
g_free(info->distrib_codename);
g_free(info);
}
static gboolean
get_distribution_info_from_etc_lsb_release(HXSysInfo* info)
{
GError* error = NULL;
GIOChannel* chan = NULL;
gchar* line = NULL;
gboolean result = FALSE;
GIOStatus status;
if(g_file_test("/etc/lsb-release", G_FILE_TEST_EXISTS))
{
info->distribution_info_set = TRUE;
chan = g_io_channel_new_file("/etc/lsb-release", "r", &error);
if(chan && !error)
{
for(;;)
{
do
{
status = g_io_channel_read_line(chan, &line, NULL, NULL, &error);
} while(status == G_IO_STATUS_AGAIN);
if(!line || status != G_IO_STATUS_NORMAL)
{
g_free(line);
break;
}
/* process line */
gchar* quoted_value;
gchar* key;
gchar* value;
quoted_value = strchr(line, '=');
if(quoted_value)
{
*quoted_value = '\0';
quoted_value++;
gchar* newline = strchr(quoted_value, '\n');
if(newline)
{
*newline = '\0';
}
key = line;
GError* shell_err = NULL;
value = g_shell_unquote(quoted_value, &shell_err);
if(shell_err)
{
g_warning(error->message);
g_error_free(error);
error = NULL;
}
else if(strcmp(key, "LSB_VERSION") == 0)
{
g_free(info->lsb_version);
info->lsb_version = value;
}
else if(strcmp(key, "DISTRIB_ID") == 0)
{
g_free(info->distrib_id);
info->distrib_id = value;
}
else if(strcmp(key, "DISTRIB_RELEASE") == 0)
{
g_free(info->distrib_release);
info->distrib_release = value;
}
else if(strcmp(key, "DISTRIB_DESCRIPTION") == 0)
{
g_free(info->distrib_description);
info->distrib_description = value;
}
else if(strcmp(key, "DISTRIB_CODENAME") == 0)
{
g_free(info->distrib_codename);
info->distrib_codename = value;
}
else
{
g_free(value);
}
}
g_free(line);
}
}
if(error)
{
g_warning(error->message);
g_error_free(error);
error = NULL;
}
if(chan)
{
g_io_channel_shutdown(chan, TRUE, &error);
}
if(error)
{
g_warning(error->message);
g_error_free(error);
error = NULL;
}
}
return result;
}
static gboolean
get_distribution_name_from_etc_xxx_release(HXSysInfo* info)
{
GIOChannel* chan;
GIOStatus status;
GError* error = NULL;
guint i;
gchar* line;
gboolean result = FALSE;
/* If we get here, it means that /etc/lsb-release does not exist.
We look for some well-known distribution files in order to
determine the DISTRIB_ID, and send the first line from these
files as the DISTRIB_DESCRIPTION. */
struct
{
gchar* id;
gchar* release_file;
} distro_map[] =
{
{ "Debian", "/etc/debian_version", },
{ "Gentoo", "/etc/gentoo-release", },
{ "Fedora", "/etc/fedora-release", },
{ "Redhat", "/etc/redhat-release", },
{ "SuSE", "/etc/SuSE-release", },
{ "JDS", "/etc/sun-release", },
{ "Mandrake", "/etc/mandrake-release", },
{ "Turbolinux", "/etc/turbolinux-release", },
{ "Slackware", "/etc/slackware-release", },
{ "Slackware", "/etc/slackware-version", },
{ "Yellow Dog", "/etc/yellowdog-release", },
{ NULL, "/etc/release", }
};
for(i = 0; i < sizeof(distro_map) / sizeof(*distro_map); i++)
{
if(g_file_test(distro_map[i].release_file, G_FILE_TEST_EXISTS))
{
info->distribution_info_set = TRUE;
g_free(info->distrib_id);
info->distrib_id = g_strdup(distro_map[i].id);
chan = g_io_channel_new_file(distro_map[i].release_file, "r", &error);
if(chan && !error)
{
do
{
status = g_io_channel_read_line(chan, &line, NULL, NULL, &error);
} while(status == G_IO_STATUS_AGAIN);
if(line && status == G_IO_STATUS_NORMAL)
{
gchar* trimmed = hxcommon_strtrim(line);
g_free(info->distrib_description);
info->distrib_description = g_strdup(trimmed);
}
g_free(line);
break;
}
}
}
if(error)
{
g_warning(error->message);
g_error_free(error);
error = NULL;
}
if(chan)
{
g_io_channel_shutdown(chan, TRUE, &error);
}
if(error)
{
g_warning(error->message);
g_error_free(error);
error = NULL;
}
return result;
}
static gchar*
get_distribution_info(HXSysInfo* info,
HXSysInfoParamType type)
{
gchar* query_result = NULL;
if(!info->distribution_info_set)
{
/* Query for info & cache for future calls */
get_distribution_info_from_etc_lsb_release(info);
}
if(!info->distribution_info_set)
{
get_distribution_name_from_etc_xxx_release(info);
}
info->distribution_info_set = TRUE;
switch(type)
{
case HX_SYS_INFO_LSB_VERSION:
if(info->lsb_version)
{
query_result = g_strdup(info->lsb_version);
}
break;
case HX_SYS_INFO_DISTRIB_ID:
if(info->distrib_id)
{
query_result = g_strdup(info->distrib_id);
}
break;
case HX_SYS_INFO_DISTRIB_RELEASE:
if(info->distrib_release)
{
query_result = g_strdup(info->distrib_release);
}
break;
case HX_SYS_INFO_DISTRIB_DESCRIPTION:
if(info->distrib_description)
{
query_result = g_strdup(info->distrib_description);
}
break;
case HX_SYS_INFO_DISTRIB_CODENAME:
if(info->distrib_description)
{
query_result = g_strdup(info->distrib_codename);
}
break;
default:
g_assert_not_reached();
}
return query_result;
}
gchar*
hx_sys_info_get_param (HXSysInfo* info,
HXSysInfoParamType type)
{
gchar* query_result = NULL;
switch (type)
{
case HX_SYS_INFO_OPERATING_SYSTEM:
case HX_SYS_INFO_KERNEL_VERSION:
case HX_SYS_INFO_PROCESSOR_TYPE:
{
/* uname */
int result;
struct utsname uname_data;
result = uname(&uname_data);
if(result == 0)
{
if (type == HX_SYS_INFO_OPERATING_SYSTEM)
{
query_result = g_strdup(uname_data.sysname);
}
else if (type == HX_SYS_INFO_KERNEL_VERSION)
{
query_result = g_strdup(uname_data.release);
}
else if (type == HX_SYS_INFO_PROCESSOR_TYPE)
{
query_result = g_strdup(uname_data.machine);
}
}
break;
}
case HX_SYS_INFO_LSB_VERSION:
case HX_SYS_INFO_DISTRIB_ID:
case HX_SYS_INFO_DISTRIB_RELEASE:
case HX_SYS_INFO_DISTRIB_DESCRIPTION:
case HX_SYS_INFO_DISTRIB_CODENAME:
query_result = get_distribution_info(info, type);
break;
case HX_SYS_INFO_PLAYER_NAME:
query_result = g_strdup(APP_NAME_FULL);
break;
case HX_SYS_INFO_PLAYER_VERSION:
query_result = g_strdup(TARVER_STRING_VERSION);
break;
case HX_SYS_INFO_PLAYER_INSTALLER:
/* Leave as NULL until we can detect this */
break;
case HX_SYS_INFO_PLAYER_ORIGIN:
/* XXXRGG: Will need to figure out how this gets set. */
query_result = g_strdup("helixcommunity.org");
break;
case HX_SYS_INFO_GCC_VERSION:
#if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
query_result = g_strdup_printf("%d.%d.%d",
__GNUC__,
__GNUC_MINOR__,
__GNUC_PATCHLEVEL__);
#endif
break;
default:
g_warning("Unknown system information requested: %d", type);
break;
}
return query_result;
}