ntpd: default to FEATURE_NTP_AUTH=y
[oweals/busybox.git] / coreutils / uniq.c
index be550b5cdbecd75bbdd52bcef3f1c8ea622688da..f71557b675081f1843eabcfbd814bf4928653c2e 100644 (file)
@@ -7,10 +7,10 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 //config:config UNIQ
-//config:      bool "uniq"
+//config:      bool "uniq (4.8 kb)"
 //config:      default y
 //config:      help
-//config:        uniq is used to remove duplicate lines from a sorted file.
+//config:      uniq is used to remove duplicate lines from a sorted file.
 
 //applet:IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP))
 
@@ -26,6 +26,7 @@
 //usage:     "\n       -c      Prefix lines by the number of occurrences"
 //usage:     "\n       -d      Only print duplicate lines"
 //usage:     "\n       -u      Only print unique lines"
+//usage:     "\n       -i      Ignore case"
 //usage:     "\n       -f N    Skip first N fields"
 //usage:     "\n       -s N    Skip first N chars (after any skipped fields)"
 //usage:     "\n       -w N    Compare N characters in line"
@@ -54,12 +55,13 @@ int uniq_main(int argc UNUSED_PARAM, char **argv)
                OPT_f = 0x8,
                OPT_s = 0x10,
                OPT_w = 0x20,
+               OPT_i = 0x40,
        };
 
        skip_fields = skip_chars = 0;
        max_chars = INT_MAX;
 
-       opt = getopt32(argv, "cduf:+s:+w:+", &skip_fields, &skip_chars, &max_chars);
+       opt = getopt32(argv, "cduf:+s:+w:+i", &skip_fields, &skip_chars, &max_chars);
        argv += optind;
 
        input_filename = argv[0];
@@ -106,7 +108,12 @@ int uniq_main(int argc UNUSED_PARAM, char **argv)
                                ++cur_compare;
                        }
 
-                       if (!old_line || strncmp(old_compare, cur_compare, max_chars)) {
+                       if (!old_line)
+                               break;
+                       if ((opt & OPT_i)
+                               ? strncasecmp(old_compare, cur_compare, max_chars)
+                               : strncmp(old_compare, cur_compare, max_chars)
+                       ) {
                                break;
                        }