From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14621 invoked by alias); 29 Dec 2003 08:03:20 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 14612 invoked from network); 29 Dec 2003 08:03:19 -0000 Received: from unknown (HELO aragorn.inter.net.il) (192.114.186.23) by sources.redhat.com with SMTP; 29 Dec 2003 08:03:19 -0000 Received: from zaretski (pns03-195-8.inter.net.il [80.230.195.8]) by aragorn.inter.net.il (Mirapoint Messaging Server MOS 3.3.8-GR) with ESMTP id CDO57822; Mon, 29 Dec 2003 10:03:10 +0200 (IST) Date: Mon, 29 Dec 2003 08:03:00 -0000 From: "Eli Zaretskii" To: gdb-patches@sources.redhat.com Message-Id: <7137-Mon29Dec2003100055+0200-eliz@elta.co.il> Subject: [RFA] Patch to imported readline to allow DJGPP build Reply-to: Eli Zaretskii X-SW-Source: 2003-12/txt/msg00504.txt.bz2 The current imported readline is broken for DJGPP. The following patch is needed to allow GDB to build the DJGPP port. Okay to commit? Btw, I don't understand what is going on with Readline: I looked at its official home page (to figure out how to submit the patches below to the Readline maintainer) and found there an old version 4.3 of Readline where the DJGPP-specific code is ripped out. The version that we have in the GDB repository seems a newer one, but it also has the DJGPP-specific code in it. Can someone please tell me what is the story behind this? TIA 2003-12-28 Eli Zaretskii * readline.c (rl_save_state, rl_restore_state): Support systems that don't define SIGWINCH. * terminal.c (_rl_get_screen_size) [__DJGPP__]: Compute the screen width and height using console I/O. (_rl_init_terminal_io) [__MSDOS__]: Zero out all the _rl_term_* variables. Convert to _rl_* naming scheme. (_rl_set_cursor) [__MSDOS__]: Ifdef away this function. * display.c (_rl_move_vert) [__MSDOS__]: Don't use undeclared variable `l'. Use `delta' instead recomputing its value anew. Assign -delta to i instead of the other way around. --- readline/readline.c~0 2002-12-08 22:31:36.000000000 +0000 +++ readline/readline.c 2003-12-28 10:33:08.000000000 +0000 @@ -933,7 +933,9 @@ rl_save_state (sp) sp->macro = rl_executing_macro; sp->catchsigs = rl_catch_signals; +#if defined (SIGWINCH) sp->catchsigwinch = rl_catch_sigwinch; +#endif return (0); } @@ -967,7 +969,9 @@ rl_restore_state (sp) rl_executing_macro = sp->macro; rl_catch_signals = sp->catchsigs; +#if defined (SIGWINCH) rl_catch_sigwinch = sp->catchsigwinch; +#endif return (0); } --- readline/terminal.c~0 2002-12-08 22:31:36.000000000 +0000 +++ readline/terminal.c 2003-12-28 10:34:46.000000000 +0000 @@ -220,7 +220,10 @@ _rl_get_screen_size (tty, ignore_env) if (ignore_env == 0 && (ss = sh_get_env_value ("COLUMNS"))) _rl_screenwidth = atoi (ss); -#if !defined (__DJGPP__) +#if defined (__DJGPP__) + if (_rl_screenwidth <= 0) + _rl_screenwidth = ScreenCols (); +#else if (_rl_screenwidth <= 0 && term_string_buffer) _rl_screenwidth = tgetnum ("co"); #endif @@ -233,7 +236,10 @@ _rl_get_screen_size (tty, ignore_env) if (ignore_env == 0 && (ss = sh_get_env_value ("LINES"))) _rl_screenheight = atoi (ss); -#if !defined (__DJGPP__) +#if defined (__DJGPP__) + if (_rl_screenheight <= 0) + _rl_screenheight = ScreenRows (); +#else if (_rl_screenheight <= 0 && term_string_buffer) _rl_screenheight = tgetnum ("li"); #endif @@ -382,12 +388,19 @@ _rl_init_terminal_io (terminal_name) term = "dumb"; #ifdef __MSDOS__ - term_im = term_ei = term_ic = term_IC = (char *)NULL; - term_up = term_dc = term_DC = visible_bell = (char *)NULL; - term_ku = term_kd = term_kl = term_kr = (char *)NULL; - term_mm = term_mo = (char *)NULL; - terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; - term_cr = "\r"; + _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; + _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; + _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; + _rl_term_mm = _rl_term_mo = (char *)NULL; + _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; + _rl_term_cr = "\r"; + _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL; + _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; + _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; + _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; +#if defined(HACK_TERMCAP_MOTION) + _rl_term_forward_char = (char *)NULL; +#endif _rl_get_screen_size (tty, 0); #else /* !__MSDOS__ */ @@ -677,6 +690,7 @@ void _rl_set_cursor (im, force) int im, force; { +#ifndef __MSDOS__ if (_rl_term_ve && _rl_term_vs) { if (force || im != rl_insert_mode) @@ -687,4 +701,5 @@ _rl_set_cursor (im, force) tputs (_rl_term_ve, 1, _rl_output_character_function); } } +#endif } --- readline/display.c~0 2003-01-11 00:43:52.000000000 +0000 +++ readline/display.c 2003-12-23 18:47:36.000000000 +0000 @@ -1642,10 +1642,10 @@ _rl_move_vert (to) #ifdef __MSDOS__ int row, col; - l = fflush (rl_outstream); /* make sure the cursor pos is current! */ + fflush (rl_outstream); /* make sure the cursor pos is current! */ ScreenGetCursor (&row, &col); - ScreenSetCursor ((row + to - _rl_last_v_pos), col); - delta = i; + ScreenSetCursor (row + delta, col); + i = -delta; /* in case someone wants to use it after the loop */ #else /* !__MSDOS__ */ if (_rl_term_up && *_rl_term_up) for (i = 0; i < -delta; i++)