|
|
1.1 root 1: /* grdcmp.c
2: Compare two grades.
3:
4: Copyright (C) 1992 Ian Lance Taylor
5:
6: This file is part of the Taylor UUCP uuconf library.
7:
8: This library is free software; you can redistribute it and/or
9: modify it under the terms of the GNU Library General Public License
10: as published by the Free Software Foundation; either version 2 of
11: the License, or (at your option) any later version.
12:
13: This library is distributed in the hope that it will be useful, but
14: WITHOUT ANY WARRANTY; without even the implied warranty of
15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16: Library General Public License for more details.
17:
18: You should have received a copy of the GNU Library General Public
19: License along with this library; if not, write to the Free Software
20: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21:
22: The author of the program may be contacted at [email protected] or
23: c/o Infinity Development Systems, P.O. Box 520, Waltham, MA 02254.
24: */
25:
26: #include "uucnfi.h"
27:
28: #if USE_RCS_ID
29: const char _uuconf_grdcmp_rcsid[] = "$Id: grdcmp.c,v 1.1 93/07/30 08:07:12 bin Exp Locker: bin $";
30: #endif
31:
32: #include <ctype.h>
33:
34: /* Compare two grades, returning < 0 if b1 should be executed before
35: b2, == 0 if they are the same, or > 0 if b1 should be executed
36: after b2. This can not fail, and does not return a standard uuconf
37: error code.
38:
39: This implementation assumes that the upper case letters are in
40: sequence, and that the lower case letters are in sequence. */
41:
42: int
43: uuconf_grade_cmp (barg1, barg2)
44: int barg1;
45: int barg2;
46: {
47: int b1, b2;
48:
49: /* Make sure the arguments are unsigned. */
50: b1 = (int) BUCHAR (barg1);
51: b2 = (int) BUCHAR (barg2);
52:
53: if (isdigit (b1))
54: {
55: if (isdigit (b2))
56: return b1 - b2;
57: else
58: return -1;
59: }
60: else if (isupper (b1))
61: {
62: if (isdigit (b2))
63: return 1;
64: else if (isupper (b2))
65: return b1 - b2;
66: else
67: return -1;
68: }
69: else
70: {
71: if (! islower (b2))
72: return 1;
73: else
74: return b1 - b2;
75: }
76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.