Be a bit more consistent about comparing to zero
* src/buffer.c (xclose, archive_is_dev, close_archive) (write_fatal_details, init_volume_number) (closeout_volume_number, new_volume, try_new_volume): * src/checkpoint.c (format_checkpoint_string): * src/compare.c (process_rawdata, diff_file, diff_dumpdir): * src/create.c (create_archive, restore_parent_fd, dump_file0): * src/delete.c (delete_archive_members): * src/exclist.c (cvs_addfn): * src/extract.c (set_mode, mark_after_links, delay_set_stat) (repair_delayed_set_stat, make_directories, file_newer_p) (maybe_recoverable, apply_nonancestor_delayed_set_stat) (extract_dir, open_output_file, find_delayed_link_source) (create_placeholder_file, extract_symlink, extract_node) (extract_fifo, apply_delayed_link): * src/incremen.c (update_parent_directory, scan_directory) (read_obstack, read_incr_db_2, write_directory_file) (try_purge_directory): * src/map.c (map_read): * src/misc.c (maybe_backup_file, undo_last_backup, chdir_do) (tar_savedir): * src/names.c (handle_file_selection_option, add_file_id) (handle_option, read_next_name, add_hierarchy_to_namelist) (collect_and_sort_names): * src/system.c (run_decompress_program, dec_to_env, time_to_env) (oct_to_env, str_to_env, chr_to_env, sys_exec_setmtime_script): * src/tar.c (get_date_or_file, parse_default_options) (decode_options, main): * src/unlink.c (flush_deferred_unlinks): * src/update.c (append_file): * src/xattrs.c (xattrs__acls_set, xattrs_xattrs_set): Prefer < 0 when looking at syscalls; prefer != 0 to nothing when testing an integer in a boolean context. This is for style, not substance; for example, it’s easier to read ‘if (wordsplit (...) != WRDSE_OK) ...’ than ‘if (wordsplit (...)) ...’ if you don’t already know that wordsplit returns an enum rather than bool. * src/names.c (add_file_id, read_next_name, regex_usage_warning): * src/transform.c (parse_xform_flags): Return bool not int, possibly inverting sense so that true means OK. All callers changed. * src/tar.c (main): Report errno info if stdopen fails.
This commit is contained in:
18
src/buffer.c
18
src/buffer.c
@@ -654,7 +654,7 @@ available_space_after (union block *pointer)
|
||||
void
|
||||
xclose (int fd)
|
||||
{
|
||||
if (close (fd) != 0)
|
||||
if (close (fd) < 0)
|
||||
close_error (_("(pipe)"));
|
||||
}
|
||||
|
||||
@@ -949,7 +949,7 @@ archive_is_dev (void)
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
if (fstat (archive, &st))
|
||||
if (fstat (archive, &st) < 0)
|
||||
{
|
||||
stat_diag (*archive_name_cursor);
|
||||
return false;
|
||||
@@ -1143,7 +1143,7 @@ close_archive (void)
|
||||
if (verify_option)
|
||||
verify_volume ();
|
||||
|
||||
if (rmtclose (archive) != 0)
|
||||
if (rmtclose (archive) < 0)
|
||||
close_error (*archive_name_cursor);
|
||||
|
||||
sys_wait_for_child (child_pid, hit_eof);
|
||||
@@ -1158,7 +1158,7 @@ static void
|
||||
write_fatal_details (char const *name, ssize_t status, idx_t size)
|
||||
{
|
||||
write_error_details (name, status, size);
|
||||
if (rmtclose (archive) != 0)
|
||||
if (rmtclose (archive) < 0)
|
||||
close_error (*archive_name_cursor);
|
||||
sys_wait_for_child (child_pid, false);
|
||||
fatal_exit ();
|
||||
@@ -1178,7 +1178,7 @@ init_volume_number (void)
|
||||
quotearg_colon (volno_file_option));
|
||||
if (ferror (file))
|
||||
read_error (volno_file_option);
|
||||
if (fclose (file) != 0)
|
||||
if (fclose (file) < 0)
|
||||
close_error (volno_file_option);
|
||||
}
|
||||
else if (errno != ENOENT)
|
||||
@@ -1196,7 +1196,7 @@ closeout_volume_number (void)
|
||||
fprintf (file, "%jd\n", global_volno);
|
||||
if (ferror (file))
|
||||
write_error (volno_file_option);
|
||||
if (fclose (file) != 0)
|
||||
if (fclose (file) < 0)
|
||||
close_error (volno_file_option);
|
||||
}
|
||||
else
|
||||
@@ -1338,7 +1338,7 @@ new_volume (enum access_mode mode)
|
||||
continued_file_size = continued_file_offset = 0;
|
||||
current_block = record_start;
|
||||
|
||||
if (rmtclose (archive) != 0)
|
||||
if (rmtclose (archive) < 0)
|
||||
close_error (*archive_name_cursor);
|
||||
|
||||
archive_name_cursor++;
|
||||
@@ -1358,7 +1358,7 @@ new_volume (enum access_mode mode)
|
||||
{
|
||||
if (volno_file_option)
|
||||
closeout_volume_number ();
|
||||
if (sys_exec_info_script (archive_name_cursor, global_volno + 1))
|
||||
if (sys_exec_info_script (archive_name_cursor, global_volno + 1) != 0)
|
||||
paxfatal (0, _("%s command failed"), quote (info_script_option));
|
||||
}
|
||||
else
|
||||
@@ -1538,7 +1538,7 @@ try_new_volume (void)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (strcmp (continued_file_name, bufmap_head->file_name))
|
||||
if (strcmp (continued_file_name, bufmap_head->file_name) != 0)
|
||||
{
|
||||
if ((archive_format == GNU_FORMAT || archive_format == OLDGNU_FORMAT)
|
||||
&& strlen (bufmap_head->file_name) >= NAME_FIELD_SIZE
|
||||
|
||||
@@ -282,7 +282,8 @@ format_checkpoint_string (FILE *fp, intmax_t len,
|
||||
ws.ws_delim = ",";
|
||||
if (wordsplit (arg, &ws,
|
||||
(WRDSF_NOVAR | WRDSF_NOCMD
|
||||
| WRDSF_QUOTE | WRDSF_DELIM)))
|
||||
| WRDSF_QUOTE | WRDSF_DELIM))
|
||||
!= WRDSE_OK)
|
||||
paxerror (0, _("cannot split string '%s': %s"),
|
||||
arg, wordsplit_strerror (&ws));
|
||||
else if (3 < ws.ws_wordc)
|
||||
|
||||
@@ -105,7 +105,7 @@ process_rawdata (idx_t bytes, char *buffer)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (memcmp (buffer, diff_buffer, bytes))
|
||||
if (memcmp (buffer, diff_buffer, bytes) != 0)
|
||||
{
|
||||
report_difference (¤t_stat_info, _("Contents differ"));
|
||||
return false;
|
||||
@@ -233,7 +233,7 @@ diff_file (void)
|
||||
{
|
||||
struct timespec atime = get_stat_atime (&stat_data);
|
||||
if (set_file_atime (diff_handle, chdir_fd, file_name, atime)
|
||||
!= 0)
|
||||
< 0)
|
||||
utime_error (file_name);
|
||||
}
|
||||
|
||||
@@ -370,7 +370,7 @@ diff_dumpdir (struct tar_stat_info *dir)
|
||||
int fd = subfile_open (dir->parent, dir->orig_file_name, open_read_flags);
|
||||
if (fd < 0)
|
||||
diag = open_diag;
|
||||
else if (fstat (fd, &dir->stat))
|
||||
else if (fstat (fd, &dir->stat) < 0)
|
||||
{
|
||||
diag = stat_diag;
|
||||
close (fd);
|
||||
@@ -387,7 +387,7 @@ diff_dumpdir (struct tar_stat_info *dir)
|
||||
|
||||
if (dumpdir_buffer)
|
||||
{
|
||||
if (dumpdir_cmp (dir->dumpdir, dumpdir_buffer))
|
||||
if (dumpdir_cmp (dir->dumpdir, dumpdir_buffer) != 0)
|
||||
report_difference (dir, _("Contents differ"));
|
||||
}
|
||||
else
|
||||
|
||||
24
src/create.c
24
src/create.c
@@ -1346,7 +1346,7 @@ create_archive (void)
|
||||
break;
|
||||
}
|
||||
st.fd = fd;
|
||||
if (fstat (fd, &st.stat) != 0)
|
||||
if (fstat (fd, &st.stat) < 0)
|
||||
{
|
||||
file_removed_diag (p->name, !p->parent,
|
||||
stat_diag);
|
||||
@@ -1555,9 +1555,9 @@ restore_parent_fd (struct tar_stat_info const *st)
|
||||
|
||||
if (parentfd < 0)
|
||||
parentfd = - errno;
|
||||
else if (! (fstat (parentfd, &parentstat) == 0
|
||||
&& parent->stat.st_ino == parentstat.st_ino
|
||||
&& parent->stat.st_dev == parentstat.st_dev))
|
||||
else if (fstat (parentfd, &parentstat) < 0
|
||||
|| parent->stat.st_ino != parentstat.st_ino
|
||||
|| parent->stat.st_dev != parentstat.st_dev)
|
||||
{
|
||||
close (parentfd);
|
||||
parentfd = IMPOSTOR_ERRNO;
|
||||
@@ -1569,12 +1569,12 @@ restore_parent_fd (struct tar_stat_info const *st)
|
||||
open_searchdir_flags);
|
||||
if (0 <= origfd)
|
||||
{
|
||||
if (fstat (parentfd, &parentstat) == 0
|
||||
&& parent->stat.st_ino == parentstat.st_ino
|
||||
&& parent->stat.st_dev == parentstat.st_dev)
|
||||
parentfd = origfd;
|
||||
else
|
||||
if (fstat (parentfd, &parentstat) < 0
|
||||
|| parent->stat.st_ino != parentstat.st_ino
|
||||
|| parent->stat.st_dev != parentstat.st_dev)
|
||||
close (origfd);
|
||||
else
|
||||
parentfd = origfd;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1619,7 +1619,7 @@ dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
|
||||
errno = - parentfd;
|
||||
diag = open_diag;
|
||||
}
|
||||
else if (fstatat (parentfd, name, &st->stat, fstatat_flags) != 0)
|
||||
else if (fstatat (parentfd, name, &st->stat, fstatat_flags) < 0)
|
||||
diag = stat_diag;
|
||||
else if (file_dumpable_p (&st->stat))
|
||||
{
|
||||
@@ -1629,7 +1629,7 @@ dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
|
||||
else
|
||||
{
|
||||
st->fd = fd;
|
||||
if (fstat (fd, &st->stat) != 0)
|
||||
if (fstat (fd, &st->stat) < 0)
|
||||
diag = stat_diag;
|
||||
}
|
||||
}
|
||||
@@ -1804,7 +1804,7 @@ dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
|
||||
}
|
||||
else if (atime_preserve_option == replace_atime_preserve
|
||||
&& timespec_cmp (st->atime, get_stat_atime (&st2)) != 0
|
||||
&& set_file_atime (fd, parentfd, name, st->atime) != 0)
|
||||
&& set_file_atime (fd, parentfd, name, st->atime) < 0)
|
||||
utime_error (p);
|
||||
}
|
||||
|
||||
|
||||
@@ -376,7 +376,7 @@ delete_archive_members (void)
|
||||
|
||||
if (! acting_as_filter && ! _isrmt (archive))
|
||||
{
|
||||
if (sys_truncate (archive))
|
||||
if (sys_truncate (archive) < 0)
|
||||
truncate_warn (archive_name_array[0]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@ cvs_addfn (struct exclude *ex, char const *pattern, int options,
|
||||
|
||||
options |= EXCLUDE_ALLOC;
|
||||
if (wordsplit (pattern, &ws,
|
||||
WRDSF_NOVAR | WRDSF_NOCMD | WRDSF_SQUEEZE_DELIMS))
|
||||
WRDSF_NOVAR | WRDSF_NOCMD | WRDSF_SQUEEZE_DELIMS)
|
||||
!= WRDSE_OK)
|
||||
return;
|
||||
for (idx_t i = 0; i < ws.ws_wordc; i++)
|
||||
add_exclude (ex, ws.ws_wordv[i], options);
|
||||
|
||||
@@ -344,7 +344,7 @@ set_mode (char const *file_name,
|
||||
if (MODE_ALL & ~ mode_mask & ~ current_mode_mask)
|
||||
{
|
||||
struct stat st;
|
||||
if (fd_stat (fd, file_name, &st, atflag) != 0)
|
||||
if (fd_stat (fd, file_name, &st, atflag) < 0)
|
||||
{
|
||||
stat_error (file_name);
|
||||
return;
|
||||
@@ -357,7 +357,7 @@ set_mode (char const *file_name,
|
||||
|
||||
if (current_mode != mode)
|
||||
{
|
||||
if (fd_chmod (fd, file_name, mode, atflag, typeflag))
|
||||
if (fd_chmod (fd, file_name, mode, atflag, typeflag) < 0)
|
||||
chmod_error_details (file_name, mode);
|
||||
}
|
||||
}
|
||||
@@ -492,7 +492,7 @@ mark_after_links (struct delayed_set_stat *head)
|
||||
struct stat st;
|
||||
h->after_links = 1;
|
||||
|
||||
if (deref_stat (h->file_name, &st) != 0)
|
||||
if (deref_stat (h->file_name, &st) < 0)
|
||||
stat_error (h->file_name);
|
||||
else
|
||||
{
|
||||
@@ -544,7 +544,8 @@ delay_set_stat (char const *file_name, struct tar_stat_info const *st,
|
||||
{
|
||||
struct stat real_st;
|
||||
if (fstatat (chdir_fd, data->file_name,
|
||||
&real_st, data->atflag) != 0)
|
||||
&real_st, data->atflag)
|
||||
< 0)
|
||||
{
|
||||
stat_error (data->file_name);
|
||||
}
|
||||
@@ -627,7 +628,7 @@ repair_delayed_set_stat (char const *dir,
|
||||
for (data = delayed_set_stat_head; data; data = data->next)
|
||||
{
|
||||
struct stat st;
|
||||
if (fstatat (chdir_fd, data->file_name, &st, data->atflag) != 0)
|
||||
if (fstatat (chdir_fd, data->file_name, &st, data->atflag) < 0)
|
||||
{
|
||||
stat_error (data->file_name);
|
||||
return;
|
||||
@@ -786,9 +787,9 @@ make_directories (char *file_name, bool *interdir_made)
|
||||
*parent_end = '\0';
|
||||
struct stat st;
|
||||
int stat_status = fstatat (chdir_fd, file_name, &st, 0);
|
||||
if (!stat_status && !S_ISDIR (st.st_mode))
|
||||
if (! (stat_status < 0 || S_ISDIR (st.st_mode)))
|
||||
stat_status = -1;
|
||||
if (stat_status)
|
||||
if (stat_status < 0)
|
||||
{
|
||||
errno = parent_errno;
|
||||
mkdir_error (file_name);
|
||||
@@ -812,7 +813,7 @@ file_newer_p (const char *file_name, struct stat const *stp,
|
||||
|
||||
if (!stp)
|
||||
{
|
||||
if (deref_stat (file_name, &st) != 0)
|
||||
if (deref_stat (file_name, &st) < 0)
|
||||
{
|
||||
if (errno != ENOENT)
|
||||
{
|
||||
@@ -873,7 +874,7 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
|
||||
break;
|
||||
if (strchr (file_name, '/'))
|
||||
{
|
||||
if (deref_stat (file_name, &st) != 0)
|
||||
if (deref_stat (file_name, &st) < 0)
|
||||
break;
|
||||
stp = &st;
|
||||
}
|
||||
@@ -983,7 +984,7 @@ apply_nonancestor_delayed_set_stat (char const *file_name, bool after_links)
|
||||
|
||||
if (check_for_renamed_directories)
|
||||
{
|
||||
if (fstatat (chdir_fd, data->file_name, &st, data->atflag) != 0)
|
||||
if (fstatat (chdir_fd, data->file_name, &st, data->atflag) < 0)
|
||||
{
|
||||
stat_error (data->file_name);
|
||||
skip_this_one = 1;
|
||||
@@ -1075,7 +1076,7 @@ extract_dir (char *file_name, int typeflag)
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
if (fstatat (chdir_fd, ".", &st, 0) != 0)
|
||||
if (fstatat (chdir_fd, ".", &st, 0) < 0)
|
||||
stat_diag (".");
|
||||
else
|
||||
root_device = st.st_dev;
|
||||
@@ -1248,7 +1249,7 @@ open_output_file (char const *file_name, int typeflag, mode_t mode,
|
||||
else
|
||||
{
|
||||
struct stat st;
|
||||
if (fstat (fd, &st) != 0)
|
||||
if (fstat (fd, &st) < 0)
|
||||
{
|
||||
int e = errno;
|
||||
close (fd);
|
||||
@@ -1402,7 +1403,7 @@ find_delayed_link_source (char const *name)
|
||||
if (!delayed_link_table)
|
||||
return false;
|
||||
|
||||
if (fstatat (chdir_fd, name, &st, AT_SYMLINK_NOFOLLOW))
|
||||
if (fstatat (chdir_fd, name, &st, AT_SYMLINK_NOFOLLOW) < 0)
|
||||
{
|
||||
if (errno != ENOENT)
|
||||
stat_error (name);
|
||||
@@ -1453,12 +1454,12 @@ create_placeholder_file (char *file_name, bool is_symlink, bool *interdir_made)
|
||||
}
|
||||
}
|
||||
|
||||
if (fstat (fd, &st) != 0)
|
||||
if (fstat (fd, &st) < 0)
|
||||
{
|
||||
stat_error (file_name);
|
||||
close (fd);
|
||||
}
|
||||
else if (close (fd) != 0)
|
||||
else if (close (fd) < 0)
|
||||
close_error (file_name);
|
||||
else
|
||||
{
|
||||
@@ -1590,7 +1591,7 @@ extract_symlink (char *file_name, MAYBE_UNUSED int typeflag)
|
||||
|| contains_dot_dot (current_stat_info.link_name)))
|
||||
return create_placeholder_file (file_name, true, &interdir_made);
|
||||
|
||||
while (symlinkat (current_stat_info.link_name, chdir_fd, file_name) != 0)
|
||||
while (symlinkat (current_stat_info.link_name, chdir_fd, file_name) < 0)
|
||||
switch (maybe_recoverable (file_name, false, &interdir_made))
|
||||
{
|
||||
case RECOVER_OK:
|
||||
@@ -1630,7 +1631,7 @@ extract_node (char *file_name, int typeflag)
|
||||
& ~ (0 < same_owner_option ? S_IRWXG | S_IRWXO : 0));
|
||||
|
||||
while (mknodat (chdir_fd, file_name, mode, current_stat_info.stat.st_rdev)
|
||||
!= 0)
|
||||
< 0)
|
||||
switch (maybe_recoverable (file_name, false, &interdir_made))
|
||||
{
|
||||
case RECOVER_OK:
|
||||
@@ -1659,7 +1660,7 @@ extract_fifo (char *file_name, int typeflag)
|
||||
mode_t mode = (current_stat_info.stat.st_mode & MODE_RWX
|
||||
& ~ (0 < same_owner_option ? S_IRWXG | S_IRWXO : 0));
|
||||
|
||||
while (mkfifoat (chdir_fd, file_name, mode) != 0)
|
||||
while (mkfifoat (chdir_fd, file_name, mode) < 0)
|
||||
switch (maybe_recoverable (file_name, false, &interdir_made))
|
||||
{
|
||||
case RECOVER_OK:
|
||||
@@ -1897,7 +1898,7 @@ apply_delayed_link (struct delayed_link *ds)
|
||||
{
|
||||
/* Unlink the placeholder, then create a hard link if possible,
|
||||
a symbolic link otherwise. */
|
||||
if (unlinkat (chdir_fd, source, 0) != 0)
|
||||
if (unlinkat (chdir_fd, source, 0) < 0)
|
||||
unlink_error (source);
|
||||
else if (valid_source
|
||||
&& (linkat (chdir_fd, valid_source, chdir_fd, source, 0)
|
||||
@@ -1905,10 +1906,10 @@ apply_delayed_link (struct delayed_link *ds)
|
||||
;
|
||||
else if (!ds->is_symlink)
|
||||
{
|
||||
if (linkat (chdir_fd, ds->target, chdir_fd, source, 0) != 0)
|
||||
if (linkat (chdir_fd, ds->target, chdir_fd, source, 0) < 0)
|
||||
link_error (ds->target, source);
|
||||
}
|
||||
else if (symlinkat (ds->target, chdir_fd, source) != 0)
|
||||
else if (symlinkat (ds->target, chdir_fd, source) < 0)
|
||||
symlink_error (ds->target, source);
|
||||
else
|
||||
{
|
||||
|
||||
@@ -472,7 +472,7 @@ update_parent_directory (struct tar_stat_info *parent)
|
||||
if (directory)
|
||||
{
|
||||
struct stat st;
|
||||
if (fstat (parent->fd, &st) != 0)
|
||||
if (fstat (parent->fd, &st) < 0)
|
||||
stat_diag (directory->name);
|
||||
else
|
||||
directory->mtime = get_stat_mtime (&st);
|
||||
@@ -831,7 +831,8 @@ scan_directory (struct tar_stat_info *st)
|
||||
diag = open_diag;
|
||||
}
|
||||
else if (fstatat (fd, entry + 1, &stsub.stat,
|
||||
fstatat_flags) != 0)
|
||||
fstatat_flags)
|
||||
< 0)
|
||||
diag = stat_diag;
|
||||
else if (S_ISDIR (stsub.stat.st_mode))
|
||||
{
|
||||
@@ -842,7 +843,7 @@ scan_directory (struct tar_stat_info *st)
|
||||
else
|
||||
{
|
||||
stsub.fd = subfd;
|
||||
if (fstat (subfd, &stsub.stat) != 0)
|
||||
if (fstat (subfd, &stsub.stat) < 0)
|
||||
diag = stat_diag;
|
||||
}
|
||||
}
|
||||
@@ -1137,7 +1138,7 @@ read_obstack (FILE *fp, struct obstack *stk, idx_t *pcount)
|
||||
int c;
|
||||
idx_t i;
|
||||
|
||||
for (i = 0, c = getc (fp); c != EOF && c != 0; c = getc (fp), i++)
|
||||
for (i = 0; 0 < (c = getc (fp)); i++)
|
||||
obstack_1grow (stk, c);
|
||||
obstack_1grow (stk, 0);
|
||||
|
||||
@@ -1276,7 +1277,7 @@ read_incr_db_2 (void)
|
||||
break;
|
||||
ino = i;
|
||||
|
||||
if (read_obstack (listed_incremental_stream, &stk, &s))
|
||||
if (read_obstack (listed_incremental_stream, &stk, &s) != 0)
|
||||
break;
|
||||
|
||||
name = obstack_finish (&stk);
|
||||
@@ -1478,9 +1479,9 @@ write_directory_file (void)
|
||||
if (! fp)
|
||||
return;
|
||||
|
||||
if (fseeko (fp, 0, SEEK_SET) != 0)
|
||||
if (fseeko (fp, 0, SEEK_SET) < 0)
|
||||
seek_error (listed_incremental_option);
|
||||
if (sys_truncate (fileno (fp)) != 0)
|
||||
if (sys_truncate (fileno (fp)) < 0)
|
||||
truncate_error (listed_incremental_option);
|
||||
|
||||
int nsec = start_time.tv_nsec;
|
||||
@@ -1495,7 +1496,7 @@ write_directory_file (void)
|
||||
|
||||
if (ferror (fp))
|
||||
write_error (listed_incremental_option);
|
||||
if (fclose (fp) != 0)
|
||||
if (fclose (fp) < 0)
|
||||
close_error (listed_incremental_option);
|
||||
}
|
||||
|
||||
@@ -1724,7 +1725,7 @@ try_purge_directory (char const *directory_name)
|
||||
free (p);
|
||||
p = make_file_name (directory_name, cur);
|
||||
|
||||
if (deref_stat (p, &st) != 0)
|
||||
if (deref_stat (p, &st) < 0)
|
||||
{
|
||||
if (errno != ENOENT) /* FIXME: Maybe keep a list of renamed
|
||||
dirs and check it here? */
|
||||
|
||||
@@ -97,7 +97,7 @@ map_read (Hash_table **ptab, char const *file,
|
||||
char *colon;
|
||||
|
||||
++line;
|
||||
if (wordsplit (buf, &ws, wsopt))
|
||||
if (wordsplit (buf, &ws, wsopt) != WRDSE_OK)
|
||||
paxfatal (0, _("%s:%jd: cannot split line: %s"),
|
||||
file, line, wordsplit_strerror (&ws));
|
||||
wsopt |= WRDSF_REUSE;
|
||||
|
||||
@@ -765,7 +765,7 @@ maybe_backup_file (const char *file_name, bool this_is_the_archive)
|
||||
if (this_is_the_archive && _remdev (file_name))
|
||||
return true;
|
||||
|
||||
if (deref_stat (file_name, &file_stat) != 0)
|
||||
if (deref_stat (file_name, &file_stat) < 0)
|
||||
{
|
||||
if (errno == ENOENT)
|
||||
return true;
|
||||
@@ -814,7 +814,7 @@ undo_last_backup (void)
|
||||
if (after_backup_name)
|
||||
{
|
||||
if (renameat (chdir_fd, after_backup_name, chdir_fd, before_backup_name)
|
||||
!= 0)
|
||||
< 0)
|
||||
{
|
||||
int e = errno;
|
||||
paxerror (e, _("%s: Cannot rename to %s"),
|
||||
@@ -1023,7 +1023,7 @@ chdir_do (idx_t i)
|
||||
else
|
||||
{
|
||||
struct wd *stale = &wd[wdcache[CHDIR_CACHE_SIZE - 1]];
|
||||
if (close (stale->fd) != 0)
|
||||
if (close (stale->fd) < 0)
|
||||
close_diag (stale->name);
|
||||
stale->fd = 0;
|
||||
wdcache[CHDIR_CACHE_SIZE - 1] = i;
|
||||
@@ -1315,7 +1315,7 @@ tar_savedir (const char *name, int must_exist)
|
||||
&& (ret = streamsavedir (dir, savedir_sort_order))))
|
||||
savedir_error (name);
|
||||
|
||||
if (dir ? closedir (dir) != 0 : 0 <= fd && close (fd) != 0)
|
||||
if (dir ? closedir (dir) < 0 : 0 <= fd && close (fd) < 0)
|
||||
savedir_error (name);
|
||||
|
||||
return ret;
|
||||
|
||||
50
src/names.c
50
src/names.c
@@ -391,7 +391,7 @@ handle_file_selection_option (int key, const char *arg)
|
||||
case 'X':
|
||||
if (add_exclude_file (add_exclude, excluded, arg,
|
||||
exclude_options (), '\n')
|
||||
!= 0)
|
||||
< 0)
|
||||
paxfatal (errno, "%s", quotearg_colon (arg));
|
||||
break;
|
||||
|
||||
@@ -902,14 +902,14 @@ file_list_name (void)
|
||||
return _("command line");
|
||||
}
|
||||
|
||||
static int
|
||||
static bool
|
||||
add_file_id (const char *filename)
|
||||
{
|
||||
struct file_id_list *p;
|
||||
struct stat st;
|
||||
const char *reading_from;
|
||||
|
||||
if (stat (filename, &st))
|
||||
if (stat (filename, &st) < 0)
|
||||
stat_fatal (filename);
|
||||
reading_from = file_list_name ();
|
||||
for (p = file_id_list; p; p = p->next)
|
||||
@@ -920,7 +920,7 @@ add_file_id (const char *filename)
|
||||
quotearg_n (0, filename),
|
||||
reading_from, p->from_file);
|
||||
set_char_quoting (NULL, ':', oldc);
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
p = xmalloc (sizeof *p);
|
||||
p->next = file_id_list;
|
||||
@@ -928,7 +928,7 @@ add_file_id (const char *filename)
|
||||
p->dev = st.st_dev;
|
||||
p->from_file = reading_from;
|
||||
file_id_list = p;
|
||||
return 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Chop trailing slashes. */
|
||||
@@ -994,7 +994,7 @@ handle_option (const char *str, struct name_elt const *ent)
|
||||
return 1;
|
||||
|
||||
ws.ws_offs = 1;
|
||||
if (wordsplit (str, &ws, WRDSF_DEFFLAGS|WRDSF_DOOFFS))
|
||||
if (wordsplit (str, &ws, WRDSF_DEFFLAGS | WRDSF_DOOFFS) != WRDSE_OK)
|
||||
paxfatal (0, _("cannot split string '%s': %s"),
|
||||
str, wordsplit_strerror (&ws));
|
||||
int argc;
|
||||
@@ -1010,22 +1010,22 @@ handle_option (const char *str, struct name_elt const *ent)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
static bool
|
||||
read_next_name (struct name_elt *ent, struct name_elt *ret)
|
||||
{
|
||||
if (!ent->v.file.fp)
|
||||
{
|
||||
if (!strcmp (ent->v.file.name, "-"))
|
||||
if (strcmp (ent->v.file.name, "-") == 0)
|
||||
{
|
||||
request_stdin ("-T");
|
||||
ent->v.file.fp = stdin;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (add_file_id (ent->v.file.name))
|
||||
if (!add_file_id (ent->v.file.name))
|
||||
{
|
||||
name_list_advance ();
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
FILE *fp = fopen (ent->v.file.name, "r");
|
||||
if (!fp)
|
||||
@@ -1057,20 +1057,20 @@ read_next_name (struct name_elt *ent, struct name_elt *ret)
|
||||
if (handle_option (name_buffer, ent) == 0)
|
||||
{
|
||||
name_list_adjust ();
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
chopslash (name_buffer);
|
||||
ret->type = NELT_NAME;
|
||||
ret->v.name = name_buffer;
|
||||
return 0;
|
||||
return true;
|
||||
|
||||
case file_list_end:
|
||||
if (strcmp (ent->v.file.name, "-"))
|
||||
fclose (ent->v.file.fp);
|
||||
ent->v.file.fp = NULL;
|
||||
name_list_advance ();
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1110,7 +1110,7 @@ name_next_elt (bool change_dirs)
|
||||
break;
|
||||
|
||||
case NELT_FILE:
|
||||
if (read_next_name (ep, &entry) == 0)
|
||||
if (read_next_name (ep, &entry))
|
||||
return &entry;
|
||||
continue;
|
||||
|
||||
@@ -1392,20 +1392,20 @@ all_names_found (struct tar_stat_info *p)
|
||||
return true;
|
||||
}
|
||||
|
||||
static int
|
||||
static bool
|
||||
regex_usage_warning (const char *name)
|
||||
{
|
||||
static int warned_once = 0;
|
||||
static bool warned_once;
|
||||
|
||||
/* Warn about implicit use of the wildcards in command line arguments.
|
||||
(Default for tar prior to 1.15.91, but changed afterwards) */
|
||||
if (wildcards == default_wildcards
|
||||
&& fnmatch_pattern_has_wildcards (name, 0))
|
||||
{
|
||||
warned_once = 1;
|
||||
paxwarn (0, _("Pattern matching characters used in file names"));
|
||||
paxwarn (0, _("Use --wildcards to enable pattern matching,"
|
||||
" or --no-wildcards to suppress this warning"));
|
||||
warned_once = true;
|
||||
}
|
||||
return warned_once;
|
||||
}
|
||||
@@ -1470,13 +1470,9 @@ label_notfound (void)
|
||||
nametail = NULL;
|
||||
|
||||
if (same_order_option)
|
||||
{
|
||||
const char *name;
|
||||
|
||||
while ((name = name_next (true))
|
||||
&& regex_usage_warning (name) == 0)
|
||||
;
|
||||
}
|
||||
for (char const *name;
|
||||
(name = name_next (true)) && !regex_usage_warning (name); )
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Sorting name lists. */
|
||||
@@ -1651,7 +1647,7 @@ add_hierarchy_to_namelist (struct tar_stat_info *st, struct name *name)
|
||||
else
|
||||
{
|
||||
subdir.fd = subfd;
|
||||
if (fstat (subfd, &subdir.stat) != 0)
|
||||
if (fstat (subfd, &subdir.stat) < 0)
|
||||
stat_diag (namebuf);
|
||||
else if (! (O_DIRECTORY || S_ISDIR (subdir.stat.st_mode)))
|
||||
{
|
||||
@@ -1775,7 +1771,7 @@ collect_and_sort_names (void)
|
||||
|
||||
tar_stat_init (&st);
|
||||
|
||||
if (deref_stat (name->name, &st.stat) != 0)
|
||||
if (deref_stat (name->name, &st.stat) < 0)
|
||||
{
|
||||
stat_diag (name->name);
|
||||
continue;
|
||||
@@ -1789,7 +1785,7 @@ collect_and_sort_names (void)
|
||||
else
|
||||
{
|
||||
st.fd = dir_fd;
|
||||
if (fstat (dir_fd, &st.stat) != 0)
|
||||
if (fstat (dir_fd, &st.stat) < 0)
|
||||
stat_diag (name->name);
|
||||
else if (O_DIRECTORY || S_ISDIR (st.stat.st_mode))
|
||||
{
|
||||
|
||||
21
src/system.c
21
src/system.c
@@ -517,7 +517,7 @@ run_decompress_program (void)
|
||||
warnopt (WARN_DECOMPRESS_PROGRAM, errno, _("cannot run %s"), prog);
|
||||
warnopt (WARN_DECOMPRESS_PROGRAM, 0, _("trying %s"), p);
|
||||
}
|
||||
if (wordsplit (p, &ws, wsflags))
|
||||
if (wordsplit (p, &ws, wsflags) != WRDSE_OK)
|
||||
paxfatal (0, _("cannot split string '%s': %s"),
|
||||
p, wordsplit_strerror (&ws));
|
||||
wsflags |= WRDSF_REUSE;
|
||||
@@ -650,7 +650,7 @@ static void
|
||||
dec_to_env (char const *envar, uintmax_t num)
|
||||
{
|
||||
char numstr[UINTMAX_STRSIZE_BOUND];
|
||||
if (setenv (envar, umaxtostr (num, numstr), 1) != 0)
|
||||
if (setenv (envar, umaxtostr (num, numstr), 1) < 0)
|
||||
xalloc_die ();
|
||||
}
|
||||
|
||||
@@ -658,7 +658,7 @@ static void
|
||||
time_to_env (char const *envar, struct timespec t)
|
||||
{
|
||||
char buf[TIMESPEC_STRSIZE_BOUND];
|
||||
if (setenv (envar, code_timespec (t, buf), 1) != 0)
|
||||
if (setenv (envar, code_timespec (t, buf), 1) < 0)
|
||||
xalloc_die ();
|
||||
}
|
||||
|
||||
@@ -670,7 +670,7 @@ oct_to_env (char const *envar, mode_t m)
|
||||
if (EXPR_SIGNED (m) && sizeof m < sizeof um)
|
||||
um &= ~ (UINTMAX_MAX << TYPE_WIDTH (m));
|
||||
sprintf (buf, "%#"PRIoMAX, um);
|
||||
if (setenv (envar, buf, 1) != 0)
|
||||
if (setenv (envar, buf, 1) < 0)
|
||||
xalloc_die ();
|
||||
}
|
||||
|
||||
@@ -679,7 +679,7 @@ str_to_env (char const *envar, char const *str)
|
||||
{
|
||||
if (str)
|
||||
{
|
||||
if (setenv (envar, str, 1) != 0)
|
||||
if (setenv (envar, str, 1) < 0)
|
||||
xalloc_die ();
|
||||
}
|
||||
else
|
||||
@@ -692,7 +692,7 @@ chr_to_env (char const *envar, char c)
|
||||
char buf[2];
|
||||
buf[0] = c;
|
||||
buf[1] = 0;
|
||||
if (setenv (envar, buf, 1) != 0)
|
||||
if (setenv (envar, buf, 1) < 0)
|
||||
xalloc_die ();
|
||||
}
|
||||
|
||||
@@ -932,7 +932,7 @@ sys_exec_setmtime_script (const char *script_name,
|
||||
char *cp;
|
||||
int rc = 0;
|
||||
|
||||
if (pipe (p))
|
||||
if (pipe (p) < 0)
|
||||
paxfatal (errno, _("pipe failed"));
|
||||
|
||||
if ((pid = xfork ()) == 0)
|
||||
@@ -943,11 +943,8 @@ sys_exec_setmtime_script (const char *script_name,
|
||||
strcat (command, " ");
|
||||
strcat (command, file_name);
|
||||
|
||||
if (dirfd != AT_FDCWD)
|
||||
{
|
||||
if (fchdir (dirfd))
|
||||
paxfatal (errno, _("chdir failed"));
|
||||
}
|
||||
if (dirfd != AT_FDCWD && fchdir (dirfd) < 0)
|
||||
paxfatal (errno, _("chdir failed"));
|
||||
|
||||
close (p[0]);
|
||||
if (dup2 (p[1], STDOUT_FILENO) < 0)
|
||||
|
||||
19
src/tar.c
19
src/tar.c
@@ -1141,7 +1141,7 @@ get_date_or_file (struct tar_args *args, const char *option,
|
||||
|| *str == '.')
|
||||
{
|
||||
struct stat st;
|
||||
if (stat (str, &st) != 0)
|
||||
if (stat (str, &st) < 0)
|
||||
{
|
||||
stat_error (str);
|
||||
paxusage (_("Date sample file not found"));
|
||||
@@ -2331,7 +2331,7 @@ parse_default_options (struct tar_args *args)
|
||||
return;
|
||||
|
||||
ws.ws_offs = 1;
|
||||
if (wordsplit (opts, &ws, WRDSF_DEFFLAGS|WRDSF_DOOFFS))
|
||||
if (wordsplit (opts, &ws, WRDSF_DEFFLAGS | WRDSF_DOOFFS) != WRDSE_OK)
|
||||
paxfatal (0, _("cannot split TAR_OPTIONS: %s"), wordsplit_strerror (&ws));
|
||||
if (ws.ws_wordc)
|
||||
{
|
||||
@@ -2754,7 +2754,7 @@ decode_options (int argc, char **argv)
|
||||
for (archive_name_cursor = archive_name_array;
|
||||
archive_name_cursor < archive_name_array + archive_names;
|
||||
archive_name_cursor++)
|
||||
if (!strcmp (*archive_name_cursor, "-"))
|
||||
if (strcmp (*archive_name_cursor, "-") == 0)
|
||||
request_stdin ("-f");
|
||||
break;
|
||||
|
||||
@@ -2764,7 +2764,7 @@ decode_options (int argc, char **argv)
|
||||
for (archive_name_cursor = archive_name_array;
|
||||
archive_name_cursor < archive_name_array + archive_names;
|
||||
archive_name_cursor++)
|
||||
if (!strcmp (*archive_name_cursor, "-"))
|
||||
if (strcmp (*archive_name_cursor, "-") == 0)
|
||||
paxusage (_("Options '-Aru' are incompatible with '-f -'"));
|
||||
|
||||
default:
|
||||
@@ -2846,10 +2846,11 @@ main (int argc, char **argv)
|
||||
set_quoting_style (0, DEFAULT_QUOTING_STYLE);
|
||||
|
||||
close_stdout_set_file_name (_("stdout"));
|
||||
/* Make sure we have first three descriptors available */
|
||||
if (stdopen ())
|
||||
paxfatal (0, _("failed to assert availability"
|
||||
" of the standard file descriptors"));
|
||||
|
||||
int err = stdopen ();
|
||||
if (err != 0)
|
||||
paxfatal (err, _("failed to assert availability"
|
||||
" of the standard file descriptors"));
|
||||
|
||||
/* System V fork+wait does not work if SIGCHLD is ignored. */
|
||||
signal (SIGCHLD, SIG_DFL);
|
||||
@@ -2927,7 +2928,7 @@ main (int argc, char **argv)
|
||||
|
||||
if (stdlis == stdout)
|
||||
close_stdout ();
|
||||
else if (ferror (stderr) || fclose (stderr) != 0)
|
||||
else if (ferror (stderr) || fclose (stderr) < 0)
|
||||
set_exit_status (TAREXIT_FAILURE);
|
||||
|
||||
return exit_status;
|
||||
|
||||
@@ -134,7 +134,7 @@ add_backref_segment (struct transform *tf, idx_t ref)
|
||||
segm->v.ref = ref;
|
||||
}
|
||||
|
||||
static int
|
||||
static bool
|
||||
parse_xform_flags (int *pflags, int c)
|
||||
{
|
||||
switch (c)
|
||||
@@ -164,9 +164,9 @@ parse_xform_flags (int *pflags, int c)
|
||||
break;
|
||||
|
||||
default:
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
return 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -199,7 +199,7 @@ parse_transform_expr (const char *expr)
|
||||
expr++;
|
||||
break;
|
||||
}
|
||||
if (parse_xform_flags (&transform_flags, *expr))
|
||||
if (!parse_xform_flags (&transform_flags, *expr))
|
||||
paxusage (_("Unknown transform flag: %c"), *expr);
|
||||
}
|
||||
return expr;
|
||||
@@ -255,7 +255,7 @@ parse_transform_expr (const char *expr)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (parse_xform_flags (&tf->flags, *p))
|
||||
if (!parse_xform_flags (&tf->flags, *p))
|
||||
paxusage (_("Unknown flag in transform expression: %c"), *p);
|
||||
}
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ flush_deferred_unlinks (bool force)
|
||||
else
|
||||
fname = p->file_name;
|
||||
|
||||
if (unlinkat (chdir_fd, fname, AT_REMOVEDIR) != 0)
|
||||
if (unlinkat (chdir_fd, fname, AT_REMOVEDIR) < 0)
|
||||
{
|
||||
switch (errno)
|
||||
{
|
||||
@@ -132,7 +132,7 @@ flush_deferred_unlinks (bool force)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (unlinkat (chdir_fd, p->file_name, 0) != 0 && errno != ENOENT)
|
||||
if (unlinkat (chdir_fd, p->file_name, 0) < 0 && errno != ENOENT)
|
||||
unlink_error (p->file_name);
|
||||
}
|
||||
dunlink_reclaim (p);
|
||||
@@ -166,7 +166,7 @@ flush_deferred_unlinks (bool force)
|
||||
else
|
||||
fname = p->file_name;
|
||||
|
||||
if (unlinkat (chdir_fd, fname, AT_REMOVEDIR) != 0)
|
||||
if (unlinkat (chdir_fd, fname, AT_REMOVEDIR) < 0)
|
||||
{
|
||||
if (errno != ENOENT)
|
||||
rmdir_error (fname);
|
||||
|
||||
@@ -68,7 +68,7 @@ append_file (char *file_name)
|
||||
set_next_block_after (start + (status - 1) / BLOCKSIZE);
|
||||
}
|
||||
|
||||
if (close (handle) != 0)
|
||||
if (close (handle) < 0)
|
||||
close_error (file_name);
|
||||
}
|
||||
|
||||
|
||||
@@ -293,7 +293,7 @@ xattrs__acls_set (struct tar_stat_info const *st,
|
||||
/* No "default" IEEE 1003.1e ACL set for directory. At this moment,
|
||||
FILE_NAME may already have inherited default acls from parent
|
||||
directory; clean them up. */
|
||||
if (acl_delete_def_file_at (chdir_fd, file_name))
|
||||
if (acl_delete_def_file_at (chdir_fd, file_name) < 0)
|
||||
warnopt (WARN_XATTR_WRITE, errno,
|
||||
_("acl_delete_def_file_at: Cannot drop default POSIX ACLs "
|
||||
"for file '%s'"),
|
||||
@@ -737,7 +737,7 @@ xattrs_xattrs_set (struct tar_stat_info const *st,
|
||||
the first run except 'security.capability' which is restored in
|
||||
'later_run == 1'. */
|
||||
if (typeflag == REGTYPE
|
||||
&& later_run == !!strcmp (keyword, "security.capability"))
|
||||
&& later_run == (strcmp (keyword, "security.capability") != 0))
|
||||
continue;
|
||||
|
||||
if (xattrs_masked_out (keyword, false /* extracting */ ))
|
||||
|
||||
Reference in New Issue
Block a user