From: Tim Kientzle Date: Sun, 23 Aug 2009 05:08:52 +0000 (-0400) Subject: Update to match changes to line_reader() and include_from_file() to X-Git-Tag: v2.8.0~412 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79b85a84c25bca6169dca1864ac00218f81b6f43;p=thirdparty%2Flibarchive.git Update to match changes to line_reader() and include_from_file() to properly handle varying line termination. SVN-Revision: 1390 --- diff --git a/cpio/cpio.c b/cpio/cpio.c index 64eb8c8fd..10448324b 100644 --- a/cpio/cpio.c +++ b/cpio/cpio.c @@ -150,7 +150,6 @@ main(int argc, char *argv[]) cpio->gid_override = -1; cpio->argv = argv; cpio->argc = argc; - cpio->line_separator = '\n'; cpio->mode = '\0'; cpio->verbose = 0; cpio->compress = '\0'; @@ -171,7 +170,7 @@ main(int argc, char *argv[]) while ((opt = cpio_getopt(cpio)) != -1) { switch (opt) { case '0': /* GNU convention: --null, -0 */ - cpio->line_separator = '\0'; + cpio->option_null = 1; break; case 'A': /* NetBSD/OpenBSD */ cpio->option_append = 1; @@ -194,7 +193,8 @@ main(int argc, char *argv[]) cpio->extract_flags &= ~ARCHIVE_EXTRACT_NO_AUTODIR; break; case 'E': /* NetBSD/OpenBSD */ - lafe_include_from_file(&cpio->matching, cpio->optarg); + lafe_include_from_file(&cpio->matching, + cpio->optarg, cpio->option_null); break; case 'F': /* NetBSD/OpenBSD/GNU cpio */ cpio->filename = cpio->optarg; @@ -500,7 +500,7 @@ mode_out(struct cpio *cpio) r = archive_write_open_file(cpio->archive, cpio->filename); if (r != ARCHIVE_OK) lafe_errc(1, 0, archive_error_string(cpio->archive)); - lr = lafe_line_reader("-", cpio->line_separator); + lr = lafe_line_reader("-", cpio->option_null); while ((p = lafe_line_reader_next(lr)) != NULL) file_to_archive(cpio, p); lafe_line_reader_free(lr); @@ -1043,7 +1043,7 @@ mode_pass(struct cpio *cpio, const char *destdir) archive_read_disk_set_symlink_physical(cpio->archive_read_disk); archive_read_disk_set_standard_lookup(cpio->archive_read_disk); - lr = lafe_line_reader("-", cpio->line_separator); + lr = lafe_line_reader("-", cpio->option_null); while ((p = lafe_line_reader_next(lr)) != NULL) file_to_archive(cpio, p); lafe_line_reader_free(lr); diff --git a/cpio/cpio.h b/cpio/cpio.h index 27a375c9d..ddea31dc6 100644 --- a/cpio/cpio.h +++ b/cpio/cpio.h @@ -56,12 +56,12 @@ struct cpio { int extract_flags; /* Flags for extract operation */ char symlink_mode; /* H or L, per BSD conventions */ const char *compress_program; - char line_separator; /* --null ? '\0' : '\n' */ 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_rename; /* -r */ char *destdir;