Subject: patch - RTF import Bug fixed
From: Harald Fernengel (harry@bnro.de)
Date: Tue Feb 15 2000 - 14:41:28 CST
Hello,
Wow - my first patch. Please tell me if I have done something wrong.
Here we go... The RTF importer ignores CR and LF as keyword
separator. This works fine for Word, but StarOffice's RTF will fail
in certain conditions. I created a patch for ie_imp_RTF.cpp and
ie_imp_RTF.h to handle CR and LF as keyword separator. DIFF2.TXT is
for the .cpp, DIFF.TXT for the .h. I tested it and it compiles fine
without warnings on my machine.
Btw, what do I have to do to get direct CVS access....?
Harry
Index: ie_imp_RTF.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_imp_RTF.cpp,v
retrieving revision 1.21
diff -r1.21 ie_imp_RTF.cpp
547c547
< if (!ReadCharFromFile(&ch))
--- > if (!ReadCharFromFileWithCRLF(&ch)) 563c563 < if (!ReadCharFromFile(&ch)) --- > if (!ReadCharFromFileWithCRLF(&ch)) 572c572 < if (!ReadCharFromFile(&ch)) --- > if (!ReadCharFromFileWithCRLF(&ch)) 583c583 < if (!ReadCharFromFile(&ch)) --- > if (!ReadCharFromFileWithCRLF(&ch)) 593,594c593,594 < // If the delimeter was non-space then this character is part of the following text! < if (ch != ' ') --- > // If the delimeter was non-whitespace then this character is part of the following text! > if ((ch != ' ') && (ch != 10) && (ch != 13)) 603c603,604 < UT_Bool IE_Imp_RTF::ReadCharFromFile(unsigned char* pCh) --- > // Reads a character from the file. Doesn't ignore CR and LF > UT_Bool IE_Imp_RTF::ReadCharFromFileWithCRLF(unsigned char* pCh) 604a606,608 > > UT_Bool ok = UT_FALSE; > 607c611 < while (fread(pCh, 1, sizeof(unsigned char), m_pImportFile) > 0) --- > if (fread(pCh, 1, sizeof(unsigned char), m_pImportFile) > 0) 609,616c613,614 < // line feed and cr should be ignored in RTF files < if (*pCh != 10 && *pCh != 13) < { < return UT_TRUE; < } < } < < return UT_FALSE; --- > ok = UT_TRUE; > } 620c618 < while (m_pCurrentCharInPasteBuffer < m_pPasteBuffer+m_lenPasteBuffer) --- > if (m_pCurrentCharInPasteBuffer < m_pPasteBuffer+m_lenPasteBuffer) 623,628c621 < < // line feed and cr should be ignored in RTF files < if (*pCh != 10 && *pCh != 13) < { < return UT_TRUE; < } --- > ok = UT_TRUE; 630,631d622 < < return UT_FALSE; 632a624,640 > > return ok; > } > > // Reads a character from the file ignoring CR and LF > UT_Bool IE_Imp_RTF::ReadCharFromFile(unsigned char* pCh) > { > // line feed and cr should be ignored in RTF files > do > { > if (ReadCharFromFileWithCRLF(pCh) == UT_FALSE) { > return UT_FALSE; > } > } while (*pCh == 10 || *pCh == 13); > > return UT_TRUE; > 1690a1699,1701 > > >
Index: ie_imp_RTF.h =================================================================== RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_imp_RTF.h,v retrieving revision 1.14 diff -r1.14 ie_imp_RTF.h 200a201 > UT_Bool ReadCharFromFileWithCRLF(unsigned char* pCh); 264a266 >
This archive was generated by hypermail 2b25 : Tue Feb 15 2000 - 14:38:03 CST