+/* Compare entry pointer to by 'p' with 'entry'. Return 1 if equal. */
+unsigned int ziplistCompare(unsigned char *p, unsigned char *entry, unsigned int elen) {
+ unsigned int zlen, lensize;
+ char encoding;
+ long long zval, eval;
+ if (*p == ZIP_END) return 0;
+
+ zlen = zipDecodeLength(p,&lensize);
+ if (zipTryEncoding(entry,&eval,&encoding)) {
+ /* Do integer compare */
+ zval = zipLoadInteger(p+lensize,ZIP_ENCODING(p));
+ return zval == eval;
+ } else {
+ /* Raw compare */
+ if (zlen == elen) {
+ return memcmp(p+lensize,entry,elen) == 0;
+ } else {
+ return 0;
+ }
+ }
+}
+