//////////////////////////////////////////////////////////////////////
int main(int argc, char **argv) {
- char buffer[buffer_size];
+
+ if(!ttyname(STDIN_FILENO)) {
+ cerr << "The standard input is not a tty." << endl;
+ exit(1);
+ }
+
+ char buffer[buffer_size], raw_line[buffer_size];;
int color_fg_modeline, color_bg_modeline;
int color_fg_highlight, color_bg_highlight;
}
while(nb_lines < nb_lines_max && !file.eof()) {
- file.getline(buffer, buffer_size);
- if(strcmp(buffer, "") != 0) {
- char *s = buffer;
+
+ file.getline(raw_line, buffer_size);
+
+ if(strcmp(raw_line, "") != 0) {
+
+ char *s, *t;
+ const char *u;
+
+ s = buffer;
+ t = raw_line;
+ while(*t) {
+ u = unctrl(*t++);
+ while(*u) { *s++ = *u++; }
+ }
+ *s = '\0';
+
+ s = buffer;
if(zsh_history && *s == ':') {
while(*s && *s != ';') s++;
lines[nb_lines] = new char[strlen(s) + 1];
strcpy(lines[nb_lines], s);
} else {
+ // We do not allocate a new string but use the pointer to the
+ // first occurence of it
lines[nb_lines] = lines[dup];
lines[dup] = 0;
}
delete[] hash_table;
+ // Now remove the null strings
+
int n = 0;
for(int k = 0; k < nb_lines; k++) {
if(lines[k]) {
int pattern_point;
pattern_point = 0;
+ //////////////////////////////////////////////////////////////////////
+ // Here we start to display with curse
+
initscr();
+ noecho();
+
+ // Hide the cursor
+ curs_set(0);
+
+ // So that the arrow keys work
+ keypad(stdscr, TRUE);
+
if(with_colors) {
if(has_colors()) {
start_color();
}
}
- noecho();
- curs_set(0); // Hide the cursor
- keypad(stdscr, TRUE); // So that the arrow keys work
-
int key;
int current_line = 0, temporary_line = 0;
curs_set(1);
endwin();
+ //////////////////////////////////////////////////////////////////////
+ // Here we come back to standard display
+
if((key == KEY_ENTER || key == '\n')) {
if(output_to_vt_buffer) {