Really open filenames (with absolute or relative path)

This commit is contained in:
Pierre Pronchery 2012-08-31 18:57:57 +00:00
parent acbda6d1be
commit dbbb423eb3

View File

@ -501,23 +501,50 @@ static GtkWidget * _properties_label_date(PDFviewer * pdfviewer,
/* pdf_open */ /* pdf_open */
int pdf_open(PDFviewer * pdfviewer, const char * uri) int pdf_open(PDFviewer * pdfviewer, const char * filename)
{ {
GError * err = NULL; gchar * uri;
gchar * p;
PDF * pdf; PDF * pdf;
GError * error = NULL;
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, uri); fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, uri);
#endif #endif
pdfviewer->pdf = g_new0(PDF, 1); if(filename == NULL)
pdf = pdfviewer->pdf; /* XXX report error */
pdf->document = poppler_document_new_from_file(uri, NULL, &err); return -1;
if(err != NULL) if(filename[0] == '/')
uri = g_strdup_printf("%s%s", "file:", filename);
else
{ {
fprintf(stderr, "error: %s", err->message); p = g_get_current_dir();
g_error_free(err); uri = g_strdup_printf("%s%s/%s", "file:", p, filename);
return 1; g_free(p);
} }
pdf = g_new0(PDF, 1);
if(uri == NULL || pdf == NULL)
{
g_free(pdf);
g_free(uri);
/* XXX report error */
return -1;
}
pdf->document = poppler_document_new_from_file(uri, NULL, &error);
g_free(uri);
if(pdf->document == NULL)
{
if(error != NULL)
{
fprintf(stderr, "%s: %s: %s", PACKAGE, filename,
error->message);
g_error_free(error);
}
g_free(pdf);
return -1;
}
/* FIXME destroy the previous data */
pdfviewer->pdf = pdf;
pdf->pages = poppler_document_get_n_pages(pdf->document); pdf->pages = poppler_document_get_n_pages(pdf->document);
pdf_update_current(pdfviewer, '=', 0); pdf_update_current(pdfviewer, '=', 0);
/* pdfviewer->pdf->scale = 1.0; */ /* pdfviewer->pdf->scale = 1.0; */