On Wed, May 29, 2019 at 02:46:24PM +0300, Denis Plotnikov wrote: > The patch allows to provide a pattern file for write > command. There was no similar ability before. > --- > qemu-io-cmds.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++---- > 1 file changed, 54 insertions(+), 4 deletions(-) > > diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c > index 09750a23ce..148f2ff92a 100644 > --- a/qemu-io-cmds.c > +++ b/qemu-io-cmds.c > @@ -21,6 +21,7 @@ > #include "qemu/option.h" > #include "qemu/timer.h" > #include "qemu/cutils.h" > +#include "string.h" > > #define CMD_NOFILE_OK 0x01 > > @@ -343,6 +344,35 @@ static void *qemu_io_alloc(BlockBackend *blk, size_t > len, int pattern) > return buf; > } > > +static void *qemu_io_alloc_from_file(BlockBackend *blk, size_t len, > + char *file_name) > +{ > + void *buf; > + FILE *f = fopen(file_name, "r"); > + > + if (!f) { > + printf("cannot open file '%s'\n", file_name); > + return NULL; > + } > + > + if (qemuio_misalign) { > + len += MISALIGN_OFFSET; > + } > + buf = blk_blockalign(blk, len); > + memset(buf, 0, len); > + > + if (!fread(buf, sizeof(char), len, f)) { > + printf("file '%s' is empty\n", file_name); > + qemu_vfree(buf); > + return NULL; > + }
Should we close the FILE *f at the end of this function or when fread() returns with an error? Thanks, Stefano