Merge from old copyin.c rev 1.5, copypass.c rev 1.2: Create fifos using
mkfifo() instead of attempting to create them using mknod().
This commit is contained in:
parent
d2ed906427
commit
058cbad809
@ -1,3 +1,5 @@
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/* copyin.c - extract or list a cpio archive
|
||||
Copyright (C) 1990,1991,1992,2001,2002,2003,2004 Free Software Foundation, Inc.
|
||||
|
||||
@ -742,13 +744,23 @@ copyin_device(struct new_cpio_header* file_hdr)
|
||||
return;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -1,3 +1,5 @@
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/* copypass.c - cpio copy pass sub-function.
|
||||
Copyright (C) 1990, 1991, 1992, 2001, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
@ -311,13 +313,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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user