X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/3c08fdae712e79cc7a678a2969c2ac15c5ff8865..4b1f6ad3e7a5c7c28618e43e7539c9a937bf8521:/src/adlist.c diff --git a/src/adlist.c b/src/adlist.c index 51ba03bd..e48957e3 100644 --- a/src/adlist.c +++ b/src/adlist.c @@ -323,3 +323,19 @@ listNode *listIndex(list *list, long index) { } return n; } + +/* Rotate the list removing the tail node and inserting it to the head. */ +void listRotate(list *list) { + listNode *tail = list->tail; + + if (listLength(list) <= 1) return; + + /* Detatch current tail */ + list->tail = tail->prev; + list->tail->next = NULL; + /* Move it as head */ + list->head->prev = tail; + tail->prev = NULL; + tail->next = list->head; + list->head = tail; +}