示例#1
0
int
monodroid_get_namespaced_system_property (const char *name, char **value)
{
	char *local_value = NULL;
	int result = -1;

	if (value)
		*value = NULL;

	if (strlen (package_property_suffix) > 0) {
		log_info (LOG_DEFAULT, "Trying to get property %s.%s", name, package_property_suffix);
		char *propname = monodroid_strdup_printf ("%s.%s", name, package_property_suffix);
		if (propname) {
			result = monodroid_get_system_property (propname, &local_value);
			free (propname);
		}
	}

	if (result <= 0 || !local_value)
		result = monodroid_get_system_property (name, &local_value);

	if (result > 0) {
		if (strlen (local_value) == 0) {
			free (local_value);
			return 0;
		}

		log_info (LOG_DEFAULT, "Property '%s' has value '%s'.", name, local_value);

		if (value)
			*value = local_value;
		else
			free (local_value);
		return result;
	}

	return monodroid_get_system_property_from_overrides (name, value);
}
示例#2
0
MONO_API int
_monodroid_get_dns_servers (void **dns_servers_array)
{
	*dns_servers_array = NULL;
	if (!dns_servers_array)
		return -1;

	size_t  len;
	char   *dns;
	char   *dns_servers [8];
	int     count = 0;
	char    prop_name[] = "net.dnsX";
	int i;
	for (i = 0; i < 8; i++) {
		prop_name [7] = (char)(i + 0x31);
		len = monodroid_get_system_property (prop_name, &dns);
		if (len <= 0) {
			dns_servers [i] = NULL;
			continue;
		}
		dns_servers [i] = strndup (dns, len);
		count++;
	}

	if (count <= 0)
		return 0;

	char **ret = (char**)malloc (sizeof (char*) * count);
	char **p = ret;
	for (i = 0; i < 8; i++) {
		if (!dns_servers [i])
			continue;
		*p++ = dns_servers [i];
	}

	*dns_servers_array = (void*)ret;
	return count;
}