X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/a07b5a3866282d3ae1f5f5dd7d3811f69b30dac7..cb956e543fa39f182495ce436ee429ff4d7904aa:/usr/src/usr.bin/talk/display.c diff --git a/usr/src/usr.bin/talk/display.c b/usr/src/usr.bin/talk/display.c index 22615a00ec..19d551506e 100644 --- a/usr/src/usr.bin/talk/display.c +++ b/usr/src/usr.bin/talk/display.c @@ -1,170 +1,163 @@ -/* $Header: display.c 1.2 83/04/23 02:09:33 moore Exp $ */ +/* + * Copyright (c) 1983 Regents of the University of California. + * All rights reserved. + * + * %sccs.include.redist.c% + */ + +#ifndef lint +static char sccsid[] = "@(#)display.c 5.4 (Berkeley) %G%"; +#endif /* not lint */ -/* The window 'manager', initializes curses and handles the actual +/* + * The window 'manager', initializes curses and handles the actual * displaying of text */ - #include "talk.h" -xwin_t my_win; -xwin_t his_win; -WINDOW *line_win; +xwin_t my_win; +xwin_t his_win; +WINDOW *line_win; -int curses_initialized = 0; - - /* max HAS to be a function, it is called with - * a argument of the form --foo at least once. - */ +int curses_initialized = 0; +/* + * max HAS to be a function, it is called with + * a argument of the form --foo at least once. + */ max(a,b) -int a, b; + int a, b; { - if (a > b) { - return(a); - } else { - return(b); - } + + return (a > b ? a : b); } /* * Display some text on somebody's window, processing some control * characters while we are at it. */ - display(win, text, size) -register xwin_t *win; -register char *text; -int size; + register xwin_t *win; + register char *text; + int size; { - register int i; - char cch; - - for (i = 0; i < size; i++) { - - if (*text == '\n') { - xscroll(win, 0); - text++; - continue; - } - - /* erase character */ - - if (*text == win->cerase) { - wmove(win->x_win, win->x_line, max(--win->x_col, 0)); - getyx(win->x_win, win->x_line, win->x_col); - waddch(win->x_win, ' '); - wmove(win->x_win, win->x_line, win->x_col); - getyx(win->x_win, win->x_line, win->x_col); - text++; - continue; - } - /* - * On word erase search backwards until we find - * the beginning of a word or the beginning of - * the line. - */ - if (*text == win->werase) { - int endcol, xcol, i, c; - - endcol = win->x_col; - xcol = endcol - 1; - while (xcol >= 0) { - c = readwin(win->x_win, win->x_line, xcol); - if (c != ' ') - break; - xcol--; - } - while (xcol >= 0) { - c = readwin(win->x_win, win->x_line, xcol); - if (c == ' ') - break; - xcol--; - } - wmove(win->x_win, win->x_line, xcol + 1); - for (i = xcol + 1; i < endcol; i++) - waddch(win->x_win, ' '); - wmove(win->x_win, win->x_line, xcol + 1); - getyx(win->x_win, win->x_line, win->x_col); - continue; + register int i; + char cch; + + for (i = 0; i < size; i++) { + if (*text == '\n') { + xscroll(win, 0); + text++; + continue; + } + /* erase character */ + if (*text == win->cerase) { + wmove(win->x_win, win->x_line, max(--win->x_col, 0)); + getyx(win->x_win, win->x_line, win->x_col); + waddch(win->x_win, ' '); + wmove(win->x_win, win->x_line, win->x_col); + getyx(win->x_win, win->x_line, win->x_col); + text++; + continue; + } + /* + * On word erase search backwards until we find + * the beginning of a word or the beginning of + * the line. + */ + if (*text == win->werase) { + int endcol, xcol, i, c; + + endcol = win->x_col; + xcol = endcol - 1; + while (xcol >= 0) { + c = readwin(win->x_win, win->x_line, xcol); + if (c != ' ') + break; + xcol--; + } + while (xcol >= 0) { + c = readwin(win->x_win, win->x_line, xcol); + if (c == ' ') + break; + xcol--; + } + wmove(win->x_win, win->x_line, xcol + 1); + for (i = xcol + 1; i < endcol; i++) + waddch(win->x_win, ' '); + wmove(win->x_win, win->x_line, xcol + 1); + getyx(win->x_win, win->x_line, win->x_col); + continue; + } + /* line kill */ + if (*text == win->kill) { + wmove(win->x_win, win->x_line, 0); + wclrtoeol(win->x_win); + getyx(win->x_win, win->x_line, win->x_col); + text++; + continue; + } + if (*text == '\f') { + if (win == &my_win) + wrefresh(curscr); + text++; + continue; + } + if (win->x_col == COLS-1) { + /* check for wraparound */ + xscroll(win, 0); + } + if (*text < ' ' && *text != '\t') { + waddch(win->x_win, '^'); + getyx(win->x_win, win->x_line, win->x_col); + if (win->x_col == COLS-1) /* check for wraparound */ + xscroll(win, 0); + cch = (*text & 63) + 64; + waddch(win->x_win, cch); + } else + waddch(win->x_win, *text); + getyx(win->x_win, win->x_line, win->x_col); + text++; } - /* line kill */ - if (*text == win->kill) { - wmove(win->x_win, win->x_line, 0); - wclrtoeol(win->x_win); - getyx(win->x_win, win->x_line, win->x_col); - text++; - continue; - } - if (*text == '\f') { - if (win == &my_win) - wrefresh(curscr); - text++; - continue; - } - - if (win->x_col == COLS-1) { - /* check for wraparound */ - xscroll(win, 0); - } - - if (*text < ' ' && *text != '\t') { - waddch(win->x_win, '^'); - getyx(win->x_win, win->x_line, win->x_col); - - if (win->x_col == COLS-1) { - /* check for wraparound */ - xscroll(win, 0); - } - - cch = (*text & 63) + 64; - waddch(win->x_win, cch); - } else { - waddch(win->x_win, *text); - } - - getyx(win->x_win, win->x_line, win->x_col); - text++; - - } -wrefresh(win->x_win); + wrefresh(win->x_win); } /* -* Read the character at the indicated position in win -*/ + * Read the character at the indicated position in win + */ readwin(win, line, col) -WINDOW *win; + WINDOW *win; { -int oldline, oldcol; -register int c; - -getyx(win, oldline, oldcol); -wmove(win, line, col); -c = winch(win); -wmove(win, oldline, oldcol); -return(c); + int oldline, oldcol; + register int c; + + getyx(win, oldline, oldcol); + wmove(win, line, col); + c = winch(win); + wmove(win, oldline, oldcol); + return (c); } /* -* Scroll a window, blanking out the line following the current line -* so that the current position is obvious -*/ - + * Scroll a window, blanking out the line following the current line + * so that the current position is obvious + */ xscroll(win, flag) -register xwin_t *win; -int flag; + register xwin_t *win; + int flag; { - if (flag == -1) { - wmove(win->x_win, 0, 0); - win->x_line = 0; + + if (flag == -1) { + wmove(win->x_win, 0, 0); + win->x_line = 0; + win->x_col = 0; + return; + } + win->x_line = (win->x_line + 1) % win->x_nlines; win->x_col = 0; - return; - } - win->x_line = (win->x_line + 1) % win->x_nlines; - win->x_col = 0; - wmove(win->x_win, win->x_line, win->x_col); - wclrtoeol(win->x_win); - wmove(win->x_win, (win->x_line + 1) % win->x_nlines, win->x_col); - wclrtoeol(win->x_win); - wmove(win->x_win, win->x_line, win->x_col); + wmove(win->x_win, win->x_line, win->x_col); + wclrtoeol(win->x_win); + wmove(win->x_win, (win->x_line + 1) % win->x_nlines, win->x_col); + wclrtoeol(win->x_win); + wmove(win->x_win, win->x_line, win->x_col); }