> Date: Sun, 18 Apr 2010 13:02:32 +0200 (CEST) > From: Jose E. Marchesi <[email protected]> > > > /* 0x01000000 */ > - if((filter & PDF_TEXT_FILTER_REMOVE_LINE_ENDINGS) && \ > - (pdf_text_filter_remove_line_endings(text) != PDF_OK)) > + if((filter & PDF_TEXT_FILTER_REMOVE_LINE_ENDINGS) && \ > + (pdf_text_filter_remove_line_endings(text) != PDF_OK)) > > Please don't write those backslashes in the code. They are useless. > > + if (text->printable != NULL){ > + if (text->modified == PDF_FALSE){ > + return text->printable; > + }else{ > + pdf_dealloc(text->printable); > + } > + } > > http://www.gnu.org/prep/standards/standards.html#Formatting
Ok. Here is a patch with Aleks' fixes and formatting standards. ## # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: [email protected] # target_branch: file:///home/gerel/PROJECTS/libgnupdf/trunk/ # testament_sha1: d9d08026b881b338443d8f01871f0fa8b1792db2 # timestamp: 2010-04-18 19:01:37 -0300 # base_revision_id: [email protected] # # Begin patch === modified file 'ChangeLog' --- ChangeLog 2010-04-18 11:13:22 +0000 +++ ChangeLog 2010-04-18 22:01:34 +0000 @@ -1,3 +1,11 @@ +2010-04-17 Gerardo E. Gidoni <[email protected]> + + Added new method pdf_text_get_printable(). + * src/base/pdf-text.c: new method. + + * src/base/pdf-text.h: new method. + + 2010-04-15 Jose E. Marchesi <[email protected]> Remove spurious blank lines before EOF in the codebase. === modified file 'src/base/pdf-text.c' --- src/base/pdf-text.c 2010-02-20 16:02:07 +0000 +++ src/base/pdf-text.c 2010-04-18 22:01:34 +0000 @@ -157,6 +157,8 @@ /* Initialize all contents */ (*text)->data = NULL; (*text)->size = 0; + (*text)->printable = NULL; + (*text)->modified = PDF_FALSE; memset(&((*text)->lang[0]), 0, PDF_TEXT_CCL); memset(&((*text)->country[0]), 0, PDF_TEXT_CCL); @@ -183,6 +185,11 @@ text->data = NULL; } + if (text->printable != NULL) + { + pdf_dealloc (text->printable); + } + /* Destroy word boundaries list */ pdf_text_destroy_word_boundaries_list(&text->word_boundaries); @@ -224,7 +231,7 @@ memcpy(element->country, text->country, (size_t) PDF_TEXT_CCL); /* We don't really need to duplicate the contents of the word - * boundaries list, as it is a side product */ + * boundaries list, as it is a side product, same with printable */ /* Set output element...*/ return element; @@ -1018,6 +1025,8 @@ /* Update size of first element */ text1->size += text2->size; + + text1->modified = PDF_TRUE; } return PDF_OK; @@ -1267,6 +1276,8 @@ /* Dealloc list of pointers to replacements */ pdf_dealloc(rep_ptrs); } + + text->modified = PDF_TRUE; } return PDF_OK; @@ -1389,16 +1400,42 @@ } /* 0x01000000 */ - if((filter & PDF_TEXT_FILTER_REMOVE_LINE_ENDINGS) && \ - (pdf_text_filter_remove_line_endings(text) != PDF_OK)) + if ((filter & PDF_TEXT_FILTER_REMOVE_LINE_ENDINGS) && + (pdf_text_filter_remove_line_endings (text) != PDF_OK)) { - PDF_DEBUG_BASE("Error applying Line Ending Removal filter"); + PDF_DEBUG_BASE ("Error applying Line Ending Removal filter"); return PDF_ETEXTENC; } + text->modified = PDF_TRUE; return PDF_OK; } +const pdf_char_t * +pdf_text_get_printable (pdf_text_t text) +{ + pdf_size_t size; + + if (text->printable != NULL){ + if (text->modified == PDF_FALSE){ + return text->printable; + }else{ + pdf_dealloc (text->printable); + } + } + +#ifdef PDF_HOST_WIN32 + pdf_text_get_unicode (&text->printable, &size, text, PDF_TEXT_UTF16_LE, + PDF_TEXT_UNICODE_WITH_NUL_SUFFIX); +#else + pdf_text_get_unicode (&text->printable, &size, text, PDF_TEXT_UTF8, + PDF_TEXT_UNICODE_WITH_NUL_SUFFIX); +#endif /*PDF_HOST_WIN32*/ + + text->modified = PDF_FALSE; + + return text->printable; +} pdf_i32_t @@ -1638,6 +1675,12 @@ memset(&(text->country[0]), 0, PDF_TEXT_CCL); /* Reset data size */ text->size = 0; + + text->modified = PDF_FALSE; + if (text->printable != NULL){ + pdf_dealloc (text->printable); + text->printable = NULL; + } } === modified file 'src/base/pdf-text.h' --- src/base/pdf-text.h 2010-02-20 16:02:07 +0000 +++ src/base/pdf-text.h 2010-04-17 22:49:14 +0000 @@ -301,6 +301,9 @@ pdf_text_filter (pdf_text_t text, const pdf_u32_t filter); +/* Returns a read-only string to be used with printf's "%s" like format */ +const pdf_char_t * +pdf_text_get_printable (pdf_text_t text); /* ------------------------- Text Comparison -------------------------------- */ @@ -328,6 +331,8 @@ pdf_list_t word_boundaries; /* List of Word boundaries (optional) */ pdf_char_t lang[PDF_TEXT_CCL]; /* Associated language code (optional) */ pdf_char_t country[PDF_TEXT_CCL]; /* Associated country code (optional) */ + pdf_bool_t modified; /* set to PDF_TRUE each time the data is modified */ + pdf_char_t * printable; }; /* Structure containing the word boundary information */ # Begin bundle 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 JFOFCQocfuNg ### -gerel
