X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=selector.c;h=2880b5f63009d9894d79eceeb66ea34792386d56;hb=298604bb3dcb60332e37ae3b66b746bad249e1ca;hp=13f73b1e9753af09539de50cbeafdfccadfc3ffc;hpb=881e755cc244197d8989cb92a8abed0bf70f4715;p=selector.git diff --git a/selector.c b/selector.c index 13f73b1..2880b5f 100644 --- a/selector.c +++ b/selector.c @@ -22,8 +22,11 @@ * */ -/* To use it as a super-history-search for bash: - selector -q -b -i -d -v -w -l ${HISTSIZE} <(history) +/* + + To use it as a super-history-search for bash: + selector -q -b -i -d -v -w -l ${HISTSIZE} <(history) + */ #define _GNU_SOURCE @@ -123,12 +126,12 @@ void error_feedback() { } } -/*********************************************************************/ -/* A quick and dirty hash table +/********************************************************************* + A quick and dirty hash table - The table itself stores indexes of the strings taken in a char - **table. When a string is added, if it was already in the table, - the new index replaces the previous one. */ + The table itself stores indexes of the strings taken in a char + **table. When a string is added, if it was already in the table, the + new index replaces the previous one. */ int *new_hash_table(int hash_table_size) { int *result, k; @@ -151,7 +154,8 @@ int test_and_add(char *new_string, int new_index, int k; /* This is my recipe. I checked, it seems to work (as long as - hash_table_size is not a multiple of 387433 that should be okay) */ + hash_table_size is not a multiple of 387433 that should be + okay) */ for(k = 0; new_string[k]; k++) { code = code * 387433 + (unsigned int) (new_string[k]); @@ -181,9 +185,9 @@ int test_and_add(char *new_string, int new_index, return -1; } -/*********************************************************************/ -/* A matcher matches either with a collection of substrings, or with a - regexp */ +/********************************************************************* + A matcher matches either with a collection of substrings, or with a + regexp */ typedef struct { regex_t preg; @@ -256,8 +260,8 @@ void initialize_matcher(int use_regexp, int case_sensitive, } } -/*********************************************************************/ -/* Buffer edition */ +/********************************************************************* + Buffer edition */ void delete_char(char *buffer, int *position) { if(buffer[*position]) { @@ -363,14 +367,14 @@ void update_screen(int *current_focus_line, int *displayed_focus_line, int console_width = getmaxx(stdscr); int console_height = getmaxy(stdscr); - /* First, we find a visible line. */ - int nb_printed_lines = 0; use_default_colors(); addstr("\n"); + /* First, we find a visible line. */ + if(matcher.regexp_error) { attron(attr_error); addnstr("Regexp syntax error", console_width); @@ -600,7 +604,7 @@ void read_file(const char *input_filename, if(eol == buffer_size) { raw_line[buffer_size - 1] = '\0'; - fprintf(stderr, "Line too long:\n"); + fprintf(stderr, "Line too long (max is %d characters):\n", buffer_size); fprintf(stderr, raw_line); fprintf(stderr, "\n"); exit(1); @@ -650,6 +654,8 @@ void read_file(const char *input_filename, start = eol + 1; } + + fclose(file); } /*********************************************************************/ @@ -1049,7 +1055,7 @@ int main(int argc, char **argv) { echo(); endwin(); -/* Here we come back to standard display */ + /* Here we come back to standard display */ if((key == KEY_ENTER || key == '\n')) {