static void action_revert_calc(G_GNUC_UNUSED GtkAction *act, G_GNUC_UNUSED gpointer data) { TilemEmulatorWindow *ewin = data; GError *err = NULL; if (!tilem_calc_emulator_revert_state(ewin->emu, &err)) { messagebox01(GTK_WINDOW(ewin->window), GTK_MESSAGE_ERROR, _("Unable to load calculator state"), "%s", err->message); g_error_free(err); } }
static void load_initial_rom(TilemCalcEmulator *emu, const char *cmdline_rom_name, const char *cmdline_state_name, char **cmdline_files, int model) { GError *err = NULL; char *modelname; int nfiles, *file_models, i; /* If a ROM file is specified on the command line, use that (and no other) */ if (cmdline_rom_name) { if (tilem_calc_emulator_load_state(emu, cmdline_rom_name, cmdline_state_name, model, &err)) return; else if (!err) exit(0); else { g_printerr("%s\n", err->message); exit(1); } } /* Choose model by file names */ if (!model && cmdline_files) { nfiles = g_strv_length(cmdline_files); file_models = g_new(int, nfiles); /* determine model for each filename */ for (i = 0; i < nfiles; i++) file_models[i] = file_to_model(cmdline_files[i]); /* iterate over all known models... */ for (i = 0; model_search_order[i]; i++) { model = model_search_order[i]; /* check if this model supports the named files */ if (!check_file_types(model, file_models, nfiles)) continue; /* try to load model, but no error message if no ROM is present in config */ if (tilem_calc_emulator_load_state(emu, NULL, NULL, model, &err)) { g_free(file_models); return; } else if (!err) exit(0); else if (!g_error_matches(err, TILEM_EMULATOR_ERROR, TILEM_EMULATOR_ERROR_NO_ROM)) { messagebox01(NULL, GTK_MESSAGE_ERROR, _("Unable to load calculator state"), "%s", err->message); } g_clear_error(&err); } g_free(file_models); model = 0; }