From c3e9b64e7fde8499f8543503bdfeeeb65512dcd7 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 6 Jan 2022 13:23:15 -0500 Subject: [PATCH] QPDFJob increment: generate handler declarations --- generate_auto_job | 66 +++++--- job.sums | 6 +- job.yml | 10 +- libqpdf/QPDFJob_argv.cc | 294 ++++++++++------------------------ libqpdf/qpdf/auto_job_decl.hh | 131 +++++++++++++++ 5 files changed, 270 insertions(+), 237 deletions(-) diff --git a/generate_auto_job b/generate_auto_job index e2d465b7..1be26453 100755 --- a/generate_auto_job +++ b/generate_auto_job @@ -93,8 +93,12 @@ class Main: with open('job.yml', 'r') as f: data = yaml.safe_load(f.read()) self.validate(data) - self.generate_decl(data) - self.generate_init(data) + with open(self.DESTS['decl'], 'w') as f: + print(BANNER, file=f) + self.generate_decl(data, f) + with open(self.DESTS['init'], 'w') as f: + print(BANNER, file=f) + self.generate_init(data, f) # Update hashes last to ensure that this will be rerun in the # event of a failure. @@ -113,7 +117,7 @@ class Main: self.check_keys('top', data, set(['choices', 'options'])) for o in data['options']: self.check_keys('top', o, set( - ['table', 'bare', 'positional', + ['table', 'prefix', 'bare', 'positional', 'optional_parameter', 'required_parameter', 'required_choices', 'from_table'])) @@ -123,28 +127,46 @@ class Main: identifier = identifier.upper() else: identifier = identifier.lower() - identifier = re.sub('_([a-z])', lambda x: x.group(1).upper(), - identifier) + identifier = re.sub(r'(?:^|_)([a-z])', + lambda x: x.group(1).upper(), + identifier).replace('_', '') return prefix + identifier - def generate_decl(self, data): - with open(self.DESTS['decl'], 'w') as f: - print(BANNER, file=f) - for o in data['options']: - table = o['table'] - if table in ('main', 'help'): - continue - i = self.to_identifier(table, 'O_', True) - print(f'static constexpr char const* {i} = "{table}";', file=f) + def generate_decl(self, data, f): + for o in data['options']: + table = o['table'] + if table in ('main', 'help'): + continue + i = self.to_identifier(table, 'O_', True) + print(f'static constexpr char const* {i} = "{table}";', file=f) + print('', file=f) + for o in data['options']: + table = o['table'] + prefix = 'arg' + o.get('prefix', '') + if o.get('positional', False): + print(f'void {prefix}Positional(char*);', file=f) + for i in o.get('bare', []): + identifier = self.to_identifier(i, prefix, False) + print(f'void {identifier}();', file=f) + for i in o.get('optional_parameter', []): + identifier = self.to_identifier(i, prefix, False) + print(f'void {identifier}(char *);', file=f) + for i in o.get('required_parameter', {}): + identifier = self.to_identifier(i, prefix, False) + print(f'void {identifier}(char *);', file=f) + for i in o.get('required_choices', {}): + identifier = self.to_identifier(i, prefix, False) + print(f'void {identifier}(char *);', file=f) + if table not in ('main', 'help'): + identifier = self.to_identifier(table, 'argEnd', False) + print(f'void {identifier}();', file=f) - def generate_init(self, data): - with open(self.DESTS['init'], 'w') as f: - print(BANNER, file=f) - for k, v in data['choices'].items(): - print(f'char const* {k}_choices[] = {{', file=f, end='') - for i in v: - print(f'"{i}", ', file=f, end='') - print('0};', file=f) + def generate_init(self, data, f): + for k, v in data['choices'].items(): + print(f'char const* {k}_choices[] = {{', file=f, end='') + for i in v: + print(f'"{i}", ', file=f, end='') + print('0};', file=f) if __name__ == '__main__': diff --git a/job.sums b/job.sums index 790a91e7..bbaa1d25 100644 --- a/job.sums +++ b/job.sums @@ -1,5 +1,5 @@ # Generated by generate_auto_job -generate_auto_job 82410a924077d975acc27240f7b167cd32e1c358b8b2ea40161e607ee2ac0599 -job.yml 8c66b75eb06be65dfa40058a52cbc0bc18627a3aade5b3d4e034543605c93298 -libqpdf/qpdf/auto_job_decl.hh b098ee02ec853f47850b6421cc72b08c608f303f74f01d0b3ce3df52cecd5ffa +generate_auto_job 52a5e6bc70375e1183fedd5865ae4eae2a10be8d80edede1c48f9946be5d2538 +job.yml b4d230c46ca2b2e75b3b974e2d9ad21fb007eb5007d05cf249ae1e2cde81040c +libqpdf/qpdf/auto_job_decl.hh fca37543c1a2b7f675374e23b1ab34b30a7f5f2d843c53d4bc7e9a12bf4c3615 libqpdf/qpdf/auto_job_init.hh 0640167b8d550030c086851408b842e2a93c86577253d78f1b7d41d4ca695bd9 diff --git a/job.yml b/job.yml index 6785256b..95707b90 100644 --- a/job.yml +++ b/job.yml @@ -143,18 +143,22 @@ options: remove-unreferenced-resources: remove_unref stream-data: stream_data - table: pages + prefix: Pages positional: true required_parameter: - - password: password + password: password - table: encryption + prefix: Enc positional: true - table: 40-bit encryption + prefix: Enc40 required_choices: extract: yn annotate: yn print: yn modify: yn - table: 128-bit encryption + prefix: Enc128 bare: - cleartext-metadata - force-V4 @@ -169,6 +173,7 @@ options: modify: modify128_choices use-aes: yn - table: 256-bit encryption + prefix: Enc256 from_table: table: 128-bit encryption options: @@ -185,6 +190,7 @@ options: - force-R5 - allow-insecure - table: underlay/overlay + prefix: UO positional: true required_parameter: to: page-range @@ -192,6 +198,7 @@ options: repeat: page-range password: password - table: attachment + prefix: Att positional: true bare: - replace @@ -203,6 +210,7 @@ options: mimetype: mime/type description: description - table: copy attachment + prefix: CopyAtt positional: true required_parameter: prefix: prefix diff --git a/libqpdf/QPDFJob_argv.cc b/libqpdf/QPDFJob_argv.cc index 9749e1e7..f1bc8b24 100644 --- a/libqpdf/QPDFJob_argv.cc +++ b/libqpdf/QPDFJob_argv.cc @@ -25,134 +25,6 @@ namespace private: # include - void argHelp(); - void argVersion(); - void argCopyright(); - void argJsonHelp(); - void argShowCrypto(); - void argPositional(char* arg); - void argPassword(char* parameter); - void argPasswordFile(char* parameter); - void argEmpty(); - void argLinearize(); - void argEncrypt(); - void argDecrypt(); - void argPasswordIsHexKey(); - void argAllowInsecure(); - void argAllowWeakCrypto(); - void argPasswordMode(char* parameter); - void argSuppressPasswordRecovery(); - void argCopyEncryption(char* parameter); - void argEncryptionFilePassword(char* parameter); - void argPages(); - void argPagesPassword(char* parameter); - void argPagesPositional(char* parameter); - void argEndPages(); - void argUnderlay(); - void argOverlay(); - void argRotate(char* parameter); - void argCollate(char* parameter); - void argFlattenRotation(); - void argListAttachments(); - void argShowAttachment(char* parameter); - void argRemoveAttachment(char* parameter); - void argAddAttachment(); - void argCopyAttachments(); - void argStreamData(char* parameter); - void argCompressStreams(char* parameter); - void argRecompressFlate(); - void argCompressionLevel(char* parameter); - void argDecodeLevel(char* parameter); - void argNormalizeContent(char* parameter); - void argSuppressRecovery(); - void argObjectStreams(char* parameter); - void argIgnoreXrefStreams(); - void argQdf(); - void argPreserveUnreferenced(); - void argPreserveUnreferencedResources(); - void argRemoveUnreferencedResources(char* parameter); - void argKeepFilesOpen(char* parameter); - void argKeepFilesOpenThreshold(char* parameter); - void argNewlineBeforeEndstream(); - void argLinearizePass1(char* parameter); - void argCoalesceContents(); - void argFlattenAnnotations(char* parameter); - void argGenerateAppearances(); - void argMinVersion(char* parameter); - void argForceVersion(char* parameter); - void argSplitPages(char* parameter); - void argVerbose(); - void argProgress(); - void argNoWarn(); - void argWarningExitZero(); - void argDeterministicId(); - void argStaticId(); - void argStaticAesIv(); - void argNoOriginalObjectIds(); - void argShowEncryption(); - void argShowEncryptionKey(); - void argCheckLinearization(); - void argShowLinearization(); - void argShowXref(); - void argShowObject(char* parameter); - void argRawStreamData(); - void argFilteredStreamData(); - void argShowNpages(); - void argShowPages(); - void argWithImages(); - void argJson(); - void argJsonKey(char* parameter); - void argJsonObject(char* parameter); - void argCheck(); - void argOptimizeImages(); - void argExternalizeInlineImages(); - void argKeepInlineImages(); - void argRemovePageLabels(); - void argOiMinWidth(char* parameter); - void argOiMinHeight(char* parameter); - void argOiMinArea(char* parameter); - void argIiMinBytes(char* parameter); - void arg40Print(char* parameter); - void arg40Modify(char* parameter); - void arg40Extract(char* parameter); - void arg40Annotate(char* parameter); - void arg128Accessibility(char* parameter); - void arg128Extract(char* parameter); - void arg128Print(char* parameter); - void arg128Modify(char* parameter); - void arg128ClearTextMetadata(); - void arg128Assemble(char* parameter); - void arg128Annotate(char* parameter); - void arg128Form(char* parameter); - void arg128ModOther(char* parameter); - void arg128UseAes(char* parameter); - void arg128ForceV4(); - void arg256ForceR5(); - void argEncryptPositional(char* arg); - void argEndEncrypt(); - void argUOpositional(char* arg); - void argUOto(char* parameter); - void argUOfrom(char* parameter); - void argUOrepeat(char* parameter); - void argUOpassword(char* parameter); - void argEndUnderOverlay(); - void argReplaceInput(); - void argIsEncrypted(); - void argRequiresPassword(); - void argAApositional(char* arg); - void argAAKey(char* parameter); - void argAAFilename(char* parameter); - void argAACreationDate(char* parameter); - void argAAModDate(char* parameter); - void argAAMimeType(char* parameter); - void argAADescription(char* parameter); - void argAAReplace(); - void argEndAddAttachment(); - void argCApositional(char* arg); - void argCAprefix(char* parameter); - void argCApassword(char* parameter); - void argEndCopyAttachments(); - void usage(std::string const& message); void initOptionTable(); void doFinalChecks(); @@ -226,7 +98,7 @@ ArgParser::initOptionTable() p(&ArgParser::argRemoveAttachment), "attachment-key"); this->ap.addBare("add-attachment", b(&ArgParser::argAddAttachment)); this->ap.addBare( - "copy-attachments-from", b(&ArgParser::argCopyAttachments)); + "copy-attachments-from", b(&ArgParser::argCopyAttachmentsFrom)); this->ap.addRequiredChoices("stream-data", p(&ArgParser::argStreamData), stream_data_choices); this->ap.addRequiredChoices("compress-streams", @@ -270,7 +142,7 @@ ArgParser::initOptionTable() this->ap.addBare("verbose", b(&ArgParser::argVerbose)); this->ap.addBare("progress", b(&ArgParser::argProgress)); this->ap.addBare("no-warn", b(&ArgParser::argNoWarn)); - this->ap.addBare("warning-exit-0", b(&ArgParser::argWarningExitZero)); + this->ap.addBare("warning-exit-0", b(&ArgParser::argWarningExit0)); this->ap.addBare("deterministic-id", b(&ArgParser::argDeterministicId)); this->ap.addBare("static-id", b(&ArgParser::argStaticId)); this->ap.addBare("static-aes-iv", b(&ArgParser::argStaticAesIv)); @@ -321,73 +193,73 @@ ArgParser::initOptionTable() this->ap.selectMainOptionTable(); this->ap.addBare("encrypt", b(&ArgParser::argEncrypt)); - this->ap.registerOptionTable(O_ENCRYPTION, b(&ArgParser::argEndEncrypt)); - this->ap.addPositional(p(&ArgParser::argEncryptPositional)); - this->ap.registerOptionTable(O_40_BIT_ENCRYPTION, b(&ArgParser::argEndEncrypt)); - this->ap.addRequiredChoices("extract",p(&ArgParser::arg40Extract), yn_choices); - this->ap.addRequiredChoices("annotate",p(&ArgParser::arg40Annotate), yn_choices); - this->ap.addRequiredChoices("print",p(&ArgParser::arg40Print), yn_choices); - this->ap.addRequiredChoices("modify",p(&ArgParser::arg40Modify), yn_choices); - this->ap.registerOptionTable(O_128_BIT_ENCRYPTION, b(&ArgParser::argEndEncrypt)); - this->ap.registerOptionTable(O_256_BIT_ENCRYPTION, b(&ArgParser::argEndEncrypt)); + this->ap.registerOptionTable(O_ENCRYPTION, b(&ArgParser::argEndEncryption)); + this->ap.addPositional(p(&ArgParser::argEncPositional)); + this->ap.registerOptionTable(O_40_BIT_ENCRYPTION, b(&ArgParser::argEndEncryption)); + this->ap.addRequiredChoices("extract",p(&ArgParser::argEnc40Extract), yn_choices); + this->ap.addRequiredChoices("annotate",p(&ArgParser::argEnc40Annotate), yn_choices); + this->ap.addRequiredChoices("print",p(&ArgParser::argEnc40Print), yn_choices); + this->ap.addRequiredChoices("modify",p(&ArgParser::argEnc40Modify), yn_choices); + this->ap.registerOptionTable(O_128_BIT_ENCRYPTION, b(&ArgParser::argEndEncryption)); + this->ap.registerOptionTable(O_256_BIT_ENCRYPTION, b(&ArgParser::argEndEncryption)); for (char const* k: {O_128_BIT_ENCRYPTION, O_256_BIT_ENCRYPTION}) { this->ap.selectOptionTable(k); this->ap.addRequiredChoices("accessibility", - p(&ArgParser::arg128Accessibility), yn_choices); - this->ap.addRequiredChoices("extract", p(&ArgParser::arg128Extract), yn_choices); + p(&ArgParser::argEnc128Accessibility), yn_choices); + this->ap.addRequiredChoices("extract", p(&ArgParser::argEnc128Extract), yn_choices); this->ap.addRequiredChoices("print", - p(&ArgParser::arg128Print), print128_choices); - this->ap.addRequiredChoices("assemble",p(&ArgParser::arg128Assemble), yn_choices); - this->ap.addRequiredChoices("annotate",p(&ArgParser::arg128Annotate), yn_choices); - this->ap.addRequiredChoices("form",p(&ArgParser::arg128Form), yn_choices); - this->ap.addRequiredChoices("modify-other",p(&ArgParser::arg128ModOther), yn_choices); + p(&ArgParser::argEnc128Print), print128_choices); + this->ap.addRequiredChoices("assemble",p(&ArgParser::argEnc128Assemble), yn_choices); + this->ap.addRequiredChoices("annotate",p(&ArgParser::argEnc128Annotate), yn_choices); + this->ap.addRequiredChoices("form",p(&ArgParser::argEnc128Form), yn_choices); + this->ap.addRequiredChoices("modify-other",p(&ArgParser::argEnc128ModifyOther), yn_choices); this->ap.addRequiredChoices("modify", - p(&ArgParser::arg128Modify), modify128_choices); - this->ap.addBare("cleartext-metadata", b(&ArgParser::arg128ClearTextMetadata)); + p(&ArgParser::argEnc128Modify), modify128_choices); + this->ap.addBare("cleartext-metadata", b(&ArgParser::argEnc128CleartextMetadata)); } this->ap.selectOptionTable(O_128_BIT_ENCRYPTION); - this->ap.addRequiredChoices("use-aes",p(&ArgParser::arg128UseAes), yn_choices); - this->ap.addBare("force-V4", b(&ArgParser::arg128ForceV4)); + this->ap.addRequiredChoices("use-aes",p(&ArgParser::argEnc128UseAes), yn_choices); + this->ap.addBare("force-V4", b(&ArgParser::argEnc128ForceV4)); this->ap.selectOptionTable(O_256_BIT_ENCRYPTION); - this->ap.addBare("force-R5", b(&ArgParser::arg256ForceR5)); - this->ap.addBare("allow-insecure", b(&ArgParser::argAllowInsecure)); + this->ap.addBare("force-R5", b(&ArgParser::argEnc256ForceR5)); + this->ap.addBare("allow-insecure", b(&ArgParser::argEnc256AllowInsecure)); - this->ap.registerOptionTable(O_UNDERLAY_OVERLAY, b(&ArgParser::argEndUnderOverlay)); - this->ap.addPositional(p(&ArgParser::argUOpositional)); + this->ap.registerOptionTable(O_UNDERLAY_OVERLAY, b(&ArgParser::argEndUnderlayOverlay)); + this->ap.addPositional(p(&ArgParser::argUOPositional)); this->ap.addRequiredParameter("to", - p(&ArgParser::argUOto), "page-range"); + p(&ArgParser::argUOTo), "page-range"); this->ap.addRequiredParameter("from", - p(&ArgParser::argUOfrom), "page-range"); + p(&ArgParser::argUOFrom), "page-range"); this->ap.addRequiredParameter("repeat", - p(&ArgParser::argUOrepeat), "page-range"); + p(&ArgParser::argUORepeat), "page-range"); this->ap.addRequiredParameter("password", - p(&ArgParser::argUOpassword), "password"); + p(&ArgParser::argUOPassword), "password"); - this->ap.registerOptionTable(O_ATTACHMENT, b(&ArgParser::argEndAddAttachment)); - this->ap.addPositional(p(&ArgParser::argAApositional)); + this->ap.registerOptionTable(O_ATTACHMENT, b(&ArgParser::argEndAttachment)); + this->ap.addPositional(p(&ArgParser::argAttPositional)); this->ap.addRequiredParameter("key", - p(&ArgParser::argAAKey), "attachment-key"); + p(&ArgParser::argAttKey), "attachment-key"); this->ap.addRequiredParameter("filename", - p(&ArgParser::argAAFilename), "filename"); + p(&ArgParser::argAttFilename), "filename"); this->ap.addRequiredParameter("creationdate", - p(&ArgParser::argAACreationDate), "creation-date"); + p(&ArgParser::argAttCreationdate), "creation-date"); this->ap.addRequiredParameter("moddate", - p(&ArgParser::argAAModDate), "modification-date"); + p(&ArgParser::argAttModdate), "modification-date"); this->ap.addRequiredParameter("mimetype", - p(&ArgParser::argAAMimeType), "mime/type"); + p(&ArgParser::argAttMimetype), "mime/type"); this->ap.addRequiredParameter("description", - p(&ArgParser::argAADescription), "description"); - this->ap.addBare("replace", b(&ArgParser::argAAReplace)); + p(&ArgParser::argAttDescription), "description"); + this->ap.addBare("replace", b(&ArgParser::argAttReplace)); - this->ap.registerOptionTable(O_COPY_ATTACHMENT, b(&ArgParser::argEndCopyAttachments)); - this->ap.addPositional(p(&ArgParser::argCApositional)); + this->ap.registerOptionTable(O_COPY_ATTACHMENT, b(&ArgParser::argEndCopyAttachment)); + this->ap.addPositional(p(&ArgParser::argCopyAttPositional)); this->ap.addRequiredParameter("prefix", - p(&ArgParser::argCAprefix), "prefix"); + p(&ArgParser::argCopyAttPrefix), "prefix"); this->ap.addRequiredParameter("password", - p(&ArgParser::argCApassword), "password"); + p(&ArgParser::argCopyAttPassword), "password"); } void @@ -1067,7 +939,7 @@ ArgParser::argEncrypt() } void -ArgParser::argEncryptPositional(char* arg) +ArgParser::argEncPositional(char* arg) { this->accumulated_args.push_back(arg); size_t n_args = this->accumulated_args.size(); @@ -1159,7 +1031,7 @@ ArgParser::argPasswordMode(char* parameter) } void -ArgParser::argAllowInsecure() +ArgParser::argEnc256AllowInsecure() { o.allow_insecure = true; } @@ -1364,7 +1236,7 @@ ArgParser::argAddAttachment() } void -ArgParser::argCopyAttachments() +ArgParser::argCopyAttachmentsFrom() { o.attachments_to_copy.push_back(QPDFJob::CopyAttachmentFrom()); this->ap.selectOptionTable(O_COPY_ATTACHMENT); @@ -1616,7 +1488,7 @@ ArgParser::argNoWarn() } void -ArgParser::argWarningExitZero() +ArgParser::argWarningExit0() { o.warnings_exit_zero = true; } @@ -1793,43 +1665,43 @@ ArgParser::argIiMinBytes(char* parameter) } void -ArgParser::arg40Print(char* parameter) +ArgParser::argEnc40Print(char* parameter) { o.r2_print = (strcmp(parameter, "y") == 0); } void -ArgParser::arg40Modify(char* parameter) +ArgParser::argEnc40Modify(char* parameter) { o.r2_modify = (strcmp(parameter, "y") == 0); } void -ArgParser::arg40Extract(char* parameter) +ArgParser::argEnc40Extract(char* parameter) { o.r2_extract = (strcmp(parameter, "y") == 0); } void -ArgParser::arg40Annotate(char* parameter) +ArgParser::argEnc40Annotate(char* parameter) { o.r2_annotate = (strcmp(parameter, "y") == 0); } void -ArgParser::arg128Accessibility(char* parameter) +ArgParser::argEnc128Accessibility(char* parameter) { o.r3_accessibility = (strcmp(parameter, "y") == 0); } void -ArgParser::arg128Extract(char* parameter) +ArgParser::argEnc128Extract(char* parameter) { o.r3_extract = (strcmp(parameter, "y") == 0); } void -ArgParser::arg128Print(char* parameter) +ArgParser::argEnc128Print(char* parameter) { if (strcmp(parameter, "full") == 0) { @@ -1850,7 +1722,7 @@ ArgParser::arg128Print(char* parameter) } void -ArgParser::arg128Modify(char* parameter) +ArgParser::argEnc128Modify(char* parameter) { if (strcmp(parameter, "all") == 0) { @@ -1894,55 +1766,55 @@ ArgParser::arg128Modify(char* parameter) } void -ArgParser::arg128ClearTextMetadata() +ArgParser::argEnc128CleartextMetadata() { o.cleartext_metadata = true; } void -ArgParser::arg128Assemble(char* parameter) +ArgParser::argEnc128Assemble(char* parameter) { o.r3_assemble = (strcmp(parameter, "y") == 0); } void -ArgParser::arg128Annotate(char* parameter) +ArgParser::argEnc128Annotate(char* parameter) { o.r3_annotate_and_form = (strcmp(parameter, "y") == 0); } void -ArgParser::arg128Form(char* parameter) +ArgParser::argEnc128Form(char* parameter) { o.r3_form_filling = (strcmp(parameter, "y") == 0); } void -ArgParser::arg128ModOther(char* parameter) +ArgParser::argEnc128ModifyOther(char* parameter) { o.r3_modify_other = (strcmp(parameter, "y") == 0); } void -ArgParser::arg128UseAes(char* parameter) +ArgParser::argEnc128UseAes(char* parameter) { o.use_aes = (strcmp(parameter, "y") == 0); } void -ArgParser::arg128ForceV4() +ArgParser::argEnc128ForceV4() { o.force_V4 = true; } void -ArgParser::arg256ForceR5() +ArgParser::argEnc256ForceR5() { o.force_R5 = true; } void -ArgParser::argEndEncrypt() +ArgParser::argEndEncryption() { o.encrypt = true; o.decrypt = false; @@ -1950,7 +1822,7 @@ ArgParser::argEndEncrypt() } void -ArgParser::argUOpositional(char* arg) +ArgParser::argUOPositional(char* arg) { if (o.under_overlay->filename) { @@ -1963,14 +1835,14 @@ ArgParser::argUOpositional(char* arg) } void -ArgParser::argUOto(char* parameter) +ArgParser::argUOTo(char* parameter) { parseNumrange(parameter, 0); o.under_overlay->to_nr = parameter; } void -ArgParser::argUOfrom(char* parameter) +ArgParser::argUOFrom(char* parameter) { if (strlen(parameter)) { @@ -1980,7 +1852,7 @@ ArgParser::argUOfrom(char* parameter) } void -ArgParser::argUOrepeat(char* parameter) +ArgParser::argUORepeat(char* parameter) { if (strlen(parameter)) { @@ -1990,13 +1862,13 @@ ArgParser::argUOrepeat(char* parameter) } void -ArgParser::argUOpassword(char* parameter) +ArgParser::argUOPassword(char* parameter) { o.under_overlay->password = parameter; } void -ArgParser::argEndUnderOverlay() +ArgParser::argEndUnderlayOverlay() { if (0 == o.under_overlay->filename) { @@ -2026,25 +1898,25 @@ ArgParser::argRequiresPassword() } void -ArgParser::argAApositional(char* arg) +ArgParser::argAttPositional(char* arg) { o.attachments_to_add.back().path = arg; } void -ArgParser::argAAKey(char* parameter) +ArgParser::argAttKey(char* parameter) { o.attachments_to_add.back().key = parameter; } void -ArgParser::argAAFilename(char* parameter) +ArgParser::argAttFilename(char* parameter) { o.attachments_to_add.back().filename = parameter; } void -ArgParser::argAACreationDate(char* parameter) +ArgParser::argAttCreationdate(char* parameter) { if (! QUtil::pdf_time_to_qpdf_time(parameter)) { @@ -2054,7 +1926,7 @@ ArgParser::argAACreationDate(char* parameter) } void -ArgParser::argAAModDate(char* parameter) +ArgParser::argAttModdate(char* parameter) { if (! QUtil::pdf_time_to_qpdf_time(parameter)) { @@ -2064,7 +1936,7 @@ ArgParser::argAAModDate(char* parameter) } void -ArgParser::argAAMimeType(char* parameter) +ArgParser::argAttMimetype(char* parameter) { if (strchr(parameter, '/') == nullptr) { @@ -2074,19 +1946,19 @@ ArgParser::argAAMimeType(char* parameter) } void -ArgParser::argAADescription(char* parameter) +ArgParser::argAttDescription(char* parameter) { o.attachments_to_add.back().description = parameter; } void -ArgParser::argAAReplace() +ArgParser::argAttReplace() { o.attachments_to_add.back().replace = true; } void -ArgParser::argEndAddAttachment() +ArgParser::argEndAttachment() { static std::string now = QUtil::qpdf_time_to_pdf_time( QUtil::get_current_qpdf_time()); @@ -2119,25 +1991,25 @@ ArgParser::argEndAddAttachment() } void -ArgParser::argCApositional(char* arg) +ArgParser::argCopyAttPositional(char* arg) { o.attachments_to_copy.back().path = arg; } void -ArgParser::argCAprefix(char* parameter) +ArgParser::argCopyAttPrefix(char* parameter) { o.attachments_to_copy.back().prefix = parameter; } void -ArgParser::argCApassword(char* parameter) +ArgParser::argCopyAttPassword(char* parameter) { o.attachments_to_copy.back().password = parameter; } void -ArgParser::argEndCopyAttachments() +ArgParser::argEndCopyAttachment() { if (o.attachments_to_copy.back().path.empty()) { diff --git a/libqpdf/qpdf/auto_job_decl.hh b/libqpdf/qpdf/auto_job_decl.hh index 806e2ab5..076a8f68 100644 --- a/libqpdf/qpdf/auto_job_decl.hh +++ b/libqpdf/qpdf/auto_job_decl.hh @@ -11,3 +11,134 @@ static constexpr char const* O_256_BIT_ENCRYPTION = "256-bit encryption"; static constexpr char const* O_UNDERLAY_OVERLAY = "underlay/overlay"; static constexpr char const* O_ATTACHMENT = "attachment"; static constexpr char const* O_COPY_ATTACHMENT = "copy attachment"; + +void argHelp(); +void argVersion(); +void argCopyright(); +void argJsonHelp(); +void argShowCrypto(); +void argPositional(char*); +void argAddAttachment(); +void argAllowWeakCrypto(); +void argCheck(); +void argCheckLinearization(); +void argCoalesceContents(); +void argCopyAttachmentsFrom(); +void argDecrypt(); +void argDeterministicId(); +void argEmpty(); +void argEncrypt(); +void argExternalizeInlineImages(); +void argFilteredStreamData(); +void argFlattenRotation(); +void argGenerateAppearances(); +void argIgnoreXrefStreams(); +void argIsEncrypted(); +void argJson(); +void argKeepInlineImages(); +void argLinearize(); +void argListAttachments(); +void argNewlineBeforeEndstream(); +void argNoOriginalObjectIds(); +void argNoWarn(); +void argOptimizeImages(); +void argOverlay(); +void argPages(); +void argPasswordIsHexKey(); +void argPreserveUnreferenced(); +void argPreserveUnreferencedResources(); +void argProgress(); +void argQdf(); +void argRawStreamData(); +void argRecompressFlate(); +void argRemovePageLabels(); +void argReplaceInput(); +void argRequiresPassword(); +void argShowEncryption(); +void argShowEncryptionKey(); +void argShowLinearization(); +void argShowNpages(); +void argShowPages(); +void argShowXref(); +void argStaticAesIv(); +void argStaticId(); +void argSuppressPasswordRecovery(); +void argSuppressRecovery(); +void argUnderlay(); +void argVerbose(); +void argWarningExit0(); +void argWithImages(); +void argCollate(char *); +void argSplitPages(char *); +void argCompressionLevel(char *); +void argCopyEncryption(char *); +void argEncryptionFilePassword(char *); +void argForceVersion(char *); +void argIiMinBytes(char *); +void argJsonObject(char *); +void argKeepFilesOpenThreshold(char *); +void argLinearizePass1(char *); +void argMinVersion(char *); +void argOiMinArea(char *); +void argOiMinHeight(char *); +void argOiMinWidth(char *); +void argPassword(char *); +void argPasswordFile(char *); +void argRemoveAttachment(char *); +void argRotate(char *); +void argShowAttachment(char *); +void argShowObject(char *); +void argCompressStreams(char *); +void argDecodeLevel(char *); +void argFlattenAnnotations(char *); +void argJsonKey(char *); +void argKeepFilesOpen(char *); +void argNormalizeContent(char *); +void argObjectStreams(char *); +void argPasswordMode(char *); +void argRemoveUnreferencedResources(char *); +void argStreamData(char *); +void argPagesPositional(char*); +void argPagesPassword(char *); +void argEndPages(); +void argEncPositional(char*); +void argEndEncryption(); +void argEnc40Extract(char *); +void argEnc40Annotate(char *); +void argEnc40Print(char *); +void argEnc40Modify(char *); +void argEnd40BitEncryption(); +void argEnc128CleartextMetadata(); +void argEnc128ForceV4(); +void argEnc128Accessibility(char *); +void argEnc128Extract(char *); +void argEnc128Print(char *); +void argEnc128Assemble(char *); +void argEnc128Annotate(char *); +void argEnc128Form(char *); +void argEnc128ModifyOther(char *); +void argEnc128Modify(char *); +void argEnc128UseAes(char *); +void argEnd128BitEncryption(); +void argEnc256ForceR5(); +void argEnc256AllowInsecure(); +void argEnd256BitEncryption(); +void argUOPositional(char*); +void argUOTo(char *); +void argUOFrom(char *); +void argUORepeat(char *); +void argUOPassword(char *); +void argEndUnderlayOverlay(); +void argAttPositional(char*); +void argAttReplace(); +void argAttKey(char *); +void argAttFilename(char *); +void argAttCreationdate(char *); +void argAttModdate(char *); +void argAttMimetype(char *); +void argAttDescription(char *); +void argEndAttachment(); +void argCopyAttPositional(char*); +void argCopyAttPrefix(char *); +void argCopyAttPassword(char *); +void argEndCopyAttachment();