ucx/string.c

changeset 116
234920008754
parent 109
75cb6590358b
child 119
baa839a7633f
     1.1 --- a/ucx/string.c	Wed Jul 17 12:32:03 2013 +0200
     1.2 +++ b/ucx/string.c	Wed Jul 17 15:56:01 2013 +0200
     1.3 @@ -33,17 +33,17 @@
     1.4  #include "string.h"
     1.5  #include "allocator.h"
     1.6  
     1.7 -sstr_t sstr(char *s) {
     1.8 +sstr_t sstr(char *cstring) {
     1.9      sstr_t string;
    1.10 -    string.ptr = s;
    1.11 -    string.length = strlen(s);
    1.12 +    string.ptr = cstring;
    1.13 +    string.length = strlen(cstring);
    1.14      return string;
    1.15  }
    1.16  
    1.17 -sstr_t sstrn(char *s, size_t n) {
    1.18 +sstr_t sstrn(char *cstring, size_t length) {
    1.19      sstr_t string;
    1.20 -    string.ptr = s;
    1.21 -    string.length = n;
    1.22 +    string.ptr = cstring;
    1.23 +    string.length = length;
    1.24      return string;
    1.25  }
    1.26  
    1.27 @@ -52,7 +52,7 @@
    1.28      size_t size = s.length;
    1.29      va_start(ap, s);
    1.30  
    1.31 -    for (size_t i = 0 ; i < n-1 ; i++) {
    1.32 +    for (size_t i = 1 ; i < n ; i++) {
    1.33          sstr_t str = va_arg(ap, sstr_t);
    1.34          size += str.length;
    1.35      }
    1.36 @@ -175,25 +175,20 @@
    1.37  }
    1.38  
    1.39  int sstrcmp(sstr_t s1, sstr_t s2) {
    1.40 -    return strncmp(s1.ptr, s2.ptr, s1.length>s2.length ? s2.length: s1.length);
    1.41 +    if (s1.length == s2.length) {
    1.42 +        return memcmp(s1.ptr, s2.ptr, s1.length);
    1.43 +    } else if (s1.length > s2.length) {
    1.44 +        return 1;
    1.45 +    } else {
    1.46 +        return -1;
    1.47 +    }
    1.48  }
    1.49  
    1.50  sstr_t sstrdup(sstr_t s) {
    1.51 -    sstr_t newstring;
    1.52 -    newstring.ptr = (char*) malloc(s.length + 1);
    1.53 -    if (newstring.ptr) {
    1.54 -        newstring.length = s.length;
    1.55 -        newstring.ptr[newstring.length] = 0;
    1.56 -        
    1.57 -        memcpy(newstring.ptr, s.ptr, s.length);
    1.58 -    } else {
    1.59 -        newstring.length = 0;
    1.60 -    }
    1.61 -    
    1.62 -    return newstring;
    1.63 +    return sstrdupa(ucx_default_allocator(), s);
    1.64  }
    1.65  
    1.66 -sstr_t sstrdup_alloc(UcxAllocator *allocator, sstr_t s) {
    1.67 +sstr_t sstrdupa(UcxAllocator *allocator, sstr_t s) {
    1.68      sstr_t newstring;
    1.69      newstring.ptr = (char*)allocator->malloc(allocator->pool, s.length + 1);
    1.70      if (newstring.ptr) {

mercurial