libtar: use libtar tag in logging

Change-Id: I292366a237f9c8464f791d4d3cddaffc0d854577
Signed-off-by: Mohd Faraz <androiabledroid@gmail.com>
(cherry picked from commit 566ef6bcaab4b038956ccff73876876aedda65eb)
diff --git a/libtar/android_utils.c b/libtar/android_utils.c
index 4aa3425..b854604 100644
--- a/libtar/android_utils.c
+++ b/libtar/android_utils.c
@@ -78,7 +78,7 @@
 	struct stat buf;
 	memset(&buf, 0, sizeof(buf));
 	if (stat(path, &buf) != 0) {
-		printf("failed to stat %s\n", path);
+		LOG("failed to stat %s\n", path);
 		return -1;
 	}
 	*inode = buf.st_ino;
@@ -97,7 +97,7 @@
 	snprintf(path, PATH_MAX, "%s/%s", parent, name);
 
 	if (mkdirhier(path) == -1) {
-		printf("failed to mkdirhier for %s\n", path);
+		LOG("failed to mkdirhier for %s\n", path);
 		return -1;
 	}
 
@@ -114,9 +114,9 @@
 	}
 
 	inode_raw = inode;
-	printf("setting %s on %s pointing to %s\n", inode_xattr, parent, path);
+	LOG("setting %s on %s pointing to %s\n", inode_xattr, parent, path);
 	if (setxattr(parent, inode_xattr, &inode_raw, sizeof(inode_raw), 0) != 0 && errno != EOPNOTSUPP) {
-		printf("Failed to write xattr %s at %s (%s)\n", inode_xattr, parent, strerror(errno));
+		LOG("Failed to write xattr %s at %s (%s)\n", inode_xattr, parent, strerror(errno));
 		return -1;
 	}
 	return 0;
diff --git a/libtar/append.c b/libtar/append.c
index 7557158..8c70aa1 100755
--- a/libtar/append.c
+++ b/libtar/append.c
@@ -84,7 +84,7 @@
 	char path[MAXPATHLEN];
 
 #ifdef DEBUG
-	printf("==> tar_append_file(TAR=0x%p (\"%s\"), realname=\"%s\", "
+	LOG("==> tar_append_file(TAR=0x%p (\"%s\"), realname=\"%s\", "
 	       "savename=\"%s\")\n", (void*) t, t->pathname, realname,
 	       (savename ? savename : "[NULL]"));
 #endif
@@ -99,14 +99,14 @@
 
 	/* set header block */
 #ifdef DEBUG
-	puts("tar_append_file(): setting header block...");
+	LOG("tar_append_file(): setting header block...");
 #endif
 	memset(&(t->th_buf), 0, sizeof(struct tar_header));
 	th_set_from_stat(t, &s);
 
 	/* set the header path */
 #ifdef DEBUG
-	puts("tar_append_file(): setting header path...");
+	LOG("tar_append_file(): setting header path...");
 #endif
 	th_set_path(t, (savename ? savename : realname));
 
@@ -123,7 +123,7 @@
 		if (lgetfilecon(realname, &selinux_context) >= 0)
 		{
 			t->th_buf.selinux_context = strdup(selinux_context);
-			printf("  ==> set selinux context: %s\n", selinux_context);
+			LOG("  ==> set selinux context: %s\n", selinux_context);
 			freecon(selinux_context);
 		}
 		else
@@ -148,7 +148,7 @@
 		t->th_buf.fep = (struct fscrypt_policy_v2 *)malloc(sizeof(struct fscrypt_policy_v2));
 #endif
 		if (!t->th_buf.fep) {
-			printf("malloc fs_encryption_policy\n");
+			LOG("malloc fs_encryption_policy\n");
 			return -1;
 		}
 
@@ -172,18 +172,18 @@
 				|| strncmp((char *) tar_policy, SYSTEM_DE_FSCRYPT_POLICY, sizeof(SYSTEM_DE_FSCRYPT_POLICY)) == 0) {
 #ifdef USE_FSCRYPT_POLICY_V1
 					memcpy(t->th_buf.fep->master_key_descriptor, tar_policy, FS_KEY_DESCRIPTOR_SIZE);
-					printf("found fscrypt policy '%s' - '%s' - '%s'\n", realname, t->th_buf.fep->master_key_descriptor, policy_hex);
+					LOG("found fscrypt policy '%s' - '%s' - '%s'\n", realname, t->th_buf.fep->master_key_descriptor, policy_hex);
 #else
 					memcpy(t->th_buf.fep->master_key_identifier, tar_policy, FSCRYPT_KEY_IDENTIFIER_SIZE);
-					printf("found fscrypt policy '%s' - '%s' - '%s'\n", realname, t->th_buf.fep->master_key_identifier, policy_hex);
+					LOG("found fscrypt policy '%s' - '%s' - '%s'\n", realname, t->th_buf.fep->master_key_identifier, policy_hex);
 #endif
 				} else {
-					printf("failed to match fscrypt tar policy for '%s' - '%s'\n", realname, policy_hex);
+					LOG("failed to match fscrypt tar policy for '%s' - '%s'\n", realname, policy_hex);
 					free(t->th_buf.fep);
 					t->th_buf.fep = NULL;
 				}
 			} else {
-				printf("failed to lookup fscrypt tar policy for '%s' - '%s'\n", realname, policy_hex);
+				LOG("failed to lookup fscrypt tar policy for '%s' - '%s'\n", realname, policy_hex);
 				free(t->th_buf.fep);
 				t->th_buf.fep = NULL;
 			}
@@ -221,28 +221,28 @@
 		{
 			t->th_buf.has_user_default = 1;
 #if 1 //def DEBUG
-			printf("storing xattr user.default\n");
+			LOG("storing xattr user.default\n");
 #endif
 		}
 		if (getxattr(realname, "user.inode_cache", NULL, 0) >= 0)
 		{
 			t->th_buf.has_user_cache = 1;
 #if 1 //def DEBUG
-			printf("storing xattr user.inode_cache\n");
+			LOG("storing xattr user.inode_cache\n");
 #endif
 		}
 		if (getxattr(realname, "user.inode_code_cache", NULL, 0) >= 0)
 		{
 			t->th_buf.has_user_code_cache = 1;
 #if 1 //def DEBUG
-			printf("storing xattr user.inode_code_cache\n");
+			LOG("storing xattr user.inode_code_cache\n");
 #endif
 		}
 	}
 
 	/* check if it's a hardlink */
 #ifdef DEBUG
-	puts("tar_append_file(): checking inode cache for hardlink...");
+	LOG("tar_append_file(): checking inode cache for hardlink...");
 #endif
 	libtar_hashptr_reset(&hp);
 	if (libtar_hash_getkey(t->h, &hp, &(s.st_dev),
@@ -251,7 +251,7 @@
 	else
 	{
 #ifdef DEBUG
-		printf("+++ adding hash for device (0x%x, 0x%x)...\n",
+		LOG("+++ adding hash for device (0x%x, 0x%x)...\n",
 		       major(s.st_dev), minor(s.st_dev));
 #endif
 		td = (tar_dev_t *)calloc(1, sizeof(tar_dev_t));
@@ -268,7 +268,7 @@
 	{
 		ti = (tar_ino_t *)libtar_hashptr_data(&hp);
 #ifdef DEBUG
-		printf("    tar_append_file(): encoding hard link \"%s\" "
+		LOG("    tar_append_file(): encoding hard link \"%s\" "
 		       "to \"%s\"...\n", realname, ti->ti_name);
 #endif
 		t->th_buf.typeflag = LNKTYPE;
@@ -277,7 +277,7 @@
 	else
 	{
 #ifdef DEBUG
-		printf("+++ adding entry: device (0x%d,0x%x), inode %lu"
+		LOG("+++ adding entry: device (0x%d,0x%x), inode %lu"
 		       "(\"%s\")...\n", major(s.st_dev), minor(s.st_dev),
 		       (unsigned long) s.st_ino, realname);
 #endif
@@ -300,7 +300,7 @@
 			i = MAXPATHLEN - 1;
 		path[i] = '\0';
 #ifdef DEBUG
-		printf("tar_append_file(): encoding symlink \"%s\" -> "
+		LOG("tar_append_file(): encoding symlink \"%s\" -> "
 		       "\"%s\"...\n", realname, path);
 #endif
 		th_set_link(t, path);
@@ -308,21 +308,21 @@
 
 	/* print file info */
 	if (t->options & TAR_VERBOSE)
-		printf("%s\n", th_get_pathname(t));
+		LOG("%s\n", th_get_pathname(t));
 
 #ifdef DEBUG
-	puts("tar_append_file(): writing header");
+	LOG("tar_append_file(): writing header");
 #endif
 	/* write header */
 	if (th_write(t) != 0)
 	{
 #ifdef DEBUG
-		printf("t->fd = %ld\n", t->fd);
+		LOG("t->fd = %ld\n", t->fd);
 #endif
 		return -1;
 	}
 #ifdef DEBUG
-	puts("tar_append_file(): back from th_write()");
+	LOG("tar_append_file(): back from th_write()");
 #endif
 
 	/* if it's a regular file, write the contents as well */
diff --git a/libtar/block.c b/libtar/block.c
index b46d55a..91342c2 100755
--- a/libtar/block.c
+++ b/libtar/block.c
@@ -72,7 +72,7 @@
 	int num_zero_blocks = 0;
 
 #ifdef DEBUG
-	printf("==> th_read_internal(TAR=\"%s\")\n", t->pathname);
+	LOG("==> th_read_internal(TAR=\"%s\")\n", t->pathname);
 #endif
 
 	while ((i = tar_block_read(t, &(t->th_buf))) == T_BLOCKSIZE)
@@ -93,7 +93,7 @@
 		    && strncmp(t->th_buf.magic, TMAGIC, TMAGLEN - 1) != 0)
 		{
 #ifdef DEBUG
-			puts("!!! unknown magic value in tar header");
+			LOG("!!! unknown magic value in tar header");
 #endif
 			return -2;
 		}
@@ -102,7 +102,7 @@
 		    && strncmp(t->th_buf.version, TVERSION, TVERSLEN) != 0)
 		{
 #ifdef DEBUG
-			puts("!!! unknown version value in tar header");
+			LOG("!!! unknown version value in tar header");
 #endif
 			return -2;
 		}
@@ -112,7 +112,7 @@
 		    && !th_crc_ok(t))
 		{
 #ifdef DEBUG
-			puts("!!! tar header checksum error");
+			LOG("!!! tar header checksum error");
 #endif
 			return -2;
 		}
@@ -121,7 +121,7 @@
 	}
 
 #ifdef DEBUG
-	printf("<== th_read_internal(): returning %d\n", i);
+	LOG("<== th_read_internal(): returning %d\n", i);
 #endif
 	return i;
 }
@@ -136,7 +136,7 @@
 	char *ptr;
 
 #ifdef DEBUG
-	printf("==> th_read(t=0x%p)\n", (void *)t);
+	LOG("==> th_read(t=0x%p)\n", (void *)t);
 #endif
 
 	if (t->th_buf.gnu_longname != NULL)
@@ -183,7 +183,7 @@
 			return -1;
 		}
 #ifdef DEBUG
-		printf("    th_read(): GNU long linkname detected "
+		LOG("    th_read(): GNU long linkname detected "
 		       "(%zu bytes, %zu blocks)\n", sz, blocks);
 #endif
 		t->th_buf.gnu_longlink = (char *)malloc(blocks * T_BLOCKSIZE);
@@ -194,7 +194,7 @@
 		     j++, ptr += T_BLOCKSIZE)
 		{
 #ifdef DEBUG
-			printf("    th_read(): reading long linkname "
+			LOG("    th_read(): reading long linkname "
 			       "(%zu blocks left, ptr == %p)\n", blocks-j, (void *) ptr);
 #endif
 			i = tar_block_read(t, ptr);
@@ -205,11 +205,11 @@
 				return -1;
 			}
 #ifdef DEBUG
-			printf("    th_read(): read block == \"%s\"\n", ptr);
+			LOG("    th_read(): read block == \"%s\"\n", ptr);
 #endif
 		}
 #ifdef DEBUG
-		printf("    th_read(): t->th_buf.gnu_longlink == \"%s\"\n",
+		LOG("    th_read(): t->th_buf.gnu_longlink == \"%s\"\n",
 		       t->th_buf.gnu_longlink);
 #endif
 
@@ -233,7 +233,7 @@
 			return -1;
 		}
 #ifdef DEBUG
-		printf("    th_read(): GNU long filename detected "
+		LOG("    th_read(): GNU long filename detected "
 		       "(%zu bytes, %zu blocks)\n", sz, blocks);
 #endif
 		t->th_buf.gnu_longname = (char *)malloc(blocks * T_BLOCKSIZE);
@@ -244,7 +244,7 @@
 		     j++, ptr += T_BLOCKSIZE)
 		{
 #ifdef DEBUG
-			printf("    th_read(): reading long filename "
+			LOG("    th_read(): reading long filename "
 			       "(%zu blocks left, ptr == %p)\n", blocks-j, (void *) ptr);
 #endif
 			i = tar_block_read(t, ptr);
@@ -255,11 +255,11 @@
 				return -1;
 			}
 #ifdef DEBUG
-			printf("    th_read(): read block == \"%s\"\n", ptr);
+			LOG("    th_read(): read block == \"%s\"\n", ptr);
 #endif
 		}
 #ifdef DEBUG
-		printf("    th_read(): t->th_buf.gnu_longname == \"%s\"\n",
+		LOG("    th_read(): t->th_buf.gnu_longname == \"%s\"\n",
 		       t->th_buf.gnu_longname);
 #endif
 
@@ -280,7 +280,7 @@
 		if(sz >= T_BLOCKSIZE) // Not supported
 		{
 #ifdef DEBUG
-			printf("    th_read(): Extended header is too long!\n");
+			LOG("    th_read(): Extended header is too long!\n");
 #endif
 		}
 		else
@@ -306,7 +306,7 @@
 				memcpy(&t->th_buf.cap_data, start, sizeof(struct vfs_cap_data));
 				t->th_buf.has_cap_data = 1;
 #ifdef DEBUG
-				printf("    th_read(): Posix capabilities detected\n");
+				LOG("    th_read(): Posix capabilities detected\n");
 #endif
 			} // end posix capabilities
 			// selinux contexts
@@ -319,7 +319,7 @@
 				{
 					t->th_buf.selinux_context = strndup(start, end-start);
 #ifdef DEBUG
-					printf("    th_read(): SELinux context xattr detected: %s\n", t->th_buf.selinux_context);
+					LOG("    th_read(): SELinux context xattr detected: %s\n", t->th_buf.selinux_context);
 #endif
 				}
 			} // end selinux contexts
@@ -329,7 +329,7 @@
 			{
 				t->th_buf.has_user_default = 1;
 #ifdef DEBUG
-				printf("    th_read(): android user.default xattr detected\n");
+				LOG("    th_read(): android user.default xattr detected\n");
 #endif
 			} // end android user.default xattr
 			// android user.inode_cache xattr
@@ -338,7 +338,7 @@
 			{
 				t->th_buf.has_user_cache = 1;
 #ifdef DEBUG
-				printf("    th_read(): android user.inode_cache xattr detected\n");
+				LOG("    th_read(): android user.inode_cache xattr detected\n");
 #endif
 			} // end android user.inode_cache xattr
 			// android user.inode_code_cache xattr
@@ -347,7 +347,7 @@
 			{
 				t->th_buf.has_user_code_cache = 1;
 #ifdef DEBUG
-				printf("    th_read(): android user.inode_code_cache xattr detected\n");
+				LOG("    th_read(): android user.inode_code_cache xattr detected\n");
 #endif
 			} // end android user.inode_code_cache xattr
 
@@ -360,7 +360,7 @@
 				t->th_buf.fep = (struct fscrypt_policy_v2*)malloc(sizeof(struct fscrypt_policy_v2));
 #endif
 				if (!t->th_buf.fep) {
-					printf("malloc failed for fscrypt policy\n");
+					LOG("malloc failed for fscrypt policy\n");
 					return -1;
 				}
 				start += FSCRYPT_TAG_LEN;
@@ -372,14 +372,14 @@
 					char *newline_check = start + sizeof(struct fscrypt_policy_v2);
 #endif
 					if (*newline_check != '\n')
-						printf("did not find newline char in expected location, continuing anyway...\n");
+						LOG("did not find newline char in expected location, continuing anyway...\n");
 #ifdef USE_FSCRYPT_POLICY_V1
 					memcpy(t->th_buf.fep, start, sizeof(struct fscrypt_policy_v1));
 #else
 					memcpy(t->th_buf.fep, start, sizeof(struct fscrypt_policy_v2));
 #endif
 #ifdef DEBUG
-					printf("    th_read(): FSCrypt policy detected: %i %i %i %i %s\n",
+					LOG("    th_read(): FSCrypt policy detected: %i %i %i %i %s\n",
 						(int)t->th_buf.fep->version,
 						(int)t->th_buf.fep->contents_encryption_mode,
 						(int)t->th_buf.fep->filenames_encryption_mode,
@@ -392,7 +392,7 @@
 #endif
 				}
 				else {
-					printf("     invalid fscrypt header found\n");
+					LOG("     invalid fscrypt header found\n");
 				}
 			}
 #endif // USE_FSCRYPT
@@ -467,14 +467,14 @@
 	char buf[T_BLOCKSIZE];
 
 #ifdef DEBUG
-	printf("==> th_write(TAR=\"%s\")\n", t->pathname);
+	LOG("==> th_write(TAR=\"%s\")\n", t->pathname);
 	th_print(t);
 #endif
 
 	if ((t->options & TAR_GNU) && t->th_buf.gnu_longlink != NULL)
 	{
 #ifdef DEBUG
-		printf("th_write(): using gnu_longlink (\"%s\")\n",
+		LOG("th_write(): using gnu_longlink (\"%s\")\n",
 		       t->th_buf.gnu_longlink);
 #endif
 		/* save old size and type */
@@ -525,7 +525,7 @@
 	if ((t->options & TAR_GNU) && t->th_buf.gnu_longname != NULL)
 	{
 #ifdef DEBUG
-		printf("th_write(): using gnu_longname (\"%s\")\n",
+		LOG("th_write(): using gnu_longname (\"%s\")\n",
 		       t->th_buf.gnu_longname);
 #endif
 		/* save old size and type */
@@ -579,7 +579,7 @@
 	if((t->options & TAR_STORE_SELINUX) && t->th_buf.selinux_context != NULL)
 	{
 #ifdef DEBUG
-		printf("th_write(): using selinux_context (\"%s\")\n",
+		LOG("th_write(): using selinux_context (\"%s\")\n",
 		       t->th_buf.selinux_context);
 #endif
 		/* setup size - EXT header has format "*size of this whole tag as ascii numbers* *space* *content* *newline* */
@@ -599,10 +599,10 @@
 	{
 #ifdef DEBUG
 #ifdef USE_FSCRYPT_POLICY_V1
-		printf("th_write(): using fscrypt_policy %s\n",
+		LOG("th_write(): using fscrypt_policy %s\n",
 		       t->th_buf.fep->master_key_descriptor);
 #else
-		printf("th_write(): using fscrypt_policy %s\n",
+		LOG("th_write(): using fscrypt_policy %s\n",
 		       t->th_buf.fep->master_key_identifier);
 #endif
 #endif
@@ -642,7 +642,7 @@
 	if((t->options & TAR_STORE_POSIX_CAP) && t->th_buf.has_cap_data)
 	{
 #ifdef DEBUG
-		printf("th_write(): has a posix capability\n");
+		LOG("th_write(): has a posix capability\n");
 #endif
 		sz = CAPABILITIES_TAG_LEN + sizeof(struct vfs_cap_data) + 3 + 1;
 
@@ -669,7 +669,7 @@
 	{
 		if (t->th_buf.has_user_default) {
 #ifdef DEBUG
-			printf("th_write(): has android user.default xattr\n");
+			LOG("th_write(): has android user.default xattr\n");
 #endif
 			sz = ANDROID_USER_DEFAULT_TAG_LEN + 3 + 1;
 
@@ -690,7 +690,7 @@
 		}
 		if (t->th_buf.has_user_cache) {
 #ifdef DEBUG
-			printf("th_write(): has android user.inode_cache xattr\n");
+			LOG("th_write(): has android user.inode_cache xattr\n");
 #endif
 			sz = ANDROID_USER_CACHE_TAG_LEN + 3 + 1;
 
@@ -711,7 +711,7 @@
 		}
 		if (t->th_buf.has_user_code_cache) {
 #ifdef DEBUG
-			printf("th_write(): has android user.inode_code_cache xattr\n");
+			LOG("th_write(): has android user.inode_code_cache xattr\n");
 #endif
 			sz = ANDROID_USER_CODE_CACHE_TAG_LEN + 3 + 1;
 
@@ -750,7 +750,7 @@
 	}
 
 #ifdef DEBUG
-	puts("th_write(): returning 0");
+	LOG("th_write(): returning 0");
 #endif
 	return 0;
 }
diff --git a/libtar/encode.c b/libtar/encode.c
index 1e679d8..c64a71c 100644
--- a/libtar/encode.c
+++ b/libtar/encode.c
@@ -76,7 +76,7 @@
 	size_t pathname_len = strlen(pathname);
 
 #ifdef DEBUG
-	printf("in th_set_path(th, pathname=\"%s\")\n", pathname);
+	LOG("in th_set_path(th, pathname=\"%s\")\n", pathname);
 #endif
 
 	if (t->th_buf.gnu_longname != NULL)
@@ -106,7 +106,7 @@
 		tmp = strchr(&(pathname[pathname_len - T_NAMELEN]), '/');
 		if (tmp == NULL)
 		{
-			printf("!!! '/' not found in \"%s\"\n", pathname);
+			LOG("!!! '/' not found in \"%s\"\n", pathname);
 			return;
 		}
 		snprintf(tail_path, T_NAMELEN + 1, "%s%s", &tmp[1], suffix);
@@ -128,7 +128,7 @@
 	}
 
 #ifdef DEBUG
-	puts("returning from th_set_path()...");
+	LOG("returning from th_set_path()...");
 #endif
 }
 
@@ -138,7 +138,7 @@
 th_set_link(TAR *t, const char *linkname)
 {
 #ifdef DEBUG
-	printf("==> th_set_link(th, linkname=\"%s\")\n", linkname);
+	LOG("==> th_set_link(th, linkname=\"%s\")\n", linkname);
 #endif
 
 	if (strlen(linkname) >= T_NAMELEN && (t->options & TAR_GNU))
@@ -169,7 +169,7 @@
 th_set_device(TAR *t, dev_t device)
 {
 #ifdef DEBUG
-	printf("th_set_device(): major = %d, minor = %d\n",
+	LOG("th_set_device(): major = %d, minor = %d\n",
 	       major(device), minor(device));
 #endif
 	int_to_oct(major(device), t->th_buf.devmajor, 8);
diff --git a/libtar/extract.c b/libtar/extract.c
index 08e2914..85e3e40 100755
--- a/libtar/extract.c
+++ b/libtar/extract.c
@@ -65,7 +65,7 @@
 	ut.modtime = ut.actime = th_get_mtime(t);
 
 #ifdef DEBUG
-	printf("tar_set_file_perms(): setting perms: %s (mode %04o, uid %d, gid %d)\n",
+	LOG("tar_set_file_perms(): setting perms: %s (mode %04o, uid %d, gid %d)\n",
 		filename, mode, uid, gid);
 #endif
 
@@ -167,7 +167,7 @@
 	if((t->options & TAR_STORE_SELINUX) && t->th_buf.selinux_context != NULL)
 	{
 #ifdef DEBUG
-		printf("tar_extract_file(): restoring SELinux context %s to file %s\n", t->th_buf.selinux_context, realname);
+		LOG("tar_extract_file(): restoring SELinux context %s to file %s\n", t->th_buf.selinux_context, realname);
 #endif
 		if (lsetfilecon(realname, t->th_buf.selinux_context) < 0)
 			fprintf(stderr, "tar_extract_file(): failed to restore SELinux context %s to file %s !!!\n", t->th_buf.selinux_context, realname);
@@ -176,7 +176,7 @@
 	if((t->options & TAR_STORE_POSIX_CAP) && t->th_buf.has_cap_data)
 	{
 #if 1 //def DEBUG
-		printf("tar_extract_file(): restoring posix capabilities to file %s\n", realname);
+		LOG("tar_extract_file(): restoring posix capabilities to file %s\n", realname);
 		print_caps(&t->th_buf.cap_data);
 #endif
 		if (setxattr(realname, XATTR_NAME_CAPS, &t->th_buf.cap_data, sizeof(struct vfs_cap_data), 0) < 0)
@@ -193,7 +193,7 @@
 	strcpy(&lnp[0], pn);
 	strcpy(&lnp[pathname_len], realname);
 #ifdef DEBUG
-	printf("tar_extract_file(): calling libtar_hash_add(): key=\"%s\", "
+	LOG("tar_extract_file(): calling libtar_hash_add(): key=\"%s\", "
 	       "value=\"%s\"\n", pn, realname);
 #endif
 	if (libtar_hash_add(t->h, lnp) != 0)
@@ -217,7 +217,7 @@
 	char *pn;
 
 #ifdef DEBUG
-	printf("  ==> tar_extract_regfile(realname=\"%s\")\n", realname);
+	LOG("  ==> tar_extract_regfile(realname=\"%s\")\n", realname);
 #endif
 
 	if (!TH_ISREG(t))
@@ -233,7 +233,7 @@
 	if (mkdirhier(dirname(filename)) == -1)
 		return -1;
 
-	printf("  ==> extracting: %s (file size %" PRId64 " bytes)\n",
+	LOG("  ==> extracting: %s (file size %" PRId64 " bytes)\n",
 			filename, size);
 
 	fdout = open(filename, O_WRONLY | O_CREAT | O_TRUNC
@@ -280,7 +280,7 @@
 		return -1;
 
 #ifdef DEBUG
-	printf("### done extracting %s\n", filename);
+	LOG("### done extracting %s\n", filename);
 #endif
 
 	return 0;
@@ -353,7 +353,7 @@
 	newtgt = strdup(linktgt);
 	sprintf(linktgt, "%s/%s", prefix, newtgt);
 
-	printf("  ==> extracting: %s (link to %s)\n", filename, linktgt);
+	LOG("  ==> extracting: %s (link to %s)\n", filename, linktgt);
 
 	if (link(linktgt, filename) == -1)
 	{
@@ -386,7 +386,7 @@
 	if (unlink(filename) == -1 && errno != ENOENT)
 		return -1;
 
-	printf("  ==> extracting: %s (symlink to %s)\n",
+	LOG("  ==> extracting: %s (symlink to %s)\n",
 	       filename, th_get_linkname(t));
 
 	if (symlink(th_get_linkname(t), filename) == -1)
@@ -425,7 +425,7 @@
 	if (mkdirhier(dirname(filename)) == -1)
 		return -1;
 
-	printf("  ==> extracting: %s (character device %ld,%ld)\n",
+	LOG("  ==> extracting: %s (character device %ld,%ld)\n",
 	       filename, devmaj, devmin);
 
 	if (mknod(filename, mode | S_IFCHR,
@@ -463,7 +463,7 @@
 	if (mkdirhier(dirname(filename)) == -1)
 		return -1;
 
-	printf("  ==> extracting: %s (block device %ld,%ld)\n",
+	LOG("  ==> extracting: %s (block device %ld,%ld)\n",
 	       filename, devmaj, devmin);
 
 	if (mknod(filename, mode | S_IFBLK,
@@ -496,7 +496,7 @@
 	if (mkdirhier(dirname(filename)) == -1)
 		return -1;
 
-	printf("  ==> extracting: %s (mode %04o, directory)\n", filename,
+	LOG("  ==> extracting: %s (mode %04o, directory)\n", filename,
 	       mode);
 
 	if (mkdir(filename, mode) == -1)
@@ -531,7 +531,7 @@
 	{
 		if (t->th_buf.has_user_default) {
 #if 1 //def DEBUG
-			printf("tar_extract_file(): restoring android user.default xattr to %s\n", realname);
+			LOG("tar_extract_file(): restoring android user.default xattr to %s\n", realname);
 #endif
 			if (setxattr(realname, "user.default", NULL, 0, 0) < 0) {
 				fprintf(stderr, "tar_extract_file(): failed to restore android user.default to file %s !!!\n", realname);
@@ -540,14 +540,14 @@
 		}
 		if (t->th_buf.has_user_cache) {
 #if 1 //def DEBUG
-			printf("tar_extract_file(): restoring android user.inode_cache xattr to %s\n", realname);
+			LOG("tar_extract_file(): restoring android user.inode_cache xattr to %s\n", realname);
 #endif
 			if (write_path_inode(realname, "cache", "user.inode_cache"))
 				return -1;
 		}
 		if (t->th_buf.has_user_code_cache) {
 #if 1 //def DEBUG
-			printf("tar_extract_file(): restoring android user.inode_code_cache xattr to %s\n", realname);
+			LOG("tar_extract_file(): restoring android user.inode_code_cache xattr to %s\n", realname);
 #endif
 			if (write_path_inode(realname, "code_cache", "user.inode_code_cache"))
 				return -1;
@@ -568,7 +568,7 @@
 #else
 		bytes_to_hex(t->th_buf.fep->master_key_identifier, FSCRYPT_KEY_IDENTIFIER_SIZE, policy_hex);
 #endif
-		printf("tar_extract_dir(): restoring fscrypt policy %s to dir %s\n", (char *)policy_hex, realname);
+		LOG("tar_extract_dir(): restoring fscrypt policy %s to dir %s\n", (char *)policy_hex, realname);
 #endif
 		bool policy_lookup_error = false;
 #ifdef USE_FSCRYPT_POLICY_V1
@@ -581,14 +581,14 @@
 
 #ifdef USE_FSCRYPT_POLICY_V1
 		if (!lookup_ref_tar(t->th_buf.fep->master_key_descriptor, &binary_policy[0])) {
-			printf("error looking up fscrypt policy for '%s' - %s\n", realname, t->th_buf.fep->master_key_descriptor);
+			LOG("error looking up fscrypt policy for '%s' - %s\n", realname, t->th_buf.fep->master_key_descriptor);
 			policy_lookup_error = true;
 		}
 		memcpy(&t->th_buf.fep->master_key_descriptor, binary_policy, FS_KEY_DESCRIPTOR_SIZE);
 		bytes_to_hex(t->th_buf.fep->master_key_descriptor, FS_KEY_DESCRIPTOR_SIZE, policy_hex);
 #else
 		if (!lookup_ref_tar(t->th_buf.fep->master_key_identifier, &binary_policy[0])) {
-			printf("error looking up fscrypt policy for '%s' - %s\n", realname, t->th_buf.fep->master_key_identifier);
+			LOG("error looking up fscrypt policy for '%s' - %s\n", realname, t->th_buf.fep->master_key_identifier);
 			policy_lookup_error = true;
 		}
 		memcpy(&t->th_buf.fep->master_key_identifier, binary_policy, FSCRYPT_KEY_IDENTIFIER_SIZE);
@@ -596,17 +596,17 @@
 #endif
 		if (!policy_lookup_error) 
 		{
-			printf("attempting to restore policy: %s\n", policy_hex);
+			LOG("attempting to restore policy: %s\n", policy_hex);
 			if (!fscrypt_policy_set_struct(realname, t->th_buf.fep))
 			{
-				printf("tar_extract_file(): failed to restore fscrypt policy to dir '%s' '%s'!!!\n", realname, policy_hex);
+				LOG("tar_extract_file(): failed to restore fscrypt policy to dir '%s' '%s'!!!\n", realname, policy_hex);
 				//return -1; // This may not be an error in some cases, so log and ignore
 			}
 		} else
-			printf("No policy was found. Continuing restore.");
+			LOG("No policy was found. Continuing restore.");
 	}
 	else
-		printf("NULL FSCRYPT\n");
+		LOG("NULL FSCRYPT\n");
 #endif
 
 	return 0;
@@ -635,7 +635,7 @@
 		return -1;
 
 
-	printf("  ==> extracting: %s (fifo)\n", filename);
+	LOG("  ==> extracting: %s (fifo)\n", filename);
 
 	if (mkfifo(filename, mode) == -1)
 	{
@@ -657,7 +657,7 @@
 	ssize_t k;
 
 #ifdef DEBUG
-	printf("  ==> tar_extract_file_contents\n");
+	LOG("  ==> tar_extract_file_contents\n");
 #endif
 
 	if (!TH_ISREG(t))
@@ -698,7 +698,7 @@
 	*lenp = (size_t)size;
 
 #ifdef DEBUG
-	printf("### done extracting contents\n");
+	LOG("### done extracting contents\n");
 #endif
 	return 0;
 }
diff --git a/libtar/libtar.h b/libtar/libtar.h
index 04782b2..8013e61 100755
--- a/libtar/libtar.h
+++ b/libtar/libtar.h
@@ -45,6 +45,8 @@
 #define TH_EXT_TYPE		'x'
 #define TH_POL_TYPE_DO_NOT_USE		'p'
 
+#define LOG(...) printf("libtar: " __VA_ARGS__)
+
 /* our version of the tar header structure */
 struct tar_header
 {
diff --git a/libtar/libtar_hash.c b/libtar/libtar_hash.c
index 796ebbe..17ba854 100644
--- a/libtar/libtar_hash.c
+++ b/libtar/libtar_hash.c
@@ -122,7 +122,7 @@
 			    libtar_hashptr_t *hp)
 {
 #ifdef DS_DEBUG
-	printf("==> libtar_hash_next(h=0x%lx, hp={%d,0x%lx})\n",
+	LOG("==> libtar_hash_next(h=0x%lx, hp={%d,0x%lx})\n",
 	       h, hp->bucket, hp->node);
 #endif
 
@@ -130,7 +130,7 @@
 	    libtar_list_next(h->table[hp->bucket], &(hp->node)) != 0)
 	{
 #ifdef DS_DEBUG
-		printf("    libtar_hash_next(): found additional "
+		LOG("    libtar_hash_next(): found additional "
 		       "data in current bucket (%d), returing 1\n",
 		       hp->bucket);
 #endif
@@ -138,14 +138,14 @@
 	}
 
 #ifdef DS_DEBUG
-	printf("    libtar_hash_next(): done with bucket %d\n",
+	LOG("    libtar_hash_next(): done with bucket %d\n",
 	       hp->bucket);
 #endif
 
 	for (hp->bucket++; hp->bucket < h->numbuckets; hp->bucket++)
 	{
 #ifdef DS_DEBUG
-		printf("    libtar_hash_next(): "
+		LOG("    libtar_hash_next(): "
 		       "checking bucket %d\n", hp->bucket);
 #endif
 		hp->node = NULL;
@@ -154,7 +154,7 @@
 		    				&(hp->node)) != 0)
 		{
 #ifdef DS_DEBUG
-			printf("    libtar_hash_next(): "
+			LOG("    libtar_hash_next(): "
 			       "found data in bucket %d, returing 1\n",
 			       hp->bucket);
 #endif
@@ -165,7 +165,7 @@
 	if (hp->bucket == h->numbuckets)
 	{
 #ifdef DS_DEBUG
-		printf("    libtar_hash_next(): hash pointer "
+		LOG("    libtar_hash_next(): hash pointer "
 		       "wrapped to 0\n");
 #endif
 		hp->bucket = -1;
@@ -173,7 +173,7 @@
 	}
 
 #ifdef DS_DEBUG
-	printf("<== libtar_hash_next(): no more data, "
+	LOG("<== libtar_hash_next(): no more data, "
 	       "returning 0\n");
 #endif
 	return 0;
@@ -269,7 +269,7 @@
 			      libtar_matchfunc_t matchfunc)
 {
 #ifdef DS_DEBUG
-	printf("==> libtar_hash_getkey(h=0x%lx, hp={%d,0x%lx}, "
+	LOG("==> libtar_hash_getkey(h=0x%lx, hp={%d,0x%lx}, "
 	       "key=0x%lx, matchfunc=0x%lx)\n",
 	       h, hp->bucket, hp->node, key, matchfunc);
 #endif
@@ -278,7 +278,7 @@
 	{
 		hp->bucket = (*(h->hashfunc))(key, h->numbuckets);
 #ifdef DS_DEBUG
-		printf("    libtar_hash_getkey(): hp->bucket "
+		LOG("    libtar_hash_getkey(): hp->bucket "
 		       "set to %d\n", hp->bucket);
 #endif
 	}
@@ -286,7 +286,7 @@
 	if (h->table[hp->bucket] == NULL)
 	{
 #ifdef DS_DEBUG
-		printf("    libtar_hash_getkey(): no list "
+		LOG("    libtar_hash_getkey(): no list "
 		       "for bucket %d, returning 0\n", hp->bucket);
 #endif
 		hp->bucket = -1;
@@ -294,7 +294,7 @@
 	}
 
 #ifdef DS_DEBUG
-	printf("<== libtar_hash_getkey(): "
+	LOG("<== libtar_hash_getkey(): "
 	       "returning libtar_list_search()\n");
 #endif
 	return libtar_list_search(h->table[hp->bucket], &(hp->node),
@@ -314,25 +314,25 @@
 	int bucket, i;
 
 #ifdef DS_DEBUG
-	printf("==> libtar_hash_add(h=0x%lx, data=0x%lx)\n",
+	LOG("==> libtar_hash_add(h=0x%lx, data=0x%lx)\n",
 	       h, data);
 #endif
 
 	bucket = (*(h->hashfunc))(data, h->numbuckets);
 #ifdef DS_DEBUG
-	printf("    libtar_hash_add(): inserting in bucket %d\n",
+	LOG("    libtar_hash_add(): inserting in bucket %d\n",
 	       bucket);
 #endif
 	if (h->table[bucket] == NULL)
 	{
 #ifdef DS_DEBUG
-		printf("    libtar_hash_add(): creating new list\n");
+		LOG("    libtar_hash_add(): creating new list\n");
 #endif
 		h->table[bucket] = libtar_list_new(LIST_QUEUE, NULL);
 	}
 
 #ifdef DS_DEBUG
-	printf("<== libtar_hash_add(): "
+	LOG("<== libtar_hash_add(): "
 	       "returning libtar_list_add()\n");
 #endif
 	i = libtar_list_add(h->table[bucket], data);
diff --git a/libtar/libtar_list.c b/libtar/libtar_list.c
index 2c5febb..4e3cc19 100644
--- a/libtar/libtar_list.c
+++ b/libtar/libtar_list.c
@@ -56,7 +56,7 @@
 	libtar_list_t *newlist;
 
 #ifdef DS_DEBUG
-	printf("in libtar_list_new(%d, 0x%lx)\n", flags, cmpfunc);
+	LOG("in libtar_list_new(%d, 0x%lx)\n", flags, cmpfunc);
 #endif
 
 	if (flags != LIST_USERFUNC
@@ -155,7 +155,7 @@
 	libtar_listptr_t n, m;
 
 #ifdef DS_DEBUG
-	printf("==> libtar_list_add(\"%s\")\n", (char *)data);
+	LOG("==> libtar_list_add(\"%s\")\n", (char *)data);
 #endif
 
 	n = (libtar_listptr_t)malloc(sizeof(struct libtar_node));
@@ -165,7 +165,7 @@
 	l->nents++;
 
 #ifdef DS_DEBUG
-	printf("    libtar_list_add(): allocated data\n");
+	LOG("    libtar_list_add(): allocated data\n");
 #endif
 
 	/* if the list is empty */
@@ -174,14 +174,14 @@
 		l->last = l->first = n;
 		n->next = n->prev = NULL;
 #ifdef DS_DEBUG
-		printf("<== libtar_list_add(): list was empty; "
+		LOG("<== libtar_list_add(): list was empty; "
 		       "added first element and returning 0\n");
 #endif
 		return 0;
 	}
 
 #ifdef DS_DEBUG
-	printf("    libtar_list_add(): list not empty\n");
+	LOG("    libtar_list_add(): list not empty\n");
 #endif
 
 	if (l->flags == LIST_STACK)
@@ -192,7 +192,7 @@
 			l->first->prev = n;
 		l->first = n;
 #ifdef DS_DEBUG
-		printf("<== libtar_list_add(): LIST_STACK set; "
+		LOG("<== libtar_list_add(): LIST_STACK set; "
 		       "added in front\n");
 #endif
 		return 0;
@@ -206,7 +206,7 @@
 			l->last->next = n;
 		l->last = n;
 #ifdef DS_DEBUG
-		printf("<== libtar_list_add(): LIST_QUEUE set; "
+		LOG("<== libtar_list_add(): LIST_QUEUE set; "
 		       "added at end\n");
 #endif
 		return 0;
@@ -220,7 +220,7 @@
 			** insert data before it
 			*/
 #ifdef DS_DEBUG
-			printf("    libtar_list_add(): gotcha..."
+			LOG("    libtar_list_add(): gotcha..."
 			       "inserting data\n");
 #endif
 			if (m == l->first)
@@ -230,7 +230,7 @@
 				m->prev = n;
 				n->next = m;
 #ifdef DS_DEBUG
-				printf("<== libtar_list_add(): "
+				LOG("<== libtar_list_add(): "
 				       "added first, returning 0\n");
 #endif
 				return 0;
@@ -240,14 +240,14 @@
 			m->prev = n;
 			n->next = m;
 #ifdef DS_DEBUG
-			printf("<== libtar_list_add(): added middle,"
+			LOG("<== libtar_list_add(): added middle,"
 			       " returning 0\n");
 #endif
 			return 0;
 		}
 
 #ifdef DS_DEBUG
-	printf("    libtar_list_add(): new data larger than current "
+	LOG("    libtar_list_add(): new data larger than current "
 	       "list elements\n");
 #endif
 
@@ -257,7 +257,7 @@
 	l->last = n;
 	n->next = NULL;
 #ifdef DS_DEBUG
-	printf("<== libtar_list_add(): added end, returning 0\n");
+	LOG("<== libtar_list_add(): added end, returning 0\n");
 #endif
 	return 0;
 }
@@ -273,7 +273,7 @@
 	libtar_listptr_t m;
 
 #ifdef DS_DEBUG
-	printf("==> libtar_list_del()\n");
+	LOG("==> libtar_list_del()\n");
 #endif
 
 	l->nents--;
@@ -384,7 +384,7 @@
 			      libtar_matchfunc_t matchfunc)
 {
 #ifdef DS_DEBUG
-	printf("==> libtar_list_search(l=0x%lx, n=0x%lx, \"%s\")\n",
+	LOG("==> libtar_list_search(l=0x%lx, n=0x%lx, \"%s\")\n",
 	       l, n, (char *)data);
 #endif
 
@@ -399,14 +399,14 @@
 	for (; *n != NULL; *n = (*n)->next)
 	{
 #ifdef DS_DEBUG
-		printf("checking against \"%s\"\n", (char *)(*n)->data);
+		LOG("checking against \"%s\"\n", (char *)(*n)->data);
 #endif
 		if ((*(matchfunc))(data, (*n)->data) != 0)
 			return 1;
 	}
 
 #ifdef DS_DEBUG
-	printf("no matches found\n");
+	LOG("no matches found\n");
 #endif
 	return 0;
 }
@@ -426,7 +426,7 @@
 		libtar_list_add(newlist, n->data);
 
 #ifdef DS_DEBUG
-	printf("returning from libtar_list_dup()\n");
+	LOG("returning from libtar_list_dup()\n");
 #endif
 	return newlist;
 }
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');
diff --git a/libtar/snprintf.c b/libtar/snprintf.c
index 8c228d4..c1cc8a6 100644
--- a/libtar/snprintf.c
+++ b/libtar/snprintf.c
@@ -734,7 +734,7 @@
       sprintf (buf2, fp_fmt[x], fp_nums[y]);
       if (strcmp (buf1, buf2))
       {
-	printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf  = %s\n", 
+	LOG("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf  = %s\n", 
 	    fp_fmt[x], buf1, buf2);
 	fail++;
       }
@@ -748,7 +748,7 @@
       sprintf (buf2, int_fmt[x], int_nums[y]);
       if (strcmp (buf1, buf2))
       {
-	printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf  = %s\n", 
+	LOG("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf  = %s\n", 
 	    int_fmt[x], buf1, buf2);
 	fail++;
       }
diff --git a/libtar/util.c b/libtar/util.c
index 7fb3f51..c904888 100644
--- a/libtar/util.c
+++ b/libtar/util.c
@@ -213,9 +213,9 @@
 }
 
 void print_caps(struct vfs_cap_data *cap_data) {
-	printf("     magic_etc=%u \n", cap_data->magic_etc);
-	printf("     data[0].permitted=%u \n", cap_data->data[0].permitted);
-	printf("     data[0].inheritable=%u \n", cap_data->data[0].inheritable);
-	printf("     data[1].permitted=%u \n", cap_data->data[1].permitted);
-	printf("     data[1].inheritable=%u \n", cap_data->data[1].inheritable);
+	LOG("     magic_etc=%u \n", cap_data->magic_etc);
+	LOG("     data[0].permitted=%u \n", cap_data->data[0].permitted);
+	LOG("     data[0].inheritable=%u \n", cap_data->data[0].inheritable);
+	LOG("     data[1].permitted=%u \n", cap_data->data[1].permitted);
+	LOG("     data[1].inheritable=%u \n", cap_data->data[1].inheritable);
 }
diff --git a/libtar/wrapper.c b/libtar/wrapper.c
index d3d285f..07befce 100644
--- a/libtar/wrapper.c
+++ b/libtar/wrapper.c
@@ -61,14 +61,14 @@
 	int i;
 
 #ifdef DEBUG
-	printf("==> tar_extract_all(TAR *t, \"%s\")\n",
+	LOG("==> tar_extract_all(TAR *t, \"%s\")\n",
 	       (prefix ? prefix : "(null)"));
 #endif
 
 	while ((i = th_read(t)) == 0)
 	{
 #ifdef DEBUG
-		puts("    tar_extract_all(): calling th_get_pathname()");
+		LOG("    tar_extract_all(): calling th_get_pathname()");
 #endif
 		filename = th_get_pathname(t);
 		if (t->options & TAR_VERBOSE)
@@ -78,7 +78,7 @@
 		else
 			strlcpy(buf, filename, sizeof(buf));
 #ifdef DEBUG
-		printf("    tar_extract_all(): calling tar_extract_file(t, "
+		LOG("    tar_extract_all(): calling tar_extract_file(t, "
 		       "\"%s\")\n", buf);
 #endif
 		if (tar_extract_file(t, buf, prefix, progress_fd) != 0)
@@ -99,7 +99,7 @@
 	struct stat s;
 
 #ifdef DEBUG
-	printf("==> tar_append_tree(0x%lx, \"%s\", \"%s\")\n",
+	LOG("==> tar_append_tree(0x%lx, \"%s\", \"%s\")\n",
 	       t, realdir, (savedir ? savedir : "[NULL]"));
 #endif
 
@@ -107,7 +107,7 @@
 		return -1;
 
 #ifdef DEBUG
-	puts("    tar_append_tree(): done with tar_append_file()...");
+	LOG("    tar_append_tree(): done with tar_append_file()...");
 #endif
 
 	dp = opendir(realdir);
@@ -160,21 +160,21 @@
 	char *filename;
 	int i, entryfound = 0;
 #ifdef DEBUG
-	printf("==> tar_find(0x%lx, %s)\n", (long unsigned int)t, searchstr);
+	LOG("==> tar_find(0x%lx, %s)\n", (long unsigned int)t, searchstr);
 #endif
 	while ((i = th_read(t)) == 0) {
 		filename = th_get_pathname(t);
 		if (fnmatch(searchstr, filename, FNM_FILE_NAME | FNM_PERIOD) == 0) {
 			entryfound++;
 #ifdef DEBUG
-			printf("Found matching entry: %s\n", filename);
+			LOG("Found matching entry: %s\n", filename);
 #endif
 			break;
 		}
 	}
 #ifdef DEBUG
 	if (!entryfound)
-		printf("No matching entry found.\n");
+		LOG("No matching entry found.\n");
 #endif
 
 	return entryfound;