This reverts commit 7684243fbe6e84fecb4a039195d5fda8a006a2a4 and a888975a3c25760027cd59932f5c1ad04368db8b. --- fftools/ffprobe.c | 14 +++++++++++--- fftools/textformat/avtextformat.c | 12 ++++++++---- fftools/textformat/avtextformat.h | 2 +- fftools/textformat/avtextwriters.h | 2 +- 4 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index d980d4e64f..a2342ec894 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -3077,7 +3077,7 @@ int main(int argc, char **argv) AVTextWriterContext *wctx; char *buf; char *f_name = NULL, *f_args = NULL; - int ret, i; + int ret, input_ret, i; init_dynload(); @@ -3199,11 +3199,19 @@ int main(int argc, char **argv) show_error(tctx, ret); } + input_ret = ret; + avtext_print_section_footer(tctx); - avtextwriter_context_close(&wctx); + ret = avtextwriter_context_close(&wctx); + if (ret < 0) + av_log(NULL, AV_LOG_ERROR, "Writing output failed (closing writer): %s\n", av_err2str(ret)); + + ret = avtext_context_close(&tctx); + if (ret < 0) + av_log(NULL, AV_LOG_ERROR, "Writing output failed (closing formatter): %s\n", av_err2str(ret)); - avtext_context_close(&tctx); + ret = FFMIN(ret, input_ret); } end: diff --git a/fftools/textformat/avtextformat.c b/fftools/textformat/avtextformat.c index 9200b9b1ad..5abf81194e 100644 --- a/fftools/textformat/avtextformat.c +++ b/fftools/textformat/avtextformat.c @@ -99,13 +99,14 @@ static void bprint_bytes(AVBPrint *bp, const uint8_t *ubuf, size_t ubuf_size) av_bprintf(bp, "%02X", ubuf[i]); } -void avtext_context_close(AVTextFormatContext **ptctx) +int avtext_context_close(AVTextFormatContext **ptctx) { AVTextFormatContext *tctx = *ptctx; int i; + int ret = 0; if (!tctx) - return; + return AVERROR(EINVAL); av_hash_freep(&tctx->hash); @@ -122,6 +123,7 @@ void avtext_context_close(AVTextFormatContext **ptctx) av_freep(&tctx->priv); av_opt_free(tctx); av_freep(ptctx); + return ret; } @@ -582,12 +584,13 @@ static const AVClass textwriter_class = { }; -void avtextwriter_context_close(AVTextWriterContext **pwctx) +int avtextwriter_context_close(AVTextWriterContext **pwctx) { AVTextWriterContext *wctx = *pwctx; + int ret = 0; if (!wctx) - return; + return AVERROR(EINVAL); if (wctx->writer) { if (wctx->writer->uninit) @@ -597,6 +600,7 @@ void avtextwriter_context_close(AVTextWriterContext **pwctx) } av_freep(&wctx->priv); av_freep(pwctx); + return ret; } diff --git a/fftools/textformat/avtextformat.h b/fftools/textformat/avtextformat.h index c2c56dc1a7..9fad3caae5 100644 --- a/fftools/textformat/avtextformat.h +++ b/fftools/textformat/avtextformat.h @@ -132,7 +132,7 @@ int avtext_context_open(AVTextFormatContext **ptctx, const AVTextFormatter *form int show_optional_fields, char *show_data_hash); -void avtext_context_close(AVTextFormatContext **tctx); +int avtext_context_close(AVTextFormatContext **tctx); void avtext_print_section_header(AVTextFormatContext *tctx, const void *data, int section_id); diff --git a/fftools/textformat/avtextwriters.h b/fftools/textformat/avtextwriters.h index c99d6b3548..87b0024ba1 100644 --- a/fftools/textformat/avtextwriters.h +++ b/fftools/textformat/avtextwriters.h @@ -55,7 +55,7 @@ typedef struct AVTextWriterContext { int avtextwriter_context_open(AVTextWriterContext **pwctx, const AVTextWriter *writer); -void avtextwriter_context_close(AVTextWriterContext **pwctx); +int avtextwriter_context_close(AVTextWriterContext **pwctx); int avtextwriter_create_stdout(AVTextWriterContext **pwctx); -- 2.43.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".