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); }
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; }