void
assign_string (char **string, const char *value)
{
- if (*string)
- free (*string);
+ free (*string);
*string = value ? xstrdup (value) : 0;
}
{
if (chdir_current != i)
{
- static size_t counter;
struct wd *curr = &wd[i];
int fd = curr->fd;
{
if (! IS_ABSOLUTE_FILE_NAME (curr->name))
chdir_do (i - 1);
- fd = openat (chdir_fd, curr->name, open_searchdir_flags);
+ fd = openat (chdir_fd, curr->name,
+ open_searchdir_flags & ~ O_NOFOLLOW);
if (fd < 0)
open_fatal (curr->name);
diagfn (name);
}
-void
-dir_removed_diag (const char *name, bool top_level,
- void (*diagfn) (char const *name))
-{
- if (!top_level && errno == ENOENT)
- {
- WARNOPT (WARN_FILE_REMOVED,
- (0, 0, _("%s: Directory removed before we read it"),
- quotearg_colon (name)));
- set_exit_status (TAREXIT_DIFFERS);
- }
- else
- diagfn (name);
-}
-
void
write_fatal_details (char const *name, ssize_t status, size_t size)
{