Add helper macros to always call tparm() with 10 arguments.

This ensures portability to systems with a fixed-argument list declaration
of tparm(), like NetBSD curses.


git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@436 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
Kevin Easton
2013-11-10 06:27:03 +00:00
parent 0fe37326a3
commit ecabc12b3d

View File

@@ -81,6 +81,11 @@ extern int already_detached;
#define Tgetflag(x) tgetflag(x.tname) #define Tgetflag(x) tgetflag(x.tname)
#endif #endif
/* Some systems declare tparm() with 9 fixed 'long' arguments */
#define tparm1(str, a1) tparm(str, a1, 0, 0, 0, 0, 0, 0, 0, 0)
#define tparm2(str, a1, a2) tparm(str, a1, a2, 0, 0, 0, 0, 0, 0, 0)
#define tparm4(str, a1, a2, a3, a4) tparm(str, a1, a2, a3, a4, 0, 0, 0, 0, 0)
extern char *getenv(); extern char *getenv();
/* /*
@@ -703,7 +708,7 @@ void term_reset (void)
tcsetattr(tty_des, TCSADRAIN, &oldb); tcsetattr(tty_des, TCSADRAIN, &oldb);
if (current_term->TI_csr) if (current_term->TI_csr)
tputs_x((char *)tparm(current_term->TI_csr, 0, current_term->TI_lines - 1)); tputs_x(tparm2(current_term->TI_csr, 0, current_term->TI_lines - 1));
term_gotoxy(0, current_term->TI_lines - 1); term_gotoxy(0, current_term->TI_lines - 1);
#if use_alt_screen #if use_alt_screen
if (current_term->TI_rmcup) if (current_term->TI_rmcup)
@@ -1164,9 +1169,9 @@ int term_init (char *term)
if (i >= 8) if (i >= 8)
strcpy(cbuf, current_term->TI_sgrstrs[TERM_SGR_BOLD_ON-1]); strcpy(cbuf, current_term->TI_sgrstrs[TERM_SGR_BOLD_ON-1]);
if (current_term->TI_setaf) if (current_term->TI_setaf)
strcat(cbuf, (char *)tparm(current_term->TI_setaf, i & 0x07, 0)); strcat(cbuf, tparm2(current_term->TI_setaf, i & 0x07, 0));
else if (current_term->TI_setf) else if (current_term->TI_setf)
strcat(cbuf, (char *)tparm(current_term->TI_setf, i & 0x07, 0)); strcat(cbuf, tparm2(current_term->TI_setf, i & 0x07, 0));
else if (i >= 8) else if (i >= 8)
sprintf(cbuf, "\033[1;%dm", (i & 0x07) + 30); sprintf(cbuf, "\033[1;%dm", (i & 0x07) + 30);
else else
@@ -1184,9 +1189,9 @@ int term_init (char *term)
strcpy(cbuf, current_term->TI_sgrstrs[TERM_SGR_BLINK_ON - 1]); strcpy(cbuf, current_term->TI_sgrstrs[TERM_SGR_BLINK_ON - 1]);
if (current_term->TI_setab) if (current_term->TI_setab)
strcat (cbuf, tparm(current_term->TI_setab, i & 0x07, 0)); strcat(cbuf, tparm2(current_term->TI_setab, i & 0x07, 0));
else if (current_term->TI_setb) else if (current_term->TI_setb)
strcat (cbuf, tparm(current_term->TI_setb, i & 0x07, 0)); strcat(cbuf, tparm2(current_term->TI_setb, i & 0x07, 0));
else if (i >= 8) else if (i >= 8)
sprintf(cbuf, "\033[1;%dm", (i & 0x07) + 40); sprintf(cbuf, "\033[1;%dm", (i & 0x07) + 40);
else else
@@ -1348,11 +1353,11 @@ void term_gotoxy (int col, int row)
#else #else
if (current_term->TI_cup) if (current_term->TI_cup)
tputs_x((char *)tparm(current_term->TI_cup, row, col)); tputs_x(tparm2(current_term->TI_cup, row, col));
else else
{ {
tputs_x((char *)tparm(current_term->TI_hpa, col)); tputs_x(tparm1(current_term->TI_hpa, col));
tputs_x((char *)tparm(current_term->TI_vpa, row)); tputs_x(tparm1(current_term->TI_vpa, row));
} }
#endif #endif
} }
@@ -1386,20 +1391,20 @@ void term_clrscr (void)
/* We can also clear by deleteing lines ... */ /* We can also clear by deleteing lines ... */
else if (current_term->TI_dl) else if (current_term->TI_dl)
{ {
tputs_x((char *)tparm(current_term->TI_dl, current_term->TI_lines)); tputs_x(tparm1(current_term->TI_dl, current_term->TI_lines));
return; return;
} }
/* ... in this case one line at a time */ /* ... in this case one line at a time */
else if (current_term->TI_dl1) else if (current_term->TI_dl1)
{ {
for (i = 0; i < current_term->TI_lines; i++) for (i = 0; i < current_term->TI_lines; i++)
tputs_x (current_term->TI_dl1); tputs_x(current_term->TI_dl1);
return; return;
} }
/* As a last resort we can insert lines ... */ /* As a last resort we can insert lines ... */
else if (current_term->TI_il) else if (current_term->TI_il)
{ {
tputs_x ((char *)tparm(current_term->TI_il, current_term->TI_lines)); tputs_x(tparm1(current_term->TI_il, current_term->TI_lines));
term_gotoxy (0, 0); term_gotoxy (0, 0);
return; return;
} }
@@ -1407,7 +1412,7 @@ void term_clrscr (void)
else if (current_term->TI_il1) else if (current_term->TI_il1)
{ {
for (i = 0; i < current_term->TI_lines; i++) for (i = 0; i < current_term->TI_lines; i++)
tputs_x (current_term->TI_il1); tputs_x(current_term->TI_il1);
term_gotoxy (0, 0); term_gotoxy (0, 0);
} }
#endif #endif
@@ -1422,15 +1427,15 @@ void term_left (int num)
gui_left(num); gui_left(num);
#else #else
if (current_term->TI_cub) if (current_term->TI_cub)
tputs_x ((char *)tparm(current_term->TI_cub, num)); tputs_x(tparm1(current_term->TI_cub, num));
else if (current_term->TI_mrcup) else if (current_term->TI_mrcup)
tputs_x ((char *)tparm(current_term->TI_mrcup, -num, 0)); tputs_x(tparm2(current_term->TI_mrcup, -num, 0));
else if (current_term->TI_cub1) else if (current_term->TI_cub1)
while (num--) while (num--)
tputs_x(current_term->TI_cub1); tputs_x(current_term->TI_cub1);
else if (current_term->TI_kbs) else if (current_term->TI_kbs)
while (num--) while (num--)
tputs_x (current_term->TI_kbs); tputs_x(current_term->TI_kbs);
#endif #endif
} }
@@ -1443,9 +1448,9 @@ void term_right (int num)
gui_right(num); gui_right(num);
#else #else
if (current_term->TI_cuf) if (current_term->TI_cuf)
tputs_x ((char *)tparm(current_term->TI_cuf, num)); tputs_x(tparm1(current_term->TI_cuf, num));
else if (current_term->TI_mrcup) else if (current_term->TI_mrcup)
tputs_x ((char *)tparm(current_term->TI_mrcup, num, 0)); tputs_x(tparm2(current_term->TI_mrcup, num, 0));
else if (current_term->TI_cuf1) else if (current_term->TI_cuf1)
while (num--) while (num--)
tputs_x(current_term->TI_cuf1); tputs_x(current_term->TI_cuf1);
@@ -1462,7 +1467,7 @@ void term_delete (int num)
tputs_x(current_term->TI_smdc); tputs_x(current_term->TI_smdc);
if (current_term->TI_dch) if (current_term->TI_dch)
tputs_x ((char *)tparm (current_term->TI_dch, num)); tputs_x(tparm1(current_term->TI_dch, num));
else if (current_term->TI_dch1) else if (current_term->TI_dch1)
while (num--) while (num--)
tputs_x (current_term->TI_dch1); tputs_x (current_term->TI_dch1);
@@ -1481,7 +1486,7 @@ void term_insert (unsigned char c)
else if (current_term->TI_ich1) else if (current_term->TI_ich1)
tputs_x (current_term->TI_ich1); tputs_x (current_term->TI_ich1);
else if (current_term->TI_ich) else if (current_term->TI_ich)
tputs_x ((char *)tparm(current_term->TI_ich, 1)); tputs_x(tparm1(current_term->TI_ich, 1));
term_putchar (c); term_putchar (c);
@@ -1496,7 +1501,7 @@ void term_insert (unsigned char c)
void term_repeat (unsigned char c, int rep) void term_repeat (unsigned char c, int rep)
{ {
if (current_term->TI_rep) if (current_term->TI_rep)
tputs_x((char *)tparm (current_term->TI_rep, (int)c, rep)); tputs_x(tparm2(current_term->TI_rep, (int)c, rep));
else else
while (rep--) while (rep--)
putchar_x (c); putchar_x (c);
@@ -1571,8 +1576,8 @@ void term_scroll (int top, int bot, int n)
* region was the full screen. That test *always* fails, * region was the full screen. That test *always* fails,
* because we never scroll the bottom line of the screen. * because we never scroll the bottom line of the screen.
*/ */
strcpy(start, (char *)tparm(current_term->TI_csr, top, bot)); strcpy(start, tparm2(current_term->TI_csr, top, bot));
strcpy(final, (char *)tparm(current_term->TI_csr, 0, current_term->TI_lines-1)); strcpy(final, tparm2(current_term->TI_csr, 0, current_term->TI_lines-1));
if (n > 0) if (n > 0)
{ {
@@ -1581,7 +1586,7 @@ void term_scroll (int top, int bot, int n)
if (current_term->TI_indn) if (current_term->TI_indn)
{ {
oneshot = 1; oneshot = 1;
strcpy(thing, (char *)tparm(current_term->TI_indn, rn, rn)); strcpy(thing, tparm2(current_term->TI_indn, rn, rn));
} }
else else
strcpy(thing, current_term->TI_ind); strcpy(thing, current_term->TI_ind);
@@ -1593,17 +1598,17 @@ void term_scroll (int top, int bot, int n)
if (current_term->TI_rin) if (current_term->TI_rin)
{ {
oneshot = 1; oneshot = 1;
strcpy (thing, (char *)tparm(current_term->TI_rin, rn, rn)); strcpy(thing, tparm2(current_term->TI_rin, rn, rn));
} }
else else
strcpy (thing, current_term->TI_ri); strcpy(thing, current_term->TI_ri);
} }
} }
else if (current_term->TI_wind && (current_term->TI_ri || current_term->TI_rin) && (current_term->TI_ind || current_term->TI_indn)) else if (current_term->TI_wind && (current_term->TI_ri || current_term->TI_rin) && (current_term->TI_ind || current_term->TI_indn))
{ {
strcpy(start, (char *)tparm(current_term->TI_wind, top, bot, 0, current_term->TI_cols-1)); strcpy(start, tparm4(current_term->TI_wind, top, bot, 0, current_term->TI_cols-1));
strcpy(final, (char *)tparm(current_term->TI_wind, 0, current_term->TI_lines-1, 0, current_term->TI_cols-1)); strcpy(final, tparm4(current_term->TI_wind, 0, current_term->TI_lines-1, 0, current_term->TI_cols-1));
if (n > 0) if (n > 0)
{ {
@@ -1612,10 +1617,10 @@ void term_scroll (int top, int bot, int n)
if (current_term->TI_indn) if (current_term->TI_indn)
{ {
oneshot = 1; oneshot = 1;
strcpy (thing, (char *)tparm(current_term->TI_indn, rn, rn)); strcpy(thing, tparm2(current_term->TI_indn, rn, rn));
} }
else else
strcpy (thing, current_term->TI_ind); strcpy(thing, current_term->TI_ind);
} }
else else
{ {
@@ -1624,7 +1629,7 @@ void term_scroll (int top, int bot, int n)
if (current_term->TI_rin) if (current_term->TI_rin)
{ {
oneshot = 1; oneshot = 1;
strcpy (thing,(char *)tparm(current_term->TI_rin, rn, rn)); strcpy(thing, tparm2(current_term->TI_rin, rn, rn));
} }
else else
strcpy (thing, current_term->TI_ri); strcpy (thing, current_term->TI_ri);
@@ -1641,7 +1646,7 @@ void term_scroll (int top, int bot, int n)
if (current_term->TI_dl) if (current_term->TI_dl)
{ {
oneshot = 1; oneshot = 1;
strcpy (thing, (char *)tparm(current_term->TI_dl, rn, rn)); strcpy(thing, tparm2(current_term->TI_dl, rn, rn));
} }
else else
strcpy (thing, current_term->TI_dl1); strcpy (thing, current_term->TI_dl1);
@@ -1649,7 +1654,7 @@ void term_scroll (int top, int bot, int n)
if (current_term->TI_il) if (current_term->TI_il)
{ {
oneshot = 1; oneshot = 1;
strcpy(final, (char *)tparm(current_term->TI_il, rn, rn)); strcpy(final, tparm2(current_term->TI_il, rn, rn));
} }
else else
strcpy(final, current_term->TI_il1); strcpy(final, current_term->TI_il1);
@@ -1661,7 +1666,7 @@ void term_scroll (int top, int bot, int n)
if (current_term->TI_il) if (current_term->TI_il)
{ {
oneshot = 1; oneshot = 1;
strcpy (thing, (char *)tparm(current_term->TI_il, rn, rn)); strcpy(thing, tparm2(current_term->TI_il, rn, rn));
} }
else else
strcpy (thing, current_term->TI_il1); strcpy (thing, current_term->TI_il1);
@@ -1669,7 +1674,7 @@ void term_scroll (int top, int bot, int n)
if (current_term->TI_dl) if (current_term->TI_dl)
{ {
oneshot = 1; oneshot = 1;
strcpy(final, (char *)tparm(current_term->TI_dl, rn, rn)); strcpy(final, tparm2(current_term->TI_dl, rn, rn));
} }
else else
strcpy(final, current_term->TI_dl1); strcpy(final, current_term->TI_dl1);
@@ -1761,7 +1766,7 @@ char *term_getsgr (int opt, int fore, int back)
break; break;
case TERM_SGR_GCHAR: case TERM_SGR_GCHAR:
if (current_term->TI_dispc) if (current_term->TI_dispc)
ret = (char *)tparm(current_term->TI_dispc, fore); ret = tparm1(current_term->TI_dispc, fore);
break; break;
default: default:
ircpanic ("Unknown option '%d' to term_getsgr", opt); ircpanic ("Unknown option '%d' to term_getsgr", opt);