diff --git a/libtar/output.c b/libtar/output.c
index 015179d..8611b41 100755
--- a/libtar/output.c
+++ b/libtar/output.c
@@ -36,37 +36,37 @@
 void
 th_print(TAR *t)
 {
-	puts("\nPrinting tar header:");
-	printf("  name     = \"%.100s\"\n", t->th_buf.name);
-	printf("  mode     = \"%.8s\"\n", t->th_buf.mode);
-	printf("  uid      = \"%.8s\"\n", t->th_buf.uid);
-	printf("  gid      = \"%.8s\"\n", t->th_buf.gid);
-	printf("  size     = \"%.12s\"\n", t->th_buf.size);
-	printf("  mtime    = \"%.12s\"\n", t->th_buf.mtime);
-	printf("  chksum   = \"%.8s\"\n", t->th_buf.chksum);
-	printf("  typeflag = \'%c\'\n", t->th_buf.typeflag);
-	printf("  linkname = \"%.100s\"\n", t->th_buf.linkname);
-	printf("  magic    = \"%.6s\"\n", t->th_buf.magic);
-	/*printf("  version  = \"%.2s\"\n", t->th_buf.version); */
-	/*printf("  version[0] = \'%c\',version[1] = \'%c\'\n",
+	LOG("Printing tar header:");
+	LOG("  name     = \"%.100s\"\n", t->th_buf.name);
+	LOG("  mode     = \"%.8s\"\n", t->th_buf.mode);
+	LOG("  uid      = \"%.8s\"\n", t->th_buf.uid);
+	LOG("  gid      = \"%.8s\"\n", t->th_buf.gid);
+	LOG("  size     = \"%.12s\"\n", t->th_buf.size);
+	LOG("  mtime    = \"%.12s\"\n", t->th_buf.mtime);
+	LOG("  chksum   = \"%.8s\"\n", t->th_buf.chksum);
+	LOG("  typeflag = \'%c\'\n", t->th_buf.typeflag);
+	LOG("  linkname = \"%.100s\"\n", t->th_buf.linkname);
+	LOG("  magic    = \"%.6s\"\n", t->th_buf.magic);
+	/*LOG("  version  = \"%.2s\"\n", t->th_buf.version); */
+	/*LOG("  version[0] = \'%c\',version[1] = \'%c\'\n",
 	       t->th_buf.version[0], t->th_buf.version[1]);*/
-	printf("  uname    = \"%.32s\"\n", t->th_buf.uname);
-	printf("  gname    = \"%.32s\"\n", t->th_buf.gname);
-	printf("  devmajor = \"%.8s\"\n", t->th_buf.devmajor);
-	printf("  devminor = \"%.8s\"\n", t->th_buf.devminor);
-	printf("  prefix   = \"%.155s\"\n", t->th_buf.prefix);
-	printf("  padding  = \"%.12s\"\n", t->th_buf.padding);
-	printf("  gnu_longname = \"%s\"\n",
+	LOG("  uname    = \"%.32s\"\n", t->th_buf.uname);
+	LOG("  gname    = \"%.32s\"\n", t->th_buf.gname);
+	LOG("  devmajor = \"%.8s\"\n", t->th_buf.devmajor);
+	LOG("  devminor = \"%.8s\"\n", t->th_buf.devminor);
+	LOG("  prefix   = \"%.155s\"\n", t->th_buf.prefix);
+	LOG("  padding  = \"%.12s\"\n", t->th_buf.padding);
+	LOG("  gnu_longname = \"%s\"\n",
 	       (t->th_buf.gnu_longname ? t->th_buf.gnu_longname : "[NULL]"));
-	printf("  gnu_longlink = \"%s\"\n",
+	LOG("  gnu_longlink = \"%s\"\n",
 	       (t->th_buf.gnu_longlink ? t->th_buf.gnu_longlink : "[NULL]"));
 		   
 #ifdef USE_FSCRYPT
 #ifdef USE_FSCRYPT_POLICY_V1
-	printf("  fep = \"%s\"\n",
+	LOG("  fep = \"%s\"\n",
 	       (t->th_buf.fep ? t->th_buf.fep->master_key_descriptor : (uint8_t*) "[NULL]"));
 #else
-	printf("  fep = \"%s\"\n",
+	LOG("  fep = \"%s\"\n",
 	       (t->th_buf.fep ? t->th_buf.fep->master_key_identifier : (uint8_t*) "[NULL]"));
 #endif
 #endif
@@ -110,36 +110,36 @@
 		strlcpy(groupname, gr->gr_name, sizeof(groupname));
 
 	strmode(th_get_mode(t), modestring);
-	printf("%.10s %-8.8s %-8.8s ", modestring, username, groupname);
+	LOG("%.10s %-8.8s %-8.8s ", modestring, username, groupname);
 
 	if (TH_ISCHR(t) || TH_ISBLK(t))
-		printf(" %3d, %3d ", (int)th_get_devmajor(t), (int)th_get_devminor(t));
+		LOG(" %3d, %3d ", (int)th_get_devmajor(t), (int)th_get_devminor(t));
 	else
-		printf("%9ld ", (long)th_get_size(t));
+		LOG("%9ld ", (long)th_get_size(t));
 
 	mtime = th_get_mtime(t);
 	mtm = localtime(&mtime);
 #ifdef HAVE_STRFTIME
 	strftime(timebuf, sizeof(timebuf), "%h %e %H:%M %Y", mtm);
-	printf("%s", timebuf);
+	LOG("%s", timebuf);
 #else
-	printf("%.3s %2d %2d:%02d %4d",
+	LOG("%.3s %2d %2d:%02d %4d",
 	       months[mtm->tm_mon],
 	       mtm->tm_mday, mtm->tm_hour, mtm->tm_min, mtm->tm_year + 1900);
 #endif
 
-	printf(" %s", th_get_pathname(t));
+	LOG(" %s", th_get_pathname(t));
 
 	if (TH_ISSYM(t) || TH_ISLNK(t))
 	{
 		if (TH_ISSYM(t))
-			printf(" -> ");
+			LOG(" -> ");
 		else
-			printf(" link to ");
+			LOG(" link to ");
 		if ((t->options & TAR_GNU) && t->th_buf.gnu_longlink != NULL)
-			printf("%s", t->th_buf.gnu_longlink);
+			LOG("%s", t->th_buf.gnu_longlink);
 		else
-			printf("%.100s", t->th_buf.linkname);
+			LOG("%.100s", t->th_buf.linkname);
 	}
 
 	putchar('\n');
