[BACK]Return to readline.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libedit

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libedit/readline.c between version 1.99 and 1.111

version 1.99, 2011/08/16 16:25:15 version 1.111, 2014/07/06 18:09:04
Line 84  VFunction *rl_event_hook = NULL;
Line 84  VFunction *rl_event_hook = NULL;
 KEYMAP_ENTRY_ARRAY emacs_standard_keymap,  KEYMAP_ENTRY_ARRAY emacs_standard_keymap,
     emacs_meta_keymap,      emacs_meta_keymap,
     emacs_ctlx_keymap;      emacs_ctlx_keymap;
   /*
    * The following is not implemented; we always catch signals in the
    * libedit fashion: set handlers on entry to el_gets() and clear them
    * on the way out. This simplistic approach works for most cases; if
    * it does not work for your application, please let us know.
    */
   int rl_catch_signals = 1;
   int rl_catch_sigwinch = 1;
   
 int history_base = 1;           /* probably never subject to change */  int history_base = 1;           /* probably never subject to change */
 int history_length = 0;  int history_length = 0;
Line 100  char *rl_basic_word_break_characters = b
Line 108  char *rl_basic_word_break_characters = b
 char *rl_completer_word_break_characters = NULL;  char *rl_completer_word_break_characters = NULL;
 char *rl_completer_quote_characters = NULL;  char *rl_completer_quote_characters = NULL;
 Function *rl_completion_entry_function = NULL;  Function *rl_completion_entry_function = NULL;
   char *(*rl_completion_word_break_hook)(void) = NULL;
 CPPFunction *rl_attempted_completion_function = NULL;  CPPFunction *rl_attempted_completion_function = NULL;
 Function *rl_pre_input_hook = NULL;  Function *rl_pre_input_hook = NULL;
 Function *rl_startup1_hook = NULL;  Function *rl_startup1_hook = NULL;
Line 108  char *rl_terminal_name = NULL;
Line 117  char *rl_terminal_name = NULL;
 int rl_already_prompted = 0;  int rl_already_prompted = 0;
 int rl_filename_completion_desired = 0;  int rl_filename_completion_desired = 0;
 int rl_ignore_completion_duplicates = 0;  int rl_ignore_completion_duplicates = 0;
 int rl_catch_signals = 1;  
 int readline_echoing_p = 1;  int readline_echoing_p = 1;
 int _rl_print_completions_horizontally = 0;  int _rl_print_completions_horizontally = 0;
 VFunction *rl_redisplay_function = NULL;  VFunction *rl_redisplay_function = NULL;
Line 228  static const char *
Line 236  static const char *
 _default_history_file(void)  _default_history_file(void)
 {  {
         struct passwd *p;          struct passwd *p;
         static char path[PATH_MAX];          static char *path;
           size_t len;
   
         if (*path)          if (path)
                 return path;                  return path;
   
         if ((p = getpwuid(getuid())) == NULL)          if ((p = getpwuid(getuid())) == NULL)
                 return NULL;                  return NULL;
         (void)snprintf(path, sizeof(path), "%s/.history", p->pw_dir);  
           len = strlen(p->pw_dir) + sizeof("/.history");
           if ((path = malloc(len)) == NULL)
                   return NULL;
   
           (void)snprintf(path, len, "%s/.history", p->pw_dir);
         return path;          return path;
 }  }
   
Line 887  history_expand(char *str, char **output)
Line 902  history_expand(char *str, char **output)
         *output = NULL;          *output = NULL;
         if (str[0] == history_subst_char) {          if (str[0] == history_subst_char) {
                 /* ^foo^foo2^ is equivalent to !!:s^foo^foo2^ */                  /* ^foo^foo2^ is equivalent to !!:s^foo^foo2^ */
                 *output = el_malloc((strlen(str) + 4 + 1) * sizeof(*output));                  *output = el_malloc((strlen(str) + 4 + 1) * sizeof(**output));
                 if (*output == NULL)                  if (*output == NULL)
                         return 0;                          return 0;
                 (*output)[0] = (*output)[1] = history_expansion_char;                  (*output)[0] = (*output)[1] = history_expansion_char;
Line 1371  add_history(const char *line)
Line 1386  add_history(const char *line)
 {  {
         HistEvent ev;          HistEvent ev;
   
           if (line == NULL)
                   return 0;
   
         if (h == NULL || e == NULL)          if (h == NULL || e == NULL)
                 rl_initialize();                  rl_initialize();
   
Line 1464  clear_history(void)
Line 1482  clear_history(void)
 {  {
         HistEvent ev;          HistEvent ev;
   
           if (h == NULL || e == NULL)
                   rl_initialize();
   
         (void)history(h, &ev, H_CLEAR);          (void)history(h, &ev, H_CLEAR);
         history_length = 0;          history_length = 0;
 }  }
Line 1756  rl_complete(int ignore __attribute__((__
Line 1777  rl_complete(int ignore __attribute__((__
 #ifdef WIDECHAR  #ifdef WIDECHAR
         static ct_buffer_t wbreak_conv, sprefix_conv;          static ct_buffer_t wbreak_conv, sprefix_conv;
 #endif  #endif
           char *breakchars;
   
         if (h == NULL || e == NULL)          if (h == NULL || e == NULL)
                 rl_initialize();                  rl_initialize();
Line 1768  rl_complete(int ignore __attribute__((__
Line 1790  rl_complete(int ignore __attribute__((__
                 return CC_REFRESH;                  return CC_REFRESH;
         }          }
   
           if (rl_completion_word_break_hook != NULL)
                   breakchars = (*rl_completion_word_break_hook)();
           else
                   breakchars = rl_basic_word_break_characters;
   
         /* Just look at how many global variables modify this operation! */          /* Just look at how many global variables modify this operation! */
         return fn_complete(e,          return fn_complete(e,
             (CPFunction *)rl_completion_entry_function,              (CPFunction *)rl_completion_entry_function,
             rl_attempted_completion_function,              rl_attempted_completion_function,
             ct_decode_string(rl_basic_word_break_characters, &wbreak_conv),              ct_decode_string(rl_basic_word_break_characters, &wbreak_conv),
             ct_decode_string(rl_special_prefixes, &sprefix_conv),              ct_decode_string(breakchars, &sprefix_conv),
             _rl_completion_append_character_function,              _rl_completion_append_character_function,
             (size_t)rl_completion_query_items,              (size_t)rl_completion_query_items,
             &rl_completion_type, &rl_attempted_completion_over,              &rl_completion_type, &rl_attempted_completion_over,
Line 1917  rl_add_defun(const char *name, Function 
Line 1944  rl_add_defun(const char *name, Function 
         map[(unsigned char)c] = fun;          map[(unsigned char)c] = fun;
         el_set(e, EL_ADDFN, name, name, rl_bind_wrapper);          el_set(e, EL_ADDFN, name, name, rl_bind_wrapper);
         vis(dest, c, VIS_WHITE|VIS_NOSLASH, 0);          vis(dest, c, VIS_WHITE|VIS_NOSLASH, 0);
         el_set(e, EL_BIND, dest, name);          el_set(e, EL_BIND, dest, name, NULL);
         return 0;          return 0;
 }  }
   
 void  void
 rl_callback_read_char()  rl_callback_read_char(void)
 {  {
         int count = 0, done = 0;          int count = 0, done = 0;
         const char *buf = el_gets(e, &count);          const char *buf = el_gets(e, &count);
Line 1943  rl_callback_read_char()
Line 1970  rl_callback_read_char()
                 } else                  } else
                         wbuf = NULL;                          wbuf = NULL;
                 (*(void (*)(const char *))rl_linefunc)(wbuf);                  (*(void (*)(const char *))rl_linefunc)(wbuf);
                 //el_set(e, EL_UNBUFFERED, 1);                  el_set(e, EL_UNBUFFERED, 1);
         }          }
 }  }
   
Line 2025  rl_variable_bind(const char *var, const 
Line 2052  rl_variable_bind(const char *var, const 
          * The proper return value is undocument, but this is what the           * The proper return value is undocument, but this is what the
          * readline source seems to do.           * readline source seems to do.
          */           */
         return el_set(e, EL_BIND, "", var, value) == -1 ? 1 : 0;          return el_set(e, EL_BIND, "", var, value, NULL) == -1 ? 1 : 0;
 }  }
   
 void  void
Line 2094  void
Line 2121  void
 rl_get_screen_size(int *rows, int *cols)  rl_get_screen_size(int *rows, int *cols)
 {  {
         if (rows)          if (rows)
                 el_get(e, EL_GETTC, "li", rows);                  el_get(e, EL_GETTC, "li", rows, (void *)0);
         if (cols)          if (cols)
                 el_get(e, EL_GETTC, "co", cols);                  el_get(e, EL_GETTC, "co", cols, (void *)0);
 }  }
   
 void  void
Line 2104  rl_set_screen_size(int rows, int cols)
Line 2131  rl_set_screen_size(int rows, int cols)
 {  {
         char buf[64];          char buf[64];
         (void)snprintf(buf, sizeof(buf), "%d", rows);          (void)snprintf(buf, sizeof(buf), "%d", rows);
         el_set(e, EL_SETTC, "li", buf);          el_set(e, EL_SETTC, "li", buf, NULL);
         (void)snprintf(buf, sizeof(buf), "%d", cols);          (void)snprintf(buf, sizeof(buf), "%d", cols);
         el_set(e, EL_SETTC, "co", buf);          el_set(e, EL_SETTC, "co", buf, NULL);
 }  }
   
 char **  char **
Line 2257  rl_on_new_line(void)
Line 2284  rl_on_new_line(void)
 {  {
         return 0;          return 0;
 }  }
   
   void
   rl_free_line_state(void)
   {
   }

Legend:
Removed from v.1.99  
changed lines
  Added in v.1.111

CVSweb <webmaster@jp.NetBSD.org>