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 "collate.h"
30
31int __collcmp (c1, c2)
32 u_char c1, c2;
33{
34 static char s1[2], s2[2];
35
36 if (c1 == c2)
37 return (0);
38 if ( (isascii(c1) && isascii(c2))
39 || (!isalpha(c1) && !isalpha(c2))
40 )
41 return (((int)c1) - ((int)c2));
42 if (isalpha(c1) && !isalpha(c2)) {
43 if (isupper(c1))
44 return ('A' - ((int)c2));
45 else
46 return ('a' - ((int)c2));
47 } else if (isalpha(c2) && !isalpha(c1)) {
48 if (isupper(c2))
49 return (((int)c1) - 'A');
50 else
51 return (((int)c1) - 'a');
52 }
53 if (isupper(c1) && islower(c2))
54 return (-1);
55 else if (islower(c1) && isupper(c2))
56 return (1);
57 s1[0] = (char) c1;
58 s2[0] = (char) c2;
59 return strcoll(s1, s2);
60}
61
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 "collate.h"
30
31int __collcmp (c1, c2)
32 u_char c1, c2;
33{
34 static char s1[2], s2[2];
35
36 if (c1 == c2)
37 return (0);
38 if ( (isascii(c1) && isascii(c2))
39 || (!isalpha(c1) && !isalpha(c2))
40 )
41 return (((int)c1) - ((int)c2));
42 if (isalpha(c1) && !isalpha(c2)) {
43 if (isupper(c1))
44 return ('A' - ((int)c2));
45 else
46 return ('a' - ((int)c2));
47 } else if (isalpha(c2) && !isalpha(c1)) {
48 if (isupper(c2))
49 return (((int)c1) - 'A');
50 else
51 return (((int)c1) - 'a');
52 }
53 if (isupper(c1) && islower(c2))
54 return (-1);
55 else if (islower(c1) && isupper(c2))
56 return (1);
57 s1[0] = (char) c1;
58 s2[0] = (char) c2;
59 return strcoll(s1, s2);
60}
61