diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2004-02-20 02:34:42 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2004-02-20 02:34:42 +0000 |
commit | 916ba53f1a31e22e40eb0f686dac50207f4b0b41 (patch) | |
tree | d789eadb929c130c30c7d02df1261280daddba56 | |
parent | c9f1fce9bb2cae41309dba87291cd0a1da5b6d2e (diff) | |
download | busybox-w32-916ba53f1a31e22e40eb0f686dac50207f4b0b41.tar.gz busybox-w32-916ba53f1a31e22e40eb0f686dac50207f4b0b41.tar.bz2 busybox-w32-916ba53f1a31e22e40eb0f686dac50207f4b0b41.zip |
Fix up hard links
-rw-r--r-- | archival/libunarchive/get_header_tar.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c index 10b21c874..ad580617b 100644 --- a/archival/libunarchive/get_header_tar.c +++ b/archival/libunarchive/get_header_tar.c | |||
@@ -115,7 +115,6 @@ extern char get_header_tar(archive_handle_t *archive_handle) | |||
115 | file_header->name = concat_path_file(tar.formated.prefix, tar.formated.name); | 115 | file_header->name = concat_path_file(tar.formated.prefix, tar.formated.name); |
116 | } | 116 | } |
117 | 117 | ||
118 | file_header->mode = strtol(tar.formated.mode, NULL, 8); | ||
119 | file_header->uid = strtol(tar.formated.uid, NULL, 8); | 118 | file_header->uid = strtol(tar.formated.uid, NULL, 8); |
120 | file_header->gid = strtol(tar.formated.gid, NULL, 8); | 119 | file_header->gid = strtol(tar.formated.gid, NULL, 8); |
121 | file_header->size = strtol(tar.formated.size, NULL, 8); | 120 | file_header->size = strtol(tar.formated.size, NULL, 8); |
@@ -125,11 +124,14 @@ extern char get_header_tar(archive_handle_t *archive_handle) | |||
125 | file_header->device = (dev_t) ((strtol(tar.formated.devmajor, NULL, 8) << 8) + | 124 | file_header->device = (dev_t) ((strtol(tar.formated.devmajor, NULL, 8) << 8) + |
126 | strtol(tar.formated.devminor, NULL, 8)); | 125 | strtol(tar.formated.devminor, NULL, 8)); |
127 | 126 | ||
128 | /* Fix mode, used by the old format */ | 127 | /* Set bits 0-11 of the files mode */ |
128 | file_header->mode = 07777 & strtol(tar.formated.mode, NULL, 8); | ||
129 | |||
130 | /* Set bits 12-15 of the files mode */ | ||
129 | switch (tar.formated.typeflag) { | 131 | switch (tar.formated.typeflag) { |
130 | /* busybox identifies hard links as being regular files with 0 size and a link name */ | 132 | /* busybox identifies hard links as being regular files with 0 size and a link name */ |
131 | case '1': | 133 | case '1': |
132 | file_header->mode &= (S_IFREG | 07777); | 134 | file_header->mode |= S_IFREG; |
133 | break; | 135 | break; |
134 | case 'x': | 136 | case 'x': |
135 | case 'g': | 137 | case 'g': |