1
1

* configure.in: Remove test for SCO UNIX. Remove all references

to SCO_FLAVOR everywhere.  SCO flavor is rather unsavory now.
Этот коммит содержится в:
Pavel Roskin 2003-06-18 04:47:17 +00:00
родитель 82f9de15c0
Коммит 5b2bd08768
11 изменённых файлов: 24 добавлений и 421 удалений

Просмотреть файл

@ -1,3 +1,8 @@
2003-06-18 Pavel Roskin <proski@gnu.org>
* configure.in: Remove test for SCO UNIX. Remove all references
to SCO_FLAVOR everywhere. SCO flavor is rather unsavory now.
2003-06-06 Pavel Roskin <proski@gnu.org>
* lib/mc.ext.in: Don't run compressed logs from /var/log through

1
NEWS
Просмотреть файл

@ -3,6 +3,7 @@ After version 4.6.0.
Add --with-glib12 option to configure to force using glib 1.2.x.
libX11 is loaded dynamically using gmodule if possible.
Screen saving is now supported on FreeBSD console.
Support for SCO UNIX has been removed.
User is warned if one mc is run from another.
Version 4.6.0.

Просмотреть файл

@ -155,10 +155,6 @@ aux*)
LIBS="$LIBS -lposix"
AC_DEFINE(_POSIX_SOURCE)
;;
sco*)
AC_DEFINE(SCO_FLAVOR, 1, [Define if you want to turn on SCO-specific code])
AC_DEFINE(_SVID3, 1, [Needs to be defined on SCO])
;;
esac

Просмотреть файл

@ -1207,37 +1207,21 @@ get_random_hint (int force)
char *data, *result, *eol;
int len;
int start;
/* Do not change hints more often than one minute */
#ifdef SCO_FLAVOR
static time_t last;
time_t now;
time (&now);
if (!force && (now - last) < 60)
return g_strdup ("");
last = now;
#else
static int last_sec;
static struct timeval tv;
/* Do not change hints more often than one minute */
gettimeofday (&tv, NULL);
if (!force && !(tv.tv_sec > last_sec + 60))
return g_strdup ("");
last_sec = tv.tv_sec;
#endif /* !SCO_FLAVOR */
data = load_mc_home_file (MC_HINT, NULL);
if (!data)
return 0;
#ifdef SCO_FLAVOR
srand ((short) now);
#else
srand (tv.tv_sec);
#endif /* !SCO_FLAVOR */
/* get a random entry */
srand (tv.tv_sec);
len = strlen (data);
start = rand () % len;

Просмотреть файл

@ -24,15 +24,6 @@
#include <signal.h>
#include <stdio.h>
#ifdef SCO_FLAVOR
#include <sys/types.h>
#include <sys/vid.h>
#include <sys/console.h>
#include <sys/vtkd.h>
#include <memory.h>
#include <signal.h>
#endif /* SCO_FLAVOR */
#ifdef __FreeBSD__
#include <sys/consio.h>
#include <sys/ioctl.h>
@ -194,189 +185,6 @@ handle_console_linux (unsigned char action)
}
}
#elif defined(SCO_FLAVOR)
/*
** SCO console save/restore handling routines
** Copyright (C) 1997 Alex Tkachenko <alex@bcs.zaporizhzhe.ua>
*/
#include "color.h"
static int FD_OUT = 2;
static unsigned short *vidbuf = NULL;
static unsigned short *screen = NULL;
static int height = 0, width = 0, saved_attr = 0;
static int mode = 0;
#define SIG_ACQUIRE 21 /* originally: handset, line status change (?) */
static int
vt_active ()
{
struct vid_info vi;
int adapter = ioctl (FD_OUT, CONS_CURRENT, 0);
vi.size = sizeof (struct vid_info);
ioctl (FD_OUT, CONS_GETINFO, &(vi));
return (vi.m_num == ioctl (FD_OUT, CONSADP, adapter));
}
static void
console_acquire_vt ()
{
struct vt_mode smode;
signal (SIG_ACQUIRE, SIG_DFL);
smode.mode = VT_AUTO;
smode.waitv = smode.relsig = smode.acqsig = smode.frsig = 0;
ioctl (FD_OUT, VT_SETMODE, &smode);
ioctl (FD_OUT, VT_RELDISP, VT_ACKACQ);
}
static void
console_shutdown ()
{
if (!console_flag) {
return;
}
if (screen != NULL) {
g_free (screen);
}
console_flag = 0;
}
static void
console_save ()
{
struct m6845_info mi;
if (!console_flag) {
return;
}
if (!vt_active ()) {
struct vt_mode smode;
/*
** User switched out of our vt. Let's wait until we get SIG_ACQUIRE,
** otherwise we could save wrong screen image
*/
signal (SIG_ACQUIRE, console_acquire_vt);
smode.mode = VT_PROCESS;
smode.waitv = 0;
smode.waitv = smode.relsig = smode.acqsig = smode.frsig =
SIG_ACQUIRE;
ioctl (FD_OUT, VT_SETMODE, &smode);
pause ();
}
saved_attr = ioctl (FD_OUT, GIO_ATTR, 0);
vidbuf = (unsigned short *) ioctl (FD_OUT, MAPCONS, 0);
mi.size = sizeof (struct m6845_info);
ioctl (FD_OUT, CONS_6845INFO, &mi);
{
unsigned short *start = vidbuf + mi.screen_top;
memcpy (screen, start, width * height * 2);
}
write (FD_OUT, "\0337", 2); /* save cursor position */
}
static void
console_restore ()
{
struct m6845_info mi;
unsigned short *start;
if (!console_flag) {
return;
}
write (FD_OUT, "\033[2J", 4);
mi.size = sizeof (struct m6845_info);
ioctl (FD_OUT, CONS_6845INFO, &mi);
start = vidbuf + mi.screen_top;
memcpy (start, screen, width * height * 2);
write (FD_OUT, "\0338", 2); /* restore cursor position */
}
static void
console_init ()
{
struct vid_info vi;
int adapter = ioctl (FD_OUT, CONS_CURRENT, 0);
console_flag = 0;
if (adapter != -1) {
vi.size = sizeof (struct vid_info);
ioctl (FD_OUT, CONS_GETINFO, &(vi));
if (vt_active ()) {
console_flag = 1;
height = vi.mv_rsz;
width = vi.mv_csz;
screen = (unsigned short *) g_malloc (height * width * 2);
if (screen == NULL) {
console_shutdown ();
return;
}
console_save ();
mode = ioctl (FD_OUT, CONS_GET, 0);
ioctl (FD_OUT, MODESWITCH | mode, 0);
console_restore ();
}
}
}
static void
handle_console_sco (unsigned char action)
{
switch (action) {
case CONSOLE_INIT:
console_init ();
break;
case CONSOLE_DONE:
console_shutdown ();
break;
case CONSOLE_SAVE:
console_save ();
break;
case CONSOLE_RESTORE:
console_restore ();
break;
default:
/* Nothing */ ;
}
}
static void
show_console_contents_sco (int starty, unsigned char begin_line,
unsigned char end_line)
{
register int i, len = (end_line - begin_line) * width;
attrset (DEFAULT_COLOR);
for (i = 0; i < len; i++) {
if ((i % width) == 0)
move (starty + (i / width), 0);
addch ((unsigned char) screen[width * starty + i]);
}
}
#elif defined(__FreeBSD__)
/*
@ -566,8 +374,6 @@ show_console_contents (int starty, unsigned char begin_line,
show_console_contents_linux (starty, begin_line, end_line);
#elif defined (__FreeBSD__)
show_console_contents_freebsd (starty, begin_line, end_line);
#elif defined (SCO_FLAVOR)
show_console_contents_sco (starty, begin_line, end_line);
#else
console_flag = 0;
#endif
@ -583,7 +389,5 @@ handle_console (unsigned char action)
handle_console_linux (action);
#elif defined (__FreeBSD__)
handle_console_freebsd (action);
#elif defined (SCO_FLAVOR)
handle_console_sco (action);
#endif
}

Просмотреть файл

@ -315,13 +315,6 @@ get_file_type_local (char *filename, char *buf, int buflen)
if (read_bytes == 0)
buf[0] = 0;
pclose (f);
#ifdef SCO_FLAVOR
/*
** SCO 3.2 does has a buggy pclose(), so
** <command> become zombie (alex)
*/
waitpid (-1, NULL, WNOHANG);
#endif /* SCO_FLAVOR */
} else {
return -1;
}

Просмотреть файл

@ -728,7 +728,7 @@ static void
low_level_change_screen_size (void)
{
#if defined(HAVE_SLANG) || NCURSES_VERSION_MAJOR >= 4
#if defined TIOCGWINSZ && !defined SCO_FLAVOR
#if defined TIOCGWINSZ
struct winsize winsz;
winsz.ws_col = winsz.ws_row = 0;
@ -746,7 +746,7 @@ low_level_change_screen_size (void)
resize_subshell ();
#endif
}
#endif /* TIOCGWINSZ && !SCO_FLAVOR */
#endif /* TIOCGWINSZ */
#endif /* defined(HAVE_SLANG) || NCURSES_VERSION_MAJOR >= 4 */
}
@ -754,7 +754,7 @@ void
change_screen_size (void)
{
#if defined(HAVE_SLANG) || NCURSES_VERSION_MAJOR >= 4
#if defined TIOCGWINSZ && !defined SCO_FLAVOR
#if defined TIOCGWINSZ
#ifndef NCURSES_VERSION
mc_noraw_mode ();
@ -784,7 +784,7 @@ change_screen_size (void)
/* Now, force the redraw */
do_refresh ();
touchwin (stdscr);
#endif /* TIOCGWINSZ && !SCO_FLAVOR */
#endif /* TIOCGWINSZ */
#endif /* defined(HAVE_SLANG) || NCURSES_VERSION_MAJOR >= 4 */
winch_flag = 0;
}

Просмотреть файл

@ -415,11 +415,7 @@ void do_external_panelize (char *command)
} else {
cpanel->count = set_zero_dir (list);
}
#ifndef SCO_FLAVOR
if (pclose (external) < 0)
#else /* SCO_FLAVOR */
if (WEXITSTATUS(pclose (external)) < 0)
#endif /* SCO_FLAVOR */
message (0, _("External panelize"), _("Pipe close failed"));
close_error_pipe (0, 0);
try_to_select (cpanel, NULL);

Просмотреть файл

@ -626,7 +626,7 @@ int read_subshell_prompt (void)
/* Resize given terminal using TIOCSWINSZ, return ioctl() result */
static int resize_tty (int fd)
{
#if defined TIOCSWINSZ && !defined SCO_FLAVOR
#if defined TIOCSWINSZ
struct winsize tty_size;
tty_size.ws_row = LINES;
@ -1014,59 +1014,7 @@ static void synchronize (void)
/* pty opening functions */
#ifdef SCO_FLAVOR
/* SCO version of pty_open_master */
static int pty_open_master (char *pty_name)
{
int pty_master;
int num;
char *ptr;
strcpy (pty_name, "/dev/ptyp");
ptr = pty_name+9;
for (num=0;;num++)
{
g_snprintf(ptr, 9, "%d",num); /* surpriiise ... SCO lacks itoa() */
/* Try to open master */
if ((pty_master = open (pty_name, O_RDWR)) == -1) {
if (errno == ENOENT) /* Different from EIO */
return -1; /* Out of pty devices */
else
continue; /* Try next pty device */
}
pty_name [5] = 't'; /* Change "pty" to "tty" */
if (access (pty_name, 6)){
close (pty_master);
pty_name [5] = 'p';
continue;
}
return pty_master;
}
return -1; /* Ran out of pty devices */
}
/* SCO version of pty_open_slave */
static int pty_open_slave (const char *pty_name)
{
int pty_slave;
struct group *group_info = getgrnam ("terminal");
if (group_info != NULL)
{
/* The following two calls will only succeed if we are root */
/* [Commented out while permissions problem is investigated] */
/* chown (pty_name, getuid (), group_info->gr_gid); FIXME */
/* chmod (pty_name, S_IRUSR | S_IWUSR | S_IWGRP); FIXME */
}
if ((pty_slave = open (pty_name, O_RDWR)) == -1)
perror ("open (pty_name, O_RDWR)");
return pty_slave;
}
#elif HAVE_GRANTPT /* !HAVE_SCO */
#ifdef HAVE_GRANTPT
/* System V version of pty_open_master */
@ -1144,7 +1092,7 @@ static int pty_open_slave (const char *pty_name)
return pty_slave;
}
#else /* !HAVE_SCO && !HAVE_GRANTPT */
#else /* !HAVE_GRANTPT */
/* BSD version of pty_open_master */
static int pty_open_master (char *pty_name)
@ -1197,5 +1145,5 @@ static int pty_open_slave (const char *pty_name)
return pty_slave;
}
#endif /* !HAVE_SCO && !HAVE_GRANTPT */
#endif /* !HAVE_GRANTPT */
#endif /* HAVE_SUBSHELL_SUPPORT */

Просмотреть файл

@ -251,10 +251,6 @@ int my_system (int flags, const char *shell, const char *command)
sigaction (SIGQUIT, &save_quit, NULL);
sigaction (SIGTSTP, &save_stop, NULL);
#ifdef SCO_FLAVOR
waitpid(-1, NULL, WNOHANG);
#endif /* SCO_FLAVOR */
return WEXITSTATUS(status);
}
@ -587,9 +583,6 @@ int mc_doublepclose (int pipe, pid_t pid)
close (pipe);
waitpid (pid, &status, 0);
#ifdef SCO_FLAVOR
waitpid (-1, NULL, WNOHANG);
#endif /* SCO_FLAVOR */
sigaction (SIGINT, &save_intr, NULL);
sigaction (SIGQUIT, &save_quit, NULL);
sigaction (SIGTSTP, &save_stop, NULL);
@ -721,22 +714,6 @@ canonicalize_pathname (char *path)
return path;
}
#ifdef SCO_FLAVOR
int gettimeofday( struct timeval * tv, struct timezone * tz)
{
struct timeb tb;
struct tm * l;
ftime( &tb );
if (errno == EFAULT)
return -1;
l = localtime(&tb.time);
tv->tv_sec = l->tm_sec;
tv->tv_usec = (long) tb.millitm;
return 0;
}
#endif /* SCO_FLAVOR */
#ifdef HAVE_GET_PROCESS_STATS
# include <sys/procstats.h>
@ -809,101 +786,3 @@ putenv (const char *string)
}
#endif /* !HAVE_PUTENV */
#ifdef SCO_FLAVOR
/* Define this only for SCO */
#ifdef USE_NETCODE
#ifndef HAVE_SOCKETPAIR
/*
The code for s_pipe function is adapted from Section 7.9
of the "UNIX Network Programming" by W. Richard Stevens,
published by Prentice Hall, ISBN 0-13-949876-1
(c) 1990 by P T R Prentice Hall
It is used to implement socketpair function for SVR3 systems
that lack it.
*/
#include <sys/types.h>
#include <sys/stream.h> /* defines queue_t */
#include <stropts.h> /* defines struct strtdinsert */
#define SPX_DEVICE "/dev/spx"
#define S_PIPE_HANDLE_ERRNO 1
/* if the above is defined to 1, we will attempt to
save and restore errno to indicate failure
reason to the caller;
Please note that this will not work in environments
where errno is not just an integer
*/
#if S_PIPE_HANDLE_ERRNO
#include <errno.h>
/* This is for "extern int errno;" */
#endif
/* s_pipe returns 0 if OK, -1 on error */
/* two file descriptors are returned */
static int s_pipe(int fd[2])
{
struct strfdinsert ins; /* stream I_FDINSERT ioctl format */
queue_t *pointer;
#if S_PIPE_HANDLE_ERRNO
int err_save;
#endif
/*
* First open the stream clone device "dev/spx" twice,
* obtaining the two file descriptors
*/
if ( (fd[0] = open(SPX_DEVICE, O_RDWR)) < 0)
return -1;
if ( (fd[1] = open(SPX_DEVICE, O_RDWR)) < 0) {
#if S_PIPE_HANDLE_ERRNO
err_save = errno;
#endif
close(fd[0]);
#if S_PIPE_HANDLE_ERRNO
errno = err_save;
#endif
return -1;
}
/*
* Now link these two stream together with an I_FDINSERT ioctl.
*/
ins.ctlbuf.buf = (char *) &pointer; /* no control information, just the pointer */
ins.ctlbuf.maxlen = sizeof pointer;
ins.ctlbuf.len = sizeof pointer;
ins.databuf.buf = (char *) 0; /* no data to be sent */
ins.databuf.maxlen = 0;
ins.databuf.len = -1; /* magic: must be -1 rather than 0 for stream pipes */
ins.fildes = fd[1]; /* the fd to connect with fd[0] */
ins.flags = 0; /* nonpriority message */
ins.offset = 0; /* offset of pointer in control buffer */
if (ioctl(fd[0], I_FDINSERT, (char *) &ins) < 0) {
#if S_PIPE_HANDLE_ERRNO
err_save = errno;
#endif
close(fd[0]);
close(fd[1]);
#if S_PIPE_HANDLE_ERRNO
errno = err_save;
#endif
return -1;
}
/* all is OK if we came here, indicate success */
return 0;
}
int socketpair(int dummy1, int dummy2, int dummy3, int fd[2])
{
return s_pipe(fd);
}
#endif /* ifndef HAVE_SOCKETPAIR */
#endif /* ifdef USE_NETCODE */
#endif /* SCO_FLAVOR */

Просмотреть файл

@ -403,9 +403,6 @@ read_archive (int fstype, char *name, struct archive **pparc)
}
close_error_pipe (1, NULL);
#ifdef SCO_FLAVOR
waitpid (-1, NULL, WNOHANG);
#endif /* SCO_FLAVOR */
*pparc = current_archive;
g_free (buffer);
return 0;