Really open filenames (with absolute or relative path)
This commit is contained in:
parent
acbda6d1be
commit
dbbb423eb3
|
@ -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; */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user