-/*
- * mono-config.c
+/**
+ * \file
*
* Runtime and assembly configuration file support routines.
*
*
* Copyright 2002-2003 Ximian, Inc (http://www.ximian.com)
* Copyright 2004-2009 Novell, Inc (http://www.novell.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
*/
#include "config.h"
#include <glib.h>
#define CONFIG_OS "hpux"
#elif defined(__HAIKU__)
#define CONFIG_OS "haiku"
+#elif defined (TARGET_WASM)
+#define CONFIG_OS "wasm"
#else
#warning Unknown operating system
#define CONFIG_OS "unknownOS"
#elif defined(__aarch64__)
#define CONFIG_CPU "armv8"
#define CONFIG_WORDSIZE "64"
-#elif defined(__ia64__)
-#define CONFIG_CPU "ia64"
-#define CONFIG_WORDSIZE "64"
#elif defined(mips) || defined(__mips) || defined(_mips)
#define CONFIG_CPU "mips"
#define CONFIG_WORDSIZE "32"
+#elif defined(TARGET_WASM)
+#define CONFIG_CPU "wasm"
+#define CONFIG_WORDSIZE "32"
#else
#error Unknown CPU
#define CONFIG_CPU "unknownCPU"
#endif
#endif
+/**
+ * mono_config_get_os:
+ *
+ * Returns the operating system that Mono is running on, as used for dllmap entries.
+ */
+const char *
+mono_config_get_os (void)
+{
+ return CONFIG_OS;
+}
+
+/**
+ * mono_config_get_cpu:
+ *
+ * Returns the architecture that Mono is running on, as used for dllmap entries.
+ */
+const char *
+mono_config_get_cpu (void)
+{
+ return CONFIG_CPU;
+}
+
+/**
+ * mono_config_get_wordsize:
+ *
+ * Returns the word size that Mono is running on, as used for dllmap entries.
+ */
+const char *
+mono_config_get_wordsize (void)
+{
+ return CONFIG_WORDSIZE;
+}
+
static void start_element (GMarkupParseContext *context,
const gchar *element_name,
const gchar **attribute_names,
static GHashTable *config_handlers;
-static const char *mono_cfg_dir = NULL;
-static char *mono_cfg_dir_allocated = NULL;
+static char *mono_cfg_dir = NULL;
/* when this interface is stable, export it. */
typedef struct MonoParseHandler MonoParseHandler;
else if (strcmp (attribute_names [i], "target") == 0){
char *p = strstr (attribute_values [i], "$mono_libdir");
if (p != NULL){
- const char *libdir = mono_assembly_getrootdir ();
+ char *libdir = mono_native_getrootdir ();
size_t libdir_len = strlen (libdir);
char *result;
result = (char *)g_malloc (libdir_len-strlen("$mono_libdir")+strlen(attribute_values[i])+1);
- strncpy (result, attribute_names[i], p-attribute_values[i]);
- strcat (result, libdir);
+ strncpy (result, attribute_values[i], p-attribute_values[i]);
+ strcpy (result+(p-attribute_values[i]), libdir);
+ g_free (libdir);
strcat (result, p+strlen("$mono_libdir"));
info->target = result;
} else
g_hash_table_insert (config_handlers, (gpointer) aot_cache_handler.element_name, (gpointer) &aot_cache_handler);
}
+/**
+ * mono_config_cleanup:
+ */
void
mono_config_cleanup (void)
{
if (config_handlers)
g_hash_table_destroy (config_handlers);
- g_free (mono_cfg_dir_allocated);
+ g_free (mono_cfg_dir);
}
/* FIXME: error handling */
/**
* mono_config_parse_memory:
- * @buffer: a pointer to an string XML representation of the configuration
- *
+ * \param buffer a pointer to an string XML representation of the configuration
* Parses the configuration from a buffer
*/
void
static const char *bundled_machine_config = NULL;
+/**
+ * mono_register_config_for_assembly:
+ */
void
mono_register_config_for_assembly (const char* assembly_name, const char* config_xml)
{
bundled_configs = bconfig;
}
+/**
+ * mono_config_string_for_assembly_file:
+ */
const char *
mono_config_string_for_assembly_file (const char *filename)
{
return NULL;
}
+/**
+ * mono_config_for_assembly:
+ */
void
mono_config_for_assembly (MonoImage *assembly)
{
/**
* mono_config_parse:
- * @filename: the filename to load the configuration variables from.
- *
+ * \param filename the filename to load the configuration variables from.
* Pass a NULL filename to parse the default config files
- * (or the file in the MONO_CONFIG env var).
+ * (or the file in the \c MONO_CONFIG env var).
*/
void
mono_config_parse (const char *filename) {
return;
}
- home = g_getenv ("MONO_CONFIG");
- if (home) {
- mono_config_parse_file (home);
+ // FIXME: leak, do we store any references to home
+ char *env_home = g_getenv ("MONO_CONFIG");
+ if (env_home) {
+ mono_config_parse_file (env_home);
return;
}
mono_config_parse_file (mono_cfg);
g_free (mono_cfg);
-#if !defined(TARGET_WIN32) && !defined(__native_client__)
+#if !defined(TARGET_WIN32)
home = g_get_home_dir ();
user_cfg = g_strconcat (home, G_DIR_SEPARATOR_S, ".mono/config", NULL);
mono_config_parse_file (user_cfg);
#endif
}
-/* Invoked during startup */
+/**
+ * mono_set_config_dir:
+ * Invoked during startup
+ */
void
mono_set_config_dir (const char *dir)
{
- /* If this variable is set, overrides the directory computed */
- mono_cfg_dir = g_getenv ("MONO_CFG_DIR");
- if (mono_cfg_dir == NULL)
- mono_cfg_dir = mono_cfg_dir_allocated = g_strdup (dir);
+ /* If this environment variable is set, overrides the directory computed */
+ char *env_mono_cfg_dir = g_getenv ("MONO_CFG_DIR");
+ if (env_mono_cfg_dir == NULL && dir != NULL)
+ env_mono_cfg_dir = g_strdup (dir);
+
+ mono_cfg_dir = env_mono_cfg_dir;
}
+/**
+ * mono_get_config_dir:
+ */
const char*
mono_get_config_dir (void)
{
return mono_cfg_dir;
}
+/**
+ * mono_register_machine_config:
+ */
void
mono_register_machine_config (const char *config_xml)
{
bundled_machine_config = config_xml;
}
+/**
+ * mono_get_machine_config:
+ */
const char *
mono_get_machine_config (void)
{
memset (&info->old_version_bottom, 0, sizeof (info->old_version_bottom));
memset (&info->old_version_top, 0, sizeof (info->old_version_top));
memset (&info->new_version, 0, sizeof (info->new_version));
- } if (!strcmp (element_name, "assemblyIdentity")) {
+ } else if (!strcmp (element_name, "assemblyIdentity")) {
for (n = 0; attribute_names [n]; n++) {
const gchar *attribute_name = attribute_names [n];
static mono_bool mono_server_mode = FALSE;
+/**
+ * mono_config_set_server_mode:
+ */
void
mono_config_set_server_mode (mono_bool server_mode)
{
mono_server_mode = server_mode;
}
+/**
+ * mono_config_is_server_mode:
+ */
mono_bool
mono_config_is_server_mode (void)
{