Do not analyze if sort field selector is rubbish.
[debian/dhcpd-pools.git] / src / sort.c
index 6c5ae58..8f769e3 100644 (file)
@@ -23,6 +23,8 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <errno.h>
+#include <err.h>
 
 #include "dhcpd-pools.h"
 #include "defaults.h"
@@ -116,9 +118,9 @@ void field_selector(char c)
                returner = ret_tcperc;
                break;
        default:
-               eprintf("field_selector: unknown sort order: %c",
-                       config.sort[0]);
-               usage(EXIT_FAILURE);
+               warnx("field_selector: unknown sort order `%c'", c);
+               errx(EXIT_FAILURE, "Try `%s --help' for more information.",
+                       program_invocation_short_name);
        }
 }
 
@@ -135,7 +137,7 @@ int get_order(struct range_t *left, struct range_t *right)
                        ret =
                            strcmp(left->shared_net->name,
                                   right->shared_net->name);
-                       if (ret > 0) {
+                       if (0 < ret) {
                                return (0);
                        } else if (ret < 0) {
                                return (1);
@@ -170,7 +172,7 @@ void mergesort_ranges(struct range_t *orig, int size, struct range_t *temp)
        if (size < MIN_MERGE_SIZE) {
                for (left = 0; left < size; left++) {
                        hold = *(orig + left);
-                       for (right = left - 1; right >= 0; right--) {
+                       for (right = left - 1; 0 <= right; right--) {
                                if (get_order((orig + right), &hold)) {
                                        break;
                                }