qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 28/38] qapi/gen.py: update write() to be more idiomatic


From: Eric Blake
Subject: Re: [PATCH v2 28/38] qapi/gen.py: update write() to be more idiomatic
Date: Fri, 25 Sep 2020 08:34:31 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0

On 9/25/20 8:24 AM, Daniel P. Berrangé wrote:

This code:

         fd = os.open(pathname, os.O_RDWR | os.O_CREAT, 0o666)
         f = open(fd, 'r+', encoding='utf-8')


This was my best attempt to open the file read/write, creating it if it
doesn't exist.

Plain

         f = open(pathname, "r+", encoding='utf-8')

fails instead of creates, and

Checking what POSIX says for fopen():
https://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html

Yep, "r+" does not use O_CREAT.


         f = open(pathname, "w+", encoding='utf-8')

truncates.

Yep, "w+" uses O_TRUNC.


If you know a better way, tell me!

IIUC, you need  "a+" as the mode, rather than "w+"

That uses O_APPEND. Which is fine if you are only appending and not touching existing contents, but not what you want if you are doing random access.

Yeah, the fopen() interface is rather puny, in that it does not express as many modes as open() supports.

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org




reply via email to

[Prev in Thread] Current Thread [Next in Thread]