OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-src                      Date:   02-Oct-2004 12:23:17
  Branch: HEAD                             Handle: 2004100211231600

  Added files:
    openpkg-src/readline    readline.patch
  Modified files:
    openpkg-src/readline    readline.spec

  Log:
    apply GNU readline related patches from the official GNU bash patch
    set

  Summary:
    Revision    Changes     Path
    1.3         +230 -0     openpkg-src/readline/readline.patch
    1.18        +3  -1      openpkg-src/readline/readline.spec
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/readline/readline.patch
  ============================================================================
  $ cvs diff -u -r0 -r1.3 readline.patch
  --- /dev/null 2004-10-02 12:23:16 +0200
  +++ readline.patch    2004-10-02 12:23:17 +0200
  @@ -0,0 +1,230 @@
  +This patch adds an explicit recognition for terminal sequence "kD" to be
  +"Delete" key. This is derived from Debian GNU/Linux and SuSE Linux.
  +
  +Index: terminal.c
  +--- terminal.c.orig  2003-09-18 17:03:42 +0200
  ++++ terminal.c       2004-07-27 20:03:17 +0200
  +@@ -145,6 +145,9 @@
  + static char *_rl_term_kH;
  + static char *_rl_term_at7;  /* @7 */
  + 
  ++/* The key sequence sent by the Delete key, if any. */
  ++static char *_rl_term_kD;
  ++
  + /* Insert key */
  + static char *_rl_term_kI;
  + 
  +@@ -313,6 +316,7 @@
  +   { "ei", &_rl_term_ei },
  +   { "ic", &_rl_term_ic },
  +   { "im", &_rl_term_im },
  ++  { "kD", &_rl_term_kD },   /* delete */
  +   { "kH", &_rl_term_kH },   /* home down ?? */
  +   { "kI", &_rl_term_kI },   /* insert */
  +   { "kd", &_rl_term_kd },
  +@@ -492,6 +496,7 @@
  + 
  +   rl_bind_keyseq_if_unbound (_rl_term_kh, rl_beg_of_line);  /* Home */
  +   rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */
  ++  rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete);               /* Delete */
  + 
  +   _rl_keymap = xkeymap;
  + }
  +
  +-----------------------------------------------------------------------------
  +
  +These are the accumulated patches to GNU readline as contained in
  +the official GNU bash 3.0 patches numbered 001 to 013.
  +
  +Index: display.c
  +--- display.c.orig   2004-10-02 12:19:25 +0200
  ++++ display.c        2004-10-02 12:19:25 +0200
  +@@ -201,7 +201,7 @@
  +      int *lp, *lip, *niflp, *vlp;
  + {
  +   char *r, *ret, *p;
  +-  int l, rl, last, ignoring, ninvis, invfl, ind, pind, physchars;
  ++  int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars;
  + 
  +   /* Short-circuit if we can. */
  +   if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, 
RL_PROMPT_START_IGNORE) == 0)
  +@@ -222,6 +222,7 @@
  +   r = ret = (char *)xmalloc (l + 1);
  + 
  +   invfl = 0;        /* invisible chars in first line of prompt */
  ++  invflset = 0;     /* we only want to set invfl once */
  + 
  +   for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++)
  +     {
  +@@ -249,7 +250,10 @@
  +           while (l--)
  +             *r++ = *p++;
  +           if (!ignoring)
  +-            rl += ind - pind;
  ++            {
  ++              rl += ind - pind;
  ++              physchars += _rl_col_width (pmt, pind, ind);
  ++            }
  +           else
  +             ninvis += ind - pind;
  +           p--;                      /* compensate for later increment */
  +@@ -259,16 +263,19 @@
  +         {
  +           *r++ = *p;
  +           if (!ignoring)
  +-            rl++;                   /* visible length byte counter */
  ++            {
  ++              rl++;                 /* visible length byte counter */
  ++              physchars++;
  ++            }
  +           else
  +             ninvis++;               /* invisible chars byte counter */
  +         }
  + 
  +-      if (rl >= _rl_screenwidth)
  +-        invfl = ninvis;
  +-
  +-      if (ignoring == 0)
  +-        physchars++;
  ++      if (invflset == 0 && rl >= _rl_screenwidth)
  ++        {
  ++          invfl = ninvis;
  ++          invflset = 1;
  ++        }
  +     }
  +     }
  + 
  +@@ -417,7 +424,7 @@
  +   register int in, out, c, linenum, cursor_linenum;
  +   register char *line;
  +   int c_pos, inv_botlin, lb_botlin, lb_linenum;
  +-  int newlines, lpos, temp, modmark;
  ++  int newlines, lpos, temp, modmark, n0, num;
  +   char *prompt_this_line;
  + #if defined (HANDLE_MULTIBYTE)
  +   wchar_t wc;
  +@@ -573,6 +580,7 @@
  + 
  + #if defined (HANDLE_MULTIBYTE)
  +   memset (_rl_wrapped_line, 0, vis_lbsize);
  ++  num = 0;
  + #endif
  + 
  +   /* prompt_invis_chars_first_line is the number of invisible characters in
  +@@ -591,13 +599,32 @@
  +          probably too much work for the benefit gained.  How many people have
  +          prompts that exceed two physical lines?
  +          Additional logic fix from Edward Catmur <[EMAIL PROTECTED]> */
  ++#if defined (HANDLE_MULTIBYTE)
  ++      n0 = num;
  ++      temp = local_prompt ? strlen (local_prompt) : 0;
  ++      while (num < temp)
  ++    {
  ++      if (_rl_col_width  (local_prompt, n0, num) > _rl_screenwidth)
  ++        {
  ++          num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY);
  ++          break;
  ++        }
  ++      num++;
  ++    }
  ++      temp = num +
  ++#else
  +       temp = ((newlines + 1) * _rl_screenwidth) +
  ++#endif /* !HANDLE_MULTIBYTE */
  +              ((local_prompt_prefix == 0) ? ((newlines == 0) ? 
prompt_invis_chars_first_line
  +                                                         : ((newlines == 1) ? 
wrap_offset : 0))
  +                                      : ((newlines == 0) ? wrap_offset :0));
  +              
  +       inv_lbreaks[++newlines] = temp;
  ++#if defined (HANDLE_MULTIBYTE)
  ++      lpos -= _rl_col_width (local_prompt, n0, num);
  ++#else
  +       lpos -= _rl_screenwidth;
  ++#endif
  +     }
  + 
  +   prompt_last_screen_line = newlines;
  +Index: mbutil.c
  +--- mbutil.c.orig    2004-01-14 15:44:52 +0100
  ++++ mbutil.c 2004-10-02 12:19:25 +0200
  +@@ -126,11 +126,11 @@
  +   if (find_non_zero)
  +     {
  +       tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
  +-      while (wcwidth (wc) == 0)
  ++      while (tmp > 0 && wcwidth (wc) == 0)
  +     {
  +       point += tmp;
  +       tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
  +-      if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2))
  ++      if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp))
  +         break;
  +     }
  +     }
  +Index: misc.c
  +--- misc.c.orig      2004-07-07 14:56:32 +0200
  ++++ misc.c   2004-10-02 12:19:25 +0200
  +@@ -276,12 +276,6 @@
  +       _rl_saved_line_for_history->line = savestring (rl_line_buffer);
  +       _rl_saved_line_for_history->data = (char *)rl_undo_list;
  +     }
  +-  else if (STREQ (rl_line_buffer, _rl_saved_line_for_history->line) == 0)
  +-    {
  +-      free (_rl_saved_line_for_history->line);
  +-      _rl_saved_line_for_history->line = savestring (rl_line_buffer);
  +-      _rl_saved_line_for_history->data = (char *)rl_undo_list;      /* XXX 
possible memleak */
  +-    }
  + 
  +   return 0;
  + }
  +Index: vi_mode.c
  +--- vi_mode.c.orig   2004-10-02 12:19:25 +0200
  ++++ vi_mode.c        2004-10-02 12:19:25 +0200
  +@@ -692,7 +692,7 @@
  + {
  +   wchar_t wc;
  +   char mb[MB_LEN_MAX+1];
  +-  int mblen;
  ++  int mblen, p;
  +   mbstate_t ps;
  + 
  +   memset (&ps, 0, sizeof (mbstate_t));
  +@@ -715,11 +715,14 @@
  +       /* Vi is kind of strange here. */
  +       if (wc)
  +     {
  ++      p = rl_point;
  +       mblen = wcrtomb (mb, wc, &ps);
  +       if (mblen >= 0)
  +         mb[mblen] = '\0';
  +       rl_begin_undo_group ();
  +-      rl_delete (1, 0);
  ++      rl_vi_delete (1, 0);
  ++      if (rl_point < p)     /* Did we retreat at EOL? */
  ++        rl_point++; /* XXX - should we advance more than 1 for mbchar? */
  +       rl_insert_text (mb);
  +       rl_end_undo_group ();
  +       rl_vi_check ();
  +@@ -1312,12 +1315,16 @@
  +       rl_vi_delete (1, c);
  + #if defined (HANDLE_MULTIBYTE)
  +       if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
  +-    while (_rl_insert_char (1, c))
  +-      {
  +-        RL_SETSTATE (RL_STATE_MOREINPUT);
  +-        c = rl_read_key ();
  +-        RL_UNSETSTATE (RL_STATE_MOREINPUT);
  +-      }
  ++    {
  ++      if (rl_point < p)             /* Did we retreat at EOL? */
  ++        rl_point++;
  ++      while (_rl_insert_char (1, c))
  ++        {
  ++          RL_SETSTATE (RL_STATE_MOREINPUT);
  ++          c = rl_read_key ();
  ++          RL_UNSETSTATE (RL_STATE_MOREINPUT);
  ++        }
  ++    }
  +       else
  + #endif
  +     {
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/readline/readline.spec
  ============================================================================
  $ cvs diff -u -r1.17 -r1.18 readline.spec
  --- openpkg-src/readline/readline.spec        4 Aug 2004 10:59:29 -0000       1.17
  +++ openpkg-src/readline/readline.spec        2 Oct 2004 10:23:16 -0000       1.18
  @@ -39,10 +39,11 @@
   Group:        Converter
   License:      GPL
   Version:      %{V_real}.%{V_patch}
  -Release:      20040804
  +Release:      20041002
   
   #   list of sources
   Source0:      ftp://ftp.gnu.org/gnu/readline/readline-%{V_real}.tar.gz
  +Patch0:       readline.patch
   
   #   build information
   Prefix:       %{l_prefix}
  @@ -71,6 +72,7 @@
   
   %prep
       %setup -q -n readline-%{V_real}
  +    %patch -p0
   
   %build
       CC="%{l_cc}" \
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to