@@ -44,15 +44,13 @@ int UnTar::set_file_perms(const char *filename) {
4444 /* change owner/group */
4545 if (geteuid () == 0 ) {
4646 if (fs->lchown (filename, uid, gid) == -1 ) {
47- LOG_ERROR (" lchown failed, filename `, `" , filename, strerror (errno));
48- return -1 ;
47+ LOG_ERRNO_RETURN (0 , -1 , " lchown failed, filename `, uid `, gid `" , filename, uid, gid);
4948 }
5049 }
5150
5251 /* change access/modification time */
5352 if (fs->lutimes (filename, tv) == -1 ) {
54- LOG_ERROR (" lutimes failed, filename `, `" , filename, strerror (errno));
55- return -1 ;
53+ LOG_ERRNO_RETURN (0 , -1 , " lutimes failed, filename `" , filename);
5654 }
5755
5856 /* change permissions */
@@ -69,8 +67,7 @@ int UnTar::set_file_perms(const char *filename) {
6967 return 0 ;
7068 }
7169 if (fs->chmod (filename, mode) == -1 ) {
72- LOG_ERROR (" chmod failed `" , strerror (errno));
73- return -1 ;
70+ LOG_ERRNO_RETURN (0 , -1 , " chmod failed, filename `, mode `" , filename, mode);
7471 }
7572
7673 return 0 ;
@@ -95,8 +92,7 @@ int UnTar::extract_all() {
9592
9693 while ((i = read_header ()) == 0 ) {
9794 if (extract_file () != 0 ) {
98- LOG_ERROR (" extract failed, filename `, `" , get_pathname (), strerror (errno));
99- return -1 ;
95+ LOG_ERRNO_RETURN (0 , -1 , " extract failed, filename `" , get_pathname ());
10096 }
10197 if (TH_ISDIR (header)) {
10298 dirs.emplace_back (std::make_pair (std::string (get_pathname ()), header.get_mtime ()));
@@ -111,8 +107,7 @@ int UnTar::extract_all() {
111107 tv[0 ].tv_sec = tv[1 ].tv_sec = dir.second ;
112108 tv[0 ].tv_usec = tv[1 ].tv_usec = 0 ;
113109 if (fs->lutimes (path.c_str (), tv) == -1 ) {
114- LOG_ERROR (" utime failed, filename `, `" , dir.first .c_str (), strerror (errno));
115- return -1 ;
110+ LOG_ERRNO_RETURN (0 , -1 , " utime failed, filename `" , dir.first .c_str ());
116111 }
117112 }
118113
@@ -151,15 +146,11 @@ int UnTar::extract_file() {
151146 } else {
152147 if (!S_ISDIR (s.st_mode )) {
153148 if (fs->unlink (npath.c_str ()) == -1 && errno != ENOENT) {
154- LOG_ERROR (" remove exist file ` failed, `" , npath.c_str (), strerror (errno));
155- errno = EEXIST;
156- return -1 ;
149+ LOG_ERRNO_RETURN (EEXIST, -1 , " remove exist file ` failed" , npath.c_str ());
157150 }
158151 } else if (!TH_ISDIR (header)) {
159152 if (remove_all (npath) == -1 ) {
160- LOG_ERROR (" remove exist dir ` failed, `" , npath.c_str (), strerror (errno));
161- errno = EEXIST;
162- return -1 ;
153+ LOG_ERRNO_RETURN (EEXIST, -1 , " remove exist dir ` failed" , npath.c_str ());
163154 }
164155 }
165156 }
@@ -290,8 +281,7 @@ int UnTar::extract_hardlink(const char *filename) {
290281 char *linktgt = get_linkname ();
291282 LOG_DEBUG (" ==> extracting: ` (link to `)" , filename, linktgt);
292283 if (fs->link (linktgt, filename) == -1 ) {
293- LOG_ERROR (" link failed, `" , strerror (errno));
294- return -1 ;
284+ LOG_ERRNO_RETURN (0 , -1 , " link failed, filename `, linktgt `" , filename, linktgt);
295285 }
296286 return 0 ;
297287}
@@ -300,8 +290,7 @@ int UnTar::extract_symlink(const char *filename) {
300290 char *linktgt = get_linkname ();
301291 LOG_DEBUG (" ==> extracting: ` (symlink to `)" , filename, linktgt);
302292 if (fs->symlink (linktgt, filename) == -1 ) {
303- LOG_ERROR (" symlink failed, `" , strerror (errno));
304- return -1 ;
293+ LOG_ERRNO_RETURN (0 , -1 , " symlink failed, filename `, linktgt `" , filename, linktgt);
305294 }
306295 return 0 ;
307296}
@@ -327,8 +316,7 @@ int UnTar::extract_block_char_fifo(const char *filename) {
327316
328317 LOG_DEBUG (" ==> extracting: ` (block/char/fifo `,`)" , filename, devmaj, devmin);
329318 if (fs->mknod (filename, mode, makedev (devmaj, devmin)) == -1 ) {
330- LOG_ERROR (" block/char/fifo failed, `" , strerror (errno));
331- return -1 ;
319+ LOG_ERRNO_RETURN (0 , -1 , " block/char/fifo failed, filename `" , filename);
332320 }
333321
334322 return 0 ;
0 commit comments