summaryrefslogtreecommitdiffstats
path: root/contrib/cpio/copypass.c
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1997-07-13 14:07:48 +0000
committerbde <bde@FreeBSD.org>1997-07-13 14:07:48 +0000
commit84834b817c79cd8d5bca169e7ce1d3d1a7c24af8 (patch)
tree150ad5b0b88348055a439885450027e7ccb699de /contrib/cpio/copypass.c
parent20d1b8751ab1ce5d59c580d03a8c47b69f382d6e (diff)
downloadFreeBSD-src-84834b817c79cd8d5bca169e7ce1d3d1a7c24af8.zip
FreeBSD-src-84834b817c79cd8d5bca169e7ce1d3d1a7c24af8.tar.gz
Create fifos using mkfifo() instead of attempting to create them using
mknod().
Diffstat (limited to 'contrib/cpio/copypass.c')
-rw-r--r--contrib/cpio/copypass.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/contrib/cpio/copypass.c b/contrib/cpio/copypass.c
index dde43d5..9c27ac5 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)
{
OpenPOWER on IntegriCloud