From b34072e0fd639bd0214c3186ca143c04962f51a7 Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Thu, 12 Mar 2009 08:41:40 +0100 Subject: [PATCH] Automatic commit --- selector.cc | 45 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/selector.cc b/selector.cc index f15154f..887b4d0 100644 --- a/selector.cc +++ b/selector.cc @@ -40,12 +40,16 @@ #include #include #include +#include +#include +#include using namespace std; int buffer_size = 1024; -int nb_lines_max = 100000; +int nb_lines_max = 1000; char pattern_separator = ';'; +int output_to_vt_buffer = 0; int match(char *string, int nb_patterns, char **patterns) { for(int n = 0; n < nb_patterns; n++) { @@ -56,7 +60,11 @@ int match(char *string, int nb_patterns, char **patterns) { void check_opt(int argc, char **argv, int n_opt, int n, const char *help) { if(n_opt + n >= argc) { - cerr << "Missing argument for " << argv[n_opt] << ". Expecting " << help << "." << endl; + cerr << "Missing argument for " + << argv[n_opt] + << ". Expecting " + << help + << "." << endl; exit(1); } } @@ -284,6 +292,11 @@ int main(int argc, char **argv) { i += 2; } + else if(strcmp(argv[i], "-v") == 0) { + output_to_vt_buffer = 1; + i++; + } + else if(strcmp(argv[i], "-f") == 0) { check_opt(argc, argv, i, 1, ""); strncpy(input_filename, argv[i+1], buffer_size); @@ -302,7 +315,7 @@ int main(int argc, char **argv) { } else { - cerr << argv[0] << " [-h] [-o ] [-b] [-l ] [-s ]" << endl; + cerr << argv[0] << " [-h] [-o ] [-b] [-l ] [-s ] [-v]" << endl; if(strcmp(argv[i], "-h") == 0) { exit(0); } else { @@ -387,17 +400,27 @@ int main(int argc, char **argv) { curs_set(1); endwin(); - ofstream out(output_filename); - if(out.fail()) { - cerr << "Can not open " << output_filename << " for writing." << endl; - exit(1); - } else { + if(output_to_vt_buffer) { if((key == KEY_ENTER || key == '\n') && temporary_line >= 0 && temporary_line < nb_lines) { - out << lines[temporary_line] << endl; + char *tty = ttyname (STDIN_FILENO); + int fd = open(tty, O_WRONLY); + write(fd, lines[temporary_line], strlen(lines[temporary_line])); + close(fd); + } + } else { + + ofstream out(output_filename); + if(out.fail()) { + cerr << "Can not open " << output_filename << " for writing." << endl; + exit(1); } else { - out << endl; + if((key == KEY_ENTER || key == '\n') && temporary_line >= 0 && temporary_line < nb_lines) { + out << lines[temporary_line] << endl; + } else { + out << endl; + } + out.flush(); } - out.flush(); } for(int l = 0; l < nb_lines; l++) { -- 2.39.5