error (0, 0, _("option '-r' only applies to last-resort comparison"));
}
+/* Return either the sense of DIFF or its reverse, depnding on REVERSED.
+ If REVERSED, do not simply negate DIFF as that can mishandle INT_MIN. */
+
+static int
+diff_reversed (int diff, bool reversed)
+{
+ return reversed ? (diff < 0 ? 1 : -diff) : diff;
+}
+
/* Compare two lines A and B trying every key in sequence until there
are no more keys or a difference is found. */
}
}
- if (key->reverse)
- diff = diff < 0 ? 1 : -diff;
- return diff;
+ return diff_reversed (diff, key->reverse);
}
/* Compare two lines A and B, returning negative, zero, or positive
diff = (alen > blen) - (alen < blen);
}
- if (reverse)
- diff = diff < 0 ? 1 : -diff;
- return diff;
+ return diff_reversed (diff, reverse);
}
/* Write LINE to output stream FP; the output file's name is