|
|
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.