gboolean sgen_bridge_handle_gc_debug (const char *opt) { if (g_str_has_prefix (opt, "bridge=")) { opt = strchr (opt, '=') + 1; register_test_bridge_callbacks (g_strdup (opt)); } else if (!strcmp (opt, "enable-bridge-accounting")) { bridge_processor.enable_accounting (); } else if (g_str_has_prefix (opt, "bridge-dump=")) { char *prefix = strchr (opt, '=') + 1; set_dump_prefix (prefix); } else if (g_str_has_prefix (opt, "bridge-compare-to=")) { const char *name = strchr (opt, '=') + 1; if (init_bridge_processor (&compare_to_bridge_processor, name)) { if (compare_to_bridge_processor.reset_data == bridge_processor.reset_data) { g_warning ("Cannot compare bridge implementation to itself - ignoring."); memset (&compare_to_bridge_processor, 0, sizeof (SgenBridgeProcessor)); } } else { g_warning ("Invalid bridge implementation to compare against - ignoring."); } } else { return FALSE; } return TRUE; }