/*
	str_rcmp(s1, s2)

	Compare strings s1 and s2 in reverse order, from last character to first.
	Return values:
		RV == 0		Strings are equivalent
		RV < 0		s1 is lexically before s2, or s1 is shorter than s2
		RV > 0		s1 is lexically after s2, or s1 is longer than s2
*/
#include <ncbi.h>
#include <gishlib.h>

int LIBCALL
str_rcmp(s1, s2)
	CharPtr	s1, s2;
{
	register BytePtr
			us1 = (BytePtr)s1,
			us2 = (BytePtr)s2;
	register BytePtr es1, es2;

	if (us1 == us2)
		return 0;

	for (es1 = us1; *es1++ != NULLB; );
	for (es2 = us2; *es2++ != NULLB; );
	--es1; --es2;

	while (es1 > us1 && es2 > us2)
		if (*--es1 != *--es2)
			return (int)*es1 - (int)*es2;

	if (es1 > us1)
		return 1;	/* s1 is longer than s2 */
	if (es2 > us2)
		return -1;	/* s2 is longer than s1 */

	return 0;		/* s1 and s2 are equivalent */
}
