src/pEp_string.c
author Volker Birk <vb@pep.foundation>
Mon, 15 Jan 2018 11:09:36 +0100
changeset 2376 997e80887f22
child 2437 97d602cc813b
child 2461 85c8e5aad3bc
permissions -rw-r--r--
adding string handling
vb@2376
     1
// This file is under GNU General Public License 3.0
vb@2376
     2
// see LICENSE.txt
vb@2376
     3
vb@2376
     4
#include "pEp_string.h"
vb@2376
     5
vb@2376
     6
#include <stdlib.h>
vb@2376
     7
#include <assert.h>
vb@2376
     8
vb@2376
     9
DYNAMIC_API char * new_string(const char *src, size_t len)
vb@2376
    10
{
vb@2376
    11
    assert(src || len);
vb@2376
    12
    if (!(src || len))
vb@2376
    13
        return NULL;
vb@2376
    14
vb@2376
    15
    char *s = NULL;
vb@2376
    16
    if (src) {
vb@2376
    17
        if (len)
vb@2376
    18
            s = strndup(src, len);
vb@2376
    19
        else
vb@2376
    20
            s = strdup(src);
vb@2376
    21
        assert(s);
vb@2376
    22
    }
vb@2376
    23
    else {
vb@2376
    24
        s = calloc(1, len);
vb@2376
    25
        assert(s);
vb@2376
    26
    }
vb@2376
    27
vb@2376
    28
    return s;
vb@2376
    29
}
vb@2376
    30
vb@2376
    31
vb@2376
    32
DYNAMIC_API void free_string(char *s)
vb@2376
    33
{
vb@2376
    34
    free(s);
vb@2376
    35
}
vb@2376
    36
vb@2376
    37
DYNAMIC_API char * string_dup(const char *src, size_t len)
vb@2376
    38
{
vb@2376
    39
    assert(src);
vb@2376
    40
    if (!src)
vb@2376
    41
        return NULL;
vb@2376
    42
vb@2376
    43
    char *s = NULL;
vb@2376
    44
    if (len)
vb@2376
    45
        s = strndup(src, len);
vb@2376
    46
    else
vb@2376
    47
        s = strdup(src);
vb@2376
    48
    assert(s);
vb@2376
    49
vb@2376
    50
    return s;
vb@2376
    51
}
vb@2376
    52