コード例 #1
0
ファイル: detect.cpp プロジェクト: mwgoldsmith/sidplay2-libs
bool Rule::store ()
{
    char buff[10];
    char data[0x40006]; // Cater for worst possible case
    if (!m_matches)
        return false;
    sprintf (buff, "%d", m_player_id);
    ini_locateHeading (m_inifd, buff);

    {
        int   base  = m_addr[0] & 0xff00;
	    int   laddr = m_addr[0];
        int   group = 1;
        char *p     = data;

        sprintf (buff, "ID%d", group++);
        ini_locateKey (m_inifd, buff);
        p += sprintf (p, "$%04X", laddr - base);
        laddr--;
        for (int i = 0; i < m_ids; i++)
        {
            int addr = m_addr[i];
            if ((addr - 1) != laddr)
            {
                if ((addr - laddr) > (RULE_MAX_ERROR + 1))
                {
                    if (ini_writeString (m_inifd, data) < 0)
                        return false; // Error storing
                    p  = data;
                    // Move to next group
                    sprintf (buff, "ID%d", group++);
                    ini_locateKey (m_inifd, buff);
                    p  = data;
                    p += sprintf (p, "$%04X", addr - base);
                }
                else
                {
                    while (++laddr < addr)
                        p += sprintf (p, ":-");
                }
            }
            p += sprintf (p, ":$%02X", m_memory[addr]);
            laddr = addr;
        }
        if (ini_writeString (m_inifd, data) < 0)
            return false; // Error storing
    }
    return true;
}
コード例 #2
0
ファイル: IniConfig.cpp プロジェクト: brushesm/C64Public
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;
}
コード例 #3
0
ファイル: IniConfig.cpp プロジェクト: brushesm/C64Public
bool IniConfig::readBool (ini_fd_t ini, const char *key, bool &boolean)
{
    int b = boolean;
    if (ini_locateKey (ini, key) < 0)
    {   // Dosen't exist, add it
        (void) ini_writeString (ini, "");
    }
    if (ini_readBool (ini, &b) < 0)
        return false;
    boolean = (b != 0);
    return true;
}
コード例 #4
0
ファイル: IniConfig.cpp プロジェクト: brushesm/C64Public
bool IniConfig::readInt (ini_fd_t ini, const char *key, int &value)
{
    int i = value;
    if (ini_locateKey (ini, key) < 0)
    {   // Dosen't exist, add it
        (void) ini_writeString (ini, "");
    }
    if (ini_readInt (ini, &i) < 0)
        return false;
    value = i;
    return true;
}