X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmono-config.c;h=c3840963bd92b69c156c1cc999630e3fa97c2402;hb=HEAD;hp=80261f2b62e9a3d74741b48af5aff8fb135903b9;hpb=32f2f7c898abd259b447eb318e9664e518ea6807;p=mono.git diff --git a/mono/metadata/mono-config.c b/mono/metadata/mono-config.c index 80261f2b62e..c3840963bd9 100644 --- a/mono/metadata/mono-config.c +++ b/mono/metadata/mono-config.c @@ -1,5 +1,5 @@ -/* - * mono-config.c +/** + * \file * * Runtime and assembly configuration file support routines. * @@ -42,6 +42,8 @@ #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" @@ -79,18 +81,51 @@ #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, @@ -130,8 +165,7 @@ mono_parser = { 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; @@ -281,13 +315,14 @@ dllmap_start (gpointer user_data, 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_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 @@ -431,12 +466,15 @@ mono_config_init (void) 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 */ @@ -482,8 +520,7 @@ mono_config_parse_file_with_context (ParseState *state, const char *filename) /** * 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 @@ -533,6 +570,9 @@ static BundledConfig *bundled_configs = NULL; 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) { @@ -545,6 +585,9 @@ mono_register_config_for_assembly (const char* assembly_name, const char* config bundled_configs = bconfig; } +/** + * mono_config_string_for_assembly_file: + */ const char * mono_config_string_for_assembly_file (const char *filename) { @@ -557,6 +600,9 @@ mono_config_string_for_assembly_file (const char *filename) return NULL; } +/** + * mono_config_for_assembly: + */ void mono_config_for_assembly (MonoImage *assembly) { @@ -599,10 +645,9 @@ 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) { @@ -617,9 +662,10 @@ 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; } @@ -627,7 +673,7 @@ mono_config_parse (const char *filename) { 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); @@ -635,16 +681,24 @@ mono_config_parse (const char *filename) { #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) { @@ -654,12 +708,18 @@ 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) { @@ -702,7 +762,7 @@ publisher_policy_start (gpointer user_data, 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]; @@ -855,12 +915,18 @@ mono_config_parse_assembly_bindings (const char *filename, int amajor, int amino 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) {