diff options
author | Robin Watts <robin.watts@artifex.com> | 2011-09-11 19:29:42 -0500 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2011-09-14 17:44:13 +0100 |
commit | 89ae81f651bfa112b8e07317eb6983beaf7cb212 (patch) | |
tree | 3f99dad1253b795629e66d45b915c1d72043242b /apps | |
parent | cefb81f1886685580a40b17b5e495a8a8a1ebeaf (diff) | |
download | mupdf-89ae81f651bfa112b8e07317eb6983beaf7cb212.tar.xz |
Initial import of exception handling code
Import exception handling code from WSS, modified to fit into the
fitz world.
With this code we have 'real' fz_try/fz_catch/fz_rethrow functions,
handling a fz_except type. We therefore rename the existing fz_throw/
fz_catch/fz_rethrow to be fz_error_make/fz_error_handle/fz_error_note.
We don't actually use fz_try/fz_catch/fz_rethrow yet...
Diffstat (limited to 'apps')
-rw-r--r-- | apps/pdfapp.c | 10 | ||||
-rw-r--r-- | apps/pdfclean.c | 10 | ||||
-rw-r--r-- | apps/pdfdraw.c | 10 | ||||
-rw-r--r-- | apps/pdfextract.c | 16 | ||||
-rw-r--r-- | apps/pdfinfo.c | 10 | ||||
-rw-r--r-- | apps/pdfshow.c | 14 | ||||
-rw-r--r-- | apps/win_main.c | 8 | ||||
-rw-r--r-- | apps/x11_main.c | 10 | ||||
-rw-r--r-- | apps/xpsdraw.c | 6 |
9 files changed, 47 insertions, 47 deletions
diff --git a/apps/pdfapp.c b/apps/pdfapp.c index 6292b039..2c9ac4e0 100644 --- a/apps/pdfapp.c +++ b/apps/pdfapp.c @@ -112,7 +112,7 @@ static void pdfapp_open_pdf(pdfapp_t *app, char *filename, int fd) file = fz_open_fd(fd); error = pdf_open_xref_with_stream(&app->xref, file, NULL); if (error) - pdfapp_error(app, fz_rethrow(error, "cannot open document '%s'", filename)); + pdfapp_error(app, fz_error_note(error, "cannot open document '%s'", filename)); fz_close(file); /* @@ -158,7 +158,7 @@ static void pdfapp_open_pdf(pdfapp_t *app, char *filename, int fd) error = pdf_load_page_tree(app->xref); if (error) - pdfapp_error(app, fz_rethrow(error, "cannot load page tree")); + pdfapp_error(app, fz_error_note(error, "cannot load page tree")); app->pagecount = pdf_count_pages(app->xref); } @@ -171,7 +171,7 @@ static void pdfapp_open_xps(pdfapp_t *app, char *filename, int fd) file = fz_open_fd(fd); error = xps_open_stream(&app->xps, file); if (error) - pdfapp_error(app, fz_rethrow(error, "cannot open document '%s'", filename)); + pdfapp_error(app, fz_error_note(error, "cannot open document '%s'", filename)); fz_close(file); app->doctitle = filename; @@ -299,7 +299,7 @@ static void pdfapp_loadpage_pdf(pdfapp_t *app) error = pdf_run_page(app->xref, page, mdev, fz_identity); if (error) { - error = fz_rethrow(error, "cannot draw page %d in '%s'", app->pageno, app->doctitle); + error = fz_error_note(error, "cannot draw page %d in '%s'", app->pageno, app->doctitle); pdfapp_error(app, error); } fz_free_device(mdev); @@ -317,7 +317,7 @@ static void pdfapp_loadpage_xps(pdfapp_t *app) error = xps_load_page(&page, app->xps, app->pageno - 1); if (error) - pdfapp_error(app, fz_rethrow(error, "cannot load page %d in file '%s'", app->pageno, app->doctitle)); + pdfapp_error(app, fz_error_note(error, "cannot load page %d in file '%s'", app->pageno, app->doctitle)); app->page_bbox.x0 = 0; app->page_bbox.y0 = 0; diff --git a/apps/pdfclean.c b/apps/pdfclean.c index dd85b1a4..99a00845 100644 --- a/apps/pdfclean.c +++ b/apps/pdfclean.c @@ -27,7 +27,7 @@ static pdf_xref *xref = NULL; void die(fz_error error) { - fz_catch(error, "aborting"); + fz_error_handle(error, "aborting"); if (xref) pdf_free_xref(xref); exit(1); @@ -283,7 +283,7 @@ static void retainpages(int argc, char **argv) /* Load the old page tree */ error = pdf_load_page_tree(xref); if (error) - die(fz_rethrow(error, "cannot load page tree")); + die(fz_error_note(error, "cannot load page tree")); /* Keep only pages/type entry to avoid references to unretained pages */ oldroot = fz_dict_gets(xref->trailer, "Root"); @@ -712,11 +712,11 @@ int main(int argc, char **argv) error = pdf_open_xref(&xref, infile, password); if (error) - die(fz_rethrow(error, "cannot open input file '%s'", infile)); + die(fz_error_note(error, "cannot open input file '%s'", infile)); out = fopen(outfile, "wb"); if (!out) - die(fz_throw("cannot open output file '%s'", outfile)); + die(fz_error_make("cannot open output file '%s'", outfile)); fprintf(out, "%%PDF-%d.%d\n", xref->version / 10, xref->version % 10); fprintf(out, "%%\316\274\341\277\246\n\n"); @@ -760,7 +760,7 @@ int main(int argc, char **argv) writepdf(); if (fclose(out)) - die(fz_throw("cannot close output file '%s'", outfile)); + die(fz_error_make("cannot close output file '%s'", outfile)); fz_free(uselist); fz_free(ofslist); diff --git a/apps/pdfdraw.c b/apps/pdfdraw.c index a5f6aa1e..7a23acef 100644 --- a/apps/pdfdraw.c +++ b/apps/pdfdraw.c @@ -37,7 +37,7 @@ struct { static void die(fz_error error) { - fz_catch(error, "aborting"); + fz_error_handle(error, "aborting"); exit(1); } @@ -105,7 +105,7 @@ static void drawpage(pdf_xref *xref, int pagenum) error = pdf_load_page(&page, xref, pagenum - 1); if (error) - die(fz_rethrow(error, "cannot load page %d in file '%s'", pagenum, filename)); + die(fz_error_note(error, "cannot load page %d in file '%s'", pagenum, filename)); list = NULL; @@ -115,7 +115,7 @@ static void drawpage(pdf_xref *xref, int pagenum) dev = fz_new_list_device(list); error = pdf_run_page(xref, page, dev, fz_identity); if (error) - die(fz_rethrow(error, "cannot draw page %d in file '%s'", pagenum, filename)); + die(fz_error_note(error, "cannot draw page %d in file '%s'", pagenum, filename)); fz_free_device(dev); } @@ -369,11 +369,11 @@ int main(int argc, char **argv) error = pdf_open_xref(&xref, filename, password); if (error) - die(fz_rethrow(error, "cannot open document: %s", filename)); + die(fz_error_note(error, "cannot open document: %s", filename)); error = pdf_load_page_tree(xref); if (error) - die(fz_rethrow(error, "cannot load page tree: %s", filename)); + die(fz_error_note(error, "cannot load page tree: %s", filename)); if (showxml) printf("<document name=\"%s\">\n", filename); diff --git a/apps/pdfextract.c b/apps/pdfextract.c index 7e6e4ace..c84f6ad9 100644 --- a/apps/pdfextract.c +++ b/apps/pdfextract.c @@ -10,7 +10,7 @@ static int dorgb = 0; void die(fz_error error) { - fz_catch(error, "aborting"); + fz_error_handle(error, "aborting"); if (xref) pdf_free_xref(xref); exit(1); @@ -115,7 +115,7 @@ static void savefont(fz_obj *dict, int num) obj = fz_dict_gets(obj, "Subtype"); if (obj && !fz_is_name(obj)) - die(fz_throw("Invalid font descriptor subtype")); + die(fz_error_make("Invalid font descriptor subtype")); subtype = fz_to_name(obj); if (!strcmp(subtype, "Type1C")) @@ -123,7 +123,7 @@ static void savefont(fz_obj *dict, int num) else if (!strcmp(subtype, "CIDFontType0C")) ext = "cid"; else - die(fz_throw("Unhandled font type '%s'", subtype)); + die(fz_error_make("Unhandled font type '%s'", subtype)); } if (!stream) @@ -143,14 +143,14 @@ static void savefont(fz_obj *dict, int num) f = fopen(name, "wb"); if (f == NULL) - die(fz_throw("Error creating font file")); + die(fz_error_make("Error creating font file")); n = fwrite(buf->data, 1, buf->len, f); if (n < buf->len) - die(fz_throw("Error writing font file")); + die(fz_error_make("Error writing font file")); if (fclose(f) < 0) - die(fz_throw("Error closing font file")); + die(fz_error_make("Error closing font file")); fz_drop_buffer(buf); } @@ -161,7 +161,7 @@ static void showobject(int num) fz_obj *obj; if (!xref) - die(fz_throw("no file specified")); + die(fz_error_make("no file specified")); error = pdf_load_object(&obj, xref, num, 0); if (error) @@ -198,7 +198,7 @@ int main(int argc, char **argv) infile = argv[fz_optind++]; error = pdf_open_xref(&xref, infile, password); if (error) - die(fz_rethrow(error, "cannot open input file '%s'", infile)); + die(fz_error_note(error, "cannot open input file '%s'", infile)); if (fz_optind == argc) { diff --git a/apps/pdfinfo.c b/apps/pdfinfo.c index d8948264..34370869 100644 --- a/apps/pdfinfo.c +++ b/apps/pdfinfo.c @@ -13,7 +13,7 @@ void closexref(void); void die(fz_error error) { - fz_catch(error, "aborting"); + fz_error_handle(error, "aborting"); closexref(); exit(1); } @@ -573,7 +573,7 @@ gatherresourceinfo(int page, fz_obj *rsrc) pageref = xref->page_refs[page-1]; if (!pageobj) - die(fz_throw("cannot retrieve info from page %d", page)); + die(fz_error_make("cannot retrieve info from page %d", page)); font = fz_dict_gets(rsrc, "Font"); if (font) @@ -636,7 +636,7 @@ gatherpageinfo(int page) pageref = xref->page_refs[page-1]; if (!pageobj) - die(fz_throw("cannot retrieve info from page %d", page)); + die(fz_error_make("cannot retrieve info from page %d", page)); gatherdimensions(page, pageref, pageobj); @@ -983,11 +983,11 @@ int main(int argc, char **argv) printf("%s:\n", filename); error = pdf_open_xref(&xref, filename, password); if (error) - die(fz_rethrow(error, "cannot open input file '%s'", filename)); + die(fz_error_note(error, "cannot open input file '%s'", filename)); error = pdf_load_page_tree(xref); if (error) - die(fz_rethrow(error, "cannot load page tree: %s", filename)); + die(fz_error_note(error, "cannot load page tree: %s", filename)); pagecount = pdf_count_pages(xref); showglobalinfo(); diff --git a/apps/pdfshow.c b/apps/pdfshow.c index 5e74042b..daf31298 100644 --- a/apps/pdfshow.c +++ b/apps/pdfshow.c @@ -12,7 +12,7 @@ static int showcolumn; void die(fz_error error) { - fz_catch(error, "aborting"); + fz_error_handle(error, "aborting"); if (xref) pdf_free_xref(xref); exit(1); @@ -30,7 +30,7 @@ static void usage(void) static void showtrailer(void) { if (!xref) - die(fz_throw("no file specified")); + die(fz_error_make("no file specified")); printf("trailer\n"); fz_debug_obj(xref->trailer); printf("\n"); @@ -39,7 +39,7 @@ static void showtrailer(void) static void showxref(void) { if (!xref) - die(fz_throw("no file specified")); + die(fz_error_make("no file specified")); pdf_debug_xref(xref); printf("\n"); } @@ -52,13 +52,13 @@ static void showpagetree(void) int i; if (!xref) - die(fz_throw("no file specified")); + die(fz_error_make("no file specified")); if (!xref->page_len) { error = pdf_load_page_tree(xref); if (error) - die(fz_rethrow(error, "cannot load page tree")); + die(fz_error_note(error, "cannot load page tree")); } count = pdf_count_pages(xref); @@ -131,7 +131,7 @@ static void showobject(int num, int gen) fz_obj *obj; if (!xref) - die(fz_throw("no file specified")); + die(fz_error_make("no file specified")); error = pdf_load_object(&obj, xref, num, gen); if (error) @@ -214,7 +214,7 @@ int main(int argc, char **argv) filename = argv[fz_optind++]; error = pdf_open_xref(&xref, filename, password); if (error) - die(fz_rethrow(error, "cannot open document: %s", filename)); + die(fz_error_note(error, "cannot open document: %s", filename)); if (fz_optind == argc) showtrailer(); diff --git a/apps/win_main.c b/apps/win_main.c index da97b011..92f7f085 100644 --- a/apps/win_main.c +++ b/apps/win_main.c @@ -98,7 +98,7 @@ void winerror(pdfapp_t *app, fz_error error) int i; /* TODO: redirect stderr to a log file and display here */ - fz_catch(error, "displaying error message to user"); + fz_error_handle(error, "displaying error message to user"); fz_strlcpy(msgbuf, "An error has occurred.\n\n", sizeof msgbuf); for (i = 0; i < fz_get_error_count(); i++) @@ -122,7 +122,7 @@ void win32error(char *msg) code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&buf, 0, NULL); - winerror(&gapp, fz_throw("%s:\n%s", msg, buf)); + winerror(&gapp, fz_error_make("%s:\n%s", msg, buf)); } int winfilename(wchar_t *buf, int len) @@ -617,7 +617,7 @@ void winreloadfile(pdfapp_t *app) fd = _wopen(wbuf, O_BINARY | O_RDONLY, 0666); if (fd < 0) - winerror(&gapp, fz_throw("cannot reload file '%s'", filename)); + winerror(&gapp, fz_error_make("cannot reload file '%s'", filename)); pdfapp_open(app, filename, fd, 1); } @@ -875,7 +875,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShow fd = _wopen(wbuf, O_BINARY | O_RDONLY, 0666); if (fd < 0) - winerror(&gapp, fz_throw("cannot open file '%s'", filename)); + winerror(&gapp, fz_error_make("cannot open file '%s'", filename)); code = WideCharToMultiByte(CP_UTF8, 0, wbuf, -1, filename, sizeof filename, NULL, NULL); if (code == 0) diff --git a/apps/x11_main.c b/apps/x11_main.c index c2aef917..d719abda 100644 --- a/apps/x11_main.c +++ b/apps/x11_main.c @@ -102,7 +102,7 @@ void winwarn(pdfapp_t *app, char *msg) void winerror(pdfapp_t *app, fz_error error) { - fz_catch(error, "aborting"); + fz_error_handle(error, "aborting"); exit(1); } @@ -124,7 +124,7 @@ static void winopen(void) xdpy = XOpenDisplay(NULL); if (!xdpy) - winerror(&gapp, fz_throw("cannot open display")); + winerror(&gapp, fz_error_make("cannot open display")); XA_TARGETS = XInternAtom(xdpy, "TARGETS", False); XA_TIMESTAMP = XInternAtom(xdpy, "TIMESTAMP", False); @@ -158,7 +158,7 @@ static void winopen(void) 0, NULL); if (xwin == None) - winerror(&gapp, fz_throw("cannot create window")); + winerror(&gapp, fz_error_make("cannot create window")); XSetWindowColormap(xdpy, xwin, ximage_get_colormap()); XSelectInput(xdpy, xwin, @@ -487,7 +487,7 @@ void winreloadfile(pdfapp_t *app) fd = open(filename, O_BINARY | O_RDONLY, 0666); if (fd < 0) - winerror(app, fz_throw("cannot reload file '%s'", filename)); + winerror(app, fz_error_make("cannot reload file '%s'", filename)); pdfapp_open(app, filename, fd, 1); } @@ -593,7 +593,7 @@ int main(int argc, char **argv) fd = open(filename, O_BINARY | O_RDONLY, 0666); if (fd < 0) - winerror(&gapp, fz_throw("cannot open file '%s'", filename)); + winerror(&gapp, fz_error_make("cannot open file '%s'", filename)); pdfapp_open(&gapp, filename, fd, 0); diff --git a/apps/xpsdraw.c b/apps/xpsdraw.c index 29738e6b..6afe344d 100644 --- a/apps/xpsdraw.c +++ b/apps/xpsdraw.c @@ -29,7 +29,7 @@ struct { static void die(fz_error error) { - fz_catch(error, "aborting"); + fz_error_handle(error, "aborting"); exit(1); } @@ -99,7 +99,7 @@ static void drawpage(xps_context *ctx, int pagenum) code = xps_load_page(&page, ctx, pagenum - 1); if (code) - die(fz_rethrow(code, "cannot load page %d in file '%s'", pagenum, filename)); + die(fz_error_note(code, "cannot load page %d in file '%s'", pagenum, filename)); list = NULL; @@ -336,7 +336,7 @@ int main(int argc, char **argv) code = xps_open_file(&ctx, filename); if (code) - die(fz_rethrow(code, "cannot open document: %s", filename)); + die(fz_error_note(code, "cannot open document: %s", filename)); if (showxml) printf("<document name=\"%s\">\n", filename); |