[git commit] uniq: add -i option to ignore case

Denys Vlasenko vda.linux at googlemail.com
Thu Mar 30 16:15:54 UTC 2017


commit: https://git.busybox.net/busybox/commit/?id=8808f7fc2ec434621a213c1deb5966833bcfec58
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Jody Bruchon <jody at jodybruchon.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/uniq.c | 10 ++++++++--
 1 file 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;
 			}
 


More information about the busybox-cvs mailing list