mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
Add initial version of xz --list.
This is a bit rough but should be useful for basic things. Ideas (with detailed examples) about the output format are welcome. The output of --robot --list is not necessarily stable yet, although I don't currently have any plans about changing it. The man page hasn't been updated yet.
This commit is contained in:
parent
df254ce03b
commit
0bc9eab243
5 changed files with 710 additions and 401 deletions
|
@ -16,6 +16,7 @@ xz_SOURCES = \
|
||||||
file_io.h \
|
file_io.h \
|
||||||
hardware.c \
|
hardware.c \
|
||||||
hardware.h \
|
hardware.h \
|
||||||
|
list.c \
|
||||||
main.c \
|
main.c \
|
||||||
main.h \
|
main.h \
|
||||||
message.c \
|
message.c \
|
||||||
|
|
1072
src/xz/list.c
1072
src/xz/list.c
File diff suppressed because it is too large
Load diff
18
src/xz/list.h
Normal file
18
src/xz/list.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
/// \file list.h
|
||||||
|
/// \brief List information about .xz files
|
||||||
|
//
|
||||||
|
// Author: Lasse Collin
|
||||||
|
//
|
||||||
|
// This file has been put into the public domain.
|
||||||
|
// You can do whatever you want with this file.
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/// \brief List information about the given .xz file
|
||||||
|
extern void list_file(const char *filename);
|
||||||
|
|
||||||
|
|
||||||
|
/// \brief Show the totals after all files have been listed
|
||||||
|
extern void list_totals(void);
|
|
@ -153,10 +153,7 @@ main(int argc, char **argv)
|
||||||
args_info args;
|
args_info args;
|
||||||
args_parse(&args, argc, argv);
|
args_parse(&args, argc, argv);
|
||||||
|
|
||||||
if (opt_mode == MODE_LIST)
|
if (opt_mode != MODE_LIST && opt_robot)
|
||||||
message_fatal("--list is not implemented yet.");
|
|
||||||
|
|
||||||
if (opt_robot)
|
|
||||||
message_fatal(_("Compression and decompression with --robot "
|
message_fatal(_("Compression and decompression with --robot "
|
||||||
"are not supported yet."));
|
"are not supported yet."));
|
||||||
|
|
||||||
|
@ -184,6 +181,11 @@ main(int argc, char **argv)
|
||||||
// line arguments.
|
// line arguments.
|
||||||
signals_init();
|
signals_init();
|
||||||
|
|
||||||
|
// coder_run() handles compression, decopmression, and testing.
|
||||||
|
// list_file() is for --list.
|
||||||
|
void (*run)(const char *filename) = opt_mode == MODE_LIST
|
||||||
|
? &list_file : &coder_run;
|
||||||
|
|
||||||
// Process the files given on the command line. Note that if no names
|
// Process the files given on the command line. Note that if no names
|
||||||
// were given, parse_args() gave us a fake "-" filename.
|
// were given, parse_args() gave us a fake "-" filename.
|
||||||
for (size_t i = 0; i < args.arg_count && !user_abort; ++i) {
|
for (size_t i = 0; i < args.arg_count && !user_abort; ++i) {
|
||||||
|
@ -218,7 +220,7 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do the actual compression or uncompression.
|
// Do the actual compression or uncompression.
|
||||||
coder_run(args.arg_names[i]);
|
run(args.arg_names[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If --files or --files0 was used, process the filenames from the
|
// If --files or --files0 was used, process the filenames from the
|
||||||
|
@ -234,13 +236,18 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
// read_name() doesn't return empty names.
|
// read_name() doesn't return empty names.
|
||||||
assert(name[0] != '\0');
|
assert(name[0] != '\0');
|
||||||
coder_run(name);
|
run(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.files_name != stdin_filename)
|
if (args.files_name != stdin_filename)
|
||||||
(void)fclose(args.files_file);
|
(void)fclose(args.files_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// All files have now been handled. If in --list mode, display
|
||||||
|
// the totals before exiting.
|
||||||
|
if (opt_mode == MODE_LIST)
|
||||||
|
list_totals();
|
||||||
|
|
||||||
// If we have got a signal, raise it to kill the program instead
|
// If we have got a signal, raise it to kill the program instead
|
||||||
// of calling tuklib_exit().
|
// of calling tuklib_exit().
|
||||||
signals_exit();
|
signals_exit();
|
||||||
|
|
|
@ -48,3 +48,4 @@
|
||||||
#include "signals.h"
|
#include "signals.h"
|
||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "list.h"
|
||||||
|
|
Loading…
Reference in a new issue