mirror of
https://github.com/michaelrsweet/pdfio.git
synced 2024-12-25 12:58:21 +01:00
Add --password option to PDFio test program.
This commit is contained in:
parent
82844ad2ce
commit
138f3955d1
57
testpdfio.c
57
testpdfio.c
@ -27,7 +27,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
static int do_crypto_tests(void);
|
static int do_crypto_tests(void);
|
||||||
static int do_test_file(const char *filename, int objnum, bool verbose);
|
static int do_test_file(const char *filename, int objnum, const char *password, bool verbose);
|
||||||
static int do_unit_tests(void);
|
static int do_unit_tests(void);
|
||||||
static int draw_image(pdfio_stream_t *st, const char *name, double x, double y, double w, double h, const char *label);
|
static int draw_image(pdfio_stream_t *st, const char *name, double x, double y, double w, double h, const char *label);
|
||||||
static bool error_cb(pdfio_file_t *pdf, const char *message, bool *error);
|
static bool error_cb(pdfio_file_t *pdf, const char *message, bool *error);
|
||||||
@ -37,6 +37,7 @@ static const char *password_cb(void *data, const char *filename);
|
|||||||
static int read_unit_file(const char *filename, size_t num_pages, size_t first_image, bool is_output);
|
static int read_unit_file(const char *filename, size_t num_pages, size_t first_image, bool is_output);
|
||||||
static ssize_t token_consume_cb(const char **s, size_t bytes);
|
static ssize_t token_consume_cb(const char **s, size_t bytes);
|
||||||
static ssize_t token_peek_cb(const char **s, char *buffer, size_t bytes);
|
static ssize_t token_peek_cb(const char **s, char *buffer, size_t bytes);
|
||||||
|
static int usage(FILE *fp);
|
||||||
static int verify_image(pdfio_file_t *pdf, size_t number);
|
static int verify_image(pdfio_file_t *pdf, size_t number);
|
||||||
static int write_alpha_test(pdfio_file_t *pdf, int number, pdfio_obj_t *font);
|
static int write_alpha_test(pdfio_file_t *pdf, int number, pdfio_obj_t *font);
|
||||||
static int write_color_patch(pdfio_stream_t *st, bool device);
|
static int write_color_patch(pdfio_stream_t *st, bool device);
|
||||||
@ -59,22 +60,33 @@ int // O - Exit status
|
|||||||
main(int argc, // I - Number of command-line arguments
|
main(int argc, // I - Number of command-line arguments
|
||||||
char *argv[]) // I - Command-line arguments
|
char *argv[]) // I - Command-line arguments
|
||||||
{
|
{
|
||||||
int ret = 0; // Return value
|
int ret = 0; // Return value
|
||||||
|
|
||||||
|
|
||||||
fprintf(stderr, "testpdfio: Test locale is \"%s\".\n", setlocale(LC_ALL, getenv("LANG")));
|
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
{
|
{
|
||||||
int i; // Looping var
|
int i; // Looping var
|
||||||
|
const char *password = NULL; // Password
|
||||||
bool verbose = false; // Be verbose?
|
bool verbose = false; // Be verbose?
|
||||||
|
|
||||||
for (i = 1; i < argc; i ++)
|
for (i = 1; i < argc; i ++)
|
||||||
{
|
{
|
||||||
if (!strcmp(argv[i], "--help"))
|
if (!strcmp(argv[i], "--help"))
|
||||||
{
|
{
|
||||||
puts("Usage: ./testpdfio [--help] [--verbose] [filename [objnum] ...]");
|
return (usage(stdout));
|
||||||
return (0);
|
}
|
||||||
|
else if (!strcmp(argv[i], "--password"))
|
||||||
|
{
|
||||||
|
i ++;
|
||||||
|
if (i < argc)
|
||||||
|
{
|
||||||
|
password = argv[i];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fputs("testpdfio: Missing password after '--password'.\n", stderr);
|
||||||
|
return (usage(stderr));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[i], "--verbose"))
|
else if (!strcmp(argv[i], "--verbose"))
|
||||||
{
|
{
|
||||||
@ -82,24 +94,27 @@ main(int argc, // I - Number of command-line arguments
|
|||||||
}
|
}
|
||||||
else if (argv[i][0] == '-')
|
else if (argv[i][0] == '-')
|
||||||
{
|
{
|
||||||
printf("Unknown option '%s'.\n\n", argv[i]);
|
fprintf(stderr, "testpdfio: Unknown option '%s'.\n", argv[i]);
|
||||||
puts("Usage: ./testpdfio [--help] [--verbose] [filename [objnum] ...]");
|
return (usage(stderr));
|
||||||
return (1);
|
|
||||||
}
|
}
|
||||||
else if ((i + 1) < argc && isdigit(argv[i + 1][0] & 255))
|
else if ((i + 1) < argc && isdigit(argv[i + 1][0] & 255))
|
||||||
{
|
{
|
||||||
// filename.pdf object-number
|
// filename.pdf object-number
|
||||||
if (do_test_file(argv[i], atoi(argv[i + 1]), verbose))
|
if (do_test_file(argv[i], atoi(argv[i + 1]), password, verbose))
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
|
||||||
i ++;
|
i ++;
|
||||||
}
|
}
|
||||||
else if (do_test_file(argv[i], 0, verbose))
|
else if (do_test_file(argv[i], 0, password, verbose))
|
||||||
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
fprintf(stderr, "testpdfio: Test locale is \"%s\".\n", setlocale(LC_ALL, getenv("LANG")));
|
||||||
|
|
||||||
#if _WIN32
|
#if _WIN32
|
||||||
// Windows puts executables in Platform/Configuration subdirs...
|
// Windows puts executables in Platform/Configuration subdirs...
|
||||||
if (!_access("../../testfiles", 0))
|
if (!_access("../../testfiles", 0))
|
||||||
@ -363,6 +378,7 @@ do_crypto_tests(void)
|
|||||||
static int // O - Exit status
|
static int // O - Exit status
|
||||||
do_test_file(const char *filename, // I - PDF filename
|
do_test_file(const char *filename, // I - PDF filename
|
||||||
int objnum, // I - Object number to dump, if any
|
int objnum, // I - Object number to dump, if any
|
||||||
|
const char *password, // I - Password for file
|
||||||
bool verbose) // I - Be verbose?
|
bool verbose) // I - Be verbose?
|
||||||
{
|
{
|
||||||
bool error = false; // Have we shown an error yet?
|
bool error = false; // Have we shown an error yet?
|
||||||
@ -381,7 +397,7 @@ do_test_file(const char *filename, // I - PDF filename
|
|||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pdf = pdfioFileOpen(filename, /*password_cb*/NULL, /*password_data*/NULL, (pdfio_error_cb_t)error_cb, &error)) != NULL)
|
if ((pdf = pdfioFileOpen(filename, password_cb, (void *)password, (pdfio_error_cb_t)error_cb, &error)) != NULL)
|
||||||
{
|
{
|
||||||
if (objnum)
|
if (objnum)
|
||||||
{
|
{
|
||||||
@ -1559,6 +1575,23 @@ token_peek_cb(const char **s, // IO - Test string
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// 'usage()' - Show program usage.
|
||||||
|
//
|
||||||
|
|
||||||
|
static int // O - Exit status
|
||||||
|
usage(FILE *fp) // I - Output file
|
||||||
|
{
|
||||||
|
fputs("Usage: ./testpdfio [OPTIONS] [FILENAME [OBJNUM]] ...\n", fp);
|
||||||
|
fputs("Options:\n", fp);
|
||||||
|
fputs(" --help Show program help.\n", fp);
|
||||||
|
fputs(" --password PASSWORD Set PDF password.\n", fp);
|
||||||
|
fputs(" --verbose Be verbose.\n", fp);
|
||||||
|
|
||||||
|
return (fp != stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// 'verify_image()' - Verify an image object.
|
// 'verify_image()' - Verify an image object.
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user