Create fifos using mkfifo() instead of attempting to create them using

mknod().
This commit is contained in:
Bruce Evans 1997-07-13 14:07:48 +00:00
parent 082a48e720
commit 365c345167
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=27367
2 changed files with 29 additions and 8 deletions

View File

@ -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)
{

View File

@ -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)
{