git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
daemon/Win32: Windows replacement for umask.
[libguestfs.git]
/
daemon
/
zero.c
diff --git
a/daemon/zero.c
b/daemon/zero.c
index
ba87e68
..
0ade242
100644
(file)
--- a/
daemon/zero.c
+++ b/
daemon/zero.c
@@
-28,13
+28,11
@@
#include "actions.h"
int
#include "actions.h"
int
-do_zero (char *device)
+do_zero (c
onst c
har *device)
{
int fd, i;
char buf[4096];
{
int fd, i;
char buf[4096];
- RESOLVE_DEVICE (device, return -1);
-
fd = open (device, O_WRONLY);
if (fd == -1) {
reply_with_perror ("%s", device);
fd = open (device, O_WRONLY);
if (fd == -1) {
reply_with_perror ("%s", device);
@@
-43,10
+41,20
@@
do_zero (char *device)
memset (buf, 0, sizeof buf);
memset (buf, 0, sizeof buf);
+ int err = 0;
+ int saved_errno = 0;
for (i = 0; i < 32; ++i)
for (i = 0; i < 32; ++i)
- (void) write (fd, buf, sizeof buf);
-
- close (fd);
+ if (write (fd, buf, sizeof buf) != sizeof buf) {
+ saved_errno = errno;
+ err = -1;
+ }
+
+ if (close (fd) && saved_errno == 0) {
+ saved_errno = errno;
+ err = -1;
+ }
- return 0;
+ if (saved_errno)
+ errno = saved_errno;
+ return err;
}
}