check_time (char const *file_name, struct timespec t)
{
if (t.tv_sec <= 0)
- WARN ((0, 0, _("%s: implausibly old time stamp %s"),
- file_name, tartime (t, true)));
+ WARNOPT (WARN_TIMESTAMP,
+ (0, 0, _("%s: implausibly old time stamp %s"),
+ file_name, tartime (t, true)));
else if (timespec_cmp (volume_start_time, t) < 0)
{
struct timespec now;
diff.tv_nsec += BILLION;
diff.tv_sec--;
}
- WARN ((0, 0, _("%s: time stamp %s is %s s in the future"),
- file_name, tartime (t, true), code_timespec (diff, buf)));
+ WARNOPT (WARN_TIMESTAMP,
+ (0, 0, _("%s: time stamp %s is %s s in the future"),
+ file_name, tartime (t, true), code_timespec (diff, buf)));
}
}
}
if (!conttype_diagnosed)
{
conttype_diagnosed = 1;
- WARN ((0, 0, _("Extracting contiguous files as regular files")));
+ WARNOPT (WARN_CONTIGUOUS_CAST,
+ (0, 0, _("Extracting contiguous files as regular files")));
}
}
fd = open (file_name, openflag, mode);
if (!warned_once)
{
warned_once = 1;
- WARN ((0, 0, _("Attempting extraction of symbolic links as hard links")));
+ WARNOPT (WARN_SYMBOLIC_CAST,
+ (0, 0,
+ _("Attempting extraction of symbolic links as hard links")));
}
return extract_link (file_name, typeflag);
#endif
break;
default:
- WARN ((0, 0,
- _("%s: Unknown file type `%c', extracted as normal file"),
- quotearg_colon (file_name), typeflag));
+ WARNOPT (WARN_UNKNOWN_CAST,
+ (0, 0,
+ _("%s: Unknown file type `%c', extracted as normal file"),
+ quotearg_colon (file_name), typeflag));
*fun = extract_file;
}
case KEEP_NEWER_FILES:
if (file_newer_p (file_name, ¤t_stat_info))
{
- WARN ((0, 0, _("Current %s is newer or same age"),
- quote (file_name)));
+ WARNOPT (WARN_IGNORE_NEWER,
+ (0, 0, _("Current %s is newer or same age"),
+ quote (file_name)));
return 0;
}
break;
char typeflag;
tar_extractor_t fun;
+ fatal_exit_hook = extract_finish;
+
/* Try to disable the ability to unlink a directory. */
priv_set_remove_linkdir ();
}
return true;
}
-
-void
-fatal_exit (void)
-{
- extract_finish ();
- error (TAREXIT_FAILURE, 0, _("Error is not recoverable: exiting now"));
- abort ();
-}
-
-void
-xalloc_die (void)
-{
- error (0, 0, "%s", _("memory exhausted"));
- fatal_exit ();
-}