Fix linecmp() to return correct values
diff --git a/libutil/linecmp.c b/libutil/linecmp.c
index cba27d1..f5a6cf9 100644
--- a/libutil/linecmp.c
+++ b/libutil/linecmp.c
@@ -10,10 +10,14 @@
 {
 	int res = 0;
 
-	if (!(res = memcmp(a->data, b->data, MIN(a->len, b->len))) &&
-	    a->len != b->len) {
-		res = a->data[MIN(a->len, b->len) - 1] -
-		      b->data[MIN(a->len, b->len) - 1];
+	if (!(res = memcmp(a->data, b->data, MIN(a->len, b->len)))) {
+		if (a->len > b->len) {
+			res = a->data[b->len];
+		} else if (b->len > a->len) {
+			res = -b->data[a->len];
+		} else {
+			res = 0;
+		}
 	}
 
 	return res;