Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
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;
}
Example #5
0
/**
 * 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;
}