nuttx-apps/graphics/pdcurs34/pdcurses/pdc_terminfo.c

280 lines
7.1 KiB
C
Raw Normal View History

/****************************************************************************
* apps/graphics/pdcurses/pdc_terminfo.c
* Public Domain Curses
* RCSID("$Id: terminfo.c,v 1.37 2008/07/21 12:29:20 wmcbrine Exp $")
*
* Copyright (C) 2017 Gregory Nutt. All rights reserved.
* Adapted by: Gregory Nutt <gnutt@nuttx.org>
*
* Adapted from the original public domain pdcurses by Gregory Nutt and
* released as part of NuttX under the 3-clause BSD license:
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/* Name: terminfo
*
* Synopsis:
* int mvcur(int oldrow, int oldcol, int newrow, int newcol);
* int vidattr(chtype attr);
* int vid_attr(attr_t attr, short color_pair, void *opt);
* int vidputs(chtype attr, int (*putfunc)(int));
* int vid_puts(attr_t attr, short color_pair, void *opt,
* int (*putfunc)(int));
*
* int del_curterm(TERMINAL *);
* int putp(const char *);
* int restartterm(const char *, int, int *);
* TERMINAL *set_curterm(TERMINAL *);
* int setterm(const char *term);
* int setupterm(const char *, int, int *);
* int tgetent(char *, const char *);
* int tgetflag(const char *);
* int tgetnum(const char *);
* char *tgetstr(const char *, char **);
* char *tgoto(const char *, int, int);
* int tigetflag(const char *);
* int tigetnum(const char *);
* char *tigetstr(const char *);
* char *tparm(const char *,long, long, long, long, long, long,
* long, long, long);
* int tputs(const char *, int, int (*)(int));
*
* Description:
* mvcur() lets you move the physical cursor without updating any
* window cursor positions. It returns OK or ERR.
*
* The rest of these functions are currently implemented as stubs,
* returning the appropriate errors and doing nothing else.
*
* Portability X/Open BSD SYS V
* mvcur Y Y Y
*/
/****************************************************************************
* Included Files
****************************************************************************/
#include <stdlib.h>
#include "term.h"
#include "curspriv.h"
/****************************************************************************
* Public Data
****************************************************************************/
#ifndef CONFIG_PDCURSES_MULTITHREAD
TERMINAL *cur_term = NULL;
#endif
/****************************************************************************
* Public Functions
****************************************************************************/
#ifdef CONFIG_PDCURSES_MULTITHREAD
void *pdc_alloc_term_ctx(void)
{
return (void *) zalloc(sizeof(TERMINAL));
}
#endif
int mvcur(int oldrow, int oldcol, int newrow, int newcol)
{
#ifdef CONFIG_PDCURSES_MULTITHREAD
FAR struct pdc_context_s *ctx = PDC_ctx();
#endif
PDC_LOG(("mvcur() - called: oldrow %d oldcol %d newrow %d newcol %d\n",
oldrow, oldcol, newrow, newcol));
if ((newrow >= LINES) || (newcol >= COLS) || (newrow < 0) || (newcol < 0))
{
return ERR;
}
PDC_gotoyx(newrow, newcol);
SP->cursrow = newrow;
SP->curscol = newcol;
return OK;
}
int vidattr(chtype attr)
{
PDC_LOG(("vidattr() - called: attr %d\n", attr));
return ERR;
}
int vid_attr(attr_t attr, short color_pair, void *opt)
{
PDC_LOG(("vid_attr() - called\n"));
return ERR;
}
int vidputs(chtype attr, int (*putfunc) (int))
{
PDC_LOG(("vidputs() - called: attr %d\n", attr));
return ERR;
}
int vid_puts(attr_t attr, short color_pair, void *opt, int (*putfunc) (int))
{
PDC_LOG(("vid_puts() - called\n"));
return ERR;
}
int del_curterm(TERMINAL * oterm)
{
PDC_LOG(("del_curterm() - called\n"));
return ERR;
}
int putp(const char *str)
{
PDC_LOG(("putp() - called: str %s\n", str));
return ERR;
}
int restartterm(const char *term, int filedes, int *errret)
{
PDC_LOG(("restartterm() - called\n"));
if (errret)
{
*errret = -1;
}
return ERR;
}
TERMINAL *set_curterm(TERMINAL * nterm)
{
PDC_LOG(("set_curterm() - called\n"));
return (TERMINAL *) NULL;
}
int setterm(const char *term)
{
PDC_LOG(("setterm() - called\n"));
return ERR;
}
int setupterm(const char *term, int filedes, int *errret)
{
PDC_LOG(("setupterm() - called\n"));
if (errret)
{
*errret = -1;
}
else
{
fprintf(stderr, "There is no terminfo database\n");
}
return ERR;
}
int tgetent(char *bp, const char *name)
{
PDC_LOG(("tgetent() - called: name %s\n", name));
return ERR;
}
int tgetflag(const char *id)
{
PDC_LOG(("tgetflag() - called: id %s\n", id));
return ERR;
}
int tgetnum(const char *id)
{
PDC_LOG(("tgetnum() - called: id %s\n", id));
return ERR;
}
char *tgetstr(const char *id, char **area)
{
PDC_LOG(("tgetstr() - called: id %s\n", id));
return (char *)NULL;
}
char *tgoto(const char *cap, int col, int row)
{
PDC_LOG(("tgoto() - called\n"));
return (char *)NULL;
}
int tigetflag(const char *capname)
{
PDC_LOG(("tigetflag() - called: capname %s\n", capname));
return -1;
}
int tigetnum(const char *capname)
{
PDC_LOG(("tigetnum() - called: capname %s\n", capname));
return -2;
}
char *tigetstr(const char *capname)
{
PDC_LOG(("tigetstr() - called: capname %s\n", capname));
return (char *)(-1);
}
char *tparm(const char *cap, long p1, long p2, long p3, long p4,
long p5, long p6, long p7, long p8, long p9)
{
PDC_LOG(("tparm() - called: cap %s\n", cap));
return (char *)NULL;
}
int tputs(const char *str, int affcnt, int (*putfunc) (int))
{
PDC_LOG(("tputs() - called\n"));
return ERR;
}