Changeset - r15196:77940844856f
[Not reviewed]
master
0 2 0
alberth - 14 years ago 2010-05-16 18:50:37
alberth@openttd.org
(svn r19835) -Codechange: Extract grfident equality check to its own method.
2 files changed with 13 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/newgrf_config.cpp
Show inline comments
 
@@ -452,11 +452,7 @@ void ScanNewGRFFiles()
 
const GRFConfig *FindGRFConfig(uint32 grfid, const uint8 *md5sum)
 
{
 
	for (const GRFConfig *c = _all_grfs; c != NULL; c = c->next) {
 
		if (c->ident.grfid == grfid) {
 
			if (md5sum == NULL) return c;
 

	
 
			if (memcmp(md5sum, c->ident.md5sum, sizeof(c->ident.md5sum)) == 0) return c;
 
		}
 
		if (c->ident.HasGrfIdentifier(grfid, md5sum)) return c;
 
	}
 

	
 
	return NULL;
src/newgrf_config.h
Show inline comments
 
@@ -53,6 +53,18 @@ enum GRFListCompatibility {
 
struct GRFIdentifier {
 
	uint32 grfid;     ///< GRF ID (defined by Action 0x08)
 
	uint8 md5sum[16]; ///< MD5 checksum of file to distinguish files with the same GRF ID (eg. newer version of GRF)
 

	
 
	/** Does the identification match the provided values?
 
	 * @param grfid  Expected grfid.
 
	 * @param md5sum Expected md5sum, may be \c NULL (in which case, do not check it).
 
	 * @return the object has the provided grfid and md5sum.
 
	 */
 
	FORCEINLINE bool HasGrfIdentifier(uint32 grfid, const uint8 *md5sum) const
 
	{
 
		if (this->grfid != grfid) return false;
 
		if (md5sum == NULL) return true;
 
		return memcmp(md5sum, this->md5sum, sizeof(this->md5sum)) == 0;
 
	}
 
};
 

	
 
/** Information about why GRF had problems during initialisation */
0 comments (0 inline, 0 general)