[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pdf-devel] Patch for FS#87, pdf-filter new options
From: |
gerel |
Subject: |
[pdf-devel] Patch for FS#87, pdf-filter new options |
Date: |
Sat, 24 Jan 2009 12:53:51 -0800 (PST) |
Hi all,
I attach a patch for task #87, tested with null filter and seems to work ok.
##
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: file:///home/gerel/PROJECTS/libgnupdf/trunk/
# testament_sha1: c271e74e7724f89cb47855ddb6bcd4e1ddf7efda
# timestamp: 2009-01-24 17:38:53 -0300
# base_revision_id: address@hidden
#
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog 2009-01-19 22:29:21 +0000
+++ ChangeLog 2009-01-24 20:38:14 +0000
@@ -1,3 +1,9 @@
+2009-01-24 Gerardo E. Gidoni <address@hidden>
+
+ * utils/pdf-filter.c: added --input-file and --output-file options.
+
+ * utils/pdf-filter.h: same.
+
2009-01-19 Jose E. Marchesi <address@hidden>
* src/base/pdf-types.h: Progress monitor data types implemented.
=== modified file 'utils/pdf-filter.c'
--- utils/pdf-filter.c 2009-01-13 21:56:12 +0000
+++ utils/pdf-filter.c 2009-01-24 20:38:14 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "09/01/13 22:30:03 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-24 17:33:37 gerel"
*
* File: pdf-filter.c
* Date: Tue Jul 10 18:42:07 2007
@@ -52,6 +52,8 @@
{"usage", no_argument, NULL, USAGE_ARG},
{"version", no_argument, NULL, VERSION_ARG},
{"readmode", no_argument, NULL, READ_ARG},
+ {"input-file", required_argument, NULL, INFILE_ARG},
+ {"output-file", required_argument, NULL, OUTFILE_ARG},
{"cache", required_argument, NULL, CACHE_ARG},
{"null", no_argument, NULL, NULL_FILTER_ARG},
{"ahexdec", no_argument, NULL, ASCIIHEXDEC_FILTER_ARG},
@@ -96,6 +98,8 @@
available options\n\
--readmode test the stream in read mode instead\n\
of write mode.\n\
+ -i FILE, --input-file=FILE Use a given file as the input.\n\
+ -o FILE, --output-file=FILE Use a given file as the output.\n\
--cache=NUM set the stream cache size.\n\n\
available filters\n\
--null use the NULL filter\n\
@@ -138,31 +142,44 @@
char *pdf_filter_help_msg = "";
static pdf_stm_t
-create_stream (int argc, char* argv[], pdf_bool_t* mode, pdf_status_t*
last_ret);
+create_stream (int argc, char* argv[], pdf_bool_t* mode, pdf_status_t*
last_ret,
+ pdf_bool_t * read_pdf_fsys, pdf_bool_t * write_pdf_fsys,
+ pdf_stm_t * fsys_stm);
static void
install_filters (int argc, char* argv[], pdf_stm_t stm, pdf_status_t ret);
static void
-process_stream (pdf_stm_t, pdf_bool_t mode);
+process_stream (pdf_stm_t, pdf_bool_t mode, pdf_bool_t read_pdf_fsys,
+ pdf_bool_t write_pdf_fsys, pdf_stm_t fsys_stm);
+
+static
+open_file (pdf_char_t * name, pdf_fsys_file_t * file,
+ enum pdf_fsys_file_mode_e mode);
int
main (int argc, char *argv[])
{
- pdf_stm_t stm;
- pdf_bool_t read_mode;
+ pdf_stm_t stm,fsys_stm;
+ pdf_bool_t read_mode,read_pdf_fsys,write_pdf_fsys;
pdf_status_t last_ret;
- stm = create_stream (argc, argv, &read_mode, &last_ret);
+ stm = create_stream (argc, argv, &read_mode, &last_ret, &read_pdf_fsys,
+ &write_pdf_fsys, &fsys_stm);
install_filters (argc, argv, stm, last_ret);
- process_stream (stm, read_mode);
+ process_stream (stm, read_mode, read_pdf_fsys,write_pdf_fsys, fsys_stm);
pdf_stm_destroy (stm);
+ if (read_pdf_fsys || write_pdf_fsys)
+ {
+ pdf_stm_destroy (fsys_stm);
+ }
return 0;
}
static void
-process_stream (pdf_stm_t stm, pdf_bool_t read_mode)
+process_stream (pdf_stm_t stm, pdf_bool_t read_mode, pdf_bool_t read_pdf_fsys,
+ pdf_bool_t write_pdf_fsys, pdf_stm_t fsys_stm)
{
#define BUF_SIZE 256
@@ -174,15 +191,27 @@
if (read_mode)
{
/* Read from the buffer which will process anything on stdin
- and push to stdout */
+ and push to stdout */
do
{
ret = pdf_stm_read (stm, buf, BUF_SIZE, &read_bytes);
- if(fwrite (buf, 1, read_bytes, stdout) != read_bytes)
- {
- fprintf(stderr,"fwrite failed (%ld)", (long)read_bytes);
- }
- }
+ if (write_pdf_fsys)
+ {
+ ret = pdf_stm_write (fsys_stm, buf, read_bytes, &written_bytes);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while writing to stream");
+ exit (1);
+ }
+ }
+ else
+ {
+ if(fwrite (buf, 1, read_bytes, stdout) != read_bytes)
+ {
+ fprintf(stderr,"fwrite failed (%ld)", (long)read_bytes);
+ }
+ }
+ }
while (read_bytes == BUF_SIZE);
}
else
@@ -190,25 +219,35 @@
/* Write stdin into the write stream,
which will be transparently writting the output to stdout. */
do
- {
- read_bytes = fread (buf, 1, BUF_SIZE, stdin);
- ret = pdf_stm_write (stm, buf, read_bytes, &written_bytes);
- }
+ {
+ if (read_pdf_fsys)
+ {
+ ret = pdf_stm_read (fsys_stm, buf, BUF_SIZE, &read_bytes);
+ }
+ else
+ {
+ read_bytes = fread (buf, 1, BUF_SIZE, stdin);
+ }
+ ret = pdf_stm_write (stm, buf, read_bytes, &written_bytes);
+ }
while (read_bytes == BUF_SIZE);
}
-
+
#undef BUF_SIZE
}
static pdf_stm_t
create_stream (int argc, char* argv[], pdf_bool_t* read_mode,
- pdf_status_t* last_ret)
+ pdf_status_t* last_ret, pdf_bool_t * read_pdf_fsys,
+ pdf_bool_t * write_pdf_fsys, pdf_stm_t * fsys_stm)
{
char c;
pdf_status_t ret;
pdf_size_t cache_size;
pdf_stm_t stm;
pdf_bool_t finish;
+ pdf_char_t *infile_name=NULL,*outfile_name=NULL;
+ pdf_fsys_file_t infile, outfile;
finish = PDF_FALSE;
cache_size = 0;
@@ -217,7 +256,7 @@
while (!finish &&
(ret = getopt_long (argc,
argv,
- "",
+ "i:o:",
GNU_longOptions,
NULL)) != -1)
{
@@ -253,6 +292,20 @@
cache_size = atoi (optarg);
break;
}
+ case INFILE_ARG:
+ case 'i':
+ {
+ infile_name = pdf_alloc (strlen(optarg)+1);
+ strcpy (infile_name, optarg);
+ break;
+ }
+ case OUTFILE_ARG:
+ case 'o':
+ {
+ outfile_name = pdf_alloc (strlen(optarg)+1);
+ strcpy (outfile_name, optarg);
+ break;
+ }
case '?':
default:
{
@@ -269,16 +322,75 @@
*/
*last_ret = ret;
- ret = pdf_stm_cfile_new (*read_mode ? stdin : stdout,
+ if (pdf_text_init() != PDF_OK)
+ {
+ fprintf (stderr, "Error initializing the text module.\n");
+ exit(1);
+ }
+
+ *read_pdf_fsys = PDF_FALSE;
+ *write_pdf_fsys = PDF_FALSE;
+ if (infile_name == NULL && outfile_name == NULL)
+ {
+ ret = pdf_stm_cfile_new (*read_mode ? stdin : stdout,
0,
cache_size,
*read_mode ? PDF_STM_READ : PDF_STM_WRITE,
&stm);
-
- if (ret != PDF_OK)
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while creating the write stream");
+ exit (1);
+ }
+ }
+ else
{
- pdf_error (ret, stderr, "while creating the write stream");
- exit (1);
+ if (infile_name != NULL)
+ {
+ open_file (infile_name, &infile, PDF_FSYS_OPEN_MODE_READ);
+ *read_pdf_fsys = PDF_TRUE;
+ ret = pdf_stm_file_new (infile,0,cache_size,PDF_STM_READ,
+ *read_mode ? &stm : fsys_stm);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while creating the read stream");
+ exit (1);
+ }
+ }
+ else
+ {
+ ret = pdf_stm_cfile_new (stdin,0,cache_size,PDF_STM_READ,
+ *read_mode ? &stm : fsys_stm);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while creating the read stream");
+ exit (1);
+ }
+ }
+
+ if (outfile_name != NULL)
+ {
+ open_file (outfile_name, &outfile, PDF_FSYS_OPEN_MODE_WRITE);
+ *write_pdf_fsys = PDF_TRUE;
+ ret = pdf_stm_file_new (outfile,0,cache_size,PDF_STM_WRITE,
+ *read_mode ? fsys_stm : &stm);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while creating the write stream");
+ exit (1);
+ }
+ }
+ else
+ {
+ ret = pdf_stm_cfile_new (stdout,0,cache_size,PDF_STM_WRITE,
+ *read_mode ? fsys_stm : &stm);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while creating the write stream");
+ exit (1);
+ }
+
+ }
}
return stm;
@@ -747,4 +859,28 @@
}
+static
+open_file (pdf_char_t * name, pdf_fsys_file_t * file,
+ enum pdf_fsys_file_mode_e mode)
+{
+ pdf_status_t ret;
+ pdf_text_t path;
+ pdf_char_t * rem;
+ pdf_size_t rem_len;
+
+ ret = pdf_text_new_from_pdf_string(name, strlen(name), &rem, &rem_len,
&path);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while creating pdf text path");
+ exit (1);
+ }
+
+ ret = pdf_fsys_file_open (NULL, path, mode, file);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while opening file '%s'", name);
+ exit (1);
+ }
+}
+
/* End of pdf_filter.c */
=== modified file 'utils/pdf-filter.h'
--- utils/pdf-filter.h 2008-12-27 19:54:54 +0000
+++ utils/pdf-filter.h 2009-01-24 20:38:14 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/12/27 20:11:16 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-23 12:06:54 gerel"
*
* File: pdf-filter.h
* Date: Tue Jul 10 18:40:55 2007
@@ -37,6 +37,8 @@
USAGE_ARG,
VERSION_ARG,
READ_ARG,
+ INFILE_ARG,
+ OUTFILE_ARG,
CACHE_ARG,
NULL_FILTER_ARG,
ASCIIHEXDEC_FILTER_ARG,
# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWQL20l4AB7D/gH/9CAHz////
/6/evr////5gDQvh72UHuy7AAD0DoNal7YFAACgAAqGUTU0mnqDag/UnqaabRNqfqg0GEMINDJoM
jIAYmmQCUVTybUntU/Sn6KA0BoABoGgZNAAAAAAGgaI0ymUhoAGgAAGQAAGgAAANBoAkUhqKbKbC
T21KbU2oMZQep6g9Iaemkw1G0gAAA0AODRo0DQaAyYgMjQyAANNMgAAGCAAkSEaAhMTJoAQ1PIjC
anqn4kanqP1I0eoeo9QHqD1PU9plR0kkhxwIL8pI3Hwr+ImwMhwxHEIht+BIbaVMUjvSnICxcXl3
GW75HzZtKkx8qEUkCPVRUrxPzoA0BrHNS1ICOxcFIIHVhdCIJXEGAyYytwNkFjO1pUAsRQkpEkXy
y2OdZ45QFGViJ1JQZ7RRKIGKY1Gtw8d8qIFrYWzgDlCqpSpQsZrvtm3lWcVik5VKzsuIK/iSC26F
dFtcaCSS0NIQBIFzmhNoDM02kidgJfCpAEUlXkAd0pQUzL0BkWuEDgxeFWIAqVEh+OcvqHJChFVV
TCh5EPoB0Jz4E8ELcf1n2mWLczwFUEvIzTvQdXV02dOcBtuaxLLjqmXErSTXW7KRfZP+ifTlFWWA
X0iRR1ZElAgbzVGijGxsiwk0Qr4CUXCIchiSzG83uFz2ho1fqEnuOIQ0tRynlxdfpdln8QZKUSGN
I+BIq7qcJEBkWyFV/nMtstKLL9OU6zDsLql0ZG3h+ZpR02dumWZgSMLJayJSKaBlkxj+EXTLaPZP
UTDFpm8lIknAmohMyuJTVW8WOHEFhF67WDOKgGt73K20vMB2WRW4XGaBQH6RkWL5wYErcQLBLkqo
wUZwbGuhmw6oOuNrREKWmNZTTIkEgGPN6liSDGCEq1esYSehivsRt7UBsU4GitszFI0lnZrPr7MF
1ttJeNgbqsgEpNLcfirvUoRCfbv04dGJO5tdQ33Sd8vw9k7AtKCs00CCUdV1n2Hm4gzTR7RnnBl/
Rob5k+dvAWNL1ZiyTaiJSbjaQTxVNGGrWu1CvE1lcXcwOcMuJG6NCTyVoGyD4MkKQlBJgwAnMk+T
p5qYd4XRaeoOMD6V0n7jMgsNZrJCFqVp5wsJJZi1ow6Sy4lI7Q94aT3AGEbtk7J4m4D9kJbftMhc
3JvuUR+BezQWEC01/e0g2MR7HLiO4JcRvC1BvGCW5ciBTVAmkj941eXh7T2yJAzPO4mlJglYcET4
ywmYno4HRxGq6G0m2xF8Yyk9TlRd4fgNEzQuINCvDUUqeeCjsQ1ajSV1fjnReIaAtureXxsP1KYm
DzIRhQvuxQtyJIkxWMWv7ok9BeX9ugqZBbYymCLDSWmoqQW5NKTJPPbhlQ3hbXYg0djhAtgrUBjp
NIRgE4ywiFQMFNhdSSLipKi2EWDsQFpcVmnBbLBzQrTPQE8S4qEy9AxkzSfsErQvssnbOKzzCVu2
wtm0MgnU0HLYZGRZI2EXJvGYRBbhzEidCzJAOg4KULjWYHyONC02XbWYq7isseBCFEoFYTJmRK3B
oB0OQncbSK/cbEKc7YqSuMDhVHWYmBW8zZNEiWJyceJqLS4rK5Ga0xvh8dsy2wuwLmRlUtVMdMxY
F9+lCephN217zDkDKQVteNxBpHY4dPGkYNNmgkwUQsgYIirZuVyzQsjWGBw4iJzS0mVLtpqi8+QR
oC4nJmrULAzNIabXbN6ZuoFxaZmlbdloYWl986s1EuQnFEtCW00FElBM4wlZhfoterVqwcq3BRJu
qFJhIxJQXQtjOQ3ksp4FlCpORoMSZiZmAfML7HnW7XK4JjQLeYk6ayRqBhmXlkrqaHKQ5mBptqUw
MRky/vPSfwOUvKFsH1P7NO/TlnugNRpJWJNHVCVNaLgLeL6zzMtNAdk4CAggM7epkh2kauLEFoaL
rA0DRvntJjQMAeg5xrhgDhjMIwI1pimMKkB5fA+0PYbiJFCQSqQSmO1HgbUDEG5f8HzFYbBsbabd
pRlfyX/h+aQcp/8vlA7fifE+KxqWi+BjoOgvMfiMcyxCxGLALBnEIhQsjQgxQfqIqg1GvAyCivF/
PoNh8S1IoAfAGZElgL9lgSEIkpXJEekoThpMa5bIEicnwxJ5GblE3k/rgSUMRoKktxICIP4HcMEy
5th51IHzkATDxk4w+c4JUUJMxJgRKiCCQTODbbbbaY2mORNTVvdHeMsBqoUEmASIUQWnlO8bHAmm
iwhGcmIDhFMvGQ0hHcO6bi2jKbxUMhj8Nk4bBvB3p0kuEtZZq5OXAkByqDwGAgkXklFpcAtMO7kW
LRwQU0IVoeuuIw1BzKqMyoVICg7a154jCKLJBkB8VhWErnCg8a5WAZZBzReDweMJBfNg3Ukse+Ms
GcJEjCUlBMRzByBoNckeWwtS7PvDgeRBt/q4b6h1ooSLE+Ri0eOwd7HBt3d1ZS+o2HYdRBQuFalp
8ciZccplqBMzQlzHaQbxBwI7hG7ghJELffAcoVPKjvOSChAOQYImE0E2vDAhQpJhCpY3CcOCIIgg
Y4PqCUlIO0r98HgTlPF0Ok6DyenAu5TJZIkM+gLzkeoZKpYoAYImkagZCrkbUkqNCJ29TzmcGrCE
wFbVc1/wbhQFKC9lNNFsmRcIlAmkfkZQDTshf35gLhQRzAYAWIOgONZBuBluKAXKLWa/IH7SwQqm
AlD51fEt6JI+g7DxH7iBkxJB1nP4ztPAuO4sRQyRUK8geqD/FOE1u1MfGnMmrCk222xj4SGMKYDG
MpYLj3ZFZ1/mGCUI/JnrYz6/OdAS9HYGaDz0IYPqJEhC4ZhC5wsYDKmJ/2eokJrIZByUPmhLUXho
9nBMzHECJCP0hKQDDHiD0Ab0LWuLnQlzf539gdyFt1TTqcwLzTDq3NneyIDJvtR2geAmmxsQjpqE
IPvIC6xfWesDon4j3tf65cV69TDZsu5ONwX0H4i8mdiQXHoNIetIPeBoeAghrsPWXAew7Bsn5gke
Q1tNnpCS+hdJUNOW4DMMidfEEktaFxBIEaAWzmfz9SSV7XsYksVkaT3LBc8ip7g1FDovCEZkIJlq
NSKkChIsaTYmaYEQgyRNJWjAsPSdJMKFwcpswNSNg22MYx4BwR0GeBaQfq1JuQyIRIgUCKi4roBk
NEGtXhUCwmKAREk9hWZxNExyBjFtwgkc9CTIC6eGrIx29VUklIQN+eYuhZBU6zNIPIWZyLwVm3zH
cckwOBAQg2awPrQlCOuQtOQdd1z8Ig8O3h3umcByBJUPEcqUsGZu6xuA+TbR8x5DPRtONke/eJFE
HzamwuZVtlIgvwb0o4xLo3+PgaC642gyopa/M2xtl5yhzoV54h1QdzfMImhQEgKEpIOy8i3ZiaHy
/lC6UShQbiFJn2ZGCRqA7TBaAFWreaEy8B8vQGgcqqgEbihC3DSkusNpeDSExY3aOB7UI8gSVqPg
UUt9sgOCCdwg/sYVYSvUhfyCfRkS3emFRDExobPAzLYJTLwZAoYl6l2JhtsRgH+RivCwLYRrRNIG
BcXpYJFy4yDkLFwzAbG04OclCCBycocIDADykIkJuZbSpxCESAyAtSM3jMRxTmHsGkWEoToUHJgS
EP0GwqFhU1ppMOAMSL0pDSKGstQM2INRkMTmXmSC0KAbrpHAKBQJCnkakLNJBQYFyVqIQEP7oC5p
VC5SCSEu87/YHt6F3I6zR3W8C85DHTvWza2mgaDzHGQj3gVaHtLxcyQfxD3Zh7wmKW5CxApzjyX1
D6T2McE3Asq4vEZw0xIkXKSJIykCAygQjAdCDUHZwEYHT80fyF6jyge4+mh8t8rbKKC1g5JWzj4D
/i7kinChIAXtpLw=
###
regards,
-gerel
- [pdf-devel] Patch for FS#87, pdf-filter new options,
gerel <=
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, jemarch, 2009/01/25
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, Aleksander Morgado, 2009/01/25
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, gerel, 2009/01/25
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, Aleksander Morgado, 2009/01/25
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, jemarch, 2009/01/25
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, Aleksander Morgado, 2009/01/26
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, jemarch, 2009/01/26
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, Aleksander Morgado, 2009/01/26
- Re: [pdf-devel] Patch for FS#87, pdf-filter new options, jemarch, 2009/01/26