Skip to content
Snippets Groups Projects
Commit 045e76a1 authored by Jan Včelák's avatar Jan Včelák :rocket:
Browse files

knot_binary: add knot_binary_from_string() into API

parent babe371c
Branches
Tags
No related merge requests found
......@@ -18,14 +18,16 @@
#include <stdlib.h>
#include <string.h>
#include "binary.h"
#include "common/base64.h"
#include "common/errcode.h"
#include "common/memdup.h"
#include "libknot/binary.h"
int knot_binary_from_base64(const char *base64, knot_binary_t *binary)
int knot_binary_from_base64(const char *base64, knot_binary_t *to)
{
if (!binary)
if (!to) {
return KNOT_EINVAL;
}
uint8_t *data;
int32_t size;
......@@ -35,16 +37,34 @@ int knot_binary_from_base64(const char *base64, knot_binary_t *binary)
return (int)size;
}
binary->data = data;
binary->size = size;
to->data = data;
to->size = size;
return KNOT_EOK;
}
int knot_binary_from_string(const uint8_t *data, size_t size, knot_binary_t *to)
{
if (!data || !to) {
return KNOT_EINVAL;
}
uint8_t *copy = knot_memdup(data, size);
if (!copy) {
return KNOT_ENOMEM;
}
to->data = copy;
to->size = size;
return KNOT_EOK;
}
int knot_binary_free(knot_binary_t *binary)
{
if (!binary)
if (!binary) {
return KNOT_EINVAL;
}
if (binary->data) {
free(binary->data);
......@@ -57,8 +77,9 @@ int knot_binary_free(knot_binary_t *binary)
int knot_binary_dup(const knot_binary_t *from, knot_binary_t *to)
{
if (!from || !to)
if (!from || !to) {
return KNOT_EINVAL;
}
if (from->size == 0) {
to->size = 0;
......@@ -67,8 +88,9 @@ int knot_binary_dup(const knot_binary_t *from, knot_binary_t *to)
}
to->data = malloc(from->size * sizeof(uint8_t));
if (!to->data)
if (!to->data) {
return KNOT_ENOMEM;
}
to->size = from->size;
memcpy(to->data, from->data, from->size * sizeof(uint8_t));
......
......@@ -43,10 +43,20 @@ typedef struct knot_binary knot_binary_t;
* \brief Initialize knot_binary_t structure from Base64 encoded string.
*
* \param base64 Base64 encoded input data.
* \param binary Pointer to structure to write the result into.
* \param to Pointer to structure to write the result into.
* \return Error code, KNOT_EOK in case of success.
*/
int knot_binary_from_base64(const char *base64, knot_binary_t *binary);
int knot_binary_from_base64(const char *base64, knot_binary_t *to);
/*!
* \brief Initialize knot_binary_t structure from binary string.
*
* \param data Pointer to binary data string.
* \param size Size of the binary data.
* \param to Pointer to structure to write the result into.
* \return Error code, KNOT_EOK in case of success.
*/
int knot_binary_from_string(const uint8_t *data, size_t size, knot_binary_t *to);
/*!
* \brief Free content of knot_binary_t structure.
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment