summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2011-09-11 19:29:42 -0500
committerRobin Watts <robin.watts@artifex.com>2011-09-14 17:44:13 +0100
commit89ae81f651bfa112b8e07317eb6983beaf7cb212 (patch)
tree3f99dad1253b795629e66d45b915c1d72043242b /apps
parentcefb81f1886685580a40b17b5e495a8a8a1ebeaf (diff)
downloadmupdf-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.c10
-rw-r--r--apps/pdfclean.c10
-rw-r--r--apps/pdfdraw.c10
-rw-r--r--apps/pdfextract.c16
-rw-r--r--apps/pdfinfo.c10
-rw-r--r--apps/pdfshow.c14
-rw-r--r--apps/win_main.c8
-rw-r--r--apps/x11_main.c10
-rw-r--r--apps/xpsdraw.c6
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);