MagickExport unsigned int GetMagickSignature(const StringInfo *nonce)
{
- return(0);
+ register unsigned char
+ *p;
+
+ StringInfo
+ *version;
+
+ unsigned int
+ signature;
+
+ version=AcquireStringInfo(MaxTextExtent);
+ p=GetStringInfoDatum(version);
+ signature=MagickLibVersion;
+ (void) memcpy(p,&signature,sizeof(signature));
+ p+=sizeof(signature);
+ signature=MAGICKCORE_QUANTUM_DEPTH;
+ (void) memcpy(p,&signature,sizeof(signature));
+ p+=sizeof(signature);
+ signature=MAGICKCORE_HDRI_ENABLE;
+ (void) memcpy(p,&signature,sizeof(signature));
+ p+=sizeof(signature);
+ signature=1; /* endianess */
+ (void) memcpy(p,&signature,sizeof(signature));
+ p+=sizeof(signature);
+ SetStringInfoLength(version,p-GetStringInfoDatum(version));
+ if (nonce != (const StringInfo *) NULL)
+ ConcatenateStringInfo(version,nonce);
+ signature=CRC32(GetStringInfoDatum(version),GetStringInfoLength(version));
+ version=DestroyStringInfo(version);
+ return(signature);
}
\f
/*
size_t
depth,
- length,
- quantum_depth;
+ length;
ssize_t
count;
StringInfo
*profile;
+ unsigned int
+ signature;
+
/*
Open image file.
*/
profiles=(LinkedListInfo *) NULL;
length=MaxTextExtent;
options=AcquireString((char *) NULL);
- quantum_depth=MAGICKCORE_QUANTUM_DEPTH;
+ signature=GetMagickSignature((const StringInfo *) NULL);
image->depth=8;
image->compression=NoCompression;
while ((isgraph(c) != MagickFalse) && (c != (int) ':'))
image->quality=StringToUnsignedLong(options);
break;
}
- if (LocaleCompare(keyword,"quantum-depth") == 0)
- {
- quantum_depth=StringToUnsignedLong(options);
- break;
- }
(void) SetImageProperty(image,keyword,options,exception);
break;
}
image->scene=StringToUnsignedLong(options);
break;
}
+ if (LocaleCompare(keyword,"signature") == 0)
+ {
+ signature=(unsigned int) StringToUnsignedLong(options);
+ break;
+ }
(void) SetImageProperty(image,keyword,options,exception);
break;
}
(image->compression == UndefinedCompression) || (image->columns == 0) ||
(image->rows == 0))
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
- if (quantum_depth != MAGICKCORE_QUANTUM_DEPTH)
- ThrowReaderException(CacheError,"InconsistentPersistentCacheDepth");
+ if (signature != GetMagickSignature((const StringInfo *) NULL))
+ ThrowReaderException(CacheError,"IncompatibleAPI");
if (image->montage != (char *) NULL)
{
register char
(image->colors > (one << depth)))
image->storage_class=DirectClass;
(void) WriteBlobString(image,"id=MagickCache\n");
- (void) FormatLocaleString(buffer,MaxTextExtent,"quantum-depth=%d\n",
- MAGICKCORE_QUANTUM_DEPTH);
+ (void) FormatLocaleString(buffer,MaxTextExtent,"signature=%u\n",
+ GetMagickSignature((const StringInfo *) NULL));
(void) WriteBlobString(image,buffer);
(void) FormatLocaleString(buffer,MaxTextExtent,
"class=%s colors=%.20g alpha-trait=%s\n",CommandOptionToMnemonic(