Annotation of 43BSD/ingres/source/gutil/scompare.c, revision 1.1

1.1     ! root        1: # include      <useful.h>
        !             2: # include      <sccs.h>
        !             3: 
        !             4: SCCSID(@(#)scompare.c  8.3     1/17/85)
        !             5: 
        !             6: /*
        !             7: **  STRING COMPARE
        !             8: **
        !             9: **     The strings 'a_ptr' and 'b_ptr' are compared.  Blanks are
        !            10: **     ignored.  The first string may be no longer than 'a_len'
        !            11: **     bytes, and the second string may be no longer than 'b_len'
        !            12: **     bytes.  If either length is zero, it is taken to be very
        !            13: **     long.  A null byte also terminates the scan.
        !            14: **
        !            15: **     Compares are based on the ascii ordering.
        !            16: **
        !            17: **     Shorter strings are less than longer strings.
        !            18: **
        !            19: **     Return value is positive one for a > b, minus one for a < b,
        !            20: **     and zero for a == b.
        !            21: **
        !            22: **     Examples:
        !            23: **             "abc" > "ab"
        !            24: **             "  a bc  " == "ab  c"
        !            25: **             "abc" < "abd"
        !            26: */
        !            27: 
        !            28: scompare(a_ptr, a_len, b_ptr, b_len)
        !            29: char   *a_ptr;
        !            30: int    a_len;
        !            31: char   *b_ptr;
        !            32: int    b_len;
        !            33: {
        !            34:        char            *ap;
        !            35:        char            *bp;
        !            36:        register char   a;
        !            37:        char            b;
        !            38:        register int    al;
        !            39:        register int    bl;
        !            40: 
        !            41:        ap = a_ptr;
        !            42:        bp = b_ptr;
        !            43:        al = a_len;
        !            44:        if (al == 0)
        !            45:                al = MAXI4;
        !            46:        bl = b_len;
        !            47:        if (bl == 0)
        !            48:                bl = MAXI4;
        !            49: 
        !            50:        while (1)
        !            51:        {
        !            52: 
        !            53:                /* supress blanks in both strings */
        !            54:                while ((a = *ap) == ' ' && al > 0)
        !            55:                {
        !            56:                        al--;
        !            57:                        ap++;
        !            58:                }
        !            59:                if (al == 0)
        !            60:                        a = 0;
        !            61:                while (*bp == ' ' && bl > 0)
        !            62:                {
        !            63:                        bl--;
        !            64:                        bp++;
        !            65:                }
        !            66:                if (bl == 0)
        !            67:                        b = 0;
        !            68:                else
        !            69:                        b = *bp;
        !            70: 
        !            71:                /* do inequality tests */
        !            72:                if (a < b)
        !            73:                        return (-1);
        !            74:                if (a > b)
        !            75:                        return (1);
        !            76:                if (a == 0)
        !            77:                        return (0);
        !            78: 
        !            79:                /* go on to the next character */
        !            80:                ap++;
        !            81:                al--;
        !            82:                bp++;
        !            83:                bl--;
        !            84:        }
        !            85: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.