/* Load a skin (TilEm v2.00 only) */ int skin_load(SKIN_INFOS *si, const char *filename, GError **err) { FILE *fp; int ret = 0, errnum; char *dname; g_return_val_if_fail(err == NULL || *err == NULL, -1); fp = g_fopen(filename, "rb"); if (fp == NULL) { errnum = errno; dname = g_filename_display_basename(filename); g_set_error(err, G_FILE_ERROR, g_file_error_from_errno(errnum), _("Unable to open %s for reading: %s"), dname, g_strerror(errnum)); g_free(dname); return -1; } ret = skin_read_header(si, fp); if (ret) { fclose(fp); dname = g_filename_display_basename(filename); g_set_error(err, SKIN_ERROR, SKIN_ERROR_INVALID, _("The file %s is not a valid skin."), dname); g_free(dname); return -1; } ret = skin_read_image(si, fp, err); fclose(fp); return ret; }
static int match_skin(int calc_type) { SKIN_INFOS *sk = &skin_infos; int ok; gchar *skin_name, *s; s = g_strdup(ti68k_calctype_to_string(calc_type)); skin_name = g_ascii_strdown(s, strlen(s)); g_free(s); if(!strcmp(skin_name, "ti92+") || !strcmp(skin_name, "ti89t")) skin_name[4] = '\0'; #ifdef __IPAQ__ s = g_strconcat("ipaq_", skin_name, NULL); g_free(skin_name); skin_name = s; #endif // filename is "", load default skin if(!strcmp(g_basename(options.skin_file), "")) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); g_free(skin_name); return -1; } // load skin header if(skin_read_header(sk, options.skin_file) == -1) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); g_free(skin_name); return -1; } // is skin compatible switch(tihw.calc_type) { case TI92: case TI92p: ok = !strcmp(sk->calc, SKIN_TI92) || !strcmp(sk->calc, SKIN_TI92P); break; case TI89: case TI89t: ok = !strcmp(sk->calc, SKIN_TI89) || !strcmp(sk->calc, SKIN_TI89T); break; case V200: ok = !strcmp(sk->calc, SKIN_V200); break; default: ok = 0; break; } if(!ok) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); //tiemu_error(0, _("skin incompatible with the current calc model. Falling back to default skin.")); g_free(skin_name); return -1; } g_free(skin_name); return 0; }