summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2010-06-18 18:15:40 +0000
committerXin LI <delphij@FreeBSD.org>2010-06-18 18:15:40 +0000
commit71d9f649e73234c210344dea30892305872580fb (patch)
tree8cc6986bedffee5f7f32e27253bbbf24da54aa3d /contrib
parent4960c757f0f3c181614d27f89cdfa456b4492984 (diff)
Notes
Diffstat (limited to 'contrib')
-rw-r--r--contrib/cpio/src/copyout.c3
-rw-r--r--contrib/cpio/src/util.c21
2 files changed, 19 insertions, 5 deletions
diff --git a/contrib/cpio/src/copyout.c b/contrib/cpio/src/copyout.c
index 5e429faa9da8..8f1fdfe3700e 100644
--- a/contrib/cpio/src/copyout.c
+++ b/contrib/cpio/src/copyout.c
@@ -836,9 +836,6 @@ process_copy_out ()
continue;
}
link_name[link_size] = 0;
- cpio_safer_name_suffix (link_name, false,
- abs_paths_flag, true);
- link_size = strlen (link_name);
file_hdr.c_filesize = link_size;
if (archive_format == arf_tar || archive_format == arf_ustar)
{
diff --git a/contrib/cpio/src/util.c b/contrib/cpio/src/util.c
index 8773f7521acd..25f5ca2ff77d 100644
--- a/contrib/cpio/src/util.c
+++ b/contrib/cpio/src/util.c
@@ -1252,8 +1252,25 @@ stat_to_cpio (struct cpio_file_stat *hdr, struct stat *st)
hdr->c_uid = CPIO_UID (st->st_uid);
hdr->c_gid = CPIO_GID (st->st_gid);
hdr->c_nlink = st->st_nlink;
- hdr->c_rdev_maj = major (st->st_rdev);
- hdr->c_rdev_min = minor (st->st_rdev);
+
+ switch (hdr->c_mode & CP_IFMT)
+ {
+ case CP_IFBLK:
+ case CP_IFCHR:
+#ifdef CP_IFIFO
+ case CP_IFIFO:
+#endif
+#ifdef CP_IFSOCK
+ case CP_IFSOCK:
+#endif
+ hdr->c_rdev_maj = major (st->st_rdev);
+ hdr->c_rdev_min = minor (st->st_rdev);
+ break;
+ default:
+ hdr->c_rdev_maj = 0;
+ hdr->c_rdev_min = 0;
+ break;
+ }
hdr->c_mtime = st->st_mtime;
hdr->c_filesize = st->st_size;
hdr->c_chksum = 0;