-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 According to Eric Blake on 8/20/2007 7:20 AM: > According to Eric Blake-1 on 6/27/2007 12:10 PM: >> Since this is a bug fix, is it worth backporting this to the >> 4.2 branch? > > Earlier you said this is okay; I still haven't attempted it, because the > branch's use of gnulib is so much further out of date.
Finally, now that I've updated gnulib on the branch, this is the backport to the branch. OK to commit? 2007-08-23 Eric Blake <[EMAIL PROTECTED]> Fix Savannah bug #20273, partial reads of seekable stdin. * import-gnulib.config (modules): Add closein. * xargs/xargs.c (main, get_input_delimiter): Fix compile warnings. (main): Use close_stdin, not close_stdout. * find/find.c (main): Likewise. * NEWS: Document the fix. - -- Don't work too hard, make some time for fun as well! Eric Blake [EMAIL PROTECTED] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGzZuJ84KuGfSFAYARAphlAJ4i1s+jpkqGIkPrgOEF5LfZyVLE8ACgunmv y1tryRqz9QFD2e7meUbR3vw= =crrr -----END PGP SIGNATURE-----
Index: NEWS =================================================================== RCS file: /sources/findutils/findutils/NEWS,v retrieving revision 1.101.2.37 diff -u -p -b -r1.101.2.37 NEWS --- NEWS 18 Aug 2007 16:54:16 -0000 1.101.2.37 +++ NEWS 23 Aug 2007 14:34:30 -0000 @@ -20,6 +20,12 @@ gnulib dirname module. The leak had bee #20751: Avoid memory corruption in find -ls that has been present since 4.2.28. +#20273: When xargs is successful without consuming all of stdin (for +example, with the -E option), and stdin is seekable, xargs now +correctly restores the file position, even on platforms where exit() +does not follow the POSIX rules of doing likewise. Likewise for find +(for example, with the -ok action). + ** Enhancements #20688: The warning printed by -name or -iname when the pattern to Index: import-gnulib.config =================================================================== RCS file: /sources/findutils/findutils/import-gnulib.config,v retrieving revision 1.1.2.4 diff -u -p -b -r1.1.2.4 import-gnulib.config --- import-gnulib.config 23 Aug 2007 14:14:33 -0000 1.1.2.4 +++ import-gnulib.config 23 Aug 2007 14:34:30 -0000 @@ -23,6 +23,7 @@ modules=' alloca argmatch canonicalize +closein closeout dirname error Index: xargs/xargs.c =================================================================== RCS file: /sources/findutils/findutils/xargs/xargs.c,v retrieving revision 1.49.2.16 diff -u -p -b -r1.49.2.16 xargs.c --- xargs/xargs.c 14 Jul 2007 15:38:05 -0000 1.49.2.16 +++ xargs/xargs.c 23 Aug 2007 14:34:30 -0000 @@ -167,7 +167,7 @@ typedef int boolean; #endif #include <xalloc.h> -#include "closeout.h" +#include "closein.h" #include "gnulib-version.h" void error PARAMS ((int status, int errnum, char *message,...)); @@ -379,6 +379,7 @@ get_input_delimiter(const char *s) error(1, 0, _("Invalid input delimiter specification %s: the delimiter must be either a single character or an escape sequence starting with \\."), s); + abort (); } } } @@ -406,7 +407,6 @@ main (int argc, char **argv) char *default_cmd = "/bin/echo"; int (*read_args) PARAMS ((void)) = read_line; void (*act_on_init_result)(void) = noop; - int env_too_big = 0; enum BC_INIT_STATUS bcstatus; program_name = argv[0]; @@ -417,7 +417,7 @@ main (int argc, char **argv) #endif bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - atexit (close_stdout); + atexit (close_stdin); atexit (wait_for_proc_all); bcstatus = bc_init_controlinfo(&bc_ctl); Index: find/find.c =================================================================== RCS file: /sources/findutils/findutils/find/find.c,v retrieving revision 1.94.2.4 diff -u -p -b -r1.94.2.4 find.c --- find/find.c 5 Aug 2007 12:48:55 -0000 1.94.2.4 +++ find/find.c 23 Aug 2007 14:34:30 -0000 @@ -50,7 +50,7 @@ #include "../gnulib/lib/xalloc.h" #include "../gnulib/lib/human.h" #include "../gnulib/lib/canonicalize.h" -#include "closeout.h" +#include "closein.h" #include <modetype.h> #include "savedirinfo.h" #include "buildcmd.h" @@ -418,7 +418,7 @@ main (int argc, char **argv) #endif bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - atexit (close_stdout); + atexit (close_stdin); if (isatty(0))
_______________________________________________ Findutils-patches mailing list Findutils-patches@gnu.org http://lists.gnu.org/mailman/listinfo/findutils-patches