summaryrefslogtreecommitdiff
path: root/src/archive.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/archive.c')
-rw-r--r--src/archive.c16
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));