From 32a8ebedc695dfae21497977bf2f77a3d5b50f91 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Wed, 1 Sep 2021 15:54:53 +0200 Subject: Remove common code in favor of new libimobiledevice-glue --- src/utils.c | 248 ------------------------------------------------------------ 1 file changed, 248 deletions(-) (limited to 'src/utils.c') diff --git a/src/utils.c b/src/utils.c index 206c684..2cc5675 100644 --- a/src/utils.c +++ b/src/utils.c @@ -76,254 +76,6 @@ void fdlist_reset(struct fdlist *list) list->count = 0; } -#define CAPACITY_STEP 8 - -void collection_init(struct collection *col) -{ - col->list = malloc(sizeof(void *) * CAPACITY_STEP); - memset(col->list, 0, sizeof(void *) * CAPACITY_STEP); - col->capacity = CAPACITY_STEP; -} - -void collection_free(struct collection *col) -{ - free(col->list); - col->list = NULL; - col->capacity = 0; -} - -void collection_add(struct collection *col, void *element) -{ - int i; - for(i=0; icapacity; i++) { - if(!col->list[i]) { - col->list[i] = element; - return; - } - } - col->list = realloc(col->list, sizeof(void*) * (col->capacity + CAPACITY_STEP)); - memset(&col->list[col->capacity], 0, sizeof(void *) * CAPACITY_STEP); - col->list[col->capacity] = element; - col->capacity += CAPACITY_STEP; -} - -void collection_remove(struct collection *col, void *element) -{ - int i; - for(i=0; icapacity; i++) { - if(col->list[i] == element) { - col->list[i] = NULL; - return; - } - } - util_error("collection_remove: element %p not present in collection %p (cap %d)", element, col, col->capacity); -} - -int collection_count(struct collection *col) -{ - int i, cnt = 0; - for(i=0; icapacity; i++) { - if(col->list[i]) - cnt++; - } - return cnt; -} - -void collection_copy(struct collection *dest, struct collection *src) -{ - if (!dest || !src) return; - dest->capacity = src->capacity; - dest->list = malloc(sizeof(void*) * src->capacity); - memcpy(dest->list, src->list, sizeof(void*) * src->capacity); -} - -#ifndef HAVE_STPCPY -/** - * Copy characters from one string into another - * - * @note: The strings should not overlap, as the behavior is undefined. - * - * @s1: The source string. - * @s2: The destination string. - * - * @return a pointer to the terminating `\0' character of @s1, - * or NULL if @s1 or @s2 is NULL. - */ -char *stpcpy(char * s1, const char * s2) -{ - if (s1 == NULL || s2 == NULL) - return NULL; - - strcpy(s1, s2); - - return s1 + strlen(s2); -} -#endif - -/** - * Concatenate strings into a newly allocated string - * - * @note: Specify NULL for the last string in the varargs list - * - * @str: The first string in the list - * @...: Subsequent strings. Use NULL for the last item. - * - * @return a newly allocated string, or NULL if @str is NULL. This will also - * return NULL and set errno to ENOMEM if memory is exhausted. - */ -char *string_concat(const char *str, ...) -{ - size_t len; - va_list args; - char *s; - char *result; - char *dest; - - if (!str) - return NULL; - - /* Compute final length */ - - len = strlen(str) + 1; /* plus 1 for the null terminator */ - - va_start(args, str); - s = va_arg(args, char *); - while (s) { - len += strlen(s); - s = va_arg(args, char*); - } - va_end(args); - - /* Concat each string */ - - result = malloc(len); - if (!result) - return NULL; /* errno remains set */ - - dest = result; - - dest = stpcpy(dest, str); - - va_start(args, str); - s = va_arg(args, char *); - while (s) { - dest = stpcpy(dest, s); - s = va_arg(args, char *); - } - va_end(args); - - return result; -} - -int buffer_read_from_filename(const char *filename, char **buffer, uint64_t *length) -{ - FILE *f; - uint64_t size; - - *length = 0; - - f = fopen(filename, "rb"); - if (!f) { - return 0; - } - - fseek(f, 0, SEEK_END); - size = ftell(f); - rewind(f); - - if (size == 0) { - fclose(f); - return 0; - } - - *buffer = (char*)malloc(sizeof(char)*(size+1)); - - if (!buffer) { - return 0; - } - - int ret = 1; - if (fread(*buffer, sizeof(char), size, f) != size) { - usbmuxd_log(LL_ERROR, "%s: ERROR: couldn't read %d bytes from %s", __func__, (int)size, filename); - free(*buffer); - ret = 0; - errno = EIO; - } - fclose(f); - - *length = size; - return ret; -} - -int buffer_write_to_filename(const char *filename, const char *buffer, uint64_t length) -{ - FILE *f; - - f = fopen(filename, "wb"); - if (f) { - size_t written = fwrite(buffer, sizeof(char), length, f); - fclose(f); - - if (written == length) { - return 1; - } - else { - // Not all data could be written. - errno = EIO; - return 0; - } - } - else { - // Failed to open the file, let the caller know. - return 0; - } -} - -int plist_read_from_filename(plist_t *plist, const char *filename) -{ - char *buffer = NULL; - uint64_t length; - - if (!filename) - return 0; - - if (!buffer_read_from_filename(filename, &buffer, &length)) { - return 0; - } - - if ((length > 8) && (memcmp(buffer, "bplist00", 8) == 0)) { - plist_from_bin(buffer, length, plist); - } else { - plist_from_xml(buffer, length, plist); - } - - free(buffer); - - return 1; -} - -int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format) -{ - char *buffer = NULL; - uint32_t length; - - if (!plist || !filename) - return 0; - - if (format == PLIST_FORMAT_XML) - plist_to_xml(plist, &buffer, &length); - else if (format == PLIST_FORMAT_BINARY) - plist_to_bin(plist, &buffer, &length); - else - return 0; - - int res = buffer_write_to_filename(filename, buffer, length); - - free(buffer); - - return res; -} - #ifndef HAVE_CLOCK_GETTIME typedef int clockid_t; #define CLOCK_MONOTONIC 1 -- cgit v1.1-32-gdbae