#include #include #include #include bool NewsDecoder::decode(const String &pathFileName,Block &uuencodedText) { Block articleText; String strLine; File inFile; uuencodedText.remove(); if(!inFile.open(pathFileName,"rb"))return false; while(inFile.readLine(strLine))articleText.insert(&strLine); inFile.close(); return decode(pathFileName,articleText,uuencodedText); } bool NewsDecoder::decode(const String &messageID,Block &articleText,Block &uuencodedLines) { Block replaceBlock; String pathImageFileName; String pathTempFileName; File outFile; File inFile; int beginIndex; int endIndex; int index; Array bytes; uuencodedLines.remove(); if(!isYEnc(articleText,beginIndex,endIndex))return false; pathTempFileName=messageID+".yenc"; if(!outFile.open(pathTempFileName,"wb"))return false; for(index=beginIndex;index<=endIndex;index++)outFile.writeLine(articleText[index]); outFile.close(); YDecoder::decode(pathTempFileName,pathImageFileName,YDecoder::ForceDecode); ::unlink(pathTempFileName); if(!inFile.open(pathImageFileName,"rb"))return false; bytes.size(inFile.length()); inFile.read(&bytes[0],bytes.size()); if(!UUEncode::encode(bytes,pathImageFileName,replaceBlock))return false; for(index=0;index &articleText,int &beginIndex,int &endIndex) { int index; beginIndex=-1; endIndex=-1; for(index=0;index