summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--NEWS3
-rw-r--r--bootstrap.conf2
-rw-r--r--lib/.cvsignore7
-rw-r--r--lib/.gitignore7
-rw-r--r--m4/.cvsignore4
-rw-r--r--m4/.gitignore4
-rw-r--r--po/ChangeLog6
-rw-r--r--po/POTFILES.in1
-rw-r--r--src/cp.c2
-rw-r--r--src/install.c2
-rw-r--r--src/ln.c4
-rw-r--r--src/mv.c2
-rw-r--r--src/rm.c2
-rw-r--r--src/system.h1
15 files changed, 51 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index a477f3d10..6462d9e0c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2007-08-19 Eric Blake <ebb9@byu.net>
+
+ Avoid consuming too much seekable input when yesno is used.
+ * bootstrap.conf (gnulib_modules): Add closein.
+ * src/system.h (includes): Also include closein.h.
+ * src/mv.c (main): Use close_stdin, not close_stdout.
+ * src/cp.c (main): Likewise.
+ * src/ln.c (main): Likewise.
+ * src/rm.c (main): Likewise.
+ * src/install.c (main): Likewise.
+ * NEWS: Document the fix.
+
2007-08-18 Jim Meyering <jim@meyering.net>
Use new "idcache.h" header.
diff --git a/NEWS b/NEWS
index 91149ebb6..edbf3b49d 100644
--- a/NEWS
+++ b/NEWS
@@ -72,6 +72,9 @@ GNU coreutils NEWS -*- outline -*-
"cp -i --update older newer" no longer prompts; same for mv
+ "cp -i" now detects read errors on standard input, and no longer consumes
+ too much seekable input; same for ln, install, mv, and rm.
+
cut now diagnoses a range starting with zero (e.g., -f 0-2) as invalid;
before, it would treat it as if it started with 1 (-f 1-2).
diff --git a/bootstrap.conf b/bootstrap.conf
index 58a325738..68896c77b 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -40,7 +40,7 @@ gnulib_modules="
c-strcase c-strtod
c-strtold calloc canon-host canonicalize chown cloexec
config-h configmake
- closeout
+ closein closeout
crypto/md5 crypto/sha1
cycle-check
d-ino d-type diacrit dirfd dirname dup2
diff --git a/lib/.cvsignore b/lib/.cvsignore
index ae85b19f6..fd17849ff 100644
--- a/lib/.cvsignore
+++ b/lib/.cvsignore
@@ -42,6 +42,8 @@ cloexec.c
cloexec.h
close-stream.c
close-stream.h
+closein.c
+closein.h
closeout.c
closeout.h
concatpath.c
@@ -83,6 +85,7 @@ fcntl-safer.h
fcntl.h
fcntl_.h
fd-safer.c
+fflush.c
file-has-acl.c
file-type.c
file-type.h
@@ -103,6 +106,10 @@ fnmatch_loop.c
fopen-safer.c
fprintftime.c
fprintftime.h
+fpurge.c
+fpurge.h
+freading.c
+freading.h
free.c
fseeko.c
fstatat.c
diff --git a/lib/.gitignore b/lib/.gitignore
index b716aa8e9..f44081dea 100644
--- a/lib/.gitignore
+++ b/lib/.gitignore
@@ -39,6 +39,8 @@ cloexec.c
cloexec.h
close-stream.c
close-stream.h
+closein.c
+closein.h
closeout.c
closeout.h
concatpath.c
@@ -78,6 +80,7 @@ fcntl-safer.h
fcntl.h
fcntl_.h
fd-safer.c
+fflush.c
file-has-acl.c
file-type.c
file-type.h
@@ -98,6 +101,10 @@ fnmatch_loop.c
fopen-safer.c
fprintftime.c
fprintftime.h
+fpurge.c
+fpurge.h
+freading.c
+freading.h
free.c
fseeko.c
fstatat.c
diff --git a/m4/.cvsignore b/m4/.cvsignore
index 88f1d88aa..648715ba5 100644
--- a/m4/.cvsignore
+++ b/m4/.cvsignore
@@ -19,6 +19,7 @@ chown.m4
clock_time.m4
cloexec.m4
close-stream.m4
+closein.m4
closeout.m4
codeset.m4
config-h.m4
@@ -41,6 +42,7 @@ extensions.m4
fchdir.m4
fcntl-safer.m4
fcntl_h.m4
+fflush.m4
file-type.m4
fileblocks.m4
filemode.m4
@@ -51,6 +53,8 @@ float_h.m4
fnmatch.m4
fpending.m4
fprintftime.m4
+fpurge.m4
+freading.m4
free.m4
fseeko.m4
fstypename.m4
diff --git a/m4/.gitignore b/m4/.gitignore
index 17ff10048..105240784 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -18,6 +18,7 @@ chown.m4
clock_time.m4
cloexec.m4
close-stream.m4
+closein.m4
closeout.m4
codeset.m4
config-h.m4
@@ -40,6 +41,7 @@ extensions.m4
fchdir.m4
fcntl-safer.m4
fcntl_h.m4
+fflush.m4
file-type.m4
fileblocks.m4
filemode.m4
@@ -50,6 +52,8 @@ float_h.m4
fnmatch.m4
fpending.m4
fprintftime.m4
+fpurge.m4
+freading.m4
free.m4
fseeko.m4
fstypename.m4
diff --git a/po/ChangeLog b/po/ChangeLog
index 366ca7489..247a76a2a 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2007-08-19 Eric Blake <ebb9@byu.net>
+
+ * POTFILES.in: Add lib/closein.c.
+
2007-08-08 Jim Meyering <jim@meyering.net>
Adapt to gnulib's latest xstrtol change.
@@ -238,7 +242,7 @@
-----
- Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
Foundation, Inc.
Copying and distribution of this file, with or without
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 61f6501f7..7f4d5c2a5 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,6 +4,7 @@
# These are nominally temporary...
lib/acl.c
lib/argmatch.c
+lib/closein.c
lib/closeout.c
lib/error.c
lib/euidaccess-stat.c
diff --git a/src/cp.c b/src/cp.c
index 2ea74cd14..254923759 100644
--- a/src/cp.c
+++ b/src/cp.c
@@ -867,7 +867,7 @@ main (int argc, char **argv)
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
- atexit (close_stdout);
+ atexit (close_stdin);
selinux_enabled = (0 < is_selinux_enabled ());
cp_option_init (&x);
diff --git a/src/install.c b/src/install.c
index 28e2dd50a..34f61ffba 100644
--- a/src/install.c
+++ b/src/install.c
@@ -290,7 +290,7 @@ main (int argc, char **argv)
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
- atexit (close_stdout);
+ atexit (close_stdin);
cp_option_init (&x);
diff --git a/src/ln.c b/src/ln.c
index aec8b36b3..3ddcfdfff 100644
--- a/src/ln.c
+++ b/src/ln.c
@@ -1,5 +1,5 @@
/* `ln' program to create links between files.
- Copyright (C) 1986, 1989-1991, 1995-2006 Free Software Foundation, Inc.
+ Copyright (C) 1986, 1989-1991, 1995-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
@@ -398,7 +398,7 @@ main (int argc, char **argv)
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
- atexit (close_stdout);
+ atexit (close_stdin);
/* FIXME: consider not calling getenv for SIMPLE_BACKUP_SUFFIX unless
we'll actually use backup_suffix_string. */
diff --git a/src/mv.c b/src/mv.c
index fdf328393..1834f4c64 100644
--- a/src/mv.c
+++ b/src/mv.c
@@ -357,7 +357,7 @@ main (int argc, char **argv)
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
- atexit (close_stdout);
+ atexit (close_stdin);
cp_option_init (&x);
diff --git a/src/rm.c b/src/rm.c
index 174932987..820646f36 100644
--- a/src/rm.c
+++ b/src/rm.c
@@ -238,7 +238,7 @@ main (int argc, char **argv)
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
- atexit (close_stdout);
+ atexit (close_stdin);
rm_option_init (&x);
diff --git a/src/system.h b/src/system.h
index 3c7f49d10..2c4bfd345 100644
--- a/src/system.h
+++ b/src/system.h
@@ -419,6 +419,7 @@ enum
#define VERSION_OPTION_DESCRIPTION \
_(" --version output version information and exit\n")
+#include "closein.h"
#include "closeout.h"
#include "version-etc.h"