Stream find fix handle more casesteensy4-core
| // as find but search ends if the terminator string is found | // as find but search ends if the terminator string is found | ||||
| bool Stream::findUntil(const char *target, const char *terminator) | bool Stream::findUntil(const char *target, const char *terminator) | ||||
| { | { | ||||
| if(target == NULL) return true; | |||||
| if(terminator == NULL) return true; | |||||
| if(target == nullptr) return true; | |||||
| size_t tlen = (terminator==nullptr)?0:strlen(terminator); | |||||
| return findUntil(target, strlen(target), terminator, strlen(terminator)); | return findUntil(target, strlen(target), terminator, strlen(terminator)); | ||||
| } | } | ||||
| size_t index = 0; // maximum target string length is 64k bytes! | size_t index = 0; // maximum target string length is 64k bytes! | ||||
| size_t termIndex = 0; | size_t termIndex = 0; | ||||
| int c; | int c; | ||||
| if( target == NULL) return true; | |||||
| if( target == nullptr) return true; | |||||
| if( *target == 0) return true; // return true if target is a null string | if( *target == 0) return true; // return true if target is a null string | ||||
| if(terminator == NULL) return true; | |||||
| if (terminator == nullptr) termLen = 0; | |||||
| while( (c = timedRead()) > 0){ | while( (c = timedRead()) > 0){ | ||||
| if( c == target[index]){ | if( c == target[index]){ | ||||
| // | // | ||||
| size_t Stream::readBytes(char *buffer, size_t length) | size_t Stream::readBytes(char *buffer, size_t length) | ||||
| { | { | ||||
| if (buffer == nullptr) return 0; | |||||
| size_t count = 0; | size_t count = 0; | ||||
| while (count < length) { | while (count < length) { | ||||
| int c = timedRead(); | int c = timedRead(); | ||||
| size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) | size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) | ||||
| { | { | ||||
| if (buffer == nullptr) return 0; | |||||
| if (length < 1) return 0; | if (length < 1) return 0; | ||||
| length--; | length--; | ||||
| size_t index = 0; | size_t index = 0; |
| // as find but search ends if the terminator string is found | // as find but search ends if the terminator string is found | ||||
| bool Stream::findUntil(const char *target, const char *terminator) | bool Stream::findUntil(const char *target, const char *terminator) | ||||
| { | { | ||||
| if(target == NULL) return true; | |||||
| if(terminator == NULL) return true; | |||||
| return findUntil(target, strlen(target), terminator, strlen(terminator)); | |||||
| if(target == nullptr) return true; | |||||
| size_t tlen = (terminator==nullptr)?0:strlen(terminator); | |||||
| return findUntil(target, strlen(target), terminator, tlen); | |||||
| } | } | ||||
| // reads data from the stream until the target string of the given length is found | // reads data from the stream until the target string of the given length is found | ||||
| size_t termIndex = 0; | size_t termIndex = 0; | ||||
| int c; | int c; | ||||
| if( target == NULL) return true; | |||||
| if( target == nullptr) return true; | |||||
| if( *target == 0) return true; // return true if target is a null string | if( *target == 0) return true; // return true if target is a null string | ||||
| if(terminator == NULL) return true; | |||||
| if (terminator == nullptr) termLen = 0; | |||||
| while( (c = timedRead()) > 0){ | while( (c = timedRead()) > 0){ | ||||
| if( c == target[index]){ | if( c == target[index]){ | ||||
| // | // | ||||
| size_t Stream::readBytes(char *buffer, size_t length) | size_t Stream::readBytes(char *buffer, size_t length) | ||||
| { | { | ||||
| if (buffer == nullptr) return 0; | |||||
| size_t count = 0; | size_t count = 0; | ||||
| while (count < length) { | while (count < length) { | ||||
| int c = timedRead(); | int c = timedRead(); | ||||
| size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) | size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) | ||||
| { | { | ||||
| if (buffer == nullptr) return 0; | |||||
| if (length < 1) return 0; | if (length < 1) return 0; | ||||
| length--; | length--; | ||||
| size_t index = 0; | size_t index = 0; |