Changeset fc6dd18 in mainline


Ignore:
Timestamp:
2009-12-13T15:13:01Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1313ee9
Parents:
531695f
Message:

add str_ndup

Location:
uspace/lib/libc
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libc/generic/string.c

    r531695f rfc6dd18  
    896896}
    897897
     898char *str_dup(const char *src)
     899{
     900        size_t size = str_size(src);
     901        void *dest = malloc(size + 1);
     902       
     903        if (dest == NULL)
     904                return (char *) NULL;
     905       
     906        return (char *) memcpy(dest, src, size + 1);
     907}
     908
     909char *str_ndup(const char *src, size_t max_size)
     910{
     911        size_t size = str_size(src);
     912        if (size > max_size)
     913                size = max_size;
     914       
     915        char *dest = (char *) malloc(size + 1);
     916       
     917        if (dest == NULL)
     918                return (char *) NULL;
     919       
     920        memcpy(dest, src, size);
     921        dest[size] = 0;
     922        return dest;
     923}
     924
    898925
    899926/** Convert initial part of string to unsigned long according to given base.
     
    920947}
    921948
    922 char *str_dup(const char *src)
    923 {
    924         size_t size = str_size(src);
    925         void *dest = malloc(size + 1);
    926 
    927         if (dest == NULL)
    928                 return (char *) NULL;
    929 
    930         return (char *) memcpy(dest, src, size + 1);
    931 }
    932 
    933949char *strtok(char *s, const char *delim)
    934950{
  • uspace/lib/libc/include/string.h

    r531695f rfc6dd18  
    8484
    8585extern char *str_dup(const char *);
     86extern char *str_ndup(const char *, size_t max_size);
    8687
    8788/*
Note: See TracChangeset for help on using the changeset viewer.