Added an option to remove duplicated lines.
authorFrancois Fleuret <francois@fleuret.org>
Sat, 14 Mar 2009 21:37:10 +0000 (22:37 +0100)
committerFrancois Fleuret <francois@fleuret.org>
Sat, 14 Mar 2009 21:37:10 +0000 (22:37 +0100)
selector.cc

index 617edf0..2a6a4f3 100644 (file)
@@ -54,6 +54,7 @@ int output_to_vt_buffer = 0;
 int with_colors = 1;
 int zsh_history = 0, bash_history = 0;
 int inverse_order = 0;
+int remove_duplicates = 0;
 
 //////////////////////////////////////////////////////////////////////
 
@@ -383,6 +384,11 @@ int main(int argc, char **argv) {
       i++;
     }
 
+    else if(strcmp(argv[i], "-r") == 0) {
+      remove_duplicates = 1;
+      i++;
+    }
+
     else if(strcmp(argv[i], "-l") == 0) {
       check_opt(argc, argv, i, 1, "<maximum number of lines>");
       nb_lines_max = atoi(argv[i+1]);
@@ -407,6 +413,7 @@ int main(int argc, char **argv) {
            << " [-h]"
            << " [-v]"
            << " [-m]"
+           << " [-r]"
            << " [-z]"
            << " [-i]"
            << " [-c <fg modeline> <bg modeline> <fg highlight> <bg highlight>]"
@@ -452,9 +459,11 @@ int main(int argc, char **argv) {
         while(*s == ' ' || (*s >= '0' && *s <= '9')) s++;
       }
 
-      lines[nb_lines] = new char[strlen(s) + 1];
-      strcpy(lines[nb_lines], s);
-      nb_lines++;
+      if(!remove_duplicates || nb_lines == 0 || strcmp(lines[nb_lines - 1], s)) {
+        lines[nb_lines] = new char[strlen(s) + 1];
+        strcpy(lines[nb_lines], s);
+        nb_lines++;
+      }
     }
   }