Elide non-DFSG compliant upstream components
[debian/tar] / lib / paxlib.h
index d0ba45ba1e66ac216d2fdfc96c1adae2a67da087..d4251d14cd126892649916716a9470c21ab54ad8 100644 (file)
@@ -32,6 +32,8 @@
 #define PAXEXIT_DIFFERS 1
 #define PAXEXIT_FAILURE 2
 
+extern void (*error_hook) (void);
+
 /* Both WARN and ERROR write a message on stderr and continue processing,
    however ERROR manages so tar will exit unsuccessfully.  FATAL_ERROR
    writes a message on stderr and aborts immediately, with another message
    is zero when the error is not being detected by the system.  */
 
 #define WARN(Args) \
-  error Args
+  do { if (error_hook) error_hook (); error Args; } while (0)
 #define ERROR(Args) \
-  (error Args, exit_status = PAXEXIT_FAILURE)
+  do                                           \
+    {                                          \
+      if (error_hook) error_hook ();           \
+      error Args;                              \
+      exit_status = PAXEXIT_FAILURE;           \
+    }                                          \
+  while (0)
 #define FATAL_ERROR(Args) \
-  (error Args, fatal_exit ())
+  do                                           \
+    {                                          \
+      if (error_hook) error_hook ();           \
+      error Args;                              \
+      fatal_exit ();                           \
+    }                                          \
+  while (0)
 #define USAGE_ERROR(Args) \
-  (error Args, usage (PAXEXIT_FAILURE))
+  do                                           \
+    {                                          \
+      if (error_hook) error_hook ();           \
+      error Args;                              \
+      usage (PAXEXIT_FAILURE);                 \
+    }                                          \
+  while (0)
 
 extern int exit_status;