diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2017-08-29 01:54:44 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2017-08-29 01:54:44 +0000 |
commit | a77773083d63fdf786f6f26fe382bd05db7de8e4 (patch) | |
tree | 52fd31b037d3ace0396e1afa3922d2e185f4993a /generator | |
parent | 531cb40ce582b4a4436aab661b9298501ff0cb1e (diff) | |
download | netpbm-mirror-a77773083d63fdf786f6f26fe382bd05db7de8e4.tar.gz netpbm-mirror-a77773083d63fdf786f6f26fe382bd05db7de8e4.tar.xz netpbm-mirror-a77773083d63fdf786f6f26fe382bd05db7de8e4.zip |
Add context to error message when can't load font from file
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@3053 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'generator')
-rw-r--r-- | generator/pbmtext.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/generator/pbmtext.c b/generator/pbmtext.c index 80fecdd5..e25c6bbe 100644 --- a/generator/pbmtext.c +++ b/generator/pbmtext.c @@ -18,11 +18,13 @@ #include <math.h> #include <limits.h> #include <assert.h> +#include <setjmp.h> #include "pm_c_util.h" #include "mallocvar.h" #include "nstring.h" #include "shhopt.h" +#include "pm.h" #include "pbm.h" #include "pbmfont.h" @@ -157,6 +159,37 @@ reportFont(struct font * const fontP) { +static struct font * +fontFromFile(const char * const fileName) { + + struct font * retval; + + jmp_buf jmpbuf; + int rc; + + rc = setjmp(jmpbuf); + + if (rc == 0) { + /* This is the normal program flow */ + pm_setjmpbuf(&jmpbuf); + + retval = pbm_loadfont(fileName); + + pm_setjmpbuf(NULL); + } else { + /* This is the second pass, after pbm_loadfont does a longjmp + because it fails. + */ + pm_setjmpbuf(NULL); + + pm_error("Failed to load font from file '%s'", fileName); + } + + return retval; +} + + + static void computeFont(struct CmdlineInfo const cmdline, struct font ** const fontPP) { @@ -164,7 +197,7 @@ computeFont(struct CmdlineInfo const cmdline, struct font * fontP; if (cmdline.font) - fontP = pbm_loadfont(cmdline.font); + fontP = fontFromFile(cmdline.font); else { if (cmdline.builtin) fontP = pbm_defaultfont(cmdline.builtin); |