summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>1997-07-13 14:07:48 +0000
committerBruce Evans <bde@FreeBSD.org>1997-07-13 14:07:48 +0000
commit365c3451674ab5dfb12a9ecceb485abc1cdff35c (patch)
treed3d6a711f708ebae8bc0ed22694463b96015a64b
parent082a48e720bf5131420eece83c719a21ae57eb6b (diff)
Notes
-rw-r--r--contrib/cpio/copyin.c19
-rw-r--r--contrib/cpio/copypass.c18
2 files changed, 29 insertions, 8 deletions
diff --git a/contrib/cpio/copyin.c b/contrib/cpio/copyin.c
index bfb95364bb37..6f2db393f094 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)
{
diff --git a/contrib/cpio/copypass.c b/contrib/cpio/copypass.c
index dde43d587ef6..9c27ac596348 100644
--- a/contrib/cpio/copypass.c
+++ b/contrib/cpio/copypass.c
@@ -295,13 +295,23 @@ process_copy_pass ()
if (link_res < 0)
{
- res = mknod (output_name.ds_string, in_file_stat.st_mode,
- in_file_stat.st_rdev);
+#ifdef S_ISFIFO
+ if (S_ISFIFO (in_file_stat.st_mode))
+ res = mkfifo (output_name.ds_string, in_file_stat.st_mode);
+ else
+#endif
+ res = mknod (output_name.ds_string, in_file_stat.st_mode,
+ in_file_stat.st_rdev);
if (res < 0 && create_dir_flag)
{
create_all_directories (output_name.ds_string);
- res = mknod (output_name.ds_string, in_file_stat.st_mode,
- in_file_stat.st_rdev);
+#ifdef S_ISFIFO
+ if (S_ISFIFO (in_file_stat.st_mode))
+ res = mkfifo (output_name.ds_string, in_file_stat.st_mode);
+ else
+#endif
+ res = mknod (output_name.ds_string, in_file_stat.st_mode,
+ in_file_stat.st_rdev);
}
if (res < 0)
{