2010/12/3 Eric Blake <eblake(a)redhat.com>:
Making this change will allow the future patches to use
virFileWriteStr to create a file, rather than its current limitation
of only working on pre-existing files.
* src/util/util.h (virFileWriteStr): Alter signature.
* src/util/util.c (virFileWriteStr): Allow file creation.
* src/network/bridge_driver.c (networkEnableIpForwarding)
(networkDisableIPV6): Adjust clients.
* src/node_device/node_device_driver.c
(nodeDeviceVportCreateDelete): Likewise.
* src/util/cgroup.c (virCgroupSetValueStr): Likewise.
* src/util/pci.c (pciBindDeviceToStub, pciUnBindDeviceFromStub):
Likewise.
Based on a report from Jean-Baptiste Rouault.
---
> Alternatively, I only counted 16 existing users of virFileWriteStr; and
> this is an internal API. We could easily rewrite all clients to always
> pass a third parameter, and change the signature of virFileWriteStr to
> require a mode_t argument. Hmm; some of those clients are writing to
> kernel files that should always exist (/proc/sys/net/ipv4/ip_forward,
> for example), where it's tough to justify what we would pass as a mode_t
> argument. So maybe pass mode==0 as a sentinel to require a pre-existing
> file
How does this look? Admittedly, all existing uses were okay with a
mode parameter of 0; and I haven't yet seen your patch that would
use a non-zero mode, but this still makes more sense to me.
Oh, and VIR_FORCE_CLOSE preserves errno, so I was able to simplify
virFileWriteStr in the process.
src/network/bridge_driver.c | 8 ++++----
src/node_device/node_device_driver.c | 2 +-
src/util/cgroup.c | 2 +-
src/util/pci.c | 16 ++++++++--------
src/util/util.c | 13 ++++++++-----
src/util/util.h | 3 ++-
6 files changed, 24 insertions(+), 20 deletions(-)
ACK.
Matthias