mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 12:32:40 +03:00
Reverted Enricos backport from master which removes accidentially slang1.x support
Enrico has accidentially removed the slang1.x support in mc-4.6 branch as this is a structural change which clearly doesn't belong into mc-4.6. Signed-off-by: Patrick Winnertz <winnie@debian.org>
This commit is contained in:
parent
c83e1995e4
commit
0c7d399300
@ -9,9 +9,6 @@
|
|||||||
|
|
||||||
2009-02-01 Enrico Weigelt, metux ITS <weigelt@metux.de>
|
2009-02-01 Enrico Weigelt, metux ITS <weigelt@metux.de>
|
||||||
|
|
||||||
* acinclude.m4: removed MC_SLANG_PRIVATE macro
|
|
||||||
* src/slint.c: removed HAVE_SLANG_PRIVATE conditional and
|
|
||||||
replaced SLang_getkey2(), SLang_input_pending2()
|
|
||||||
* src/util.c: fixed name_trunc() on NULL or empty parameters
|
* src/util.c: fixed name_trunc() on NULL or empty parameters
|
||||||
* src/achown.c: fixed unitialized var in init_chown_advanced()
|
* src/achown.c: fixed unitialized var in init_chown_advanced()
|
||||||
(patch from andrew_b)
|
(patch from andrew_b)
|
||||||
|
39
acinclude.m4
39
acinclude.m4
@ -298,6 +298,44 @@ AC_DEFUN([MC_USE_TERMCAP], [
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl Check if private functions are available for linking
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([MC_SLANG_PRIVATE], [
|
||||||
|
AC_CACHE_CHECK([if S-Lang exports private functions],
|
||||||
|
[mc_cv_slang_private], [
|
||||||
|
ac_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS -lslang"
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#ifdef HAVE_SLANG_SLANG_H
|
||||||
|
#include <slang/slang.h>
|
||||||
|
#else
|
||||||
|
#include <slang.h>
|
||||||
|
#endif
|
||||||
|
#if SLANG_VERSION >= 10000
|
||||||
|
extern unsigned int SLsys_getkey (void);
|
||||||
|
#else
|
||||||
|
extern unsigned int _SLsys_getkey (void);
|
||||||
|
#endif
|
||||||
|
], [
|
||||||
|
#if SLANG_VERSION >= 10000
|
||||||
|
_SLsys_getkey ();
|
||||||
|
#else
|
||||||
|
SLsys_getkey ();
|
||||||
|
#endif
|
||||||
|
],
|
||||||
|
[mc_cv_slang_private=yes],
|
||||||
|
[mc_cv_slang_private=no])
|
||||||
|
LIBS="$ac_save_LIBS"
|
||||||
|
])
|
||||||
|
|
||||||
|
if test x$mc_cv_slang_private = xyes; then
|
||||||
|
AC_DEFINE(HAVE_SLANG_PRIVATE, 1,
|
||||||
|
[Define if private S-Lang functions are available])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Check if the installed S-Lang library uses termcap
|
dnl Check if the installed S-Lang library uses termcap
|
||||||
dnl
|
dnl
|
||||||
@ -373,6 +411,7 @@ it's not fully supported yet])
|
|||||||
if test x$with_screen = xslang; then
|
if test x$with_screen = xslang; then
|
||||||
AC_DEFINE(HAVE_SYSTEM_SLANG, 1,
|
AC_DEFINE(HAVE_SYSTEM_SLANG, 1,
|
||||||
[Define to use S-Lang library installed on the system])
|
[Define to use S-Lang library installed on the system])
|
||||||
|
MC_SLANG_PRIVATE
|
||||||
screen_type=slang
|
screen_type=slang
|
||||||
screen_msg="S-Lang library (installed on the system)"
|
screen_msg="S-Lang library (installed on the system)"
|
||||||
else
|
else
|
||||||
|
64
src/slint.c
64
src/slint.c
@ -77,6 +77,66 @@ static int no_slang_delay;
|
|||||||
/* Forward declarations */
|
/* Forward declarations */
|
||||||
static void load_terminfo_keys (void);
|
static void load_terminfo_keys (void);
|
||||||
|
|
||||||
|
#ifndef HAVE_SLANG_PRIVATE
|
||||||
|
/* Private interfaces have been stripped, so we cannot use them */
|
||||||
|
#define SLang_getkey2() SLang_getkey()
|
||||||
|
#define SLang_input_pending2(s) SLang_input_pending(s)
|
||||||
|
#else
|
||||||
|
/* Copied from ../slang/slgetkey.c, removed the DEC_8Bit_HACK. */
|
||||||
|
extern unsigned char SLang_Input_Buffer [];
|
||||||
|
#if SLANG_VERSION >= 10000
|
||||||
|
extern unsigned int _SLsys_getkey (void);
|
||||||
|
extern int _SLsys_input_pending (int);
|
||||||
|
#else
|
||||||
|
extern unsigned int SLsys_getkey (void);
|
||||||
|
extern int SLsys_input_pending (int);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static unsigned int SLang_getkey2 (void)
|
||||||
|
{
|
||||||
|
unsigned int imax;
|
||||||
|
unsigned int ch;
|
||||||
|
|
||||||
|
if (SLang_Input_Buffer_Len)
|
||||||
|
{
|
||||||
|
ch = (unsigned int) *SLang_Input_Buffer;
|
||||||
|
SLang_Input_Buffer_Len--;
|
||||||
|
imax = SLang_Input_Buffer_Len;
|
||||||
|
|
||||||
|
memmove ((char *) SLang_Input_Buffer,
|
||||||
|
(char *) (SLang_Input_Buffer + 1), imax);
|
||||||
|
return(ch);
|
||||||
|
}
|
||||||
|
#if SLANG_VERSION >= 10000
|
||||||
|
else return(_SLsys_getkey ());
|
||||||
|
#else
|
||||||
|
else return(SLsys_getkey());
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int SLang_input_pending2 (int tsecs)
|
||||||
|
{
|
||||||
|
int n, i;
|
||||||
|
unsigned char c;
|
||||||
|
|
||||||
|
if (SLang_Input_Buffer_Len) return (int) SLang_Input_Buffer_Len;
|
||||||
|
#if SLANG_VERSION >= 10000
|
||||||
|
n = _SLsys_input_pending (tsecs);
|
||||||
|
#else
|
||||||
|
n = SLsys_input_pending (tsecs);
|
||||||
|
#endif
|
||||||
|
if (n <= 0) return 0;
|
||||||
|
|
||||||
|
i = SLang_getkey2 ();
|
||||||
|
if (i == SLANG_GETKEY_ERROR)
|
||||||
|
return 0; /* don't put crippled error codes into the input buffer */
|
||||||
|
c = (unsigned char)i;
|
||||||
|
SLang_ungetkey_string (&c, 1);
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
#endif /* HAVE_SLANG_PRIVATE */
|
||||||
|
|
||||||
/* Only done the first time */
|
/* Only done the first time */
|
||||||
void
|
void
|
||||||
slang_init (void)
|
slang_init (void)
|
||||||
@ -405,10 +465,10 @@ getch (void)
|
|||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
if (no_slang_delay)
|
if (no_slang_delay)
|
||||||
if (SLang_input_pending (0) == 0)
|
if (SLang_input_pending2 (0) == 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
c = SLang_getkey ();
|
c = SLang_getkey2 ();
|
||||||
if (c == SLANG_GETKEY_ERROR) {
|
if (c == SLANG_GETKEY_ERROR) {
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"SLang_getkey returned SLANG_GETKEY_ERROR\n"
|
"SLang_getkey returned SLANG_GETKEY_ERROR\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user