[Libvir] Don't fail to read a file because it's non-seekable (e.g., a pipe).
jim at meyering.net
Tue Apr 8 15:05:41 UTC 2008
Jim Meyering <jim at meyering.net> wrote:
> FYI, I expect to add fread_file_lim or something like it to gnulib,
> and it already has some unit tests (passed).
> I removed the "* tab-width: 4" line because it seriously
> mangled the code that I initially added. Besides saying "tab-width 4"
> is contradictory with the "indent-tabs-mode: nil" setting.
> This fix addresses a problem exposed in an ovirt script whereby
> trying to use bash process substitution, e.g., in
> virsh define <(command to generate xml)
> would fail.
> Oops. Just noticed that the indentation in the added function
> (gnulib style) is not consistent with the rest of the file.
> I'll adjust that before committing, of course.
> Don't fail to read a file because it's non-seekable (e.g., a pipe).
> * src/util.c (fread_file_lim): New function.
> (__virFileReadAll): Use fread_file_lim, rather than requiring
> that stat.st_size provide a usable file size.
> * tests/read-non-seekable: New test, for the above.
> * tests/Makefile.am (test_scripts): Add read-non-seekable.
> * tests/test-lib.sh (mkfifo_or_skip_): New helper function.
One possible change:
realloc the result to fit the size of the just-read data.
Otherwise, even a small string ends up using a BUFSIZ+1-byte buffer.
More information about the libvir-list