Fix style.
This commit is contained in:
1 parent
0a2f3503c7
commit
59d9667803
1 file changed
+78
-65
@@ -1058,7 +1058,8 @@ read_header(struct archive_read *a, struct archive_entry *entry)
|
||||
}
|
||||
if (!mtree->this_entry->used) {
|
||||
use_next = 0;
|
||||
r = parse_file(a, entry, mtree, mtree->this_entry, &use_next);
|
||||
r = parse_file(a, entry, mtree, mtree->this_entry,
|
||||
&use_next);
|
||||
if (use_next == 0)
|
||||
return (r);
|
||||
}
|
||||
@@ -1153,8 +1154,8 @@ parse_file(struct archive_read *a, struct archive_entry *entry,
|
||||
mtree->fd = open(path, O_RDONLY | O_BINARY | O_CLOEXEC);
|
||||
__archive_ensure_cloexec_flag(mtree->fd);
|
||||
if (mtree->fd == -1 &&
|
||||
(errno != ENOENT ||
|
||||
archive_strlen(&mtree->contents_name) > 0)) {
|
||||
(errno != ENOENT ||
|
||||
archive_strlen(&mtree->contents_name) > 0)) {
|
||||
archive_set_error(&a->archive, errno,
|
||||
"Can't open %s", path);
|
||||
r = ARCHIVE_WARN;
|
||||
@@ -1177,76 +1178,79 @@ parse_file(struct archive_read *a, struct archive_entry *entry,
|
||||
}
|
||||
|
||||
/*
|
||||
* Check for a mismatch between the type in the specification and
|
||||
* the type of the contents object on disk.
|
||||
* Check for a mismatch between the type in the specification
|
||||
* and the type of the contents object on disk.
|
||||
*/
|
||||
if (st != NULL) {
|
||||
if (
|
||||
((st->st_mode & S_IFMT) == S_IFREG &&
|
||||
archive_entry_filetype(entry) == AE_IFREG)
|
||||
if (((st->st_mode & S_IFMT) == S_IFREG &&
|
||||
archive_entry_filetype(entry) == AE_IFREG)
|
||||
#ifdef S_IFLNK
|
||||
|| ((st->st_mode & S_IFMT) == S_IFLNK &&
|
||||
archive_entry_filetype(entry) == AE_IFLNK)
|
||||
||((st->st_mode & S_IFMT) == S_IFLNK &&
|
||||
archive_entry_filetype(entry) == AE_IFLNK)
|
||||
#endif
|
||||
#ifdef S_IFSOCK
|
||||
|| ((st->st_mode & S_IFSOCK) == S_IFSOCK &&
|
||||
archive_entry_filetype(entry) == AE_IFSOCK)
|
||||
||((st->st_mode & S_IFSOCK) == S_IFSOCK &&
|
||||
archive_entry_filetype(entry) == AE_IFSOCK)
|
||||
#endif
|
||||
#ifdef S_IFCHR
|
||||
|| ((st->st_mode & S_IFMT) == S_IFCHR &&
|
||||
archive_entry_filetype(entry) == AE_IFCHR)
|
||||
||((st->st_mode & S_IFMT) == S_IFCHR &&
|
||||
archive_entry_filetype(entry) == AE_IFCHR)
|
||||
#endif
|
||||
#ifdef S_IFBLK
|
||||
|| ((st->st_mode & S_IFMT) == S_IFBLK &&
|
||||
archive_entry_filetype(entry) == AE_IFBLK)
|
||||
||((st->st_mode & S_IFMT) == S_IFBLK &&
|
||||
archive_entry_filetype(entry) == AE_IFBLK)
|
||||
#endif
|
||||
|| ((st->st_mode & S_IFMT) == S_IFDIR &&
|
||||
archive_entry_filetype(entry) == AE_IFDIR)
|
||||
||((st->st_mode & S_IFMT) == S_IFDIR &&
|
||||
archive_entry_filetype(entry) == AE_IFDIR)
|
||||
#ifdef S_IFIFO
|
||||
|| ((st->st_mode & S_IFMT) == S_IFIFO &&
|
||||
archive_entry_filetype(entry) == AE_IFIFO)
|
||||
||((st->st_mode & S_IFMT) == S_IFIFO &&
|
||||
archive_entry_filetype(entry) == AE_IFIFO)
|
||||
#endif
|
||||
) {
|
||||
/* Types match. */
|
||||
} else {
|
||||
/* Types don't match; bail out gracefully. */
|
||||
if (mtree->fd >= 0)
|
||||
close(mtree->fd);
|
||||
mtree->fd = -1;
|
||||
if (parsed_kws & MTREE_HAS_OPTIONAL) {
|
||||
/* It's not an error for an optional entry
|
||||
to not match disk. */
|
||||
*use_next = 1;
|
||||
} else if (r == ARCHIVE_OK) {
|
||||
archive_set_error(&a->archive,
|
||||
ARCHIVE_ERRNO_MISC,
|
||||
"mtree specification has different type for %s",
|
||||
archive_entry_pathname(entry));
|
||||
r = ARCHIVE_WARN;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
) {
|
||||
/* Types match. */
|
||||
} else {
|
||||
/* Types don't match; bail out gracefully. */
|
||||
if (mtree->fd >= 0)
|
||||
close(mtree->fd);
|
||||
mtree->fd = -1;
|
||||
if (parsed_kws & MTREE_HAS_OPTIONAL) {
|
||||
/* It's not an error for an optional
|
||||
* entry to not match disk. */
|
||||
*use_next = 1;
|
||||
} else if (r == ARCHIVE_OK) {
|
||||
archive_set_error(&a->archive,
|
||||
ARCHIVE_ERRNO_MISC,
|
||||
"mtree specification has different"
|
||||
" type for %s",
|
||||
archive_entry_pathname(entry));
|
||||
r = ARCHIVE_WARN;
|
||||
}
|
||||
return (r);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If there is a contents file on disk, pick some of the metadata
|
||||
* from that file. For most of these, we only set it from the contents
|
||||
* if it wasn't already parsed from the specification.
|
||||
* If there is a contents file on disk, pick some of the
|
||||
* metadata from that file. For most of these, we only
|
||||
* set it from the contents if it wasn't already parsed
|
||||
* from the specification.
|
||||
*/
|
||||
if (st != NULL) {
|
||||
if (((parsed_kws & MTREE_HAS_DEVICE) == 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0) &&
|
||||
(archive_entry_filetype(entry) == AE_IFCHR ||
|
||||
archive_entry_filetype(entry) == AE_IFBLK))
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0) &&
|
||||
(archive_entry_filetype(entry) == AE_IFCHR ||
|
||||
archive_entry_filetype(entry) == AE_IFBLK))
|
||||
archive_entry_set_rdev(entry, st->st_rdev);
|
||||
if ((parsed_kws & (MTREE_HAS_GID | MTREE_HAS_GNAME)) == 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
if ((parsed_kws & (MTREE_HAS_GID | MTREE_HAS_GNAME))
|
||||
== 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
archive_entry_set_gid(entry, st->st_gid);
|
||||
if ((parsed_kws & (MTREE_HAS_UID | MTREE_HAS_UNAME)) == 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
if ((parsed_kws & (MTREE_HAS_UID | MTREE_HAS_UNAME))
|
||||
== 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
archive_entry_set_uid(entry, st->st_uid);
|
||||
if ((parsed_kws & MTREE_HAS_MTIME) == 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0) {
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0) {
|
||||
#if HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC
|
||||
archive_entry_set_mtime(entry, st->st_mtime,
|
||||
st->st_mtimespec.tv_nsec);
|
||||
@@ -1267,23 +1271,24 @@ parse_file(struct archive_read *a, struct archive_entry *entry,
|
||||
#endif
|
||||
}
|
||||
if ((parsed_kws & MTREE_HAS_NLINK) == 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
archive_entry_set_nlink(entry, st->st_nlink);
|
||||
if ((parsed_kws & MTREE_HAS_PERM) == 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
archive_entry_set_perm(entry, st->st_mode);
|
||||
if ((parsed_kws & MTREE_HAS_SIZE) == 0 ||
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
(parsed_kws & MTREE_HAS_NOCHANGE) != 0)
|
||||
archive_entry_set_size(entry, st->st_size);
|
||||
archive_entry_set_ino(entry, st->st_ino);
|
||||
archive_entry_set_dev(entry, st->st_dev);
|
||||
|
||||
archive_entry_linkify(mtree->resolver, &entry, &sparse_entry);
|
||||
archive_entry_linkify(mtree->resolver, &entry,
|
||||
&sparse_entry);
|
||||
} else if (parsed_kws & MTREE_HAS_OPTIONAL) {
|
||||
/*
|
||||
* Couldn't open the entry, stat it or the on-disk type
|
||||
* didn't match. If this entry is optional, just ignore it
|
||||
* and read the next header entry.
|
||||
* didn't match. If this entry is optional, just
|
||||
* ignore it and read the next header entry.
|
||||
*/
|
||||
*use_next = 1;
|
||||
return ARCHIVE_OK;
|
||||
@@ -1585,32 +1590,38 @@ parse_keyword(struct archive_read *a, struct mtree *mtree,
|
||||
}
|
||||
case 'c':
|
||||
if (strcmp(val, "char") == 0) {
|
||||
archive_entry_set_filetype(entry, AE_IFCHR);
|
||||
archive_entry_set_filetype(entry,
|
||||
AE_IFCHR);
|
||||
break;
|
||||
}
|
||||
case 'd':
|
||||
if (strcmp(val, "dir") == 0) {
|
||||
archive_entry_set_filetype(entry, AE_IFDIR);
|
||||
archive_entry_set_filetype(entry,
|
||||
AE_IFDIR);
|
||||
break;
|
||||
}
|
||||
case 'f':
|
||||
if (strcmp(val, "fifo") == 0) {
|
||||
archive_entry_set_filetype(entry, AE_IFIFO);
|
||||
archive_entry_set_filetype(entry,
|
||||
AE_IFIFO);
|
||||
break;
|
||||
}
|
||||
if (strcmp(val, "file") == 0) {
|
||||
archive_entry_set_filetype(entry, AE_IFREG);
|
||||
archive_entry_set_filetype(entry,
|
||||
AE_IFREG);
|
||||
break;
|
||||
}
|
||||
case 'l':
|
||||
if (strcmp(val, "link") == 0) {
|
||||
archive_entry_set_filetype(entry, AE_IFLNK);
|
||||
archive_entry_set_filetype(entry,
|
||||
AE_IFLNK);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
archive_set_error(&a->archive,
|
||||
ARCHIVE_ERRNO_FILE_FORMAT,
|
||||
"Unrecognized file type \"%s\"; assuming \"file\"", val);
|
||||
"Unrecognized file type \"%s\"; "
|
||||
"assuming \"file\"", val);
|
||||
archive_entry_set_filetype(entry, AE_IFREG);
|
||||
return (ARCHIVE_WARN);
|
||||
}
|
||||
@@ -1637,7 +1648,8 @@ parse_keyword(struct archive_read *a, struct mtree *mtree,
|
||||
}
|
||||
|
||||
static int
|
||||
read_data(struct archive_read *a, const void **buff, size_t *size, int64_t *offset)
|
||||
read_data(struct archive_read *a, const void **buff, size_t *size,
|
||||
int64_t *offset)
|
||||
{
|
||||
size_t bytes_to_read;
|
||||
ssize_t bytes_read;
|
||||
@@ -1900,7 +1912,8 @@ mtree_atol(char **p)
|
||||
* point to first character of line.
|
||||
*/
|
||||
static ssize_t
|
||||
readline(struct archive_read *a, struct mtree *mtree, char **start, ssize_t limit)
|
||||
readline(struct archive_read *a, struct mtree *mtree, char **start,
|
||||
ssize_t limit)
|
||||
{
|
||||
ssize_t bytes_read;
|
||||
ssize_t total_size = 0;
|
||||
|
||||
Reference in new issue
Block a user