- Resolve conflicts
- Our changes in lib_termcap.c is now merged in upstream
This commit is contained in:
parent
45ed6d05ba
commit
4454585cdd
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=174998
@ -1,5 +1,5 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Copyright (c) 1998,2000,2002 Free Software Foundation, Inc. *
|
* Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. *
|
||||||
* *
|
* *
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||||
* copy of this software and associated documentation files (the *
|
* copy of this software and associated documentation files (the *
|
||||||
@ -29,6 +29,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
|
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
|
||||||
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
|
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
|
||||||
|
* and: Thomas E. Dickey 1996-on *
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* $FreeBSD$ */
|
/* $FreeBSD$ */
|
||||||
@ -41,6 +42,9 @@
|
|||||||
#include <curses.priv.h>
|
#include <curses.priv.h>
|
||||||
#include <term.h> /* cur_term, pad_char */
|
#include <term.h> /* cur_term, pad_char */
|
||||||
#include <termcap.h> /* ospeed */
|
#include <termcap.h> /* ospeed */
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
#include <sys/param.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These systems use similar header files, which define B1200 as 1200, etc.,
|
* These systems use similar header files, which define B1200 as 1200, etc.,
|
||||||
@ -48,7 +52,7 @@
|
|||||||
* of the indices up to B115200 fit nicely in a 'short', allowing us to retain
|
* of the indices up to B115200 fit nicely in a 'short', allowing us to retain
|
||||||
* ospeed's type for compatibility.
|
* ospeed's type for compatibility.
|
||||||
*/
|
*/
|
||||||
#if defined(__NetBSD__) || defined(__OpenBSD__)
|
#if (defined(__FreeBSD__) && (__FreeBSD_version < 700000)) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||||||
#undef B0
|
#undef B0
|
||||||
#undef B50
|
#undef B50
|
||||||
#undef B75
|
#undef B75
|
||||||
@ -78,7 +82,7 @@
|
|||||||
#undef USE_OLD_TTY
|
#undef USE_OLD_TTY
|
||||||
#endif /* USE_OLD_TTY */
|
#endif /* USE_OLD_TTY */
|
||||||
|
|
||||||
MODULE_ID("$Id: lib_baudrate.c,v 1.22 2002/01/19 23:07:53 Andrey.A.Chernov Exp $")
|
MODULE_ID("$Id: lib_baudrate.c,v 1.25 2007/10/20 15:00:41 Rong-En.Fan Exp $")
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* int
|
* int
|
||||||
@ -143,16 +147,20 @@ static struct speed const speeds[] =
|
|||||||
NCURSES_EXPORT(int)
|
NCURSES_EXPORT(int)
|
||||||
_nc_baudrate(int OSpeed)
|
_nc_baudrate(int OSpeed)
|
||||||
{
|
{
|
||||||
|
#if !USE_REENTRANT
|
||||||
static int last_OSpeed;
|
static int last_OSpeed;
|
||||||
static int last_baudrate;
|
static int last_baudrate;
|
||||||
|
#endif
|
||||||
|
|
||||||
int result;
|
int result = ERR;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
|
#if !USE_REENTRANT
|
||||||
if (OSpeed == last_OSpeed) {
|
if (OSpeed == last_OSpeed) {
|
||||||
result = last_baudrate;
|
result = last_baudrate;
|
||||||
} else {
|
}
|
||||||
result = ERR;
|
#endif
|
||||||
|
if (result == ERR) {
|
||||||
if (OSpeed >= 0) {
|
if (OSpeed >= 0) {
|
||||||
for (i = 0; i < SIZEOF(speeds); i++) {
|
for (i = 0; i < SIZEOF(speeds); i++) {
|
||||||
if (speeds[i].s == OSpeed) {
|
if (speeds[i].s == OSpeed) {
|
||||||
@ -161,7 +169,12 @@ _nc_baudrate(int OSpeed)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
last_baudrate = result;
|
#if !USE_REENTRANT
|
||||||
|
if (OSpeed == last_OSpeed) {
|
||||||
|
last_OSpeed = OSpeed;
|
||||||
|
last_baudrate = result;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
|
* Copyright (c) 1998-2002,2007 Free Software Foundation, Inc. *
|
||||||
* *
|
* *
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||||
* copy of this software and associated documentation files (the *
|
* copy of this software and associated documentation files (the *
|
||||||
@ -51,7 +51,7 @@
|
|||||||
#include <curses.priv.h>
|
#include <curses.priv.h>
|
||||||
#include <term.h> /* cur_term */
|
#include <term.h> /* cur_term */
|
||||||
|
|
||||||
MODULE_ID("$Id: lib_raw.c,v 1.13 2002/07/06 22:00:45 tom Exp $")
|
MODULE_ID("$Id: lib_raw.c,v 1.14 2007/09/29 21:50:22 tom Exp $")
|
||||||
|
|
||||||
#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
|
#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
|
||||||
#define _POSIX_SOURCE
|
#define _POSIX_SOURCE
|
||||||
@ -71,8 +71,8 @@ MODULE_ID("$Id: lib_raw.c,v 1.13 2002/07/06 22:00:45 tom Exp $")
|
|||||||
#define COOKED_INPUT (IXON|BRKINT|PARMRK)
|
#define COOKED_INPUT (IXON|BRKINT|PARMRK)
|
||||||
|
|
||||||
#ifdef TRACE
|
#ifdef TRACE
|
||||||
#define BEFORE(N) if (_nc_tracing&TRACE_BITS) _tracef("%s before bits: %s", N, _nc_tracebits())
|
#define BEFORE(N) if (USE_TRACEF(TRACE_BITS)) _nc_locked_tracef("%s before bits: %s", N, _nc_tracebits())
|
||||||
#define AFTER(N) if (_nc_tracing&TRACE_BITS) _tracef("%s after bits: %s", N, _nc_tracebits())
|
#define AFTER(N) if (USE_TRACEF(TRACE_BITS)) _nc_locked_tracef("%s after bits: %s", N, _nc_tracebits())
|
||||||
#else
|
#else
|
||||||
#define BEFORE(s)
|
#define BEFORE(s)
|
||||||
#define AFTER(s)
|
#define AFTER(s)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. *
|
* Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. *
|
||||||
* *
|
* *
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||||
* copy of this software and associated documentation files (the *
|
* copy of this software and associated documentation files (the *
|
||||||
@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
#include <term_entry.h>
|
#include <term_entry.h>
|
||||||
|
|
||||||
MODULE_ID("$Id: lib_termcap.c,v 1.58 2006/09/02 19:39:46 Miroslav.Lichvar Exp $")
|
MODULE_ID("$Id: lib_termcap.c,v 1.61 2007/06/02 19:36:03 tom Exp $")
|
||||||
|
|
||||||
NCURSES_EXPORT_VAR(char *) UP = 0;
|
NCURSES_EXPORT_VAR(char *) UP = 0;
|
||||||
NCURSES_EXPORT_VAR(char *) BC = 0;
|
NCURSES_EXPORT_VAR(char *) BC = 0;
|
||||||
@ -56,21 +56,15 @@ NCURSES_EXPORT_VAR(char *) BC = 0;
|
|||||||
extern char _nc_termcap[]; /* buffer to copy out */
|
extern char _nc_termcap[]; /* buffer to copy out */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct {
|
#define MyCache _nc_globals.tgetent_cache
|
||||||
long sequence;
|
#define CacheInx _nc_globals.tgetent_index
|
||||||
char *fix_sgr0; /* this holds the filtered sgr0 string */
|
#define CacheSeq _nc_globals.tgetent_sequence
|
||||||
char *last_bufp; /* help with fix_sgr0 leak */
|
|
||||||
TERMINAL *last_term;
|
|
||||||
} CACHE;
|
|
||||||
|
|
||||||
#define MAX_CACHE 4
|
#define FIX_SGR0 MyCache[CacheInx].fix_sgr0
|
||||||
static CACHE cache[MAX_CACHE];
|
#define LAST_TRM MyCache[CacheInx].last_term
|
||||||
static int in_cache = 0;
|
#define LAST_BUF MyCache[CacheInx].last_bufp
|
||||||
|
#define LAST_USE MyCache[CacheInx].last_used
|
||||||
#define FIX_SGR0 cache[in_cache].fix_sgr0
|
#define LAST_SEQ MyCache[CacheInx].sequence
|
||||||
#define LAST_TRM cache[in_cache].last_term
|
|
||||||
#define LAST_BUF cache[in_cache].last_bufp
|
|
||||||
#define LAST_SEQ cache[in_cache].sequence
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
*
|
*
|
||||||
@ -90,8 +84,6 @@ static int in_cache = 0;
|
|||||||
NCURSES_EXPORT(int)
|
NCURSES_EXPORT(int)
|
||||||
tgetent(char *bufp, const char *name)
|
tgetent(char *bufp, const char *name)
|
||||||
{
|
{
|
||||||
static long sequence;
|
|
||||||
|
|
||||||
int errcode;
|
int errcode;
|
||||||
int n;
|
int n;
|
||||||
bool found_cache = FALSE;
|
bool found_cache = FALSE;
|
||||||
@ -106,11 +98,17 @@ tgetent(char *bufp, const char *name)
|
|||||||
* caller, but if tgetent() is called with the same buffer, that is
|
* caller, but if tgetent() is called with the same buffer, that is
|
||||||
* good enough, since the previous data would be invalidated by the
|
* good enough, since the previous data would be invalidated by the
|
||||||
* current call.
|
* current call.
|
||||||
|
*
|
||||||
|
* bufp may be a null pointer, e.g., GNU termcap. That allocates data,
|
||||||
|
* which is good until the next tgetent() call. The conventional termcap
|
||||||
|
* is inconvenient because of the fixed buffer size, but because it uses
|
||||||
|
* caller-supplied buffers, can have multiple terminal descriptions in
|
||||||
|
* use at a given time.
|
||||||
*/
|
*/
|
||||||
for (n = 0; n < MAX_CACHE; ++n) {
|
for (n = 0; n < TGETENT_MAX; ++n) {
|
||||||
bool same_result = (bufp != 0 && cache[n].last_bufp == bufp);
|
bool same_result = (MyCache[n].last_used && MyCache[n].last_bufp == bufp);
|
||||||
if (same_result) {
|
if (same_result) {
|
||||||
in_cache = n;
|
CacheInx = n;
|
||||||
if (FIX_SGR0 != 0) {
|
if (FIX_SGR0 != 0) {
|
||||||
FreeAndNull(FIX_SGR0);
|
FreeAndNull(FIX_SGR0);
|
||||||
}
|
}
|
||||||
@ -120,10 +118,10 @@ tgetent(char *bufp, const char *name)
|
|||||||
if (LAST_TRM != 0 && LAST_TRM != cur_term) {
|
if (LAST_TRM != 0 && LAST_TRM != cur_term) {
|
||||||
TERMINAL *trm = LAST_TRM;
|
TERMINAL *trm = LAST_TRM;
|
||||||
del_curterm(LAST_TRM);
|
del_curterm(LAST_TRM);
|
||||||
for (in_cache = 0; in_cache < MAX_CACHE; ++in_cache)
|
for (CacheInx = 0; CacheInx < TGETENT_MAX; ++CacheInx)
|
||||||
if (LAST_TRM == trm)
|
if (LAST_TRM == trm)
|
||||||
LAST_TRM = 0;
|
LAST_TRM = 0;
|
||||||
in_cache = n;
|
CacheInx = n;
|
||||||
}
|
}
|
||||||
found_cache = TRUE;
|
found_cache = TRUE;
|
||||||
break;
|
break;
|
||||||
@ -132,15 +130,15 @@ tgetent(char *bufp, const char *name)
|
|||||||
if (!found_cache) {
|
if (!found_cache) {
|
||||||
int best = 0;
|
int best = 0;
|
||||||
|
|
||||||
for (in_cache = 0; in_cache < MAX_CACHE; ++in_cache) {
|
for (CacheInx = 0; CacheInx < TGETENT_MAX; ++CacheInx) {
|
||||||
if (LAST_SEQ < cache[best].sequence) {
|
if (LAST_SEQ < MyCache[best].sequence) {
|
||||||
best = in_cache;
|
best = CacheInx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
in_cache = best;
|
CacheInx = best;
|
||||||
}
|
}
|
||||||
LAST_TRM = cur_term;
|
LAST_TRM = cur_term;
|
||||||
LAST_SEQ = ++sequence;
|
LAST_SEQ = ++CacheSeq;
|
||||||
|
|
||||||
PC = 0;
|
PC = 0;
|
||||||
UP = 0;
|
UP = 0;
|
||||||
@ -170,6 +168,7 @@ tgetent(char *bufp, const char *name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
LAST_BUF = bufp;
|
LAST_BUF = bufp;
|
||||||
|
LAST_USE = TRUE;
|
||||||
|
|
||||||
(void) baudrate(); /* sets ospeed as a side-effect */
|
(void) baudrate(); /* sets ospeed as a side-effect */
|
||||||
|
|
||||||
@ -298,9 +297,10 @@ tgetstr(NCURSES_CONST char *id, char **area)
|
|||||||
NCURSES_EXPORT(void)
|
NCURSES_EXPORT(void)
|
||||||
_nc_tgetent_leaks(void)
|
_nc_tgetent_leaks(void)
|
||||||
{
|
{
|
||||||
for (in_cache = 0; in_cache < MAX_CACHE; ++in_cache) {
|
for (CacheInx = 0; CacheInx < TGETENT_MAX; ++CacheInx) {
|
||||||
FreeIfNeeded(FIX_SGR0);
|
FreeIfNeeded(FIX_SGR0);
|
||||||
del_curterm(LAST_TRM);
|
if (LAST_TRM != 0)
|
||||||
|
del_curterm(LAST_TRM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user