socsvn commit: r254611 - soc2013/dpl/head/contrib/xz/src/xz
dpl at FreeBSD.org
dpl at FreeBSD.org
Thu Jul 11 08:56:49 UTC 2013
Author: dpl
Date: Thu Jul 11 08:56:49 2013
New Revision: 254611
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=254611
Log:
Prepare everything to write io_files_open(). Which will open all the files as needed, and limit them.
The compressing/decompressing functions will accept file_pair as arguments instead (instead of opening files and doing the stuff).
Modified:
soc2013/dpl/head/contrib/xz/src/xz/coder.c
soc2013/dpl/head/contrib/xz/src/xz/coder.h
soc2013/dpl/head/contrib/xz/src/xz/file_io.c
soc2013/dpl/head/contrib/xz/src/xz/file_io.h
soc2013/dpl/head/contrib/xz/src/xz/list.c
soc2013/dpl/head/contrib/xz/src/xz/main.c
Modified: soc2013/dpl/head/contrib/xz/src/xz/coder.c
==============================================================================
--- soc2013/dpl/head/contrib/xz/src/xz/coder.c Thu Jul 11 07:17:03 2013 (r254610)
+++ soc2013/dpl/head/contrib/xz/src/xz/coder.c Thu Jul 11 08:56:49 2013 (r254611)
@@ -609,9 +609,8 @@
extern void
-coder_run(const char *filename[], int files)
+coder_run(const char *filename)
{
- file_pair all_files
// Set and possibly print the filename for the progress message.
message_filename(filename);
@@ -641,9 +640,6 @@
// Don't open the destination file when --test
// is used.
if (opt_mode == MODE_TEST || !io_open_dest(pair)) {
-#if defined(CAPSICUM)
- limitfd(pair);
-#endif
// Initialize the progress indicator.
const uint64_t in_size
= pair->src_st.st_size <= 0
Modified: soc2013/dpl/head/contrib/xz/src/xz/coder.h
==============================================================================
--- soc2013/dpl/head/contrib/xz/src/xz/coder.h Thu Jul 11 07:17:03 2013 (r254610)
+++ soc2013/dpl/head/contrib/xz/src/xz/coder.h Thu Jul 11 08:56:49 2013 (r254611)
@@ -58,4 +58,4 @@
extern void coder_set_compression_settings(void);
/// Compress or decompress the given file
-extern void coder_run(const char *filename[], int files);
+extern void coder_run(const char *filename);
Modified: soc2013/dpl/head/contrib/xz/src/xz/file_io.c
==============================================================================
--- soc2013/dpl/head/contrib/xz/src/xz/file_io.c Thu Jul 11 07:17:03 2013 (r254610)
+++ soc2013/dpl/head/contrib/xz/src/xz/file_io.c Thu Jul 11 08:56:49 2013 (r254611)
@@ -604,9 +604,6 @@
free(pair->dest_name);
return true;
}
-#if defined(CAPSICUM)
- limitfd(pair);
-#endif
}
// If this really fails... well, we have a safe fallback.
@@ -959,6 +956,12 @@
return io_write_buf(pair, buf->u8, size);
}
+extern file_pair
+io_open_files(char *filenames[], int files)
+{
+ return;
+}
+
#if defined(CAPSICUM)
extern void
limitfd(file_pair *pair)
Modified: soc2013/dpl/head/contrib/xz/src/xz/file_io.h
==============================================================================
--- soc2013/dpl/head/contrib/xz/src/xz/file_io.h Thu Jul 11 07:17:03 2013 (r254610)
+++ soc2013/dpl/head/contrib/xz/src/xz/file_io.h Thu Jul 11 08:56:49 2013 (r254611)
@@ -128,6 +128,16 @@
/// and error message printed.
extern bool io_write(file_pair *pair, const io_buf *buf, size_t size);
+
+/// \brief Open all the files as needed.
+///
+/// \param filenames Array containing all the filenames to be open.
+/// \param files Number of files to open.
+///
+/// \return Returns an array of file_pairs.
+extern file_pair io_open_files(char *filenames[], int files);
+
+
#if defined(CAPSICUM)
/// \brief Limits fd using FreeBSD's Capsicum framework.
///
Modified: soc2013/dpl/head/contrib/xz/src/xz/list.c
==============================================================================
--- soc2013/dpl/head/contrib/xz/src/xz/list.c Thu Jul 11 07:17:03 2013 (r254610)
+++ soc2013/dpl/head/contrib/xz/src/xz/list.c Thu Jul 11 08:56:49 2013 (r254611)
@@ -1059,16 +1059,20 @@
extern void
list_file(const char *filename)
{
+ int i;
+
if (opt_format != FORMAT_XZ && opt_format != FORMAT_AUTO)
message_fatal(_("--list works only on .xz files "
"(--format=xz or --format=auto)"));
+ for ( i = 0; i < files; i++) {
+
message_filename(filename);
if (filename == stdin_filename) {
message_error(_("--list does not support reading from "
"standard input"));
- return;
+ continue;
}
// Unset opt_stdout so that io_open_src() won't accept special files.
@@ -1077,7 +1081,7 @@
opt_force = true;
file_pair *pair = io_open_src(filename);
if (pair == NULL)
- return;
+ continue;
xz_file_info xfi = XZ_FILE_INFO_INIT;
if (!parse_indexes(&xfi, pair)) {
Modified: soc2013/dpl/head/contrib/xz/src/xz/main.c
==============================================================================
--- soc2013/dpl/head/contrib/xz/src/xz/main.c Thu Jul 11 07:17:03 2013 (r254610)
+++ soc2013/dpl/head/contrib/xz/src/xz/main.c Thu Jul 11 08:56:49 2013 (r254611)
@@ -208,7 +208,8 @@
signals_init();
// coder_run() handles compression, decompression, and testing.
- // list_file() is for --list.
+ // list_file() is for --list.
+ // We have to limit both functions with Capsicum.
void (*run)(const char *filename) = opt_mode == MODE_LIST
? &list_file : &coder_run;
@@ -244,9 +245,12 @@
// handling the special case of stdin.
args.arg_names[i] = (char *)stdin_filename;
files++;
+
+/* // Do the actual compression/decompression.*/
+/* run(args.arg_names[i]);*/
}
}
- run(args.arg_names, files);
+
// If --files or --files0 was used, process the filenames from the
// given file or stdin. Note that here we don't consider "-" to
More information about the svn-soc-all
mailing list