pike.git / src / stralloc.c

version» Context lines:

pike.git/src/stralloc.c:1573:    if (alen == blen) return 0;    if (alen < blen) return ~alen;    return blen+1;   }      PMOD_EXPORT int c_compare_string(struct pike_string *s, char *foo, int len)   {    return s->len == len && s->size_shift == 0 && !memcmp(s->str,foo,len);   }    - #ifndef HAVE_STRCOLL - /* No locale function available */ - static int low_binary_strcmp(char *a, ptrdiff_t alen, -  char *b, ptrdiff_t blen) - { -  low_quick_binary_strcmp(a,alen,b,blen); - } - #else -  +    /* takes locale into account */   static int low_binary_strcmp(char *a, ptrdiff_t alen,    char *b, ptrdiff_t blen)   {    while(alen>0 && blen>0)    {    int tmp1 = strcoll(a,b);    ptrdiff_t tmp2;    if(tmp1) return (int)tmp1;    tmp2 = strlen(a)+1;    a += tmp2;    b += tmp2;    alen -= tmp2;    blen -= tmp2;    }    if(alen==blen) return 0;    if(alen > blen) return 1;    return -1;   } - #endif +       /* Does not take locale into account */ -  +    PMOD_EXPORT ptrdiff_t my_quick_strcmp(struct pike_string *a,    struct pike_string *b)   {    if(a==b) return 0;       return generic_quick_binary_strcmp(a->str, a->len, a->size_shift,    b->str, b->len, b->size_shift);   }      /* Does take locale into account */
pike.git/src/stralloc.c:1632:    return low_binary_strcmp(a->str,a->len,b->str,b->len);       default:    {    ptrdiff_t e, l = MINIMUM(a->len, b->len);    for(e=0;e<l;e++)    {    INT32 ac=index_shared_string(a,e);    INT32 bc=index_shared_string(b,e);    - #ifdef HAVE_STRCOLL +     if(ac < 256 && bc < 256)    {    char atmp[2],btmp[2];    int tmp;    atmp[0]=ac;    btmp[0]=bc;    atmp[1]=0;    btmp[1]=0;    if((tmp=strcoll(atmp,btmp)))    return tmp; -  }else - #endif -  if(ac-bc) return ac-bc; +     } -  +  else if(ac-bc) +  return ac-bc; +  }    return a->len - b->len;    }    }   }      struct pike_string *realloc_unlinked_string(struct pike_string *a,    ptrdiff_t size)   {    struct pike_string *r = NULL;