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 }