bool SingleLineDelimTextFileReader::readEntry() { if (!_isFileOpen) { return false; } if (_bufStreamMgr->eof()) { return false; } if (!_bufStreamMgr->getLine(_sLine)) { return false; } _lineNum++; if (_sLine.empty()) { return false; } //scan the whole header in one call. bool wasHeader = false; while (detectAndHandleHeader()) { //header line if (!_bufStreamMgr->getLine(_sLine)) { return false; _lineNum++; } } //after the first time we find a header, any other header line //doesn't count, and should not be added to the header, because it is a // "commented out record." _fullHeaderFound = true; //check to make sure line has something besides whitespace. bool hasNonSpace = false; int lineLen = _sLine.size(); for (int i=0; i < lineLen; i++) { if (!isspace(_sLine[i])) { hasNonSpace = true; break; } } if (!hasNonSpace) { return false; } //trim off any white space from end of line. int currPos = lineLen-1; while (isspace(_sLine[currPos])) { currPos--; } _sLine.resize(currPos +1); if (wasHeader) { return true; } if (!findDelimiters()) { return false; } return true; }
void qParseMailbox(QString& input, QString& name, QString& address, QString& suffix, bool &startDelimeterFound, bool &endDelimeterFound) { // See if there is a trailing suffix int pos = input.indexOf("/TYPE="); if (pos != -1) { suffix = input.mid(pos + 6); input = input.left(pos); } // Separate the email address from the name QPair<int, int> delimiters = findDelimiters(input); if (delimiters.first == -1 && delimiters.second == -1) { name = address = input.trimmed(); } else { if (delimiters.first == -1) { // Unmatched '>' address = input.left( delimiters.second ); if ( name.isEmpty() ) name = address; } else { name = input.left( delimiters.first ); if (delimiters.second == -1) address = input.right(input.length() - delimiters.first - 1); else address = input.mid(delimiters.first + 1, (delimiters.second - delimiters.first - 1)).trimmed(); } name = name.trimmed(); } if (delimiters.first == -1) startDelimeterFound = false; else startDelimeterFound = true; if (delimiters.second == -1) endDelimeterFound = false; else endDelimeterFound = true; }