Message ID | DB6PR0101MB22142550C96959D0C9BBEAA38F749@DB6PR0101MB2214.eurprd01.prod.exchangelabs.com |
---|---|
State | Accepted |
Commit | e157b21a9081e3c4e8e22a4ae764dfbf0cc5b5b3 |
Headers | show |
Series | [FFmpeg-devel,v2,1/3] fftools/cmdutils: Add function to report error before exit | expand |
Andreas Rheinhardt: > This is designed to improve and unify error handling for > allocation failures for the many (often small) allocations that we have > in the fftools. These typically either don't return an error message > or an error message that is not really helpful to the user > and can be replaced by a generic error message without loss of > information. > > Reviewed-by: James Almer <jamrial@gmail.com> > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> > --- > fftools/cmdutils.c | 6 ++++++ > fftools/cmdutils.h | 11 +++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c > index 18e768b386..da3d391694 100644 > --- a/fftools/cmdutils.c > +++ b/fftools/cmdutils.c > @@ -90,6 +90,12 @@ void register_exit(void (*cb)(int ret)) > program_exit = cb; > } > > +void report_and_exit(int ret) > +{ > + av_log(NULL, AV_LOG_FATAL, "%s\n", av_err2str(ret)); > + exit_program(AVUNERROR(ret)); > +} > + > void exit_program(int ret) > { > if (program_exit) > diff --git a/fftools/cmdutils.h b/fftools/cmdutils.h > index d87e162ccd..4496221983 100644 > --- a/fftools/cmdutils.h > +++ b/fftools/cmdutils.h > @@ -54,6 +54,17 @@ extern int hide_banner; > */ > void register_exit(void (*cb)(int ret)); > > +/** > + * Reports an error corresponding to the provided > + * AVERROR code and calls exit_program() with the > + * corresponding POSIX error code. > + * @note ret must be an AVERROR-value of a POSIX error code > + * (i.e. AVERROR(EFOO) and not AVERROR_FOO). > + * library functions can return both, so call this only > + * with AVERROR(EFOO) of your own. > + */ > +void report_and_exit(int ret) av_noreturn; > + > /** > * Wraps exit with a program-specific cleanup routine. > */ Will apply tonight unless there are objections. - Andreas
diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index 18e768b386..da3d391694 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -90,6 +90,12 @@ void register_exit(void (*cb)(int ret)) program_exit = cb; } +void report_and_exit(int ret) +{ + av_log(NULL, AV_LOG_FATAL, "%s\n", av_err2str(ret)); + exit_program(AVUNERROR(ret)); +} + void exit_program(int ret) { if (program_exit) diff --git a/fftools/cmdutils.h b/fftools/cmdutils.h index d87e162ccd..4496221983 100644 --- a/fftools/cmdutils.h +++ b/fftools/cmdutils.h @@ -54,6 +54,17 @@ extern int hide_banner; */ void register_exit(void (*cb)(int ret)); +/** + * Reports an error corresponding to the provided + * AVERROR code and calls exit_program() with the + * corresponding POSIX error code. + * @note ret must be an AVERROR-value of a POSIX error code + * (i.e. AVERROR(EFOO) and not AVERROR_FOO). + * library functions can return both, so call this only + * with AVERROR(EFOO) of your own. + */ +void report_and_exit(int ret) av_noreturn; + /** * Wraps exit with a program-specific cleanup routine. */