00001 
00002 
00003 
00004 #include "cddefines.h"
00005 
00008 void do_dump_state(const void* buf, size_t nelem, size_t size, FILE* out, int32 magic)
00009 {
00010         DEBUG_ENTRY( "do_dump_state()" );
00011 
00012         bool lgErr = ( fwrite( &magic, sizeof(int32), 1, out ) != 1 );
00013         int32 help = (int32)sizeof(size_t);
00014         lgErr = lgErr || ( fwrite( &help, sizeof(int32), 1, out ) != 1 );
00015         lgErr = lgErr || ( fwrite( &size, sizeof(size_t), 1, out ) != 1 );
00016         lgErr = lgErr || ( fwrite( buf, size, nelem, out ) != nelem );
00017         if( lgErr )
00018         {
00019                 fprintf( ioQQQ, " I/O error while dumping state!\n" );
00020                 cdEXIT(EXIT_FAILURE);
00021         }
00022 }
00023 
00028 void do_restore_state(void* buf, size_t nelem, size_t size, FILE *in, int32 magic)
00029 {
00030         DEBUG_ENTRY( "do_restore_state()" );
00031 
00032         int32 help = 0;
00033         size_t help2 = 0;
00034         bool lgErr = ( fread( &help, sizeof(int32), 1, in ) != 1 );
00035         
00036         
00037         lgErr = lgErr || ( help != magic );
00038         lgErr = lgErr || ( fread( &help, sizeof(int32), 1, in ) != 1 );
00039         
00040         lgErr = lgErr || ( help != (int32)sizeof(size_t) );
00041         lgErr = lgErr || ( fread( &help2, sizeof(size_t), 1, in ) != 1 );
00042         
00043         lgErr = lgErr || ( help2 != size );
00044         lgErr = lgErr || ( fread( buf, size, nelem, in ) != nelem );
00045         if( lgErr )
00046         {
00047                 fprintf( ioQQQ, " Error while restoring state!\n" );
00048                 cdEXIT(EXIT_FAILURE);
00049         }
00050 }