Added hack for opening external Blorb file
[projects/chimara/chimara.git] / libchimara / chimara-glk.c
index ca01f44510d7c7dd86a0db2fa9698385cea1197b..aca2f212e8c47d6d02443ff899898c8ecd6cb045 100644 (file)
@@ -180,6 +180,8 @@ chimara_glk_init(ChimaraGlk *self)
        priv->line_input_queue = g_async_queue_new();
        /* Should be g_async_queue_new_full(g_free); but only in GTK >= 2.16 */
        priv->resource_map = NULL;
+       priv->open_external_blorb = FALSE;
+       priv->external_blorb_pathname = NULL;
        priv->resource_lock = g_mutex_new();
        priv->resource_loaded = g_cond_new();
        priv->resource_info_available = g_cond_new();
@@ -1170,6 +1172,18 @@ glk_enter(struct StartupData *startup)
                if(!result)
                        return NULL;
        }
+
+       /* Open external Blorb file if specified */
+       if(startup->glk_data->open_external_blorb) {
+               glkunix_set_base_file(startup->glk_data->external_blorb_pathname);
+               gchar *basename = g_path_get_basename(startup->glk_data->external_blorb_pathname);
+               frefid_t blorbref = glk_fileref_create_by_name(fileusage_BinaryMode | fileusage_Data, basename, 0);
+               g_free(basename);
+               strid_t blorbfile = glk_stream_open_file(blorbref, filemode_Read, 0);
+               giblorb_set_resource_map(blorbfile);
+               glk_fileref_destroy(blorbref);
+               g_printerr("Opening external blorb file\n");
+       }
        
        /* Run main function */
        glk_main_t glk_main = startup->glk_main;