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

#include "pdcos2.h"

RCSID("$Id: pdcsetsc.c,v 1.44 2008/07/14 04:24:51 wmcbrine Exp $")

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

  Name:                                                         pdcsetsc

  Synopsis:
        int PDC_set_blink(bool blinkon);
        void PDC_set_title(const char *title);

  Description:
        PDC_set_blink() toggles whether the A_BLINK attribute sets an
        actual blink mode (TRUE), or sets the background color to high
        intensity (FALSE). The default is platform-dependent (FALSE in
        most cases). It returns OK if it could set the state to match 
        the given parameter, ERR otherwise. Current platforms also 
        adjust the value of COLORS according to this function -- 16 for 
        FALSE, and 8 for TRUE.

        PDC_set_title() sets the title of the window in which the curses
        program is running. This function may not do anything on some
        platforms. (Currently it only works in Win32 and X11.)

  Portability                                X/Open    BSD    SYS V
        PDC_set_blink                           -       -       -
        PDC_set_title                           -       -       -

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

int PDC_curs_set(int visibility)
{
#ifndef EMXVIDEO
    VIOCURSORINFO pvioCursorInfo;
#endif
    int ret_vis, hidden = 0, start = 0, end = 0;

    PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));

    ret_vis = SP->visibility;
    SP->visibility = visibility;

    switch(visibility)
    {
    case 0:     /* invisible */
#ifdef EMXVIDEO
        start = end = 0;
#else
        start = pdc_font / 4;
        end = pdc_font;
        hidden = -1;
#endif
        break;

    case 2:     /* highly visible */
        start = 2;      /* almost full-height block */
        end = pdc_font - 1;
        break;

    default:    /* normal visibility */
        start = (SP->orig_cursor >> 8) & 0xff;
        end = SP->orig_cursor & 0xff;
    }

#ifdef EMXVIDEO
    if (!visibility)
        v_hidecursor();
    else
        v_ctype(start, end);
#else
    pvioCursorInfo.yStart = (USHORT)start;
    pvioCursorInfo.cEnd = (USHORT)end;
    pvioCursorInfo.cx = (USHORT)1;
    pvioCursorInfo.attr = hidden;
    VioSetCurType((PVIOCURSORINFO)&pvioCursorInfo, 0);
#endif
    return ret_vis;
}

void PDC_set_title(const char *title)
{
    PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
}

int PDC_set_blink(bool blinkon)
{
#ifndef EMXVIDEO
    USHORT statebuf[3], result;

    statebuf[0] = 6;    /* length */
    statebuf[1] = 2;    /* blink/intensity */
    statebuf[2] = !blinkon;

    result = VioSetState(&statebuf, 0);
    VioGetState(&statebuf, 0);  /* needed? */

    if (pdc_color_started)
        COLORS = statebuf[2] ? 16 : 8;

    return (result == 0) ? OK : ERR;
#else
    if (pdc_color_started)
        COLORS = 16;

    return blinkon ? ERR : 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