Commit 653d4f43 authored by Paul Eggert's avatar Paul Eggert

* sysdep.c, term.c, termcap.c, terminal.c: Integer-related minor fixes.

* sysdep.c (emacs_get_tty): Return void, since nobody uses the value.
(emacs_set_tty): Now static.
* sysdep.c (emacs_set_tty, tabs_safe_p, emacs_close):
* term.c (tty_capable_p, tty_default_color_capabilities)
(get_tty_terminal, term_mouse_movement)
(handle_one_term_event, init_tty, maybe_fatal):
* termcap.c (tgetst1, struct termcap_buffer, valid_filename_p)
(tgetent, scan_file, name_match, compare_contin):
* terminal.c (get_terminal):
Use bool for boolean.
* sysdep.c (init_system_name): Don't overflow stack on huge hostname.
Prefer char to unsigned char if either will do.
* term.c (OUTPUT, turn_on_face): Omit unnecessary casts to int.
(tty_write_glyphs): Prefer int to unsigned.
(produce_glyphless_glyph): Remove 2nd (unused) int arg.
All callers changed.
* termcap.c (tprint, main) [TEST]: Remove non-working test.
parent d77974bf
2013-07-11 Paul Eggert <eggert@cs.ucla.edu>
* sysdep.c, term.c, termcap.c, terminal.c: Integer-related minor fixes.
* sysdep.c (emacs_get_tty): Return void, since nobody uses the value.
(emacs_set_tty): Now static.
* sysdep.c (emacs_set_tty, tabs_safe_p, emacs_close):
* term.c (tty_capable_p, tty_default_color_capabilities)
(get_tty_terminal, term_mouse_movement)
(handle_one_term_event, init_tty, maybe_fatal):
* termcap.c (tgetst1, struct termcap_buffer, valid_filename_p)
(tgetent, scan_file, name_match, compare_contin):
* terminal.c (get_terminal):
Use bool for boolean.
* sysdep.c (init_system_name): Don't overflow stack on huge hostname.
Prefer char to unsigned char if either will do.
* term.c (OUTPUT, turn_on_face): Omit unnecessary casts to int.
(tty_write_glyphs): Prefer int to unsigned.
(produce_glyphless_glyph): Remove 2nd (unused) int arg.
All callers changed.
* termcap.c (tprint, main) [TEST]: Remove non-working test.
2013-07-10 Paul Eggert <eggert@cs.ucla.edu>
Port to C89.
......
......@@ -3298,7 +3298,7 @@ int image_ascent (struct image *, struct face *, struct glyph_slice *);
void get_tty_size (int, int *, int *);
void request_sigio (void);
void unrequest_sigio (void);
int tabs_safe_p (int);
bool tabs_safe_p (int);
void init_baud_rate (int);
void init_sigio (int);
void ignore_sigio (void);
......@@ -3470,11 +3470,12 @@ extern int string_cost (const char *);
extern int per_line_cost (const char *);
extern void calculate_costs (struct frame *);
extern void produce_glyphs (struct it *);
extern int tty_capable_p (struct tty_display_info *, unsigned, unsigned long, unsigned long);
extern bool tty_capable_p (struct tty_display_info *, unsigned,
unsigned long, unsigned long);
extern void set_tty_color_mode (struct tty_display_info *, struct frame *);
extern struct terminal *get_named_tty (const char *);
extern void create_tty_output (struct frame *);
extern struct terminal *init_tty (const char *, const char *, int);
extern struct terminal *init_tty (const char *, const char *, bool);
extern void tty_append_glyph (struct it *);
......
......@@ -102,8 +102,8 @@ int _cdecl _getpid (void);
#include "syssignal.h"
#include "systime.h"
static int emacs_get_tty (int, struct emacs_tty *);
static int emacs_set_tty (int, struct emacs_tty *, int);
static void emacs_get_tty (int, struct emacs_tty *);
static int emacs_set_tty (int, struct emacs_tty *, bool);
/* ULLONG_MAX is missing on Red Hat Linux 7.3; see Bug#11781. */
#ifndef ULLONG_MAX
......@@ -769,31 +769,26 @@ widen_foreground_group (int fd)
/* Getting and setting emacs_tty structures. */
/* Set *TC to the parameters associated with the terminal FD.
Return zero if all's well, or -1 if we ran into an error we
couldn't deal with. */
int
/* Set *TC to the parameters associated with the terminal FD,
or clear it if the parameters are not available. */
static void
emacs_get_tty (int fd, struct emacs_tty *settings)
{
/* Retrieve the primary parameters - baud rate, character size, etcetera. */
#ifndef DOS_NT
/* We have those nifty POSIX tcmumbleattr functions. */
memset (&settings->main, 0, sizeof (settings->main));
if (tcgetattr (fd, &settings->main) < 0)
return -1;
tcgetattr (fd, &settings->main);
#endif
/* We have survived the tempest. */
return 0;
}
/* Set the parameters of the tty on FD according to the contents of
*SETTINGS. If FLUSHP is non-zero, we discard input.
Return 0 if all went well, and -1 if anything failed. */
*SETTINGS. If FLUSHP, discard input.
Return 0 if all went well, and -1 (setting errno) if anything failed. */
int
emacs_set_tty (int fd, struct emacs_tty *settings, int flushp)
static int
emacs_set_tty (int fd, struct emacs_tty *settings, bool flushp)
{
/* Set the primary parameters - baud rate, character size, etcetera. */
#ifndef DOS_NT
......@@ -1118,10 +1113,10 @@ init_sys_modes (struct tty_display_info *tty_out)
tty_out->term_initted = 1;
}
/* Return nonzero if safe to use tabs in output.
/* Return true if safe to use tabs in output.
At the time this is called, init_sys_modes has not been done yet. */
int
bool
tabs_safe_p (int fd)
{
struct emacs_tty etty;
......@@ -1375,8 +1370,10 @@ init_system_name (void)
uname (&uts);
Vsystem_name = build_string (uts.nodename);
#else /* HAVE_GETHOSTNAME */
unsigned int hostname_size = 256;
char *hostname = alloca (hostname_size);
char *hostname_alloc = NULL;
char hostname_buf[256];
ptrdiff_t hostname_size = sizeof hostname_buf;
char *hostname = hostname_buf;
/* Try to get the host name; if the buffer is too short, try
again. Apparently, the only indication gethostname gives of
......@@ -1391,8 +1388,8 @@ init_system_name (void)
if (strlen (hostname) < hostname_size - 1)
break;
hostname_size <<= 1;
hostname = alloca (hostname_size);
hostname = hostname_alloc = xpalloc (hostname_alloc, &hostname_size, 1,
min (PTRDIFF_MAX, SIZE_MAX), 1);
}
#ifdef HAVE_SOCKETS
/* Turn the hostname into the official, fully-qualified hostname.
......@@ -1437,7 +1434,13 @@ init_system_name (void)
}
if (it)
{
hostname = alloca (strlen (it->ai_canonname) + 1);
ptrdiff_t len = strlen (it->ai_canonname);
if (hostname_size <= len)
{
hostname_size = len + 1;
hostname = hostname_alloc = xrealloc (hostname_alloc,
hostname_size);
}
strcpy (hostname, it->ai_canonname);
}
freeaddrinfo (res);
......@@ -1484,10 +1487,11 @@ init_system_name (void)
}
#endif /* HAVE_SOCKETS */
Vsystem_name = build_string (hostname);
xfree (hostname_alloc);
#endif /* HAVE_GETHOSTNAME */
{
unsigned char *p;
for (p = SDATA (Vsystem_name); *p; p++)
char *p;
for (p = SSDATA (Vsystem_name); *p; p++)
if (*p == ' ' || *p == '\t')
*p = '-';
}
......@@ -2200,8 +2204,8 @@ emacs_fopen (char const *file, char const *mode)
int
emacs_close (int fd)
{
int did_retry = 0;
register int rtnval;
bool did_retry = 0;
int rtnval;
while ((rtnval = close (fd)) == -1
&& (errno == EINTR))
......
......@@ -71,13 +71,13 @@ static void tty_turn_off_highlight (struct tty_display_info *);
static void tty_show_cursor (struct tty_display_info *);
static void tty_hide_cursor (struct tty_display_info *);
static void tty_background_highlight (struct tty_display_info *tty);
static struct terminal *get_tty_terminal (Lisp_Object, int);
static struct terminal *get_tty_terminal (Lisp_Object, bool);
static void clear_tty_hooks (struct terminal *terminal);
static void set_tty_hooks (struct terminal *terminal);
static void dissociate_if_controlling_tty (int fd);
static void delete_tty (struct terminal *);
static _Noreturn void maybe_fatal (int must_succeed, struct terminal *terminal,
const char *str1, const char *str2, ...)
static _Noreturn void maybe_fatal (bool, struct terminal *,
const char *, const char *, ...)
ATTRIBUTE_FORMAT_PRINTF (3, 5) ATTRIBUTE_FORMAT_PRINTF (4, 5);
static _Noreturn void vfatal (const char *str, va_list ap)
ATTRIBUTE_FORMAT_PRINTF (1, 0);
......@@ -85,8 +85,7 @@ static _Noreturn void vfatal (const char *str, va_list ap)
#define OUTPUT(tty, a) \
emacs_tputs ((tty), a, \
(int) (FRAME_LINES (XFRAME (selected_frame)) \
- curY (tty)), \
FRAME_LINES (XFRAME (selected_frame)) - curY (tty), \
cmputc)
#define OUTPUT1(tty, a) emacs_tputs ((tty), a, 1, cmputc)
......@@ -695,7 +694,7 @@ tty_write_glyphs (struct frame *f, struct glyph *string, int len)
{
unsigned char *conversion_buffer;
struct coding_system *coding;
size_t n, stringlen;
int n, stringlen;
struct tty_display_info *tty = FRAME_TTY (f);
......@@ -1431,7 +1430,7 @@ static void append_glyph (struct it *);
static void append_composite_glyph (struct it *);
static void produce_composite_glyph (struct it *);
static void append_glyphless_glyph (struct it *, int, const char *);
static void produce_glyphless_glyph (struct it *, int, Lisp_Object);
static void produce_glyphless_glyph (struct it *, Lisp_Object);
/* Append glyphs to IT's glyph_row. Called from produce_glyphs for
terminal frames if IT->glyph_row != NULL. IT->char_to_display is
......@@ -1551,7 +1550,7 @@ produce_glyphs (struct it *it)
if (it->what == IT_GLYPHLESS)
{
produce_glyphless_glyph (it, 0, Qnil);
produce_glyphless_glyph (it, Qnil);
goto done;
}
......@@ -1620,7 +1619,7 @@ produce_glyphs (struct it *it)
Lisp_Object acronym = lookup_glyphless_char_display (-1, it);
eassert (it->what == IT_GLYPHLESS);
produce_glyphless_glyph (it, 1, acronym);
produce_glyphless_glyph (it, acronym);
}
}
......@@ -1794,14 +1793,12 @@ append_glyphless_glyph (struct it *it, int face_id, const char *str)
the character. See the description of enum
glyphless_display_method in dispextern.h for the details.
FOR_NO_FONT is nonzero if and only if this is for a character that
is not supported by the coding system of the terminal. ACRONYM, if
non-nil, is an acronym string for the character.
ACRONYM, if non-nil, is an acronym string for the character.
The glyphs actually produced are of type CHAR_GLYPH. */
static void
produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym)
produce_glyphless_glyph (struct it *it, Lisp_Object acronym)
{
int face_id;
int len;
......@@ -1968,7 +1965,7 @@ turn_on_face (struct frame *f, int face_id)
ts = tty->standout_mode ? tty->TS_set_background : tty->TS_set_foreground;
if (fg >= 0 && ts)
{
p = tparam (ts, NULL, 0, (int) fg, 0, 0, 0);
p = tparam (ts, NULL, 0, fg, 0, 0, 0);
OUTPUT (tty, p);
xfree (p);
}
......@@ -1976,7 +1973,7 @@ turn_on_face (struct frame *f, int face_id)
ts = tty->standout_mode ? tty->TS_set_foreground : tty->TS_set_background;
if (bg >= 0 && ts)
{
p = tparam (ts, NULL, 0, (int) bg, 0, 0, 0);
p = tparam (ts, NULL, 0, bg, 0, 0, 0);
OUTPUT (tty, p);
xfree (p);
}
......@@ -2027,11 +2024,11 @@ turn_off_face (struct frame *f, int face_id)
}
/* Return non-zero if the terminal on frame F supports all of the
/* Return true if the terminal on frame F supports all of the
capabilities in CAPS simultaneously, with foreground and background
colors FG and BG. */
int
bool
tty_capable_p (struct tty_display_info *tty, unsigned int caps,
unsigned long fg, unsigned long bg)
{
......@@ -2099,7 +2096,7 @@ static char *default_set_background;
/* Save or restore the default color-related capabilities of this
terminal. */
static void
tty_default_color_capabilities (struct tty_display_info *tty, int save)
tty_default_color_capabilities (struct tty_display_info *tty, bool save)
{
if (save)
......@@ -2209,7 +2206,7 @@ set_tty_color_mode (struct tty_display_info *tty, struct frame *f)
/* Return the tty display object specified by TERMINAL. */
static struct terminal *
get_tty_terminal (Lisp_Object terminal, int throw)
get_tty_terminal (Lisp_Object terminal, bool throw)
{
struct terminal *t = get_terminal (terminal, throw);
......@@ -2519,7 +2516,7 @@ tty_draw_row_with_mouse_face (struct window *w, struct glyph_row *row,
cursor_to (f, save_y, save_x);
}
static int
static bool
term_mouse_movement (FRAME_PTR frame, Gpm_Event *event)
{
/* Has the mouse moved off the glyph it was on at the last sighting? */
......@@ -2649,7 +2646,7 @@ handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct in
{
struct frame *f = XFRAME (tty->top_frame);
struct input_event ie;
int do_help = 0;
bool do_help = 0;
int count = 0;
EVENT_INIT (ie);
......@@ -2934,7 +2931,7 @@ dissociate_if_controlling_tty (int fd)
If MUST_SUCCEED is true, then all errors are fatal. */
struct terminal *
init_tty (const char *name, const char *terminal_type, int must_succeed)
init_tty (const char *name, const char *terminal_type, bool must_succeed)
{
char *area = NULL;
char **address = &area;
......@@ -2942,7 +2939,7 @@ init_tty (const char *name, const char *terminal_type, int must_succeed)
int status;
struct tty_display_info *tty = NULL;
struct terminal *terminal = NULL;
int ctty = 0; /* 1 if asked to open controlling tty. */
bool ctty = 0; /* True if asked to open controlling tty. */
if (!terminal_type)
maybe_fatal (must_succeed, 0,
......@@ -3412,10 +3409,10 @@ vfatal (const char *str, va_list ap)
/* Auxiliary error-handling function for init_tty.
Delete TERMINAL, then call error or fatal with str1 or str2,
respectively, according to whether MUST_SUCCEED is zero or not. */
respectively, according to whether MUST_SUCCEED is true. */
static void
maybe_fatal (int must_succeed, struct terminal *terminal,
maybe_fatal (bool must_succeed, struct terminal *terminal,
const char *str1, const char *str2, ...)
{
va_list ap;
......
......@@ -213,8 +213,8 @@ tgetst1 (char *ptr, char **area)
abbreviation expansion makes that effort a little more hairy than
its worth; this is cleaner. */
{
register int last_p_param = 0;
int remove_p_params = 1;
int last_p_param = 0;
bool remove_p_params = 1;
struct { char *beg; int len; } cut[11];
for (cut[0].beg = p = ret; p < r - 3; p++)
......@@ -318,26 +318,26 @@ struct termcap_buffer
char *beg;
ptrdiff_t size;
char *ptr;
int ateof;
bool ateof;
ptrdiff_t full;
};
/* Forward declarations of static functions. */
static int scan_file (char *str, int fd, register struct termcap_buffer *bufp);
static char *gobble_line (int fd, register struct termcap_buffer *bufp, char *append_end);
static int compare_contin (register char *str1, register char *str2);
static int name_match (char *line, char *name);
static bool scan_file (char *, int, struct termcap_buffer *);
static char *gobble_line (int, struct termcap_buffer *, char *);
static bool compare_contin (char *, char *);
static bool name_match (char *, char *);
#ifdef MSDOS /* MW, May 1993 */
static int
static bool
valid_filename_p (char *fn)
{
#ifdef MSDOS
return *fn == '/' || fn[1] == ':';
}
#else
#define valid_filename_p(fn) (*(fn) == '/')
return *fn == '/';
#endif
}
/* Find the termcap entry data for terminal type NAME
and store it in the block that BP points to.
......@@ -360,10 +360,10 @@ tgetent (char *bp, const char *name)
char *tc_search_point;
char *term;
ptrdiff_t malloc_size = 0;
register int c;
int c;
char *tcenv = NULL; /* TERMCAP value, if it contains :tc=. */
char *indirect = NULL; /* Terminal type in :tc= in TERMCAP value. */
int filep;
bool filep;
#ifdef INTERNAL_TERMINAL
/* For the internal terminal we don't want to read any termcap file,
......@@ -510,10 +510,10 @@ tgetent (char *bp, const char *name)
Return 1 if successful, with that line in BUFP,
or 0 if no entry is found in the file. */
static int
scan_file (char *str, int fd, register struct termcap_buffer *bufp)
static bool
scan_file (char *str, int fd, struct termcap_buffer *bufp)
{
register char *end;
char *end;
bufp->ptr = bufp->beg;
bufp->full = 0;
......@@ -544,13 +544,13 @@ scan_file (char *str, int fd, register struct termcap_buffer *bufp)
return 0;
}
/* Return nonzero if NAME is one of the names specified
/* Return true if NAME is one of the names specified
by termcap entry LINE. */
static int
static bool
name_match (char *line, char *name)
{
register char *tem;
char *tem;
if (!compare_contin (line, name))
return 1;
......@@ -562,18 +562,18 @@ name_match (char *line, char *name)
return 0;
}
static int
compare_contin (register char *str1, register char *str2)
static bool
compare_contin (char *str1, char *str2)
{
register int c1, c2;
while (1)
{
c1 = *str1++;
c2 = *str2++;
int c1 = *str1++;
int c2 = *str2++;
while (c1 == '\\' && *str1 == '\n')
{
str1++;
while ((c1 = *str1++) == ' ' || c1 == '\t');
while ((c1 = *str1++) == ' ' || c1 == '\t')
continue;
}
if (c2 == '\0')
{
......@@ -647,57 +647,3 @@ gobble_line (int fd, register struct termcap_buffer *bufp, char *append_end)
}
return end + 1;
}
#ifdef TEST
#include <stdio.h>
static void
tprint (char *cap)
{
char *x = tgetstr (cap, 0);
register char *y;
printf ("%s: ", cap);
if (x)
{
for (y = x; *y; y++)
if (*y <= ' ' || *y == 0177)
printf ("\\%0o", *y);
else
putchar (*y);
free (x);
}
else
printf ("none");
putchar ('\n');
}
int
main (int argc, char **argv)
{
char *term;
char *buf;
term = argv[1];
printf ("TERM: %s\n", term);
buf = (char *) tgetent (0, term);
if ((int) buf <= 0)
{
printf ("No entry.\n");
return 0;
}
printf ("Entry: %s\n", buf);
tprint ("cm");
tprint ("AL");
printf ("co: %d\n", tgetnum ("co"));
printf ("am: %d\n", tgetflag ("am"));
return 0;
}
#endif /* TEST */
......@@ -643,7 +643,7 @@ extern struct terminal *terminal_list;
(((d)->type != output_termcap && (d)->type != output_msdos_raw) \
|| (d)->display_info.tty->input)
extern struct terminal *get_terminal (Lisp_Object terminal, int);
extern struct terminal *get_terminal (Lisp_Object terminal, bool);
extern struct terminal *create_terminal (void);
extern void delete_terminal (struct terminal *);
......
......@@ -199,11 +199,11 @@ ins_del_lines (struct frame *f, int vpos, int n)
/* Return the terminal object specified by TERMINAL. TERMINAL may be
a terminal object, a frame, or nil for the terminal device of the
current frame. If THROW is zero, return NULL for failure,
current frame. If THROW is false, return NULL for failure,
otherwise throw an error. */
struct terminal *
get_terminal (Lisp_Object terminal, int throw)
get_terminal (Lisp_Object terminal, bool throw)
{
struct terminal *result = NULL;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment