/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2003-2007 Tim Kientzle
* All rights reserved.
*/
#ifndef CPIO_H_INCLUDED
#define CPIO_H_INCLUDED
#include "cpio_platform.h"
#include <stdio.h>
/*
* The internal state for the "cpio" program.
*
* Keeping all of the state in a structure like this simplifies memory
* leak testing (at exit, anything left on the heap is suspect). A
* pointer to this structure is passed to most cpio internal
* functions.
*/
struct cpio {
/* Option parsing */
const char *argument;
/* Options */
int add_filter; /* --uuencode */
const char *filename;
int mode; /* -i -o -p */
int compress; /* -j, -y, or -z */
const char *format; /* -H format */
int bytes_per_block; /* -b block_size */
int verbose; /* -v */
int dot; /* -V */
int quiet; /* --quiet */
int extract_flags; /* Flags for extract operation */
const char *compress_program;
int option_append; /* -A, only relevant for -o */
int option_atime_restore; /* -a */
int option_follow_links; /* -L */
int option_link; /* -l */
int option_list; /* -t */
char option_null; /* --null */
int option_numeric_uid_gid; /* -n */
int option_pwb; /* -6 */
int option_rename; /* -r */
char *destdir;
size_t destdir_len;
size_t pass_destpath_alloc;
char *pass_destpath;
int uid_override;
char *uname_override;
int gid_override;
char *gname_override;
int day_first; /* true if locale prefers day/mon */
const char *passphrase;
/* If >= 0, then close this when done. */
int fd;
/* Miscellaneous state information */
struct archive *archive;
struct archive *archive_read_disk;
int argc;
char **argv;
int return_value; /* Value returned by main() */
struct archive_entry_linkresolver *linkresolver;