value in case of incomplete read.
(grub_util_fd_write): Likewise.
+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>
* util/editenv.c (grub_util_create_envblk_file): Use grub_util_rename.
ssize_t
grub_util_fd_read (grub_util_fd_t fd, char *buf, size_t len)
{
- ssize_t size = len;
+ ssize_t size = 0;
while (len)
{
ssize_t ret = read (fd, buf, len);
- if (ret <= 0)
+ if (ret == 0)
+ break;
+
+ if (ret < 0)
{
if (errno == EINTR)
continue;
len -= ret;
buf += ret;
+ size += ret;
}
return size;
ssize_t
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)
{
ssize_t ret = write (fd, buf, len);
- if (ret <= 0)
+ if (ret == 0)
+ break;
+
+ if (ret < 0)
{
if (errno == EINTR)
continue;
len -= ret;
buf += ret;
+ size += ret;
}
return size;