#ifndef NO_TERMS
E void NDECL(tty_shutdown);
#endif
-#if defined(apollo)
-/* Apollos don't widen old-style function definitions properly -- they try to
- * be smart and use the prototype, or some such strangeness. So we have to
- * define UNWIDENDED_PROTOTYPES (in tradstdc.h), which makes CHAR_P below a
- * char. But the tputs termcap call was compiled as if xputc's argument
- * actually would be expanded. So here, we have to make an exception. */
-E void FDECL(xputc, (int));
-#else
-E void FDECL(xputc, (CHAR_P));
-#endif
+E int FDECL(xputc, (int));
E void FDECL(xputs, (const char *));
#if defined(SCREEN_VGA) || defined(SCREEN_8514)
E void FDECL(xputg, (int, int, unsigned));
}
}
-void xputc(ch) /* write out character (and attribute) */
-char ch;
+/* same signature as 'putchar()' with potential failure result ignored */
+int
+xputc(ch) /* write out character (and attribute) */
+int ch;
{
int i;
char attribute;
vesa_xputc(ch, attribute);
#endif /*SCREEN_VESA*/
}
+ return 0;
}
-void xputg(glyphnum, ch,
- special) /* write out a glyph picture at current location */
+/* write out a glyph picture at current location */
+void xputg(glyphnum, ch, special)
int glyphnum;
int ch;
unsigned special;
{
if (!iflags.grmode || !iflags.tile_view) {
- xputc((char) ch);
+ (void) xputc((char) ch);
#ifdef SCREEN_VGA
} else if (iflags.grmode && iflags.usevga) {
vga_xputg(glyphnum, ch, special);
char *FDECL(tgetstr, (const char *, char **));
char *FDECL(tgoto, (const char *, int, int));
char *FDECL(tparam, (const char *, char *, int, int, int, int, int));
-void FDECL(tputs, (const char *, int, int (*)()));
+void FDECL(tputs, (const char *, int, int (*)(int)));
/* local support data */
static char *tc_entry;
/* send a string to the terminal, possibly padded with trailing NULs */
void
tputs(string, range, output_func)
-const char *string; /* characters to output */
-int range; /* number of lines affected, used for `*' delays */
-int (*output_func)(); /* actual output routine; return value ignored */
+const char *string; /* characters to output */
+int range; /* number of lines affected, used for `*' delays */
+int FDECL((*output_func),(int)); /* actual output routine;
+ * return value ignored */
{
register int c, num = 0;
register const char *p = string;
set_console_cursor(x, y);
}
-void
+/* same signature as 'putchar()' with potential failure result ignored */
+int
xputc(ch)
-char ch;
+int ch;
{
set_console_cursor(ttyDisplay->curx, ttyDisplay->cury);
- xputc_core(ch);
+ xputc_core((char) ch);
+ return 0;
}
void
const char *s;
{
int k;
- int slen = strlen(s);
+ int slen = (int) strlen(s);
if (ttyDisplay)
set_console_cursor(ttyDisplay->curx, ttyDisplay->cury);
return;
}
-void
+int
xputc(ch)
-char ch;
+int ch;
{
- return;
+ return 0;
}
void
/* Cursor movements */
/* Note to overlay tinkerers. The placement of this overlay controls the
- location
- of the function xputc(). This function is not currently in trampoli.[ch]
- files for what is deemed to be performance reasons. If this define is
- moved
- and or xputc() is taken out of the ROOT overlay, then action must be taken
- in trampoli.[ch]. */
+ location of the function xputc(). This function is not currently in
+ trampoli.[ch] files for what is deemed to be performance reasons. If
+ this define is moved and or xputc() is taken out of the ROOT overlay,
+ then action must be taken in trampoli.[ch]. */
void
nocmov(x, y)
cmov(x, y);
} else {
while ((int) ttyDisplay->cury < y) {
- xputc('\n');
+ (void) xputc('\n');
ttyDisplay->curx = 0;
ttyDisplay->cury++;
}
ttyDisplay->curx = x;
}
-/* See note above. xputc() is a special function. */
-void
+/* See note above. xputc() is a special function for overlays. */
+int
xputc(c)
-#if defined(apollo)
- int c;
-#else
- char c;
-#endif
+int c; /* actually char, but explicitly specify its widened type */
{
- (void) putchar(c);
+ /*
+ * Note: xputc() as a direct all to putchar() doesn't make any
+ * sense _if_ putchar() is a function. But if it is a macro, an
+ * overlay configuration would want to avoid hidden code bloat
+ * from multiple putchar() expansions. And it gets passed as an
+ * argument to tputs() so we have to guarantee an actual function
+ * (while possibly lacking ANSI's (func) syntax to override macro).
+ *
+ * xputc() used to be declared as 'void xputc(c) char c; {}' but
+ * avoiding the proper type 'int' just to avoid (void) casts when
+ * ignoring the result can't have been sufficent reason to add it.
+ * It also had '#if apollo' conditional to have the arg be int.
+ * Matching putchar()'s declaration and using explicit casts where
+ * warranted is more robust, so we're just a jacket around that.
+ */
+ return putchar(c);
}
void
{
#ifndef TERMLIB
(void) fputs(s, stdout);
-#else
-#if defined(NHSTDC) || defined(ULTRIX_PROTO)
- tputs(s, 1, (int (*) ()) xputc);
#else
tputs(s, 1, xputc);
#endif
-#endif
}
void
/* this looks terrible, especially on a slow terminal
but is better than nothing */
while (cx < CO) {
- xputc(' ');
+ (void) xputc(' ');
cx++;
}
tty_curs(BASE_WINDOW, (int) ttyDisplay->curx + 1,
/* BUG: if the padding character is visible, as it is on the 5620
then this looks terrible. */
if (flags.null) {
+ tputs(
#ifdef TERMINFO
-/* cbosgd!cbcephus!pds for SYS V R2 */
-#ifdef NHSTDC
- tputs("$<50>", 1, (int (*) ()) xputc);
-#else
- tputs("$<50>", 1, xputc);
-#endif
-#else
-#if defined(NHSTDC) || defined(ULTRIX_PROTO)
- tputs("50", 1, (int (*) ()) xputc);
+ "$<50>",
#else
- tputs("50", 1, xputc);
-#endif
+ "50",
#endif
+ 1, xputc);
} else if (ospeed > 0 && ospeed < SIZE(tmspc10) && nh_CM) {
/* delay by sending cm(here) an appropriate number of times */
register int cmlen =
- strlen(tgoto(nh_CM, ttyDisplay->curx, ttyDisplay->cury));
+ (int) strlen(tgoto(nh_CM, ttyDisplay->curx, ttyDisplay->cury));
register int i = 500 + tmspc10[ospeed] / 2;
while (i > 0) {
while (cy <= LI - 2) {
cl_end();
- xputc('\n');
+ (void) xputc('\n');
cy++;
}
cl_end();