File: s_cmp.c

package info (click to toggle)
vxl 1.14.0-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 124,144 kB
  • ctags: 94,084
  • sloc: cpp: 652,168; ansic: 178,141; fortran: 27,980; sh: 5,248; python: 1,941; lisp: 1,107; makefile: 292; perl: 255; xml: 184
file content (50 lines) | stat: -rw-r--r-- 1,026 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "v3p_f2c.h"
#ifdef __cplusplus
extern "C" {
#endif

/* compare two strings */

#ifdef KR_headers
integer s_cmp(a0, b0, la, lb) char *a0, *b0; ftnlen la, lb;
#else
integer s_cmp(char *a0, char *b0, ftnlen la, ftnlen lb)
#endif
{
register unsigned char *a, *aend, *b, *bend;
a = (unsigned char *)a0;
b = (unsigned char *)b0;
aend = a + la;
bend = b + lb;

if(la <= lb)
        {
        while(a < aend)
                if(*a != *b)
                        return( *a - *b );
                else
                        { ++a; ++b; }

        while(b < bend)
                if(*b != ' ')
                        return( ' ' - *b );
                else    ++b;
        }

else
        {
        while(b < bend)
                if(*a == *b)
                        { ++a; ++b; }
                else
                        return( *a - *b );
        while(a < aend)
                if(*a != ' ')
                        return(*a - ' ');
                else    ++a;
        }
return(0);
}
#ifdef __cplusplus
}
#endif