pdcurses/delch.c

Wed, 27 Jan 2021 12:38:00 +0200

author
Teemu Piippo <teemu@hecknology.net>
date
Wed, 27 Jan 2021 12:38:00 +0200
changeset 173
248fba6d1e76
parent 97
2d43f05b284c
permissions
-rw-r--r--

added protocol5 branch's string reading function which seems to be more reliable

/* Public Domain Curses */

#include <curspriv.h>

RCSID("$Id: delch.c,v 1.33 2008/07/13 16:08:18 wmcbrine Exp $")

/*man-start**************************************************************

  Name:                                                         delch

  Synopsis:
        int delch(void);
        int wdelch(WINDOW *win);
        int mvdelch(int y, int x);
        int mvwdelch(WINDOW *win, int y, int x);

  Description:
        The character under the cursor in the window is deleted.  All
        characters to the right on the same line are moved to the left
        one position and the last character on the line is filled with
        a blank.  The cursor position does not change (after moving to
        y, x if coordinates are specified).

  Return Value:
        All functions return OK on success and ERR on error.

  Portability                                X/Open    BSD    SYS V
        delch                                   Y       Y       Y
        wdelch                                  Y       Y       Y
        mvdelch                                 Y       Y       Y
        mvwdelch                                Y       Y       Y

**man-end****************************************************************/

#include <string.h>

int wdelch(WINDOW *win)
{
    int y, x, maxx;
    chtype *temp1;

    PDC_LOG(("wdelch() - called\n"));

    if (!win)
        return ERR;

    y = win->_cury;
    x = win->_curx;
    maxx = win->_maxx - 1;
    temp1 = &win->_y[y][x];

    memmove(temp1, temp1 + 1, (maxx - x) * sizeof(chtype));

    /* wrs (4/10/93) account for window background */

    win->_y[y][maxx] = win->_bkgd;

    win->_lastch[y] = maxx;

    if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
        win->_firstch[y] = x;

    PDC_sync(win);

    return OK;
}

int delch(void)
{
    PDC_LOG(("delch() - called\n"));

    return wdelch(stdscr);
}

int mvdelch(int y, int x)
{
    PDC_LOG(("mvdelch() - called\n"));

    if (move(y, x) == ERR)
        return ERR;

    return wdelch(stdscr);
}

int mvwdelch(WINDOW *win, int y, int x)
{
    PDC_LOG(("mvwdelch() - called\n"));

    if (wmove(win, y, x) == ERR)
        return ERR;

    return wdelch(win);
}

mercurial