Changed the comments to the C syntax.
authorFrancois Fleuret <francois@fleuret.org>
Sat, 27 Jun 2009 20:57:33 +0000 (22:57 +0200)
committerFrancois Fleuret <francois@fleuret.org>
Sat, 27 Jun 2009 20:57:33 +0000 (22:57 +0200)
selector.c

index b757357..13f73b1 100644 (file)
@@ -22,8 +22,9 @@
  *
  */
 
-// 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
 
@@ -42,7 +43,7 @@
 
 const int buffer_size = 4096;
 
-// Yeah, global variables!
+/* Yeah, global variables! */
 
 int nb_lines_max = 1000;
 char pattern_separator = ';';
@@ -61,29 +62,29 @@ int error_flash = 0;
 
 int attr_modeline, attr_focus_line, attr_error;
 
-//////////////////////////////////////////////////////////////////////
+/*********************************************************************/
 
 void inject_into_tty_buffer(char *string) {
   struct termios oldtio, newtio;
   const char *k;
   tcgetattr(STDIN_FILENO, &oldtio);
   memset(&newtio, 0, sizeof(newtio));
-  // Set input mode (non-canonical, *no echo*,...)
+  /* Set input mode (non-canonical, *no echo*,...) */
   tcsetattr(STDIN_FILENO, TCSANOW, &newtio);
   const char control_q = '\021';
-  // Put the selected string in the tty input buffer
+  /* Put the selected string in the tty input buffer */
   for(k = string; *k; k++) {
     if(add_control_qs && !(*k >= ' ' && *k <= '~')) {
-      // Add ^Q to quote control characters
+      /* Add ^Q to quote control characters */
       ioctl(STDIN_FILENO, TIOCSTI, &control_q);
     }
     ioctl(STDIN_FILENO, TIOCSTI, k);
   }
-  // Restore the old settings
+  /* Restore the old settings */
   tcsetattr(STDIN_FILENO, TCSANOW, &oldtio);
 }
 
-//////////////////////////////////////////////////////////////////////
+/*********************************************************************/
 
 void check_opt(int argc, char **argv, int n_opt, int n, const char *help) {
   if(n_opt + n >= argc) {
@@ -122,12 +123,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;
@@ -138,9 +139,9 @@ int *new_hash_table(int hash_table_size) {
   return result;
 }
 
-// Adds new_string in the table, associated to new_index. If this
-// string was not already in the table, returns -1. Otherwise, returns
-// the previous index it had.
+/* Adds new_string in the table, associated to new_index. If this
+   string was not already in the table, returns -1. Otherwise, returns
+   the previous index it had. */
 
 int test_and_add(char *new_string, int new_index,
                  char **strings,
@@ -149,8 +150,8 @@ int test_and_add(char *new_string, int new_index,
   unsigned int code = 0;
   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)
+  /* 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) */
 
   for(k = 0; new_string[k]; k++) {
     code = code * 387433 + (unsigned int) (new_string[k]);
@@ -159,29 +160,30 @@ int test_and_add(char *new_string, int new_index,
   code = code % hash_table_size;
 
   while(hash_table[code] >= 0) {
-    // There is a string with that code
+    /* There is a string with that code */
     if(strcmp(new_string, strings[hash_table[code]]) == 0) {
-      // It is the same string, we keep a copy of the stored index
+      /* It is the same string, we keep a copy of the stored index */
       int result = hash_table[code];
-      // Put the new one
+      /* Put the new one */
       hash_table[code] = new_index;
-      // And return the previous one
+      /* And return the previous one */
       return result;
     }
-    // This collision was not the same string, let's move to the next
-    // in the table
+    /* This collision was not the same string, let's move to the next
+       in the table */
     code = (code + 1) % hash_table_size;
   }
 
-  // This string was not already in there, store the index in the
-  // table and return -1
+  /* This string was not already in there, store the index in the
+     table and return -1 */
+
   hash_table[code] = 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;
@@ -254,8 +256,8 @@ void initialize_matcher(int use_regexp, int case_sensitive,
   }
 }
 
-//////////////////////////////////////////////////////////////////////
-// Buffer edition
+/*********************************************************************/
+/* Buffer edition */
 
 void delete_char(char *buffer, int *position) {
   if(buffer[*position]) {
@@ -313,7 +315,7 @@ void kill_after_cursor(char *buffer, int *position) {
   buffer[*position] = '\0';
 }
 
-//////////////////////////////////////////////////////////////////////
+/*********************************************************************/
 
 int previous_visible(int current_line, int nb_lines, char **lines, matcher_t *matcher) {
   int line = current_line - 1;
@@ -331,20 +333,20 @@ int next_visible(int current_line, int nb_lines, char **lines, matcher_t *matche
     return -1;
 }
 
-//////////////////////////////////////////////////////////////////////
+/*********************************************************************/
 
-// The value passed to this routine in current_focus_line is the index
-// of the line we should have highlited if there was no motion and if
-// it matched the matcher. So, the line actually highlighted is the
-// first one matching the matcher in that order: (1)
-// current_focus_line after motion, (2) the first with a greater
-// index, (3) the first with a lesser index.
+/* The value passed to this routine in current_focus_line is the index
+   of the line we should have highlighted if there was no motion and if
+   it matched the matcher. So, the line actually highlighted is the
+   first one matching the matcher in that order: (1)
+   current_focus_line after motion, (2) the first with a greater
+   index, (3) the first with a lesser index.
 
-// The index of the line actually shown highlighted is written in
-// displayed_focus_line (it can be -1)
+   The index of the line actually shown highlighted is written in
+   displayed_focus_line (it can be -1)
 
-// If there is a motion and a line is actually shown highlighted, its
-// value is written in current_focus_line.
+   If there is a motion and a line is actually shown highlighted, its
+   value is written in current_focus_line. */
 
 void update_screen(int *current_focus_line, int *displayed_focus_line,
                    int motion,
@@ -361,7 +363,7 @@ 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.
+  /* First, we find a visible line. */
 
   int nb_printed_lines = 0;
 
@@ -384,12 +386,12 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
       }
     }
 
-    // If we found a visible line and we should move, let's move
+    /* If we found a visible line and we should move, let's move */
 
     if(new_focus_line >= 0 && motion != 0) {
       int l = new_focus_line;
       if(motion > 0) {
-        // We want to go down, let's find the first visible line below
+        /* We want to go down, let's find the first visible line below */
         for(m = 0; l >= 0 && m < motion; m++) {
           l = next_visible(l, nb_lines, lines, &matcher);
           if(l >= 0) {
@@ -397,7 +399,7 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
           }
         }
       } else {
-        // We want to go up, let's find the first visible line above
+        /* We want to go up, let's find the first visible line above */
         for(m = 0; l >= 0 && m < -motion; m++) {
           l = previous_visible(l, nb_lines, lines, &matcher);
           if(l >= 0) {
@@ -407,14 +409,15 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
       }
     }
 
-    // Here new_focus_line is either a line number matching the pattern, or -1
+    /* Here new_focus_line is either a line number matching the pattern, or -1 */
 
     if(new_focus_line >= 0) {
 
       int first_line = new_focus_line, last_line = new_focus_line, nb_match = 1;
 
-      // We find the first and last line to show, so that the total of
-      // visible lines between them (them included) is console_height-1
+      /* We find the first and last line to show, so that the total of
+         visible lines between them (them included) is
+         console_height-1 */
 
       while(nb_match < console_height-1 && (first_line > 0 || last_line < nb_lines - 1)) {
 
@@ -440,7 +443,7 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
         }
       }
 
-      // Now we display them
+      /* Now we display them */
 
       for(l = first_line; l <= last_line; l++) {
         if(match(lines[l], &matcher)) {
@@ -451,8 +454,8 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
             k++;
           }
 
-          // We fill the rest of the line with blanks if this is the
-          // highlighted line
+          /* We fill the rest of the line with blanks if this is the
+             highlighted line */
 
           if(l == new_focus_line) {
             while(k < console_width) {
@@ -465,7 +468,7 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
 
           clrtoeol();
 
-          // Highlight the highlighted line ...
+          /* Highlight the highlighted line ... */
 
           if(l == new_focus_line) {
             attron(attr_focus_line);
@@ -479,8 +482,8 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
         }
       }
 
-      // If we are on a focused line and we moved, this become the new
-      // focus line
+      /* If we are on a focused line and we moved, this become the new
+         focus line */
 
       if(motion != 0) {
         *current_focus_line = new_focus_line;
@@ -502,7 +505,7 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
 
   clrtobot();
 
-  // Draw the modeline
+  /* Draw the modeline */
 
   move(0, 0);
 
@@ -514,8 +517,8 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
 
   move(0, 0);
 
-  // There must be a more elegant way of moving the cursor at a
-  // location met during display
+  /* There must be a more elegant way of moving the cursor at a
+     location met during display */
 
   int cursor_x = 0;
 
@@ -557,13 +560,13 @@ void update_screen(int *current_focus_line, int *displayed_focus_line,
 
   attroff(attr_modeline);
 
-  // We are done
+  /* We are done */
 
   refresh();
   free_matcher(&matcher);
 }
 
-//////////////////////////////////////////////////////////////////////
+/*********************************************************************/
 
 void read_file(const char *input_filename,
                int nb_lines_max, int *nb_lines, char **lines,
@@ -607,14 +610,14 @@ void read_file(const char *input_filename,
 
     char *t = raw_line + start;
 
-    // Remove the zsh history prefix
+    /* Remove the zsh history prefix */
 
     if(zsh_history && *t == ':') {
       while(*t && *t != ';') t++;
       if(*t == ';') t++;
     }
 
-    // Remove the bash history prefix
+    /* Remove the bash history prefix */
 
     if(bash_history) {
       while(*t == ' ') t++;
@@ -622,8 +625,8 @@ void read_file(const char *input_filename,
       while(*t == ' ') t++;
     }
 
-    // Check for duplicates with the hash table and insert the line
-    // in the list if necessary
+    /* Check for duplicates with the hash table and insert the line in
+       the list if necessary */
 
     int dup;
 
@@ -637,8 +640,8 @@ void read_file(const char *input_filename,
       lines[*nb_lines] = (char *) malloc((strlen(t) + 1) * sizeof(char));
       strcpy(lines[*nb_lines], t);
     } else {
-      // The string was already in there, so we do not allocate a
-      // new string but use the pointer to the first occurence of it
+      /* The string was already in there, so 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;
     }
@@ -649,7 +652,7 @@ void read_file(const char *input_filename,
   }
 }
 
-//////////////////////////////////////////////////////////////////////
+/*********************************************************************/
 
 int main(int argc, char **argv) {
 
@@ -850,7 +853,7 @@ int main(int argc, char **argv) {
 
   free(hash_table);
 
-  // Now remove the null strings
+  /* Now remove the null strings */
 
   n = 0;
   for(k = 0; k < nb_lines; k++) {
@@ -869,9 +872,9 @@ int main(int argc, char **argv) {
     }
   }
 
-  // Build the labels from the strings, take only the part before the
-  // label_separator and transform control characters to printable
-  // ones
+  /* Build the labels from the strings, take only the part before the
+     label_separator and transform control characters to printable
+     ones */
 
   char **labels = (char **) malloc(nb_lines * sizeof(char *));
   for(l = 0; l < nb_lines; l++) {
@@ -899,16 +902,15 @@ int main(int argc, char **argv) {
   int cursor_position;
   cursor_position = 0;
 
-  //////////////////////////////////////////////////////////////////////
-  // Here we start to display with curse
+  /* Here we start to display with curse */
 
   initscr();
   cbreak();
   noecho();
-  // nonl();
+  /* nonl(); */
   intrflush(stdscr, FALSE);
 
-  // So that the arrow keys work
+  /* So that the arrow keys work */
   keypad(stdscr, TRUE);
 
   attr_error = A_STANDOUT;
@@ -953,18 +955,18 @@ int main(int argc, char **argv) {
 
     int motion = 0;
 
-    if(key >= ' ' && key <= '~') { // Insert character
+    if(key >= ' ' && key <= '~') { /* Insert character */
       insert_char(pattern, &cursor_position, key);
     }
 
     else if(key == KEY_BACKSPACE ||
-            key == '\010' || // ^H
-            key == '\177') { // ^?
+            key == '\010' || /* ^H */
+            key == '\177') { /* ^? */
       backspace_char(pattern, &cursor_position);
     }
 
     else if(key == KEY_DC ||
-            key == '\004') { // ^D
+            key == '\004') { /* ^D */
       delete_char(pattern, &cursor_position);
     }
 
@@ -985,53 +987,53 @@ int main(int argc, char **argv) {
     }
 
     else if(key == KEY_DOWN ||
-            key == '\016') { // ^N
+            key == '\016') { /* ^N */
       motion = 1;
     }
 
     else if(key == KEY_UP ||
-            key == '\020') { // ^P
+            key == '\020') { /* ^P */
       motion = -1;
     }
 
     else if(key == KEY_LEFT ||
-            key == '\002') { // ^B
+            key == '\002') { /* ^B */
       if(cursor_position > 0) cursor_position--;
       else error_feedback();
     }
 
     else if(key == KEY_RIGHT ||
-            key == '\006') { // ^F
+            key == '\006') { /* ^F */
       if(pattern[cursor_position]) cursor_position++;
       else error_feedback();
     }
 
-    else if(key == '\001') { // ^A
+    else if(key == '\001') { /* ^A */
       cursor_position = 0;
     }
 
-    else if(key == '\005') { // ^E
+    else if(key == '\005') { /* ^E */
       cursor_position = strlen(pattern);
     }
 
-    else if(key == '\022') { // ^R
+    else if(key == '\022') { /* ^R */
       use_regexp = !use_regexp;
     }
 
-    else if(key == '\011') { // ^I
+    else if(key == '\011') { /* ^I */
       case_sensitive = !case_sensitive;
     }
 
-    else if(key == '\025') { // ^U
+    else if(key == '\025') { /* ^U */
       kill_before_cursor(pattern, &cursor_position);
     }
 
-    else if(key == '\013') { // ^K
+    else if(key == '\013') { /* ^K */
       kill_after_cursor(pattern, &cursor_position);
     }
 
-    else if(key == '\014') { // ^L
-      // I suspect that we may sometime mess up the display
+    else if(key == '\014') { /* ^L */
+      /* I suspect that we may sometime mess up the display */
       clear();
     }
 
@@ -1039,16 +1041,15 @@ int main(int argc, char **argv) {
                   motion,
                   nb_lines, labels, cursor_position, pattern);
 
-  } while(key != '\007' && // ^G
-          key != '\033' && // ^[ (escape)
+  } while(key != '\007' && /* ^G */
+          key != '\033' && /* ^[ (escape) */
           key != '\n' &&
           key != KEY_ENTER);
 
   echo();
   endwin();
 
-  //////////////////////////////////////////////////////////////////////
-  // Here we come back to standard display
+/* Here we come back to standard display */
 
   if((key == KEY_ENTER || key == '\n')) {