summaryrefslogtreecommitdiff
path: root/src/mv.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1994-01-26 18:19:10 +0000
committerJim Meyering <jim@meyering.net>1994-01-26 18:19:10 +0000
commit5629153f1eadc2b27dd48ff18a194f6819d9d732 (patch)
tree60428c4cc180a9940e5d85ae62154f60dfde43f1 /src/mv.c
parent2b16e3652c9625a41bbe9a1573316a5c1e65141b (diff)
downloadcoreutils-5629153f1eadc2b27dd48ff18a194f6819d9d732.tar.xz
.
Diffstat (limited to 'src/mv.c')
-rw-r--r--src/mv.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/src/mv.c b/src/mv.c
index bec6939e4..35d891cc5 100644
--- a/src/mv.c
+++ b/src/mv.c
@@ -68,6 +68,8 @@ enum backup_type get_version ();
int isdir ();
int yesno ();
void error ();
+int safe_read ();
+int full_write ();
void strip_trailing_slashes ();
int eaccess_stat ();
char *stpcpy ();
@@ -393,25 +395,16 @@ copy_reg (source, dest)
return 1;
}
- while ((len = read (ifd, buf, sizeof (buf))) > 0)
+ while ((len = safe_read (ifd, buf, sizeof (buf))) > 0)
{
- int wrote = 0;
- char *bp = buf;
-
- do
+ if (full_write (ofd, buf, len) < 0)
{
- wrote = write (ofd, bp, len);
- if (wrote < 0)
- {
- error (0, errno, "%s", dest);
- close (ifd);
- close (ofd);
- unlink (dest);
- return 1;
- }
- bp += wrote;
- len -= wrote;
- } while (len > 0);
+ error (0, errno, "%s", dest);
+ close (ifd);
+ close (ofd);
+ unlink (dest);
+ return 1;
+ }
}
if (len < 0)
{