mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Add new FileInputSource constructors
This commit is contained in:
parent
e259635986
commit
e5f3910c3e
@ -1,5 +1,8 @@
|
|||||||
2022-05-04 Jay Berkenbilt <ejb@ql.org>
|
2022-05-04 Jay Berkenbilt <ejb@ql.org>
|
||||||
|
|
||||||
|
* FileInputSource has new constructors that eliminate the need to
|
||||||
|
call setFilename or setFile in most cases.
|
||||||
|
|
||||||
* Enhance JSON by adding a write method that takes a Pipeline* and
|
* Enhance JSON by adding a write method that takes a Pipeline* and
|
||||||
depth, and add several helper methods to make it easier to write
|
depth, and add several helper methods to make it easier to write
|
||||||
large amounts of JSON incrementally without having to have the
|
large amounts of JSON incrementally without having to have the
|
||||||
|
@ -30,6 +30,10 @@ class QPDF_DLL_CLASS FileInputSource: public InputSource
|
|||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
FileInputSource();
|
FileInputSource();
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
|
FileInputSource(char const* filename);
|
||||||
|
QPDF_DLL
|
||||||
|
FileInputSource(char const* description, FILE* filep, bool close_file);
|
||||||
|
QPDF_DLL
|
||||||
void setFilename(char const* filename);
|
void setFilename(char const* filename);
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
void setFile(char const* description, FILE* filep, bool close_file);
|
void setFile(char const* description, FILE* filep, bool close_file);
|
||||||
|
@ -24,8 +24,8 @@ void
|
|||||||
ClosedFileInputSource::before()
|
ClosedFileInputSource::before()
|
||||||
{
|
{
|
||||||
if (0 == this->m->fis.get()) {
|
if (0 == this->m->fis.get()) {
|
||||||
this->m->fis = std::make_shared<FileInputSource>();
|
this->m->fis =
|
||||||
this->m->fis->setFilename(this->m->filename.c_str());
|
std::make_shared<FileInputSource>(this->m->filename.c_str());
|
||||||
this->m->fis->seek(this->m->offset, SEEK_SET);
|
this->m->fis->seek(this->m->offset, SEEK_SET);
|
||||||
this->m->fis->setLastOffset(this->last_offset);
|
this->m->fis->setLastOffset(this->last_offset);
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,19 @@ FileInputSource::FileInputSource() :
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FileInputSource::FileInputSource(char const* filename) :
|
||||||
|
m(new Members(false))
|
||||||
|
{
|
||||||
|
setFilename(filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
FileInputSource::FileInputSource(
|
||||||
|
char const* description, FILE* filep, bool close_file) :
|
||||||
|
m(new Members(false))
|
||||||
|
{
|
||||||
|
setFile(description, filep, close_file);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FileInputSource::setFilename(char const* filename)
|
FileInputSource::setFilename(char const* filename)
|
||||||
{
|
{
|
||||||
|
@ -270,8 +270,7 @@ QPDF::~QPDF()
|
|||||||
void
|
void
|
||||||
QPDF::processFile(char const* filename, char const* password)
|
QPDF::processFile(char const* filename, char const* password)
|
||||||
{
|
{
|
||||||
FileInputSource* fi = new FileInputSource();
|
FileInputSource* fi = new FileInputSource(filename);
|
||||||
fi->setFilename(filename);
|
|
||||||
processInputSource(std::shared_ptr<InputSource>(fi), password);
|
processInputSource(std::shared_ptr<InputSource>(fi), password);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,8 +278,7 @@ void
|
|||||||
QPDF::processFile(
|
QPDF::processFile(
|
||||||
char const* description, FILE* filep, bool close_file, char const* password)
|
char const* description, FILE* filep, bool close_file, char const* password)
|
||||||
{
|
{
|
||||||
FileInputSource* fi = new FileInputSource();
|
FileInputSource* fi = new FileInputSource(description, filep, close_file);
|
||||||
fi->setFile(description, filep, close_file);
|
|
||||||
processInputSource(std::shared_ptr<InputSource>(fi), password);
|
processInputSource(std::shared_ptr<InputSource>(fi), password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2445,9 +2445,9 @@ QPDFJob::handlePageSpecs(
|
|||||||
cis->stayOpen(true);
|
cis->stayOpen(true);
|
||||||
} else {
|
} else {
|
||||||
QTC::TC("qpdf", "QPDFJob keep files open y");
|
QTC::TC("qpdf", "QPDFJob keep files open y");
|
||||||
FileInputSource* fis = new FileInputSource();
|
FileInputSource* fis =
|
||||||
|
new FileInputSource(page_spec.filename.c_str());
|
||||||
is = std::shared_ptr<InputSource>(fis);
|
is = std::shared_ptr<InputSource>(fis);
|
||||||
fis->setFilename(page_spec.filename.c_str());
|
|
||||||
}
|
}
|
||||||
std::shared_ptr<QPDF> qpdf_ph =
|
std::shared_ptr<QPDF> qpdf_ph =
|
||||||
processInputSource(is, password, true);
|
processInputSource(is, password, true);
|
||||||
|
@ -73,8 +73,7 @@ main()
|
|||||||
do_tests(&cf2);
|
do_tests(&cf2);
|
||||||
cf2.stayOpen(false);
|
cf2.stayOpen(false);
|
||||||
std::cout << "testing with FileInputSource\n";
|
std::cout << "testing with FileInputSource\n";
|
||||||
FileInputSource f;
|
FileInputSource f("input");
|
||||||
f.setFilename("input");
|
|
||||||
do_tests(&f);
|
do_tests(&f);
|
||||||
std::cout << "all assertions passed" << std::endl;
|
std::cout << "all assertions passed" << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -191,8 +191,7 @@ process(char const* filename, bool include_ignorable, size_t max_len)
|
|||||||
std::shared_ptr<InputSource> is;
|
std::shared_ptr<InputSource> is;
|
||||||
|
|
||||||
// Tokenize file, skipping streams
|
// Tokenize file, skipping streams
|
||||||
FileInputSource* fis = new FileInputSource();
|
FileInputSource* fis = new FileInputSource(filename);
|
||||||
fis->setFilename(filename);
|
|
||||||
is = std::shared_ptr<InputSource>(fis);
|
is = std::shared_ptr<InputSource>(fis);
|
||||||
dump_tokens(is, "FILE", max_len, include_ignorable, true, false);
|
dump_tokens(is, "FILE", max_len, include_ignorable, true, false);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user