1/*
2 * Copyright (C) 1996 by Andrey A. Chernov, Moscow, Russia.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
--- 12 unchanged lines hidden (view full) ---
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <ctype.h>
28#include <string.h>
29#include <locale.h>
30
31/* will be removed ***************************/
32#include "collate.h"
33
34int __collcmp (c1, c2)
35 unsigned char c1, c2;
36{
37 return collate_range_cmp (c1, c2);
38}
39/* will be removed ***************************/
40
41int collate_range_cmp (c1, c2)
42 int c1, c2;
43{
44 static char s1[2], s2[2];
45
46 c1 &= UCHAR_MAX;
47 c2 &= UCHAR_MAX;
48 if (c1 == c2)
49 return (0);
50 if ( (isascii(c1) && isascii(c2))
51 || (!isalpha(c1) && !isalpha(c2))
52 )
53 return (c1 - c2);
54 if (isalpha(c1) && !isalpha(c2)) {
55 if (isupper(c1))
56 return ('A' - c2);
57 else
58 return ('a' - c2);
59 } else if (isalpha(c2) && !isalpha(c1)) {
60 if (isupper(c2))
61 return (c1 - 'A');
62 else
63 return (c1 - 'a');
64 }
65 if (isupper(c1) && islower(c2))
66 return (-1);
67 else if (islower(c1) && isupper(c2))
68 return (1);
69 s1[0] = c1;
70 s2[0] = c2;
71 return strcoll(s1, s2);
72}
2 * Copyright (C) 1996 by Andrey A. Chernov, Moscow, Russia.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
--- 12 unchanged lines hidden (view full) ---
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <ctype.h>
28#include <string.h>
29#include <locale.h>
30
31/* will be removed ***************************/
32#include "collate.h"
33
34int __collcmp (c1, c2)
35 unsigned char c1, c2;
36{
37 return collate_range_cmp (c1, c2);
38}
39/* will be removed ***************************/
40
41int collate_range_cmp (c1, c2)
42 int c1, c2;
43{
44 static char s1[2], s2[2];
45
46 c1 &= UCHAR_MAX;
47 c2 &= UCHAR_MAX;
48 if (c1 == c2)
49 return (0);
50 if ( (isascii(c1) && isascii(c2))
51 || (!isalpha(c1) && !isalpha(c2))
52 )
53 return (c1 - c2);
54 if (isalpha(c1) && !isalpha(c2)) {
55 if (isupper(c1))
56 return ('A' - c2);
57 else
58 return ('a' - c2);
59 } else if (isalpha(c2) && !isalpha(c1)) {
60 if (isupper(c2))
61 return (c1 - 'A');
62 else
63 return (c1 - 'a');
64 }
65 if (isupper(c1) && islower(c2))
66 return (-1);
67 else if (islower(c1) && isupper(c2))
68 return (1);
69 s1[0] = c1;
70 s2[0] = c2;
71 return strcoll(s1, s2);
72}