bool IniConfig::readString (ini_fd_t ini, const char *key, char *&str) { char *ret; size_t length; if (ini_locateKey (ini, key) < 0) { // Dosen't exist, add it (void) ini_writeString (ini, ""); } length = (size_t) ini_dataLength (ini); if (!length) return 0; ret = (char *) malloc (++length); if (!ret) return false; if (ini_readString (ini, ret, (uint) length) < 0) goto IniCofig_readString_error; str = ret; return true; IniCofig_readString_error: if (str) free (str); return false; }
int_least32_t SidDatabase::length (const char *md5, uint_least16_t song) { int_least32_t time = 0; if (!database) { errorString = ERR_NO_DATABASE_LOADED; return -1; } // Now set up array access if (ini_listDelims (database, " ") == -1) { errorString = ERR_MEM_ALLOC; return -1; } // Read Time (and check times before hand) (void) ini_locateHeading (database, "Database"); (void) ini_locateKey (database, md5); // If length return is -1 then no entry found in database if (ini_dataLength (database) != -1) { char timeStamp[10]; for (uint_least16_t i = 0; i < song; i++) { if (ini_readString (database, timeStamp, sizeof (timeStamp)) == -1) { // No time found errorString = ERR_DATABASE_CORRUPT; return -1; } // Validate Time if (timesFound (timeStamp) != 1) { errorString = ERR_DATABASE_CORRUPT; return -1; } } // Parse timestamp time = parseTimeStamp (timeStamp); } return time; }
static int load_theme_config(void) { char buffer[300], *p = buffer; int ret; if (!theme_config_fd) { /*Theme config is not loaded yet*/ memset(theme_font_sizes_cache, 0, sizeof(theme_font_sizes_cache)); /* Open config file */ char *filename = cfg_findfile ("etc/nanowm.cfg"); if (!filename) return -1; ini_fd_t fd = ini_open (filename, "r", "#;"); free (filename); if (fd == NULL) { fprintf (stderr, "theme_get: Unable to open nanowm.cfg file\n"); return -1; } else { ret = ini_locateHeading (fd, "Main"); ret = ini_locateKey (fd, "Theme"); ret = ini_readString (fd, p, sizeof (buffer)); } ini_close(fd); if (ret < 0) p = "theme"; /* open theme config file */ char path[256] = ACTIVETHEME_PATH; strncat(path, p, 255); strncat(path, ".cfg", 255); filename = cfg_findfile (path); theme_config_fd = ini_open (filename, "r", "#;"); free (filename); if (theme_config_fd == NULL) { fprintf (stderr, "theme_get: Unable to open theme config file\n"); return -1; } } return 0; }
bool Rule::recall (int player_id) { char buff[10]; char data[0x40006]; // Cater for worst possible case sprintf (buff, "%d", m_player_id); if (ini_locateHeading (m_inifd, buff) < 0) return false; { int addr = 0; int count = 0; int group = 1; char *p = data; memset (m_memory, 0, sizeof (m_memory)); for (;;) { int ret, val; sprintf (buff, "ID%d", group++); if (ini_locateKey (m_inifd, buff) < 0) { if (group == 1) return false; break; } if (ini_readString (m_inifd, data, sizeof (data)) < 0) return false; p = data; ret = 0; sscanf (p, "$%x%n", &val, &ret); if (ret != 5) return false; addr = val; p += ret; while (*p != '\0') { int val; // Seperator if (*p++ != ':') return false; // Place holder if (*p == '-') { addr++; p++; continue; } // value ret = 0; sscanf (p, "$%x%n", &val, &ret); if (ret != 3) return false; p += ret; m_memory[addr] = val; m_flags[addr] = UNKNOWN; m_addr[count++] = addr++; } } m_ids = count; } // Reset m_base = m_addr[0]; m_status = true; m_filename[0] = '\0'; m_matches = 0; m_player_id = player_id; // Double check input values are ok _eval (); return true; }
/** * Get specified image from the active theme * */ int theme_get_image(int group_index, int image_index, int * xcoord, int * ycoord, GR_IMAGE_ID * pict_id) { char buffer[300], *p = buffer; if (load_theme_config() < 0) return -1; /* load needed image */ const char * theme_group; /* group name */ const char ** theme_images; /* pointer to the theme_*_images array */ switch(group_index) { case THEME_GROUP_TITLE: theme_group = theme_title; theme_images = theme_title_images; break; case THEME_GROUP_MAINSCREEN: theme_group = theme_mainscreen; theme_images = theme_mainscreen_images; break; default: return -1; } if (ini_locateHeading (theme_config_fd, theme_group) ) { fprintf (stderr, "theme_get: Unable to find group %s\n",theme_group); return -1; } if (ini_locateKey (theme_config_fd, theme_images[image_index] ) < 0 ) { fprintf (stderr, "theme_get: Unable to find key %s\n",theme_images[image_index]); return -1; } if (ini_readString (theme_config_fd, p, sizeof (buffer)) < 0 ) { fprintf (stderr, "theme_get: Unable to get string from key %s\n",theme_images[image_index]); return -1; } /* now parse key value */ char * token; token = strtok(p, ", "); /*token = xcoord */ *xcoord = atoi(token); token = strtok(NULL, ", "); /*token = ycoord */ *ycoord = atoi(token); token = strtok(NULL, ", "); /*token = imagename */ if (token) { /* we have found image name, now load it */ char path[256] = ACTIVETHEME_PATH; strncat(path, token, 255); char *filename = cfg_findfile (path); if(!filename) { fprintf (stderr, "theme_get: Unable to find image %s\n",path); } else { // *wid = theme_load_image(filename); *pict_id = GrLoadImageFromFile(filename, 0); if (*pict_id == 0) fprintf(stderr, "theme_get: Failed to load image %s\n", filename); free(filename); } } else { *pict_id = 0; } return (*pict_id == 0)?-2:0; }