summaryrefslogtreecommitdiffstats
path: root/contrib/cpio/copyin.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/cpio/copyin.c')
-rw-r--r--contrib/cpio/copyin.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/contrib/cpio/copyin.c b/contrib/cpio/copyin.c
index bfb9536..6f2db39 100644
--- a/contrib/cpio/copyin.c
+++ b/contrib/cpio/copyin.c
@@ -928,13 +928,24 @@ process_copy_in ()
break;
}
- res = mknod (file_hdr.c_name, file_hdr.c_mode,
- makedev (file_hdr.c_rdev_maj, file_hdr.c_rdev_min));
+#ifdef CP_IFIFO
+ if ((file_hdr.c_mode & CP_IFMT) == CP_IFIFO)
+ res = mkfifo (file_hdr.c_name, file_hdr.c_mode);
+ else
+#endif
+ res = mknod (file_hdr.c_name, file_hdr.c_mode,
+ makedev (file_hdr.c_rdev_maj, file_hdr.c_rdev_min));
if (res < 0 && create_dir_flag)
{
create_all_directories (file_hdr.c_name);
- res = mknod (file_hdr.c_name, file_hdr.c_mode,
- makedev (file_hdr.c_rdev_maj, file_hdr.c_rdev_min));
+#ifdef CP_IFIFO
+ if ((file_hdr.c_mode & CP_IFMT) == CP_IFIFO)
+ res = mkfifo (file_hdr.c_name, file_hdr.c_mode);
+ else
+#endif
+ res = mknod (file_hdr.c_name, file_hdr.c_mode,
+ makedev (file_hdr.c_rdev_maj,
+ file_hdr.c_rdev_min));
}
if (res < 0)
{
OpenPOWER on IntegriCloud