[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 03/10] qemu-ga: qmp_guest_file_*: improve error
From: |
mdroth |
Subject: |
Re: [Qemu-devel] [PATCH 03/10] qemu-ga: qmp_guest_file_*: improve error reporting |
Date: |
Wed, 28 Nov 2012 16:17:43 -0600 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Nov 28, 2012 at 04:26:29PM -0500, Eric Blake wrote:
>
> > > > if (ferror(fh)) {
> > > > + error_setg_errno(err, errno, "failed to read file");
> > > > slog("guest-file-read failed, handle: %ld", handle);
> > > > - error_set(err, QERR_QGA_COMMAND_FAILED, "fread()
> > > > failed");
> > > > } else {
> > >
> > > I'm not sure about relying on errno for FILE/f*() functions. C99
> > > doesn't
> > > appear to require setting it for implementations
>
> Correct that C99 doesn't require it, but POSIX _does_ require it.
>
> Windows is the biggest system out there where errno is unreliable after
> failure on FILE operations (but as we DO support mingw, we ARE impacted
> by the lameness of Microsoft's C library being C89 but not POSIX).
Well, if it's primarilly an issue with windows, then I think we're okay
relying on it for anything in qga/commands-posix.c at least, as those
implementations get swapped out for the implementations in
qga/commands-win32.o for win32/mingw builds. We'll need to be wary of
this in the future if we end up sharing more code with the win32 port
becomes more feature-full though.
The comment elsewhere about setmntent() might still apply however.
>
> > However, the other FILE functions seem safe to me. I'd be very
> > surprised
> > if some implementation doesn't set errno on fopen() failure for
> > example
>
> Then you probably haven't experimented much with mingw :)
>
- [Qemu-devel] [PATCH 04/10] qemu-ga: qmp_guest_shutdown(): improve error reporting, (continued)
[Qemu-devel] [PATCH 02/10] qemu-ga: qmp_guest_file_close(): fix fclose() error check, Luiz Capitulino, 2012/11/27
[Qemu-devel] [PATCH 08/10] qemu-ga: qmp_guest_network_get_interfaces(): get rid of snprintf() + error_set(), Luiz Capitulino, 2012/11/27
[Qemu-devel] [PATCH 05/10] qemu-ga: build_fs_mount_list(): take an Error argument, Luiz Capitulino, 2012/11/27
[Qemu-devel] [PATCH 10/10] qemu-ga: guest_suspend(): improve error reporting, Luiz Capitulino, 2012/11/27