[Qemu-devel] [PATCH 1/2] qga: distinguish binary modes in guest_file_open_modes map

2013-05-13 Thread Michael Roth
From: Laszlo Ersek ler...@redhat.com

In Windows guests this may make a difference.

Since the original patch (commit c689b4f1) sought to be pedantic and to
consider theoretical corner cases of portability, we should fix it up
where it failed to come through in that pursuit.

Suggested-by: Eric Blake ebl...@redhat.com
Reviewed-by: Eric Blake ebl...@redhat.com
Signed-off-by: Laszlo Ersek ler...@redhat.com
Reviewed-by: Luiz Capitulino lcapitul...@redhat.com
Signed-off-by: Michael Roth mdr...@linux.vnet.ibm.com
---
 qga/commands-posix.c |   22 --
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 04c6951..2eec712 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -242,17 +242,27 @@ static GuestFileHandle *guest_file_handle_find(int64_t 
id, Error **err)
 
 typedef const char * const ccpc;
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 /* http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html */
 static const struct {
 ccpc *forms;
 int oflag_base;
 } guest_file_open_modes[] = {
-{ (ccpc[]){ r,  rb, NULL }, O_RDONLY  },
-{ (ccpc[]){ w,  wb, NULL }, O_WRONLY | O_CREAT | O_TRUNC  },
-{ (ccpc[]){ a,  ab, NULL }, O_WRONLY | O_CREAT | O_APPEND },
-{ (ccpc[]){ r+, rb+, r+b, NULL }, O_RDWR},
-{ (ccpc[]){ w+, wb+, w+b, NULL }, O_RDWR   | O_CREAT | O_TRUNC  },
-{ (ccpc[]){ a+, ab+, a+b, NULL }, O_RDWR   | O_CREAT | O_APPEND }
+{ (ccpc[]){ r,  NULL }, O_RDONLY 
},
+{ (ccpc[]){ rb, NULL }, O_RDONLY  | O_BINARY 
},
+{ (ccpc[]){ w,  NULL }, O_WRONLY | O_CREAT | O_TRUNC 
},
+{ (ccpc[]){ wb, NULL }, O_WRONLY | O_CREAT | O_TRUNC  | O_BINARY 
},
+{ (ccpc[]){ a,  NULL }, O_WRONLY | O_CREAT | O_APPEND
},
+{ (ccpc[]){ ab, NULL }, O_WRONLY | O_CREAT | O_APPEND | O_BINARY 
},
+{ (ccpc[]){ r+, NULL }, O_RDWR   
},
+{ (ccpc[]){ rb+, r+b, NULL }, O_RDWR| O_BINARY 
},
+{ (ccpc[]){ w+, NULL }, O_RDWR   | O_CREAT | O_TRUNC 
},
+{ (ccpc[]){ wb+, w+b, NULL }, O_RDWR   | O_CREAT | O_TRUNC  | O_BINARY 
},
+{ (ccpc[]){ a+, NULL }, O_RDWR   | O_CREAT | O_APPEND
},
+{ (ccpc[]){ ab+, a+b, NULL }, O_RDWR   | O_CREAT | O_APPEND | O_BINARY 
}
 };
 
 static int
-- 
1.7.9.5




[Qemu-devel] [PATCH 1/2] qga: distinguish binary modes in guest_file_open_modes map

2013-05-07 Thread Laszlo Ersek
In Windows guests this may make a difference.

Suggested-by: Eric Blake ebl...@redhat.com
Signed-off-by: Laszlo Ersek ler...@redhat.com
---
 qga/commands-posix.c |   22 --
 1 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 04c6951..2eec712 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -242,17 +242,27 @@ static GuestFileHandle *guest_file_handle_find(int64_t 
id, Error **err)
 
 typedef const char * const ccpc;
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 /* http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html */
 static const struct {
 ccpc *forms;
 int oflag_base;
 } guest_file_open_modes[] = {
-{ (ccpc[]){ r,  rb, NULL }, O_RDONLY  },
-{ (ccpc[]){ w,  wb, NULL }, O_WRONLY | O_CREAT | O_TRUNC  },
-{ (ccpc[]){ a,  ab, NULL }, O_WRONLY | O_CREAT | O_APPEND },
-{ (ccpc[]){ r+, rb+, r+b, NULL }, O_RDWR},
-{ (ccpc[]){ w+, wb+, w+b, NULL }, O_RDWR   | O_CREAT | O_TRUNC  },
-{ (ccpc[]){ a+, ab+, a+b, NULL }, O_RDWR   | O_CREAT | O_APPEND }
+{ (ccpc[]){ r,  NULL }, O_RDONLY 
},
+{ (ccpc[]){ rb, NULL }, O_RDONLY  | O_BINARY 
},
+{ (ccpc[]){ w,  NULL }, O_WRONLY | O_CREAT | O_TRUNC 
},
+{ (ccpc[]){ wb, NULL }, O_WRONLY | O_CREAT | O_TRUNC  | O_BINARY 
},
+{ (ccpc[]){ a,  NULL }, O_WRONLY | O_CREAT | O_APPEND
},
+{ (ccpc[]){ ab, NULL }, O_WRONLY | O_CREAT | O_APPEND | O_BINARY 
},
+{ (ccpc[]){ r+, NULL }, O_RDWR   
},
+{ (ccpc[]){ rb+, r+b, NULL }, O_RDWR| O_BINARY 
},
+{ (ccpc[]){ w+, NULL }, O_RDWR   | O_CREAT | O_TRUNC 
},
+{ (ccpc[]){ wb+, w+b, NULL }, O_RDWR   | O_CREAT | O_TRUNC  | O_BINARY 
},
+{ (ccpc[]){ a+, NULL }, O_RDWR   | O_CREAT | O_APPEND
},
+{ (ccpc[]){ ab+, a+b, NULL }, O_RDWR   | O_CREAT | O_APPEND | O_BINARY 
}
 };
 
 static int
-- 
1.7.1





Re: [Qemu-devel] [PATCH 1/2] qga: distinguish binary modes in guest_file_open_modes map

2013-05-07 Thread Eric Blake
On 05/07/2013 10:56 AM, Laszlo Ersek wrote:
 In Windows guests this may make a difference.
 
 Suggested-by: Eric Blake ebl...@redhat.com
 Signed-off-by: Laszlo Ersek ler...@redhat.com
 ---
  qga/commands-posix.c |   22 --
  1 files changed, 16 insertions(+), 6 deletions(-)
 
 diff --git a/qga/commands-posix.c b/qga/commands-posix.c
 index 04c6951..2eec712 100644
 --- a/qga/commands-posix.c
 +++ b/qga/commands-posix.c

Oh, and only NOW do I notice that this is in a file named
commands-posix.c that doesn't get compiled into the Windows build of qga
(there, we only build commands-win32.c, and THAT file always fails this
command, because no one has ported guest-file-open there yet).  But I
guess there is still the argument that some weirdnix system exists that
isn't quite POSIX compliant and does have a distinct binary mode (maybe
someone plans on compiling qga for Cygwin instead of native windows,
since at least that would be able to open files when the
commands-win32.c variant doesn't?), so I still think the patch is worth
keeping.

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature


Re: [Qemu-devel] [PATCH 1/2] qga: distinguish binary modes in guest_file_open_modes map

2013-05-07 Thread Peter Maydell
On 7 May 2013 18:27, Eric Blake ebl...@redhat.com wrote:
 On 05/07/2013 10:56 AM, Laszlo Ersek wrote:
 In Windows guests this may make a difference.

 Suggested-by: Eric Blake ebl...@redhat.com
 Signed-off-by: Laszlo Ersek ler...@redhat.com

 Oh, and only NOW do I notice that this is in a file named
 commands-posix.c that doesn't get compiled into the Windows build of qga
 (there, we only build commands-win32.c, and THAT file always fails this
 command, because no one has ported guest-file-open there yet).  But I
 guess there is still the argument that some weirdnix system exists that
 isn't quite POSIX compliant and does have a distinct binary mode (maybe
 someone plans on compiling qga for Cygwin instead of native windows,
 since at least that would be able to open files when the
 commands-win32.c variant doesn't?), so I still think the patch is worth
 keeping.

If we accept this we should at a minimum update the
commit message to say that we're doing this for
theoretical completeness rather than any practical reason.
(Not that this may make a difference is a particularly
convincing commit message in the first place :-))

thanks
-- PMM



Re: [Qemu-devel] [PATCH 1/2] qga: distinguish binary modes in guest_file_open_modes map

2013-05-07 Thread mdroth
On Tue, May 07, 2013 at 11:27:03AM -0600, Eric Blake wrote:
 On 05/07/2013 10:56 AM, Laszlo Ersek wrote:
  In Windows guests this may make a difference.
  
  Suggested-by: Eric Blake ebl...@redhat.com
  Signed-off-by: Laszlo Ersek ler...@redhat.com
  ---
   qga/commands-posix.c |   22 --
   1 files changed, 16 insertions(+), 6 deletions(-)
  
  diff --git a/qga/commands-posix.c b/qga/commands-posix.c
  index 04c6951..2eec712 100644
  --- a/qga/commands-posix.c
  +++ b/qga/commands-posix.c
 
 Oh, and only NOW do I notice that this is in a file named
 commands-posix.c that doesn't get compiled into the Windows build of qga
 (there, we only build commands-win32.c, and THAT file always fails this
 command, because no one has ported guest-file-open there yet).  But I
 guess there is still the argument that some weirdnix system exists that
 isn't quite POSIX compliant and does have a distinct binary mode (maybe
 someone plans on compiling qga for Cygwin instead of native windows,
 since at least that would be able to open files when the
 commands-win32.c variant doesn't?), so I still think the patch is worth
 keeping.

FWIW, I have some rough patches for w32 implementations of guest-file-*
commands queued up that I'll be cleaning up for 1.6, so it's not so much
theoretical as just a tad early :)

 
 -- 
 Eric Blake   eblake redhat com+1-919-301-3266
 Libvirt virtualization library http://libvirt.org