*
* 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>
#include "mono/metadata/mono-config.h"
#include "mono/metadata/metadata-internals.h"
#include "mono/metadata/object-internals.h"
-#include "mono/utils/mono-logger-internal.h"
+#include "mono/utils/mono-logger-internals.h"
#if defined(TARGET_PS3)
#define CONFIG_OS "CellOS"
gpointer user_data,
GError **error)
{
- ParseState *state = user_data;
+ ParseState *state = (ParseState *)user_data;
if (!state->current) {
- state->current = g_hash_table_lookup (config_handlers, element_name);
+ state->current = (MonoParseHandler *)g_hash_table_lookup (config_handlers, element_name);
if (state->current && state->current->init)
state->user_data = state->current->init (state->assembly);
}
gpointer user_data,
GError **error)
{
- ParseState *state = user_data;
+ ParseState *state = (ParseState *)user_data;
if (state->current) {
if (state->current->end)
state->current->end (state->user_data, element_name);
gpointer user_data,
GError **error)
{
- ParseState *state = user_data;
+ ParseState *state = (ParseState *)user_data;
if (state->current && state->current->text)
state->current->text (state->user_data, text, text_len);
}
GError *error,
gpointer user_data)
{
- ParseState *state = user_data;
+ ParseState *state = (ParseState *)user_data;
const gchar *msg;
const gchar *filename;
const gchar **attribute_values)
{
int i;
- DllInfo *info = user_data;
+ DllInfo *info = (DllInfo *)user_data;
if (strcmp (element_name, "dllmap") == 0) {
g_free (info->dll);
for (i = 0; attribute_names [i]; ++i) {
if (strcmp (attribute_names [i], "dll") == 0)
info->dll = g_strdup (attribute_values [i]);
- else if (strcmp (attribute_names [i], "target") == 0)
- info->target = g_strdup (attribute_values [i]);
- else if (strcmp (attribute_names [i], "os") == 0 && !arch_matches (CONFIG_OS, attribute_values [i]))
+ 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 ();
+ 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);
+ strcat (result, p+strlen("$mono_libdir"));
+ info->target = result;
+ } else
+ info->target = g_strdup (attribute_values [i]);
+ } else if (strcmp (attribute_names [i], "os") == 0 && !arch_matches (CONFIG_OS, attribute_values [i]))
info->ignore = TRUE;
else if (strcmp (attribute_names [i], "cpu") == 0 && !arch_matches (CONFIG_CPU, attribute_values [i]))
info->ignore = TRUE;
static void
dllmap_finish (gpointer user_data)
{
- DllInfo *info = user_data;
+ DllInfo *info = (DllInfo *)user_data;
g_free (info->dll);
g_free (info->target);
if (!inited)
mono_config_init ();
- context = g_markup_parse_context_new (&mono_parser, 0, state, NULL);
+ context = g_markup_parse_context_new (&mono_parser, (GMarkupParseFlags)0, state, NULL);
if (g_markup_parse_context_parse (context, text, len, NULL)) {
g_markup_parse_context_end_parse (context, NULL);
}
int got_it = 0, i;
char *aname, *cfg, *cfg_name;
const char *bundled_config;
- const char *home;
state.assembly = assembly;
cfg_name = g_strdup_printf ("%s.config", mono_image_get_name (assembly));
- home = g_get_home_dir ();
-
for (i = 0; (aname = get_assembly_filename (assembly, i)) != NULL; ++i) {
cfg = g_build_filename (mono_get_config_dir (), "mono", "assemblies", aname, cfg_name, NULL);
got_it += mono_config_parse_file_with_context (&state, cfg);
g_free (cfg);
#ifdef TARGET_WIN32
+ const char *home = g_get_home_dir ();
cfg = g_build_filename (home, ".mono", "assemblies", aname, cfg_name, NULL);
got_it += mono_config_parse_file_with_context (&state, cfg);
g_free (cfg);
static void
assembly_binding_end (gpointer user_data, const char *element_name)
{
- ParserUserData *pud = user_data;
+ ParserUserData *pud = (ParserUserData *)user_data;
if (!strcmp (element_name, "dependentAssembly")) {
if (pud->info_parsed && pud->info) {
MonoAssemblyBindingInfo *info;
int n;
- pud = user_data;
+ pud = (ParserUserData *)user_data;
info = pud->info;
if (!strcmp (element_name, "dependentAssembly")) {
info->name = NULL;