xterm - 1996/1/7 - patch #3 - T.Dickey This is my third (and final cleanup) patch for xterm. It gets rid of the unused stuff, and converts several functions to static (thereby reducing their scope). At this point, the only compile warnings I've got (on Linux) are those about the select arguments (int vs fd_set type), and a missing declaration for waitpid. Those both are hard to get right without autoconfigure. The next patches will address the functional changes... Tekproc.c: + changed several functions to 'static' that aren't used outside this module -- changes object charproc.c: + changed several functions to 'static' that aren't used outside this module -- changes object + deleted unused function unparsefputs -- changes object. main.c: + changed several functions to 'static' that aren't used outside this module -- changes object + ifdef'd out unused function 'consolepr()' -- changes object + removed unused variable 'dummy_tio' -- changes object + moved variable 'discipline' to quiet unused-warning -- changes object main.h: + deleted unused definition of DEFBORDERWIDTH - n/c misc.c: + changed several functions to 'static' that aren't used outside this module -- changes object + provide dummy return statements for xerror and xioerror to quiet compiler warnings -- changes object ptyx.h: + change sbuf_address and abuf_address to 'Char *' - n/c resize.c: + changed several functions to 'static' that aren't used outside this module -- changes object screen.c: + remove unnecessary 'Char **' casts - n/c util.c: + changed several functions to 'static' that aren't used outside this module -- changes object -------------------------------------------------------------------------------- Tekproc.c | 36 ++++++++++++++++----------------- charproc.c | 58 +++++++++++++++++++++-------------------------------- main.c | 64 +++++++++++++++++++++++++++-------------------------------- main.h | 1 misc.c | 26 ++++++++++++----------- ptyx.h | 4 +-- resize.c | 30 ++++++++++++++++----------- screen.c | 4 +-- util.c | 8 +++---- xterm.h | 5 ---- 10 files changed, 111 insertions, 125 deletions -------------------------------------------------------------------------------- Index: Tekproc.c --- xterm-original/Tekproc.c Sun Jan 7 11:04:36 1996 +++ xterm-patched/Tekproc.c Sun Jan 7 13:15:02 1996 @@ -291,22 +291,21 @@ XtRString, GIN_TERM_NONE_STR}, }; -extern void TCursorBack PROTO((void)); -extern void TCursorDown PROTO((void)); -extern void TCursorForward PROTO((void)); -extern void TCursorUp PROTO((void)); -extern void TekBackground PROTO((TScreen *screen)); -extern void TekDraw PROTO((int x, int y)); -extern void TekExpose PROTO((Widget w, XEvent *event, Region region)); -extern void TekFlush PROTO((void)); -extern void TekPage PROTO((void)); static TekWidget CreateTekWidget PROTO((void)); static int Tinput PROTO((void)); static int getpoint PROTO((void)); static void AddToDraw PROTO((int x1, int y1, int x2, int y2)); +static void TCursorBack PROTO((void)); +static void TCursorDown PROTO((void)); +static void TCursorForward PROTO((void)); +static void TCursorUp PROTO((void)); +static void TekBackground PROTO((TScreen *screen)); static void TekConfigure PROTO((Widget w)); +static void TekDraw PROTO((int x, int y)); static void TekEnq PROTO((int status, int x, int y)); +static void TekFlush PROTO((void)); static void TekInitialize PROTO((Widget request, Widget new, ArgList args, Cardinal *num_args)); +static void TekPage PROTO((void)); static void TekRealize PROTO((Widget gw, XtValueMask *valuemaskp, XSetWindowAttributes *values)); static void Tekparse PROTO((void)); @@ -848,7 +847,8 @@ } /*ARGSUSED*/ -void TekExpose(w, event, region) +void +TekExpose(w, event, region) Widget w; XEvent *event; Region region; @@ -898,7 +898,7 @@ (screen->TekGIN && GINcursor) ? GINcursor : screen->arrow); } -void +static void TekPage() { register TScreen *screen = &term->screen; @@ -982,7 +982,7 @@ } } -void +static void TCursorBack() { register TScreen *screen = &term->screen; @@ -1005,7 +1005,7 @@ } } -void +static void TCursorForward() { register TScreen *screen = &term->screen; @@ -1025,7 +1025,7 @@ } } -void +static void TCursorUp() { register TScreen *screen = &term->screen; @@ -1045,7 +1045,7 @@ screen->cur_Y = l * t->vsize; } -void +static void TCursorDown() { register TScreen *screen = &term->screen; @@ -1085,7 +1085,7 @@ nplot++; } -void +static void TekDraw (x, y) int x, y; { @@ -1105,7 +1105,7 @@ T_lasty = screen->cur_Y = y; } -void +static void TekFlush () { register TScreen *screen = &term->screen; @@ -1631,7 +1631,7 @@ TekBackground(screen); } -void +static void TekBackground(screen) register TScreen *screen; { Index: charproc.c --- xterm-original/charproc.c Sun Jan 7 10:55:38 1996 +++ xterm-patched/charproc.c Sun Jan 7 13:27:46 1996 @@ -117,18 +117,10 @@ extern Widget toplevel; extern char *ProgramName; -extern int LoadNewFont PROTO((TScreen *screen, char *nfontname, char *bfontname, Bool doresize, int fontnum)); -extern int in_put PROTO((void)); -extern int set_character_class PROTO((char *s)); -extern void ansi_modes PROTO((XtermWidget termw, void (*func)(unsigned *p, int mask))); -extern void dpmodes PROTO((XtermWidget termw, void (*func)(unsigned *p, int mask))); -extern void restoremodes PROTO((XtermWidget termw)); -extern void savemodes PROTO((XtermWidget termw)); -extern void set_vt_box PROTO((TScreen *screen)); -extern void unparsefputs PROTO((char *s, int fd)); -extern void unparseputn PROTO((unsigned int n, int fd)); - +static int LoadNewFont PROTO((TScreen *screen, char *nfontname, char *bfontname, Bool doresize, int fontnum)); static int finput PROTO((void)); +static int in_put PROTO((void)); +static int set_character_class PROTO((char *s)); static void DoSetSelectedFont PROTO_XT_SEL_CB_ARGS; static void FromAlternate PROTO((TScreen *screen)); static void SwitchBufs PROTO((TScreen *screen)); @@ -138,9 +130,15 @@ static void VTallocbuf PROTO((void)); static void VTparse PROTO((void)); static void WriteText PROTO(( TScreen *screen, char *str, int len, unsigned flags, unsigned fg, unsigned bg)); +static void ansi_modes PROTO((XtermWidget termw, void (*func)(unsigned *p, int mask))); static void bitclr PROTO((unsigned *p, int mask)); static void bitset PROTO((unsigned *p, int mask)); static void dotext PROTO((TScreen *screen, unsigned flags, int charset, char *buf, char *ptr, unsigned fg, unsigned bg)); +static void dpmodes PROTO((XtermWidget termw, void (*func)(unsigned *p, int mask))); +static void restoremodes PROTO((XtermWidget termw)); +static void savemodes PROTO((XtermWidget termw)); +static void set_vt_box PROTO((TScreen *screen)); +static void unparseputn PROTO((unsigned int n, int fd)); static void update_font_info PROTO((TScreen *screen, Bool doresize)); #define DEFAULT -1 @@ -285,10 +283,10 @@ extern int scstable[]; /* event handlers */ -extern void HandleSetFont PROTO((Widget w, XEvent *event, String *params, Cardinal *param_count)); static void HandleBell PROTO((Widget w, XEvent *event, String *params, Cardinal *param_count)); static void HandleIgnore PROTO((Widget w, XEvent *event, String *params, Cardinal *param_count)); static void HandleKeymapChange PROTO((Widget w, XEvent *event, String *params, Cardinal *param_count)); +static void HandleSetFont PROTO((Widget w, XEvent *event, String *params, Cardinal *param_count)); static void HandleVisualBell PROTO((Widget w, XEvent *event, String *params, Cardinal *param_count)); /* @@ -300,7 +298,6 @@ /* Defaults */ static Boolean defaultFALSE = FALSE; static Boolean defaultTRUE = TRUE; -static int defaultBorderWidth = DEFBORDERWIDTH; static int defaultIntBorder = DEFBORDER; static int defaultSaveLines = SAVELINES; static int defaultScrollLines = SCROLLLINES; @@ -1523,7 +1520,7 @@ static int write_mask; static int pty_read_bytes; -int +static int in_put() { register TScreen *screen = &term->screen; @@ -1813,7 +1810,7 @@ /* * process ANSI modes set, reset */ -void +static void ansi_modes(termw, func) XtermWidget termw; void (*func) PROTO((unsigned *p, int mask)); @@ -1837,7 +1834,7 @@ /* * process DEC private modes set, reset */ -void +static void dpmodes(termw, func) XtermWidget termw; void (*func) PROTO((unsigned *p, int mask)); @@ -2001,7 +1998,7 @@ /* * process xterm private modes save */ -void +static void savemodes(termw) XtermWidget termw; { @@ -2068,7 +2065,7 @@ /* * process xterm private modes restore */ -void +static void restoremodes(termw) XtermWidget termw; { @@ -2251,7 +2248,7 @@ } } -void +static void unparseputn(n, fd) unsigned int n; int fd; @@ -2282,16 +2279,6 @@ v_write(fd, buf, i); } -void -unparsefputs (s, fd) - register char *s; - int fd; -{ - if (s) { - while (*s) unparseputc (*s++, fd); - } -} - static void ToAlternate(screen) register TScreen *screen; @@ -3238,8 +3225,8 @@ * * and sets the indicated ranges to the indicated values. */ - -int set_character_class (s) +static int +set_character_class (s) register char *s; { register int i; /* iterator, index into s */ @@ -3468,7 +3455,8 @@ /* ARGSUSED */ -void HandleSetFont(w, event, params, param_count) +static void +HandleSetFont(w, event, params, param_count) Widget w; XEvent *event; /* unused */ String *params; /* unused */ @@ -3545,8 +3533,8 @@ return; } - -int LoadNewFont (screen, nfontname, bfontname, doresize, fontnum) +static int +LoadNewFont (screen, nfontname, bfontname, doresize, fontnum) TScreen *screen; char *nfontname, *bfontname; Bool doresize; @@ -3694,7 +3682,7 @@ set_vt_box (screen); } -void +static void set_vt_box (screen) TScreen *screen; { Index: main.c --- xterm-original/main.c Sun Jan 7 11:39:35 1996 +++ xterm-patched/main.c Sun Jan 7 13:13:07 1996 @@ -458,27 +458,19 @@ int switchfb[] = {0, 2, 1, 3}; -extern char *base_name PROTO((char *name)); -extern int TekInit PROTO((void)); -extern int VTInit PROTO((void)); -extern int pty_search PROTO((int *pty)); -extern int remove_termcap_entry PROTO((char *buf, char *str)); -extern int spawn PROTO((void)); extern int tgetent PROTO((char *ptr, char *name)); -extern void Cleanup PROTO((int code)); -extern void DeleteWindow PROTO_XT_ACTIONS_ARGS; -extern void HsSysError PROTO((int pf, int error)); -extern void KeyboardMapping PROTO_XT_ACTIONS_ARGS; -extern void Setenv PROTO((char *var, char *value)); -extern void SysError PROTO((int i)); -extern void TekRun PROTO((void)); -extern void VTRun PROTO((void)); -extern void get_terminal PROTO((void)); -extern void hide_tek_window PROTO((void)); -extern void hide_vt_window PROTO((void)); -extern void resize PROTO((TScreen *s, char *n, char *oldtc, char *newtc)); + +static char *base_name PROTO((char *name)); +static int pty_search PROTO((int *pty)); +static int remove_termcap_entry PROTO((char *buf, char *str)); +static int spawn PROTO((void)); +static void DeleteWindow PROTO_XT_ACTIONS_ARGS; static void Help PROTO((void)); +static void HsSysError PROTO((int pf, int error)); +static void KeyboardMapping PROTO_XT_ACTIONS_ARGS; static void Syntax PROTO((char *badOption)); +static void get_terminal PROTO((void)); +static void resize PROTO((TScreen *s, char *n, char *oldtc, char *newtc)); static SIGNAL_T reapchild PROTO((int n)); @@ -657,8 +649,8 @@ static char passedPty[2]; /* name if pty if slave */ #ifndef AMOEBA -extern int get_pty PROTO((int *pty)); -extern SIGNAL_T hungtty PROTO((int i)); +static int get_pty PROTO((int *pty)); +static SIGNAL_T hungtty PROTO((int i)); #endif #if defined(TIOCCONS) || defined(SRIOCSREDIR) @@ -994,7 +986,7 @@ * DeleteWindow(): Action proc to implement ICCCM delete_window. */ /* ARGSUSED */ -void +static void DeleteWindow(w, event, params, num_params) Widget w; XEvent *event; @@ -1014,7 +1006,7 @@ } /* ARGSUSED */ -void +static void KeyboardMapping(w, event, params, num_params) Widget w; XEvent *event; @@ -1624,7 +1616,8 @@ } } -char *base_name(name) +static char * +base_name(name) char *name; { register char *cp; @@ -1641,7 +1634,7 @@ * has problems, we can re-enter this function and get another one. */ -int +static int get_pty (pty) int *pty; { @@ -1752,7 +1745,8 @@ * a functional interface for allocating a pty. * Returns 0 if found a pty, 1 if fails. */ -int pty_search(pty) +static int +pty_search(pty) int *pty; { static int devindex, letter = 0; @@ -1807,7 +1801,7 @@ } #endif /* AMOEBA */ -void +static void get_terminal () /* * sets up X and initializes the terminal structure except for term.buf.fildes. @@ -1863,7 +1857,7 @@ }; /* ARGSUSED */ -SIGNAL_T hungtty(i) +static SIGNAL_T hungtty(i) int i; { longjmp(env, 1); @@ -1906,7 +1900,7 @@ * user can see it. */ -void +static void HsSysError(pf, error) int pf; int error; @@ -1957,7 +1951,7 @@ #ifndef AMOEBA extern char **environ; -int +static int spawn () /* * Inits pty and tty and forks a login process. @@ -1973,11 +1967,9 @@ int fds[2]; #endif int tty = -1; - int discipline; int done; #ifdef USE_SYSV_TERMIO struct termio tio; - struct termio dummy_tio; #ifdef TIOCLSET unsigned lmode; #endif /* TIOCLSET */ @@ -1986,6 +1978,7 @@ #endif /* TIOCSLTC */ #else /* else not USE_SYSV_TERMIO */ int ldisc = 0; + int discipline; unsigned lmode; struct tchars tc; struct ltchars ltc; @@ -3346,7 +3339,7 @@ /* * Spawn off tty threads and fork the login process. */ -spawn() +static int spawn() { register TScreen *screen = &term->screen; char *TermName = NULL; @@ -3576,6 +3569,7 @@ signal(SIGQUIT, SIG_IGN); signal(SIGTERM, SIG_IGN); signal(SIGPIPE, Exit); + return 0; } /* @@ -3732,7 +3726,7 @@ } /* ARGSUSED */ -void +static void resize(screen, TermName, oldtc, newtc) TScreen *screen; char *TermName; @@ -3828,6 +3822,7 @@ SIGNAL_RETURN; } +#if 0 /* this isn't used, but could be useful in debugging */ /* VARARGS1 */ void consolepr(fmt,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9) @@ -3857,8 +3852,9 @@ } #endif /* TIOCNOTTY */ } +#endif -int +static int remove_termcap_entry (buf, str) char *buf; char *str; Index: main.h --- xterm-original/main.h Wed Apr 27 03:12:30 1994 +++ xterm-patched/main.h Sun Jan 7 12:50:12 1996 @@ -28,4 +28,3 @@ #define DEFFONT "fixed" #define DEFBOLDFONT NULL /* no bold font uses overstriking */ #define DEFBORDER 2 -#define DEFBORDERWIDTH 2 Index: misc.c --- xterm-original/misc.c Sun Jan 7 11:28:52 1996 +++ xterm-patched/misc.c Sun Jan 7 13:15:20 1996 @@ -70,15 +70,15 @@ extern XtermWidget term; extern Widget toplevel; /* used in 'ChangeGroup()' */ -extern Boolean AllocateColor PROTO((XtermWidget pTerm, ScrnColors *pNew, int ndx, char *name)); -extern Boolean ChangeColorsRequest PROTO((XtermWidget pTerm, int start, char *names)); -extern Boolean GetOldColors PROTO(( XtermWidget pTerm)); -extern Boolean UpdateOldColors PROTO((XtermWidget pTerm, ScrnColors *pNew)); -extern void selectwindow PROTO((TScreen *screen, int flag)); -extern void unselectwindow PROTO((TScreen *screen, int flag)); +static Boolean AllocateColor PROTO((XtermWidget pTerm, ScrnColors *pNew, int ndx, char *name)); +static Boolean ChangeColorsRequest PROTO((XtermWidget pTerm, int start, char *names)); +static Boolean GetOldColors PROTO(( XtermWidget pTerm)); +static Boolean UpdateOldColors PROTO((XtermWidget pTerm, ScrnColors *pNew)); static void ChangeGroup PROTO((String attribute, XtArgVal value)); static void DoSpecialEnterNotify PROTO((XEnterWindowEvent *ev)); static void DoSpecialLeaveNotify PROTO((XEnterWindowEvent *ev)); +static void selectwindow PROTO((TScreen *screen, int flag)); +static void unselectwindow PROTO((TScreen *screen, int flag)); static void withdraw_window PROTO((Display *dpy, Window w, int scr)); void @@ -285,7 +285,7 @@ } -void +static void selectwindow(screen, flag) register TScreen *screen; register int flag; @@ -313,7 +313,7 @@ } } -void +static void unselectwindow(screen, flag) register TScreen *screen; register int flag; @@ -792,7 +792,7 @@ ScrnColors *pOldColors= NULL; -Boolean +static Boolean GetOldColors(pTerm) XtermWidget pTerm; { @@ -813,7 +813,7 @@ return(TRUE); } -Boolean +static Boolean UpdateOldColors(pTerm,pNew) XtermWidget pTerm; ScrnColors *pNew; @@ -893,7 +893,7 @@ return; } -Boolean +static Boolean AllocateColor(pTerm,pNew,ndx,name) XtermWidget pTerm; ScrnColors *pNew; @@ -918,7 +918,7 @@ return(FALSE); } -Boolean +static Boolean ChangeColorsRequest(pTerm,start,names) XtermWidget pTerm; int start; @@ -1104,6 +1104,7 @@ fprintf (stderr, "%s: warning, error event receieved:\n", xterm_name); (void) XmuPrintDefaultErrorMessage (d, ev, stderr); Exit (ERROR_XERROR); + return 0; /* appease the compiler */ } /*ARGSUSED*/ @@ -1117,6 +1118,7 @@ DisplayString (dpy)); Exit(ERROR_XIOERROR); + return 0; /* appease the compiler */ } extern char *ProgramName; Index: ptyx.h --- xterm-original/ptyx.h Sat Jan 6 17:01:24 1996 +++ xterm-patched/ptyx.h Sun Jan 7 13:42:17 1996 @@ -348,9 +348,9 @@ ScrnBuf buf; /* ptr to visible screen buf (main) */ ScrnBuf allbuf; /* screen buffer (may include lines scrolled off top) */ - char *sbuf_address; /* main screen memory address */ + Char *sbuf_address; /* main screen memory address */ ScrnBuf altbuf; /* alternate screen buffer */ - char *abuf_address; /* alternate screen memory address */ + Char *abuf_address; /* alternate screen memory address */ Boolean alternate; /* true if using alternate buf */ unsigned short do_wrap; /* true if cursor in last column and character just output */ Index: resize.c --- xterm-original/resize.c Sun Jan 7 11:29:32 1996 +++ xterm-patched/resize.c Sun Jan 7 13:18:46 1996 @@ -203,12 +203,15 @@ extern int main PROTO((int argc, char **argv)); -extern SIGNAL_T onintr PROTO((int sig)); -extern SIGNAL_T timeout PROTO((int sig)); -extern char *strindex PROTO((char *s1, char *s2)); -extern int checkdigits PROTO((char *str)); -extern void Usage PROTO((void)); -extern void readstring PROTO((FILE *fp, char *buf, char *str)); +static SIGNAL_T onintr PROTO((int sig)); +static SIGNAL_T timeout PROTO((int sig)); +static int checkdigits PROTO((char *str)); +static void Usage PROTO((void)); +static void readstring PROTO((FILE *fp, char *buf, char *str)); + +#ifdef USE_TERMCAP +static char *strindex PROTO((char *s1, char *s2)); +#endif /* resets termcap string to reflect current screen size @@ -479,7 +482,9 @@ exit(0); } -char *strindex (s1, s2) +#ifdef USE_TERMCAP +static char * +strindex (s1, s2) /* returns a pointer to the first occurrence of s2 in s1, or NULL if there are none. @@ -496,8 +501,9 @@ } return (NULL); } +#endif -int +static int checkdigits(str) register char *str; { @@ -509,7 +515,7 @@ return(1); } -void +static void readstring(fp, buf, str) register FILE *fp; register char *buf; @@ -550,7 +556,7 @@ *buf = 0; } -void +static void Usage() { fprintf(stderr, strcmp(myname, sunname) == 0 ? @@ -559,7 +565,7 @@ exit(1); } -SIGNAL_T +static SIGNAL_T timeout(sig) int sig; { @@ -568,7 +574,7 @@ } /* ARGSUSED */ -SIGNAL_T +static SIGNAL_T onintr(sig) int sig; { Index: screen.c --- xterm-original/screen.c Sun Jan 7 11:33:54 1996 +++ xterm-patched/screen.c Sun Jan 7 13:42:22 1996 @@ -618,10 +618,10 @@ /* swap buffer pointers back to make all this hair work */ SwitchBufPtrs(screen); if (screen->altbuf) - (void) Reallocate(&screen->altbuf, (Char **)&screen->abuf_address, + (void) Reallocate(&screen->altbuf, &screen->abuf_address, rows, cols, screen->max_row + 1, screen->max_col + 1); move_down_by = Reallocate(&screen->allbuf, - (Char **)&screen->sbuf_address, + &screen->sbuf_address, rows + savelines, cols, screen->max_row + 1 + savelines, screen->max_col + 1); Index: util.c --- xterm-original/util.c Sun Jan 7 12:22:30 1996 +++ xterm-patched/util.c Sun Jan 7 13:09:38 1996 @@ -39,8 +39,8 @@ extern Bool waiting_for_initial_map; -extern int handle_translated_exposure PROTO((TScreen *screen, int rect_x, int rect_y, unsigned int rect_width, unsigned int rect_height)); -extern void CopyWait PROTO((TScreen *screen)); +static int handle_translated_exposure PROTO((TScreen *screen, int rect_x, int rect_y, unsigned int rect_width, unsigned int rect_height)); +static void CopyWait PROTO((TScreen *screen)); static void copy_area PROTO((TScreen *screen, int src_x, int src_y, unsigned int width, unsigned int height, int dest_x, int dest_y)); static void horizontal_copy_area PROTO((TScreen *screen, int firstchar, int nchars, int amount)); static void vertical_copy_area PROTO((TScreen *screen, int firstline, int nlines, int amount)); @@ -737,7 +737,7 @@ ClearBufRows (screen, 0, screen->max_row); } -void +static void CopyWait(screen) register TScreen *screen; { @@ -910,7 +910,7 @@ * have been translated to allow for any CopyArea in progress. * The rectangle passed in is pixel coordinates. */ -int +static int handle_translated_exposure (screen, rect_x, rect_y, rect_width, rect_height) register TScreen *screen; register int rect_x, rect_y; Index: xterm.h --- xterm-original/xterm.h Sun Jan 7 12:04:56 1996 +++ xterm-patched/xterm.h Sun Jan 7 13:12:43 1996 @@ -79,11 +79,6 @@ extern int kill_process_group PROTO((int pid, int sig)); extern int nonblocking_wait PROTO((void)); extern void first_map_occurred PROTO((void)); -extern void get_terminal PROTO((void)); - -#ifndef AMOEBA -extern int spawn PROTO((void)); -#endif #ifdef SIGNAL_T extern SIGNAL_T Exit PROTO((int n));