int pce_load_mem_ini (memory_t *mem, ini_sct_t *ini) { int r; const char *fmt; const char *fname; char *path; unsigned long addr; ini_sct_t *sct; r = 0; sct = NULL; while ((sct = ini_next_sct (ini, sct, "load")) != NULL) { ini_get_string (sct, "format", &fmt, "binary"); ini_get_string (sct, "file", &fname, NULL); if (ini_get_uint32 (sct, "address", &addr, 0)) { ini_get_uint32 (sct, "base", &addr, 0); } if (fname != NULL) { path = pce_path_get (fname); if (pce_load_mem (mem, path, fmt, addr)) { r = 1; pce_log (MSG_ERR, "*** loading failed (%s)\n", path ); } free (path); } } return (r); }
static Game_Entry * _parse_desktop_game(const char *file) { Game_Entry *game = NULL; const char *categories; ini_t *ini = ini_new (file); ini_parse(ini); categories = ini_get_string(ini, "Desktop Entry", "Categories"); if (categories && strstr(categories, "Game")) { char *tmpicon; const char *name = ini_get_string(ini, "Desktop Entry", "Name"); const char *icon = ini_get_string(ini, "Desktop Entry", "Icon"); const char *exec = ini_get_string(ini, "Desktop Entry", "Exec"); game = ENNA_NEW(Game_Entry, 1); game->name = strdup(name); game->exec = strdup(exec); if (!ecore_file_is_dir(icon) && ecore_file_can_read(icon)) game->icon = strdup(icon); else if ((tmpicon = _find_icon(icon, "/usr/share/icons"))) game->icon = tmpicon; else if ((tmpicon = _find_icon(icon, "/usr/share/pixmaps"))) game->icon = tmpicon; } ini_free(ini); return game; }
int ini_get_ata_chn (ata_chn_t *ata, disks_t *dsks, ini_sct_t *ini, unsigned idx) { unsigned dev, drv; unsigned multi; const char *model; disk_t *dsk; ini_sct_t *sct; sct = NULL; while ((sct = ini_next_sct (ini, sct, "device")) != NULL) { ini_get_uint16 (sct, "device", &dev, 0); ini_get_uint16 (sct, "disk", &drv, 0); ini_get_uint16 (sct, "multi_count_max", &multi, 0); ini_get_string (sct, "model", &model, "PCEDISK"); dsk = dsks_get_disk (dsks, drv); if (dsk != NULL) { pce_log_tag (MSG_INF, "ATA:", "channel=%u device=%u multi=%u model=%s drive=%u\n", idx, dev, multi, model, drv ); ata_set_multi_mode (ata, dev, multi); ata_set_model (ata, dev, model); ata_set_block (ata, dsk, dev); } } return (0); }
char *option_get_string(char *ini_section, char *ini_key, char *cmdline_key, const char *def, char *description) { char *val = NULL; if (cmdline_key) { val = cmdline_get_string(cmdline_key, NULL, description); } if (val) { return val; } else { return ini_get_string(ini_section, ini_key, def); } }
static void sarm_setup_cpu (simarm_t *sim, ini_sct_t *ini) { ini_sct_t *sct; const char *model; unsigned long id; sct = ini_next_sct (ini, NULL, "cpu"); ini_get_string (sct, "model", &model, "armv5"); ini_get_bool (sct, "bigendian", &sim->bigendian, 1); if (strcmp (model, "xscale") == 0) { id = 0x69052000; } else if (strcmp (model, "ixp2400") == 0) { id = 0x69054190; } else { id = 0x69054190; } ini_get_uint32 (sct, "id", &id, id); pce_log_tag (MSG_INF, "CPU:", "model=%s id=0x%08lx endian=%s\n", model, id, sim->bigendian ? "big" : "little" ); sim->cpu = arm_new(); if (sim->cpu == NULL) { return; } arm_set_flags (sim->cpu, ARM_FLAG_XSCALE, 1); arm_set_flags (sim->cpu, ARM_FLAG_BIGENDIAN, sim->bigendian); arm_set_id (sim->cpu, id); if (sim->bigendian) { arm_set_mem_fct (sim->cpu, sim->mem, &mem_get_uint8, &mem_get_uint16_be, &mem_get_uint32_be, &mem_set_uint8, &mem_set_uint16_be, &mem_set_uint32_be ); } else { arm_set_mem_fct (sim->cpu, sim->mem, &mem_get_uint8, &mem_get_uint16_le, &mem_get_uint32_le, &mem_set_uint8, &mem_set_uint16_le, &mem_set_uint32_le ); } if (sim->ram != NULL) { arm_set_ram (sim->cpu, mem_blk_get_data (sim->ram), mem_blk_get_size (sim->ram)); } }
static void sarm_setup_serport (simarm_t *sim, ini_sct_t *ini) { unsigned i; unsigned long addr; unsigned irq; unsigned multichar; const char *driver; const char *chip; ini_sct_t *sct; serport_t *ser; e8250_t *uart; sim->serport[0] = NULL; sim->serport[1] = NULL; i = 0; sct = NULL; while ((i < 2) && (sct = ini_next_sct (ini, sct, "serial")) != NULL) { ini_get_uint32 (sct, "address", &addr, 0xc0030000); ini_get_uint16 (sct, "irq", &irq, 2); ini_get_uint16 (sct, "multichar", &multichar, 1); ini_get_string (sct, "uart", &chip, "8250"); ini_get_string (sct, "driver", &driver, NULL); pce_log_tag (MSG_INF, "UART:", "n=%u addr=0x%08lx irq=%u uart=%s multi=%u driver=%s\n", i, addr, irq, chip, multichar, (driver == NULL) ? "<none>" : driver ); ser = ser_new (addr, 2); if (ser == NULL) { pce_log (MSG_ERR, "*** serial port setup failed [%08lX/%u -> %s]\n", addr, irq, (driver == NULL) ? "<none>" : driver ); } else { sim->serport[i] = ser; uart = ser_get_uart (ser); if (driver != NULL) { if (ser_set_driver (ser, driver)) { pce_log (MSG_ERR, "*** can't open driver (%s)\n", driver ); } } e8250_set_buf_size (uart, 256, 256); e8250_set_multichar (uart, multichar, multichar); if (e8250_set_chip_str (uart, chip)) { pce_log (MSG_ERR, "*** unknown UART chip (%s)\n", chip ); } e8250_set_irq_fct (uart, sim->intc, ict_get_irq_f (sim->intc, irq) ); mem_add_blk (sim->mem, ser_get_reg (ser), 0); i += 1; } } }
const char * enna_config_string_get (const char *section, const char *key) { return ini_get_string(cfg_ini, section, key); }