* configure.in: Remove test for SCO UNIX. Remove all references
to SCO_FLAVOR everywhere. SCO flavor is rather unsavory now.
Этот коммит содержится в:
родитель
82f9de15c0
Коммит
5b2bd08768
@ -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
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
|
||||
|
||||
|
||||
|
36
src/cmd.c
36
src/cmd.c
@ -1205,52 +1205,36 @@ char *
|
||||
get_random_hint (int force)
|
||||
{
|
||||
char *data, *result, *eol;
|
||||
int len;
|
||||
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 ("");
|
||||
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;
|
||||
|
||||
for (;start; start--){
|
||||
if (data [start] == '\n'){
|
||||
|
||||
for (; start; start--) {
|
||||
if (data[start] == '\n') {
|
||||
start++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
eol = strchr (&data [start], '\n');
|
||||
eol = strchr (&data[start], '\n');
|
||||
if (eol)
|
||||
*eol = 0;
|
||||
result = g_strdup (&data [start]);
|
||||
result = g_strdup (&data[start]);
|
||||
g_free (data);
|
||||
return result;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
121
src/utilunix.c
121
src/utilunix.c
@ -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;
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user