author | zecke <zecke> | 2003-02-22 16:33:34 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-02-22 16:33:34 (UTC) |
commit | 2424bcd292444b3a03c9b92dbc7f5b392c355755 (patch) (side-by-side diff) | |
tree | 7f909f39bce8ba8501d07dc6ff238ae7918fc8de /libopie | |
parent | 66b00525256255290dfcd9d48ebe1539f15b8dce (diff) | |
download | opie-2424bcd292444b3a03c9b92dbc7f5b392c355755.zip opie-2424bcd292444b3a03c9b92dbc7f5b392c355755.tar.gz opie-2424bcd292444b3a03c9b92dbc7f5b392c355755.tar.bz2 |
fixx off by one in reading
-rw-r--r-- | libopie/pim/odatebookaccessbackend_xml.cpp | 29 | ||||
-rw-r--r-- | libopie/pim/otodoaccessxml.cpp | 30 | ||||
-rw-r--r-- | libopie/pim/test/oevent_test.cpp | 21 |
3 files changed, 57 insertions, 23 deletions
diff --git a/libopie/pim/odatebookaccessbackend_xml.cpp b/libopie/pim/odatebookaccessbackend_xml.cpp index bc51996..24b69fe 100644 --- a/libopie/pim/odatebookaccessbackend_xml.cpp +++ b/libopie/pim/odatebookaccessbackend_xml.cpp @@ -23,6 +23,33 @@ #include "odatebookaccessbackend_xml.h" namespace { + // FROM TT again +char *strstrlen(const char *haystack, int hLen, const char* needle, int nLen) +{ + char needleChar; + char haystackChar; + if (!needle || !haystack || !hLen || !nLen) + return 0; + + const char* hsearch = haystack; + + if ((needleChar = *needle++) != 0) { + nLen--; //(to make up for needle++) + do { + do { + if ((haystackChar = *hsearch++) == 0) + return (0); + if (hsearch >= haystack + hLen) + return (0); + } while (haystackChar != needleChar); + } while (strncmp(hsearch, needle, QMIN(hLen - (hsearch - haystack), nLen)) != 0); + hsearch--; + } + return ((char *)hsearch); +} +} + +namespace { time_t start, end, created, rp_end; ORecur* rec; ORecur* recur() { @@ -342,7 +369,7 @@ bool ODateBookAccessBackend_XML::loadFile() { const char* collectionString = "<event "; int strLen = ::strlen(collectionString); int *find; - while ( dt + 1 != 0 && (( point = ::strstr( dt+i, collectionString ) ) != 0 ) ) { + while ( ( point = ::strstrlen( dt+i, len -i, collectionString, strLen ) ) != 0 ) { i = point -dt; i+= strLen; diff --git a/libopie/pim/otodoaccessxml.cpp b/libopie/pim/otodoaccessxml.cpp index 22b2469..cda300b 100644 --- a/libopie/pim/otodoaccessxml.cpp +++ b/libopie/pim/otodoaccessxml.cpp @@ -17,6 +17,34 @@ #include "otodoaccessxml.h" +namespace { + // FROM TT again +char *strstrlen(const char *haystack, int hLen, const char* needle, int nLen) +{ + char needleChar; + char haystackChar; + if (!needle || !haystack || !hLen || !nLen) + return 0; + + const char* hsearch = haystack; + + if ((needleChar = *needle++) != 0) { + nLen--; //(to make up for needle++) + do { + do { + if ((haystackChar = *hsearch++) == 0) + return (0); + if (hsearch >= haystack + hLen) + return (0); + } while (haystackChar != needleChar); + } while (strncmp(hsearch, needle, QMIN(hLen - (hsearch - haystack), nLen)) != 0); + hsearch--; + } + return ((char *)hsearch); +} +} + + OTodoAccessXML::OTodoAccessXML( const QString& appName, const QString& fileName ) : OTodoAccessBackend(), m_app( appName ), m_opened( false ), m_changed( false ) @@ -85,7 +113,7 @@ bool OTodoAccessXML::load() { char *point; const char* collectionString = "<Task "; int strLen = strlen(collectionString); - while ( dt+i != 0 && ( point = strstr( dt+i, collectionString ) ) != 0l ) { + while ( ( point = strstrlen( dt+i, len -i, collectionString, strLen ) ) != 0l ) { i = point -dt; i+= strLen; qWarning("Found a start at %d %d", i, (point-dt) ); diff --git a/libopie/pim/test/oevent_test.cpp b/libopie/pim/test/oevent_test.cpp index 247b83b..d83ee0b 100644 --- a/libopie/pim/test/oevent_test.cpp +++ b/libopie/pim/test/oevent_test.cpp @@ -4,24 +4,6 @@ #include "../odatebookaccess.h" int main(int argc, char* argv ) { - OEvent ev; -// ev.setUid( 20 ); - - ev.setDescription( "Foo Descsfewrf" ); - - OEvent ev2 = ev; - ev2.setDescription("Foo3"); - qWarning("%s", ev2.description().latin1() ); - qWarning("%s", ev.description().latin1() ); - - QDateTime time = QDateTime::currentDateTime(); - ev2.setStartDateTime( time ); - ev2.setTimeZone( "Europe/London" ); - - qWarning("%s", ev2.startDateTime().toString().latin1() ); - qWarning("%s", ev2.startDateTimeInZone().toString().latin1() ); - qWarning("%d %d", ev.isAllDay(), ev2.isAllDay() ); - ODateBookAccess acc; if(!acc.load() ) qWarning("could not load"); @@ -46,9 +28,6 @@ int main(int argc, char* argv ) { qWarning("Summary: %s", ef.description().latin1() ); qWarning("Date: %s", ef.date().toString().latin1() ); } - ev.setUid( 1 ); - acc.add( ev ); - acc.save(); return 0; } |