diff options
-rw-r--r-- | src/archive.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/archive.c b/src/archive.c index 5c1eb91..a05aee2 100644 --- a/src/archive.c +++ b/src/archive.c @@ -257,13 +257,15 @@ int apk_archive_entry_extract(const struct apk_file_info *ae, } } - /* preserve modification time */ - utb.actime = utb.modtime = ae->mtime; - r = utime(fn, &utb); - if (r < 0) { - apk_error("Failed to preserve modification time on %s: %s", - fn, strerror(errno)); - return -errno; + if (!S_ISLNK(ae->mode)) { + /* preserve modification time */ + utb.actime = utb.modtime = ae->mtime; + r = utime(fn, &utb); + if (r < 0) { + apk_error("Failed to preserve modification time on %s: %s", + fn, strerror(errno)); + return -errno; + } } } else { apk_error("Failed to extract %s: %s", ae->name, strerror(errno)); |