summaryrefslogtreecommitdiffstats
path: root/libtar/extract.c
diff options
context:
space:
mode:
Diffstat (limited to 'libtar/extract.c')
-rw-r--r--libtar/extract.c42
1 files changed, 20 insertions, 22 deletions
diff --git a/libtar/extract.c b/libtar/extract.c
index 49e7599e8..613e29fff 100644
--- a/libtar/extract.c
+++ b/libtar/extract.c
@@ -45,6 +45,11 @@ tar_set_file_perms(TAR *t, char *realname)
gid = th_get_gid(t);
ut.modtime = ut.actime = th_get_mtime(t);
+#ifdef DEBUG
+ printf(" ==> setting perms: %s (mode %04o, uid %d, gid %d)\n",
+ filename, mode, uid, gid);
+#endif
+
/* change owner/group */
if (geteuid() == 0)
#ifdef HAVE_LCHOWN
@@ -109,6 +114,7 @@ tar_extract_file(TAR *t, char *realname, char *prefix)
if (TH_ISDIR(t))
{
+ printf("dir\n");
i = tar_extract_dir(t, realname);
if (i == 1)
i = 0;
@@ -172,10 +178,10 @@ tar_extract_file(TAR *t, char *realname, char *prefix)
int
tar_extract_regfile(TAR *t, char *realname)
{
- mode_t mode;
+ //mode_t mode;
size_t size;
- uid_t uid;
- gid_t gid;
+ //uid_t uid;
+ //gid_t gid;
int fdout;
int i, k;
char buf[T_BLOCKSIZE];
@@ -194,17 +200,19 @@ tar_extract_regfile(TAR *t, char *realname)
}
filename = (realname ? realname : th_get_pathname(t));
- mode = th_get_mode(t);
+ //mode = th_get_mode(t);
size = th_get_size(t);
- uid = th_get_uid(t);
- gid = th_get_gid(t);
+ //uid = th_get_uid(t);
+ //gid = th_get_gid(t);
if (mkdirhier(dirname(filename)) == -1)
return -1;
#ifdef DEBUG
- printf(" ==> extracting: %s (mode %04o, uid %d, gid %d, %d bytes)\n",
- filename, mode, uid, gid, size);
+ //printf(" ==> extracting: %s (mode %04o, uid %d, gid %d, %d bytes)\n",
+ // filename, mode, uid, gid, size);
+ printf(" ==> extracting: %s (file size %d bytes)\n",
+ filename, size);
#endif
fdout = open(filename, O_WRONLY | O_CREAT | O_TRUNC
#ifdef O_BINARY
@@ -468,7 +476,6 @@ tar_extract_dir(TAR *t, char *realname)
{
mode_t mode;
char *filename;
- printf("filename: %s\n", filename);
if (!TH_ISDIR(t))
{
errno = EINVAL;
@@ -478,8 +485,10 @@ tar_extract_dir(TAR *t, char *realname)
filename = (realname ? realname : th_get_pathname(t));
mode = th_get_mode(t);
- if (mkdirhier(dirname(filename)) == -1)
+ if (mkdirhier(dirname(filename)) == -1) {
+ printf("tar_extract_dir mkdirhier failed\n");
return -1;
+ }
#ifdef DEBUG
printf(" ==> extracting: %s (mode %04o, directory)\n", filename,
@@ -489,20 +498,9 @@ tar_extract_dir(TAR *t, char *realname)
{
if (errno == EEXIST)
{
- if (chmod(filename, mode) == -1)
- {
-#ifdef DEBUG
- perror("chmod()");
-#endif
- return -1;
- }
- else
- {
#ifdef DEBUG
- puts(" *** using existing directory");
+ printf(" *** using existing directory");
#endif
- return 1;
- }
}
else
{