mirror of
https://github.com/fluencelabs/redis
synced 2025-03-27 21:01:04 +00:00
add function to retrieve length of ziplist
This commit is contained in:
parent
aa549962a4
commit
6205b46387
18
ziplist.c
18
ziplist.c
@ -388,6 +388,24 @@ unsigned int ziplistCompare(unsigned char *p, unsigned char *entry, unsigned int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return length of ziplist. */
|
||||||
|
unsigned int ziplistLen(unsigned char *zl) {
|
||||||
|
unsigned int len = 0;
|
||||||
|
if (ZIPLIST_LENGTH(zl) < ZIP_BIGLEN) {
|
||||||
|
len = ZIPLIST_LENGTH(zl);
|
||||||
|
} else {
|
||||||
|
unsigned char *p = zl+ZIPLIST_HEADER_SIZE;
|
||||||
|
while (*p != ZIP_END) {
|
||||||
|
p += zipRawEntryLength(p);
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Re-store length if small enough */
|
||||||
|
if (len < ZIP_BIGLEN) ZIPLIST_LENGTH(zl) = len;
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
void ziplistRepr(unsigned char *zl) {
|
void ziplistRepr(unsigned char *zl) {
|
||||||
unsigned char *p, encoding;
|
unsigned char *p, encoding;
|
||||||
unsigned int l, lsize;
|
unsigned int l, lsize;
|
||||||
|
@ -10,3 +10,4 @@ unsigned int ziplistGet(unsigned char *p, unsigned char **e, unsigned int *elen,
|
|||||||
unsigned char *ziplistDelete(unsigned char *zl, unsigned char **p);
|
unsigned char *ziplistDelete(unsigned char *zl, unsigned char **p);
|
||||||
unsigned char *ziplistDeleteRange(unsigned char *zl, unsigned int index, unsigned int num);
|
unsigned char *ziplistDeleteRange(unsigned char *zl, unsigned int index, unsigned int num);
|
||||||
unsigned int ziplistCompare(unsigned char *p, unsigned char *entry, unsigned int elen);
|
unsigned int ziplistCompare(unsigned char *p, unsigned char *entry, unsigned int elen);
|
||||||
|
unsigned int ziplistLen(unsigned char *zl);
|
Loading…
x
Reference in New Issue
Block a user