2024-02-12 16:09:10 +01:00
|
|
|
// SPDX-License-Identifier: 0BSD
|
|
|
|
|
2007-12-08 23:42:33 +01:00
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
/// \file private.h
|
2019-05-08 07:30:57 +02:00
|
|
|
/// \brief Common includes, definitions, and prototypes
|
2007-12-08 23:42:33 +01:00
|
|
|
//
|
2009-04-13 10:27:40 +02:00
|
|
|
// Author: Lasse Collin
|
2007-12-08 23:42:33 +01:00
|
|
|
//
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#include "sysdefs.h"
|
2009-01-07 17:41:15 +01:00
|
|
|
#include "mythread.h"
|
2011-04-12 11:42:37 +02:00
|
|
|
|
2009-01-31 10:01:48 +01:00
|
|
|
#include "lzma.h"
|
2007-12-08 23:42:33 +01:00
|
|
|
|
2008-11-19 19:46:52 +01:00
|
|
|
#include <sys/types.h>
|
2007-12-08 23:42:33 +01:00
|
|
|
#include <sys/stat.h>
|
2008-11-19 19:46:52 +01:00
|
|
|
#include <errno.h>
|
2007-12-08 23:42:33 +01:00
|
|
|
#include <signal.h>
|
|
|
|
#include <locale.h>
|
|
|
|
#include <stdio.h>
|
2023-09-05 13:37:50 +02:00
|
|
|
|
|
|
|
#ifndef _MSC_VER
|
|
|
|
# include <unistd.h>
|
|
|
|
#endif
|
2007-12-08 23:42:33 +01:00
|
|
|
|
2009-09-19 08:47:30 +02:00
|
|
|
#include "tuklib_gettext.h"
|
|
|
|
#include "tuklib_progname.h"
|
|
|
|
#include "tuklib_exit.h"
|
2010-09-10 09:30:33 +02:00
|
|
|
#include "tuklib_mbstr.h"
|
2007-12-08 23:42:33 +01:00
|
|
|
|
2010-06-02 20:32:12 +02:00
|
|
|
#if defined(_WIN32) && !defined(__CYGWIN__)
|
|
|
|
# define WIN32_LEAN_AND_MEAN
|
|
|
|
# include <windows.h>
|
|
|
|
#endif
|
|
|
|
|
2023-09-05 14:10:31 +02:00
|
|
|
#ifdef _MSC_VER
|
|
|
|
# define fileno _fileno
|
|
|
|
#endif
|
|
|
|
|
2009-02-05 08:12:57 +01:00
|
|
|
#ifndef STDIN_FILENO
|
|
|
|
# define STDIN_FILENO (fileno(stdin))
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef STDOUT_FILENO
|
|
|
|
# define STDOUT_FILENO (fileno(stdout))
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef STDERR_FILENO
|
|
|
|
# define STDERR_FILENO (fileno(stderr))
|
|
|
|
#endif
|
|
|
|
|
2023-01-26 17:29:17 +01:00
|
|
|
// Handling SIGTSTP keeps time-keeping for progress indicator correct
|
|
|
|
// if xz is stopped. It requires use of clock_gettime() as that is
|
|
|
|
// async-signal safe in POSIX. Require also SIGALRM support since
|
|
|
|
// on systems where SIGALRM isn't available, progress indicator code
|
|
|
|
// polls the time and the SIGTSTP handling adds slight overhead to
|
|
|
|
// that code. Most (all?) systems that have SIGTSTP also have SIGALRM
|
|
|
|
// so this requirement won't exclude many systems.
|
2023-01-27 19:02:49 +01:00
|
|
|
#if defined(HAVE_CLOCK_GETTIME) && defined(SIGTSTP) && defined(SIGALRM)
|
2023-01-26 17:29:17 +01:00
|
|
|
# define USE_SIGTSTP_HANDLER 1
|
|
|
|
#endif
|
|
|
|
|
2008-11-19 19:46:52 +01:00
|
|
|
#include "main.h"
|
2013-07-04 11:51:57 +02:00
|
|
|
#include "mytime.h"
|
2009-06-26 19:49:54 +02:00
|
|
|
#include "coder.h"
|
2008-11-19 19:46:52 +01:00
|
|
|
#include "message.h"
|
2007-12-08 23:42:33 +01:00
|
|
|
#include "args.h"
|
|
|
|
#include "hardware.h"
|
2009-06-26 19:49:54 +02:00
|
|
|
#include "file_io.h"
|
2007-12-08 23:42:33 +01:00
|
|
|
#include "options.h"
|
2024-02-17 22:07:35 +01:00
|
|
|
#include "sandbox.h"
|
2009-02-05 08:12:57 +01:00
|
|
|
#include "signals.h"
|
2007-12-08 23:42:33 +01:00
|
|
|
#include "suffix.h"
|
|
|
|
#include "util.h"
|
2015-11-03 19:29:33 +01:00
|
|
|
|
|
|
|
#ifdef HAVE_DECODERS
|
|
|
|
# include "list.h"
|
|
|
|
#endif
|