45 lines
655 B
C
45 lines
655 B
C
|
#include "f2c.h"
|
||
|
|
||
|
/* 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);
|
||
|
}
|