Esempio n. 1
0
void MDFN_BackupSavFile(const uint8 max_backup_count, const char* sav_ext)
{
    FileStream cts(MDFN_MakeFName(MDFNMKF_SAVBACK, -1, sav_ext), FileStream::MODE_READ_WRITE, true);
    std::unique_ptr<MemoryStream> tmp;
    uint8 counter = max_backup_count - 1;

    cts.read(&counter, 1, false);
//
//
    try
    {
        tmp.reset(new MemoryStream(new FileStream(MDFN_MakeFName(MDFNMKF_SAV, 0, sav_ext), FileStream::MODE_READ)));
    }
    catch(MDFN_Error& e)
    {
        if(e.GetErrno() == ENOENT)
            return;

        throw;
    }
//
//
//
    {
        try
        {
            MemoryStream oldbks(new GZFileStream(MDFN_MakeFName(MDFNMKF_SAVBACK, counter, sav_ext), GZFileStream::MODE::READ));

            if(oldbks.size() == tmp->size() && !memcmp(oldbks.map(), tmp->map(), oldbks.size()))
            {
                //puts("Skipped backup.");
                return;
            }
        }
        catch(MDFN_Error& e)
        {
            if(e.GetErrno() != ENOENT)
                throw;
        }
        //
        counter = (counter + 1) % max_backup_count;
        //
        GZFileStream bks(MDFN_MakeFName(MDFNMKF_SAVBACK, counter, sav_ext), GZFileStream::MODE::WRITE, 9);

        bks.write(tmp->map(), tmp->size());

        bks.close();
    }

//
//
    cts.rewind();
    cts.write(&counter, 1);
    cts.close();
}
Esempio n. 2
0
void solve_system (double* m, int N, double* b, double* x)
{
    eliminate (m, N, b);
    bks (m, N, b, x);
    
}