summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJody Bruchon2017-03-30 18:15:54 +0200
committerDenys Vlasenko2017-03-30 18:15:54 +0200
commit8808f7fc2ec434621a213c1deb5966833bcfec58 (patch)
tree3f881e4741d22afcba561c3bac46b8c799d8cc6d
parent257734855cbcc12ddeb0a6ab0fd8ce161becf671 (diff)
downloadbusybox-8808f7fc2ec434621a213c1deb5966833bcfec58.zip
busybox-8808f7fc2ec434621a213c1deb5966833bcfec58.tar.gz
uniq: add -i option to ignore case
Signed-off-by: Jody Bruchon <jody@jodybruchon.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--coreutils/uniq.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/coreutils/uniq.c b/coreutils/uniq.c
index be550b5..1c23e1d 100644
--- a/coreutils/uniq.c
+++ b/coreutils/uniq.c
@@ -54,12 +54,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 +107,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;
}