xaizek / vifm-pdcurses (License: mostly public domain) (since 2019-03-20)
PDCurses 3.4 with vifm-specific patches applied (a couple were upstreamed)
<root> / pdcurses / inch.c (7347e740325c7df94ea935536a0537d94d236b4b) (3,163B) (mode 100644) [raw]
/* Public Domain Curses */

#include <curspriv.h>

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

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

  Name:                                                         inch

  Synopsis:
        chtype inch(void);
        chtype winch(WINDOW *win);
        chtype mvinch(int y, int x);
        chtype mvwinch(WINDOW *win, int y, int x);

        int in_wch(cchar_t *wcval);
        int win_wch(WINDOW *win, cchar_t *wcval);
        int mvin_wch(int y, int x, cchar_t *wcval);
        int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval);

  Description:
        The inch() functions retrieve the character and attribute from 
        the current or specified window position, in the form of a 
        chtype. If a NULL window is specified, (chtype)ERR is returned.

        The in_wch() functions are the wide-character versions; instead 
        of returning a chtype, they store a cchar_t at the address 
        specified by wcval, and return OK or ERR. (No value is stored 
        when ERR is returned.) Note that in PDCurses, chtype and cchar_t 
        are the same.

  Portability                                X/Open    BSD    SYS V
        inch                                    Y       Y       Y
        winch                                   Y       Y       Y
        mvinch                                  Y       Y       Y
        mvwinch                                 Y       Y       Y
        in_wch                                  Y
        win_wch                                 Y
        mvin_wch                                Y
        mvwin_wch                               Y

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

chtype winch(WINDOW *win)
{
    PDC_LOG(("winch() - called\n"));

    if (!win)
        return (chtype)ERR;

    return win->_y[win->_cury][win->_curx];
}

chtype inch(void)
{
    PDC_LOG(("inch() - called\n"));

    return winch(stdscr);
}

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

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

    return stdscr->_y[stdscr->_cury][stdscr->_curx];
}

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

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

    return win->_y[win->_cury][win->_curx];
}

#ifdef PDC_WIDE
int win_wch(WINDOW *win, cchar_t *wcval)
{
    PDC_LOG(("win_wch() - called\n"));

    if (!win || !wcval)
        return ERR;

    *wcval = win->_y[win->_cury][win->_curx];

    return OK;
}

int in_wch(cchar_t *wcval)
{
    PDC_LOG(("in_wch() - called\n"));

    return win_wch(stdscr, wcval);
}

int mvin_wch(int y, int x, cchar_t *wcval)
{
    PDC_LOG(("mvin_wch() - called\n"));

    if (!wcval || (move(y, x) == ERR))
        return ERR;

    *wcval = stdscr->_y[stdscr->_cury][stdscr->_curx];

    return OK;
}

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

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

    *wcval = win->_y[win->_cury][win->_curx];

    return OK;
}
#endif
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm-pdcurses

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm-pdcurses

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master