* grub-core/osdep/unix/hostdisk.c (grub_util_fd_read): Return correct
value in case of incomplete read. (grub_util_fd_write): Likewise.
This commit is contained in:
parent
593816780e
commit
669fc44923
2 changed files with 18 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2013-10-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/osdep/unix/hostdisk.c (grub_util_fd_read): Return correct
|
||||||
|
value in case of incomplete read.
|
||||||
|
(grub_util_fd_write): Likewise.
|
||||||
|
|
||||||
2013-10-15 Vladimir Serbinenko <phcoder@gmail.com>
|
2013-10-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* util/editenv.c (grub_util_create_envblk_file): Use grub_util_rename.
|
* util/editenv.c (grub_util_create_envblk_file): Use grub_util_rename.
|
||||||
|
|
|
@ -115,13 +115,16 @@ grub_util_fd_seek (grub_util_fd_t fd, grub_uint64_t off)
|
||||||
ssize_t
|
ssize_t
|
||||||
grub_util_fd_read (grub_util_fd_t fd, char *buf, size_t len)
|
grub_util_fd_read (grub_util_fd_t fd, char *buf, size_t len)
|
||||||
{
|
{
|
||||||
ssize_t size = len;
|
ssize_t size = 0;
|
||||||
|
|
||||||
while (len)
|
while (len)
|
||||||
{
|
{
|
||||||
ssize_t ret = read (fd, buf, len);
|
ssize_t ret = read (fd, buf, len);
|
||||||
|
|
||||||
if (ret <= 0)
|
if (ret == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
if (errno == EINTR)
|
if (errno == EINTR)
|
||||||
continue;
|
continue;
|
||||||
|
@ -131,6 +134,7 @@ grub_util_fd_read (grub_util_fd_t fd, char *buf, size_t len)
|
||||||
|
|
||||||
len -= ret;
|
len -= ret;
|
||||||
buf += ret;
|
buf += ret;
|
||||||
|
size += ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
|
@ -141,13 +145,16 @@ grub_util_fd_read (grub_util_fd_t fd, char *buf, size_t len)
|
||||||
ssize_t
|
ssize_t
|
||||||
grub_util_fd_write (grub_util_fd_t fd, const char *buf, size_t len)
|
grub_util_fd_write (grub_util_fd_t fd, const char *buf, size_t len)
|
||||||
{
|
{
|
||||||
ssize_t size = len;
|
ssize_t size = 0;
|
||||||
|
|
||||||
while (len)
|
while (len)
|
||||||
{
|
{
|
||||||
ssize_t ret = write (fd, buf, len);
|
ssize_t ret = write (fd, buf, len);
|
||||||
|
|
||||||
if (ret <= 0)
|
if (ret == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
if (errno == EINTR)
|
if (errno == EINTR)
|
||||||
continue;
|
continue;
|
||||||
|
@ -157,6 +164,7 @@ grub_util_fd_write (grub_util_fd_t fd, const char *buf, size_t len)
|
||||||
|
|
||||||
len -= ret;
|
len -= ret;
|
||||||
buf += ret;
|
buf += ret;
|
||||||
|
size += ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
|
|
Loading…
Reference in a new issue