/*
	str_nrcmp(s1, s2, n)

	Compare strings s1 and s2 in reverse order, from last character to first,
	for a maximum of n characters.
	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_nrcmp(s1, s2, n)
	register BytePtr s1, s2;
	register size_t	n;
{
	register BytePtr es1, es2;

	if (s1 == s2 || n == 0)
		return 0;

	for (es1 = s1; *es1++ != NULLB; );
	for (es2 = s2; *es2++ != NULLB; );
	--es1; --es2;

	while (es1 > s1 && es2 > s2 && n > 0) {
		if (*--es1 == *--es2)
			--n;
		else
			return (int)*es1 - (int)*es2;
	}

	if (n == 0)
		return 0;	/* s1 and s2 are equivalent over the specified length */
	if (es1 > s1)
		return 1;	/* s1 is longer than s2 */
	if (es2 > s2)
		return -1;	/* s2 is longer than s1 */

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