Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 176667 Details for
Bug 252680
dev-cpp/glibmm-2.18.1: failure unpacking glibmm-2.18.1.tar.bz2 with tar-1.21
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
revert the commit which removed sys_drain_input_pipe()
drain-input-pipe.patch (text/plain), 3.00 KB, created by
Zac Medico
on 2008-12-28 21:22:06 UTC
(
hide
)
Description:
revert the commit which removed sys_drain_input_pipe()
Filename:
MIME Type:
Creator:
Zac Medico
Created:
2008-12-28 21:22:06 UTC
Size:
3.00 KB
patch
obsolete
>diff --git a/src/buffer.c b/src/buffer.c >index 5f5457a..02a3e4c 100644 >--- a/src/buffer.c >+++ b/src/buffer.c >@@ -848,6 +848,8 @@ close_archive (void) > flush_archive (); > } > >+ sys_drain_input_pipe (); >+ > compute_duration (); > if (verify_option) > verify_volume (); >@@ -855,7 +857,7 @@ close_archive (void) > if (rmtclose (archive) != 0) > close_error (*archive_name_cursor); > >- sys_wait_for_child (child_pid, hit_eof); >+ sys_wait_for_child (child_pid); > > tar_stat_destroy (¤t_stat_info); > if (save_name) >diff --git a/src/common.h b/src/common.h >index 9897b46..cc3483e 100644 >--- a/src/common.h >+++ b/src/common.h >@@ -699,7 +699,8 @@ char *xheader_format_name (struct tar_stat_info *st, const char *fmt, > > void sys_detect_dev_null_output (void); > void sys_save_archive_dev_ino (void); >-void sys_wait_for_child (pid_t, bool); >+void sys_drain_input_pipe (void); >+void sys_wait_for_child (pid_t); > void sys_spawn_shell (void); > bool sys_compare_uid (struct stat *a, struct stat *b); > bool sys_compare_gid (struct stat *a, struct stat *b); >diff --git a/src/system.c b/src/system.c >index c90a40d..e57e6da 100644 >--- a/src/system.c >+++ b/src/system.c >@@ -1,7 +1,6 @@ > /* System-dependent calls for tar. > >- Copyright (C) 2003, 2004, 2005, 2006, 2007, >- 2008 Free Software Foundation, Inc. >+ Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. > > This program is free software; you can redistribute it and/or modify it > under the terms of the GNU General Public License as published by the >@@ -52,7 +51,12 @@ sys_detect_dev_null_output (void) > } > > void >-sys_wait_for_child (pid_t child_pid, bool eof) >+sys_drain_input_pipe (void) >+{ >+} >+ >+void >+sys_wait_for_child (pid_t child_pid) > { > } > >@@ -156,8 +160,26 @@ sys_detect_dev_null_output (void) > && archive_stat.st_ino == dev_null_stat.st_ino)); > } > >+/* Manage to fully drain a pipe we might be reading, so to not break it on >+ the producer after the EOF block. FIXME: one of these days, GNU tar >+ might become clever enough to just stop working, once there is no more >+ work to do, we might have to revise this area in such time. */ >+ >+void >+sys_drain_input_pipe (void) >+{ >+ size_t r; >+ >+ if (access_mode == ACCESS_READ >+ && ! _isrmt (archive) >+ && (S_ISFIFO (archive_stat.st_mode) || S_ISSOCK (archive_stat.st_mode))) >+ while ((r = rmtread (archive, record_start->buffer, record_size)) != 0 >+ && r != SAFE_READ_ERROR) >+ continue; >+} >+ > void >-sys_wait_for_child (pid_t child_pid, bool eof) >+sys_wait_for_child (pid_t child_pid) > { > if (child_pid) > { >@@ -171,11 +193,8 @@ sys_wait_for_child (pid_t child_pid, bool eof) > } > > if (WIFSIGNALED (wait_status)) >- { >- int sig = WTERMSIG (wait_status); >- if (!(!eof && sig == SIGPIPE)) >- ERROR ((0, 0, _("Child died with signal %d"), sig)); >- } >+ ERROR ((0, 0, _("Child died with signal %d"), >+ WTERMSIG (wait_status))); > else if (WEXITSTATUS (wait_status) != 0) > ERROR ((0, 0, _("Child returned status %d"), > WEXITSTATUS (wait_status)));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 252680
: 176667