[BACK]Return to clrtoeol.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libcurses

Annotation of src/lib/libcurses/clrtoeol.c, Revision 1.34

1.34    ! blymn       1: /*     $NetBSD: clrtoeol.c,v 1.33 2022/01/25 03:05:06 blymn Exp $      */
1.8       mikel       2:
1.1       cgd         3: /*
1.7       cgd         4:  * Copyright (c) 1981, 1993, 1994
1.5       cgd         5:  *     The Regents of the University of California.  All rights reserved.
1.1       cgd         6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
1.17      agc        15:  * 3. Neither the name of the University nor the names of its contributors
1.1       cgd        16:  *    may be used to endorse or promote products derived from this software
                     17:  *    without specific prior written permission.
                     18:  *
                     19:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     20:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     21:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     22:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     23:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     24:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     25:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     26:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     27:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     28:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     29:  * SUCH DAMAGE.
                     30:  */
                     31:
1.8       mikel      32: #include <sys/cdefs.h>
1.1       cgd        33: #ifndef lint
1.8       mikel      34: #if 0
1.7       cgd        35: static char sccsid[] = "@(#)clrtoeol.c 8.2 (Berkeley) 5/4/94";
1.8       mikel      36: #else
1.34    ! blymn      37: __RCSID("$NetBSD: clrtoeol.c,v 1.33 2022/01/25 03:05:06 blymn Exp $");
1.8       mikel      38: #endif
1.10      mrg        39: #endif                         /* not lint */
1.1       cgd        40:
1.23      blymn      41: #include <stdlib.h>
1.7       cgd        42: #include "curses.h"
1.11      blymn      43: #include "curses_private.h"
1.1       cgd        44:
1.12      blymn      45: #ifndef _CURSES_USE_MACROS
                     46:
                     47: /*
                     48:  * clrtoeol --
                     49:  *     Clear up to the end of line.
                     50:  */
                     51: int
                     52: clrtoeol(void)
                     53: {
                     54:        return wclrtoeol(stdscr);
                     55: }
                     56:
                     57: #endif
1.15      blymn      58:
1.1       cgd        59: /*
1.4       mycroft    60:  * wclrtoeol --
                     61:  *     Clear up to the end of line.
1.1       cgd        62:  */
1.4       mycroft    63: int
1.12      blymn      64: wclrtoeol(WINDOW *win)
1.4       mycroft    65: {
1.10      mrg        66:        int     minx, x, y;
1.9       perry      67:        __LDATA *end, *maxx, *sp;
1.29      roy        68:        wchar_t bch;
1.31      uwe        69:        attr_t  battr;
                     70:
                     71:        bch = win->bch;
                     72:        if (win != curscr)
                     73:                battr = win->battr & __ATTRIBUTES;
                     74:        else
                     75:                battr = 0;
1.1       cgd        76:
1.5       cgd        77:        y = win->cury;
                     78:        x = win->curx;
1.25      roy        79:        if (win->alines[y]->flags & __ISPASTEOL) {
1.5       cgd        80:                if (y < win->maxy - 1) {
1.25      roy        81:                        win->alines[y]->flags &= ~__ISPASTEOL;
1.5       cgd        82:                        y++;
                     83:                        x = 0;
1.16      jdc        84:                        win->cury = y;
                     85:                        win->curx = x;
1.5       cgd        86:                } else
1.28      roy        87:                        return OK;
1.5       cgd        88:        }
1.25      roy        89:        end = &win->alines[y]->line[win->maxx];
1.5       cgd        90:        minx = -1;
1.25      roy        91:        maxx = &win->alines[y]->line[x];
1.30      roy        92:
1.29      roy        93:        for (sp = maxx; sp < end; sp++) {
1.31      uwe        94:                if (!(__NEED_ERASE(sp, bch, battr)))
1.29      roy        95:                        continue;
1.31      uwe        96:
1.29      roy        97:                maxx = sp;
                     98:                if (minx == -1)
                     99:                        minx = (int)(sp - win->alines[y]->line);
1.31      uwe       100:
1.29      roy       101:                sp->ch = bch;
1.31      uwe       102:                sp->attr = battr | (sp->attr & __ALTCHARSET);
1.23      blymn     103: #ifdef HAVE_WCHAR
1.29      roy       104:                if (_cursesi_copy_nsp(win->bnsp, sp) == ERR)
                    105:                        return ERR;
1.33      blymn     106:                sp->wcols = 1;
1.29      roy       107: #endif
                    108:        }
1.30      roy       109:
1.23      blymn     110:        __CTRACE(__CTRACE_ERASE, "CLRTOEOL: y = %d, minx = %d, maxx = %d, "
1.22      jdc       111:            "firstch = %d, lastch = %d\n",
1.28      roy       112:            y, minx, (int)(maxx - win->alines[y]->line),
1.25      roy       113:            *win->alines[y]->firstchp, *win->alines[y]->lastchp);
1.4       mycroft   114:        /* Update firstch and lastch for the line. */
1.28      roy       115:        __touchline(win, y, x, (int)win->maxx - 1);
1.27      roy       116:        __sync(win);
                    117:        return OK;
1.1       cgd       118: }

CVSweb <webmaster@jp.NetBSD.org>