diff options
author | Ethan Yonker <dees_troy@teamw.in> | 2016-01-22 18:32:57 +0100 |
---|---|---|
committer | Ethan Yonker <dees_troy@teamw.in> | 2016-01-22 18:34:10 +0100 |
commit | 916cae8fa3a451c4fc802814cc9f118ad4fb9512 (patch) | |
tree | a47e14ae3b2e7fa263879a1d44663b72a462e871 /toolbox/dynarray.c | |
parent | Add zip and unzip when using toybox (diff) | |
download | android_bootable_recovery-916cae8fa3a451c4fc802814cc9f118ad4fb9512.tar android_bootable_recovery-916cae8fa3a451c4fc802814cc9f118ad4fb9512.tar.gz android_bootable_recovery-916cae8fa3a451c4fc802814cc9f118ad4fb9512.tar.bz2 android_bootable_recovery-916cae8fa3a451c4fc802814cc9f118ad4fb9512.tar.lz android_bootable_recovery-916cae8fa3a451c4fc802814cc9f118ad4fb9512.tar.xz android_bootable_recovery-916cae8fa3a451c4fc802814cc9f118ad4fb9512.tar.zst android_bootable_recovery-916cae8fa3a451c4fc802814cc9f118ad4fb9512.zip |
Diffstat (limited to '')
-rw-r--r-- | toolbox/dynarray.c | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/toolbox/dynarray.c b/toolbox/dynarray.c deleted file mode 100644 index 3c35aa950..000000000 --- a/toolbox/dynarray.c +++ /dev/null @@ -1,104 +0,0 @@ -#include "dynarray.h" -#include <stdlib.h> -#include <limits.h> -#include <string.h> - -void -dynarray_init( dynarray_t *a ) -{ - a->count = a->capacity = 0; - a->items = NULL; -} - - -static void -dynarray_reserve_more( dynarray_t *a, int count ) -{ - int old_cap = a->capacity; - int new_cap = old_cap; - const int max_cap = INT_MAX/sizeof(void*); - void** new_items; - int new_count = a->count + count; - - if (count <= 0) - return; - - if (count > max_cap - a->count) - abort(); - - new_count = a->count + count; - - while (new_cap < new_count) { - old_cap = new_cap; - new_cap += (new_cap >> 2) + 4; - if (new_cap < old_cap || new_cap > max_cap) { - new_cap = max_cap; - } - } - new_items = realloc(a->items, new_cap*sizeof(void*)); - if (new_items == NULL) - abort(); - - a->items = new_items; - a->capacity = new_cap; -} - -void -dynarray_append( dynarray_t *a, void* item ) -{ - if (a->count >= a->capacity) - dynarray_reserve_more(a, 1); - - a->items[a->count++] = item; -} - -void -dynarray_done( dynarray_t *a ) -{ - free(a->items); - a->items = NULL; - a->count = a->capacity = 0; -} - -// string arrays - -void strlist_init( strlist_t *list ) -{ - dynarray_init(list); -} - -void strlist_append_b( strlist_t *list, const void* str, size_t slen ) -{ - char *copy = malloc(slen+1); - memcpy(copy, str, slen); - copy[slen] = '\0'; - dynarray_append(list, copy); -} - -void strlist_append_dup( strlist_t *list, const char *str) -{ - strlist_append_b(list, str, strlen(str)); -} - -void strlist_done( strlist_t *list ) -{ - STRLIST_FOREACH(list, string, free(string)); - dynarray_done(list); -} - -static int strlist_compare_strings(const void* a, const void* b) -{ - const char *sa = *(const char **)a; - const char *sb = *(const char **)b; - return strcmp(sa, sb); -} - -void strlist_sort( strlist_t *list ) -{ - if (list->count > 0) { - qsort(list->items, - (size_t)list->count, - sizeof(void*), - strlist_compare_strings); - } -} |