Print this page
2964 need POSIX 2008 locale object support
Reviewed by: Robert Mustacchi <rm@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libc/port/locale/collcmp.c
          +++ new/usr/src/lib/libc/port/locale/collcmp.c
   1    1  /*
        2 + * Copyright 2013 Garrett D'Amore <garrett@damore.org>
   2    3   * Copyright (C) 1996 by Andrey A. Chernov, Moscow, Russia.
   3    4   * All rights reserved.
   4    5   *
   5    6   * Redistribution and use in source and binary forms, with or without
   6    7   * modification, are permitted provided that the following conditions
   7    8   * are met:
   8    9   * 1. Redistributions of source code must retain the above copyright
   9   10   *    notice, this list of conditions and the following disclaimer.
  10   11   * 2. Redistributions in binary form must reproduce the above copyright
  11   12   *    notice, this list of conditions and the following disclaimer in the
↓ open down ↓ 11 lines elided ↑ open up ↑
  23   24   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  24   25   * SUCH DAMAGE.
  25   26   */
  26   27  
  27   28  #include "lint.h"
  28   29  #include <string.h>
  29   30  #include <wchar.h>
  30   31  #include "collate.h"
  31   32  
  32   33  /*
  33      - * Compare two characters using collate
       34 + * Compare two characters using collate - thread safe.
  34   35   */
  35   36  
  36   37  int
  37      -_collate_range_cmp(wchar_t c1, wchar_t c2)
       38 +_collate_range_cmp(wchar_t c1, wchar_t c2, locale_t loc)
  38   39  {
  39      -        static wchar_t s1[2], s2[2];
       40 +        wchar_t s1[2], s2[2];
  40   41  
  41   42          s1[0] = c1;
       43 +        s1[1] = 0;
  42   44          s2[0] = c2;
  43      -        return (wcscoll(s1, s2));
       45 +        s2[1] = 0;
       46 +        return (wcscoll_l(s1, s2, loc));
  44   47  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX