86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //
 | |
| // STORCMP.CPP
 | |
| //
 | |
| //  Source file for ArchiveLib 1.0
 | |
| //
 | |
| //  Copyright (c) Greenleaf Software, Inc. 1994
 | |
| //  All Rights Reserved
 | |
| //
 | |
| // CONTENTS
 | |
| //
 | |
| //  ALStorage::Compare()
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This file contains a single function from ALStorage.  I'm not
 | |
| //  sure why it is in a separate file.
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //  May 26, 1994  1.0A  : First release
 | |
| //
 | |
| //
 | |
| 
 | |
| #include "arclib.h"
 | |
| #pragma hdrstop
 | |
| 
 | |
| #include <string.h>
 | |
| 
 | |
| #include "storage.h"
 | |
| #include "_openf.h"
 | |
| 
 | |
| //
 | |
| // int ALStorage::Compare( ALStorage & test )
 | |
| //
 | |
| // ARGUMENTS:
 | |
| //
 | |
| //  test  :  The storage object that will be compared to this.
 | |
| //
 | |
| // RETURNS
 | |
| //
 | |
| //  AL_SUCCESS if the two files match.  AL_COMPARE_ERROR if the files
 | |
| //  don't match.  An error code < AL_SUCCESS is possible if some other 
 | |
| //  error takes place during the process.
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This function provides a convenient way to test this object 
 | |
| //  against another.  Note that if the comparison fails, the status
 | |
| //  code of this object will be set to an error state.  You will need
 | |
| //  to clear that error if you intend to use this object again.
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //   May 26, 1994  1.0A  : First release
 | |
| //
 | |
| 
 | |
| int AL_PROTO ALStorage::Compare( ALStorage AL_DLL_FAR & test )
 | |
| {
 | |
|     ALOpenInputFile in1( test );
 | |
|     ALOpenInputFile in2( *this );
 | |
| 
 | |
|     if ( test.mStatus < 0 )
 | |
|        return mStatus = test.mStatus;
 | |
|     if ( GetSize() != test.GetSize() ) 
 | |
|         return mStatus.SetError( AL_COMPARE_ERROR, 
 | |
|                                  "Comparison failed.  "
 | |
|                                  "File %s and %s are two different sizes.",
 | |
|                                  mName.GetSafeName(),
 | |
|                                  test.mName.GetSafeName() );
 | |
|     long position = 0;
 | |
|     for ( ; ; ) {
 | |
|         int c = ReadChar();
 | |
|         if ( c < 0 )
 | |
|             break;
 | |
|         if ( c != test.ReadChar() ) 
 | |
|             return mStatus.SetError( AL_COMPARE_ERROR,
 | |
|                                      "File %s and %s differed at position %ld",
 | |
|                                      mName.GetSafeName(),
 | |
|                                      test.mName.GetSafeName(),
 | |
|                                      position );
 | |
|          position++;
 | |
|     }
 | |
|     return mStatus;    
 | |
| }
 | |
| 
 |