Return int, not void, to conform with the expected arg of tputs.
* readline.c (init_terminal_io): tgetflag only takes 1 arg.
* readline.c (_rl_savestring): New function.
* chardefs.h: To avoid conflicts and/or warnings, define
savestring as a macro wrapper for _rl_savestring.
* display.c (extern term_xn): It's an int flag, not a string.
* charsdefs.h, rldefs.h: Remove HAVE_STRING_H-related junk.
+Tue Feb 15 14:07:08 1994 Per Bothner (bothner@kalessin.cygnus.com)
+
+ * readline.c (_rl_output_character_function), display.c:
+ Return int, not void, to conform with the expected arg of tputs.
+ * readline.c (init_terminal_io): tgetflag only takes 1 arg.
+ * readline.c (_rl_savestring): New function.
+ * chardefs.h: To avoid conflicts and/or warnings, define
+ savestring as a macro wrapper for _rl_savestring.
+ * display.c (extern term_xn): It's an int flag, not a string.
+ * charsdefs.h, rldefs.h: Remove HAVE_STRING_H-related junk.
+
Sat Feb 5 08:32:30 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
* Makefile.in: Remove obsolete rules for history.info and
#include <ctype.h>
-#if 0
-/* Getting the correct definition of HAVE_STRING_H is harder than just
- declaring them ourselves. CYGNUS LOCAL. */
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else
-# include <strings.h>
-#endif /* HAVE_STRING_H */
-#else /* not 0 */
-/* We don't worry about declaring functions where we don't use the return
- value (e.g. strcpy) or which return int. */
-extern char *strrchr ();
-#endif /* not 0 */
-
#ifndef savestring
-#if 0
-
-/* CYGNUS LOCAL--this declaration loses if xmalloc has already been
- declared as void *xmalloc (), as in GDB. The whole concept of
- readline using xmalloc rather than just returning NULL when it runs
- out of memory is questionable, but if we do want xmalloc we need a
- better way to declare it (e.g. the client declares it, or the client
- calls a rl_register_xmalloc function analagous to the way signal()
- works. */
-
-extern char *xmalloc ();
-#endif
-# ifndef strcpy
-extern char *strcpy ();
-# endif
-#define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x))
+#define savestring(X) _rl_savestring(X)
+extern char * _rl_savestring ();
#endif
#ifndef whitespace
extern char *term_clreol, *term_im, *term_ic, *term_ei, *term_DC;
/* Termcap variables. */
extern char *term_up, *term_dc, *term_cr, *term_IC;
-extern int screenheight, screenwidth, terminal_can_insert;
+extern int screenheight, screenwidth, terminal_can_insert, term_xn;
extern void _rl_output_some_chars ();
-extern void _rl_output_character_function ();
+extern int _rl_output_character_function ();
extern int _rl_convert_meta_chars_to_ascii;
extern int _rl_horizontal_scroll_mode;
update_line and the code that calls it makes a multiple line,
automatically wrapping line update. Carefull attention needs
- to be paid to the vertical position variables.
-
- handling of terminals with autowrap on (incl. DEC braindamage)
- could be improved a bit. Right now I just cheat and decrement
- screenwidth by one. */
+ to be paid to the vertical position variables. */
/* Keep two buffers; one which reflects the current contents of the
screen, and the other to draw what we think the new contents should
/* PWP: now is when things get a bit hairy. The visible and invisible
line buffers are really multiple lines, which would wrap every
- (screenwidth - 1) characters. Go through each in turn, finding
+ screenwidth characters. Go through each in turn, finding
the changed region and updating it. The line order is top to bottom. */
/* If we can move the cursor up and down, then use multiple lines,
register char *ofd, *ols, *oe, *nfd, *nls, *ne;
int lendiff, wsatend;
+ if (_rl_last_c_pos == screenwidth && term_xn && new[0])
+ {
+ putc (new[0], rl_outstream);
+ _rl_last_c_pos = 1;
+ _rl_last_v_pos++;
+ if (old[0])
+ old[0] = new[0];
+ }
+
/* Find first difference. */
for (ofd = old, nfd = new;
(ofd - old < screenwidth) && *ofd && (*ofd == *nfd);
/* Forward declarations used in this file. */
void rl_dispatch ();
void free_history_entry ();
-void _rl_output_character_function ();
+int _rl_output_character_function ();
void _rl_set_screen_size ();
#if !defined (_GO32_)
emacs_meta_keymap or vi_escape_keymap. */
int _rl_convert_meta_chars_to_ascii = 1;
+/* Non-zero tells rl_delete_text and rl_insert_text to not add to
+ the undo list. */
static int doing_an_undo;
\f
/* **************************************************************** */
screenwidth = screenheight = 0;
- term_xn = tgetflag ("am", &buffer) && tgetflag ("xn", &buffer);
+ term_xn = tgetflag ("am") && tgetflag ("xn");
_rl_set_screen_size (tty, 0);
}
/* A function for the use of tputs () */
-void
+int
_rl_output_character_function (c)
int c;
{
- putc (c, out_stream);
+ return putc (c, out_stream);
}
/* Write COUNT characters from STRING to the output stream. */
/* */
/* **************************************************************** */
-/* Non-zero tells rl_delete_text and rl_insert_text to not add to
- the undo list. */
-static int doing_an_undo = 0;
-
/* The current undo list for THE_LINE. */
UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL;
}
}
+char *
+_rl_savestring (str)
+ char *str;
+{
+ char *copy = (char*) xmalloc (strlen (str) + 1);
+ strcpy (copy, str);
+ return copy;
+}
+
#if defined (STATIC_MALLOC)
\f
/* **************************************************************** */
#endif /* __linux__ */
/* Some USG machines have BSD signal handling (sigblock, sigsetmask, etc.) */
-#if defined (USG) && !defined (hpux)
+/* CYGNUS LOCAL accept __hpux as well as hpux for HP compiler in ANSI mode. */
+#if defined (USG) && !(defined (hpux) || defined (__hpux))
# undef HAVE_BSD_SIGNALS
#endif
/* System V machines use termio. */
#if !defined (_POSIX_VERSION)
-# if defined (USG) || defined (hpux) || defined (Xenix) || defined (sgi) || defined (DGUX)
+/* CYGNUS LOCAL accept __hpux as well as hpux for HP compiler in ANSI mode. */
+# if defined (USG) || defined (hpux) || defined (__hpux) || defined (Xenix) || defined (sgi) || defined (DGUX)
# undef NEW_TTY_DRIVER
# define TERMIO_TTY_DRIVER
# include <termio.h>
#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
#endif
-/* Decide which flavor of the header file describing the C library
- string functions to include and include it. */
-
-#if defined (USG) || defined (NeXT)
-# if !defined (HAVE_STRING_H)
-# define HAVE_STRING_H
-# endif /* !HAVE_STRING_H */
-#endif /* USG || NeXT */
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
#if !defined (strchr) && !defined (__STDC__)
extern char *strchr (), *strrchr ();
#endif /* !strchr && !__STDC__ */