You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
3.6 KiB
189 lines
3.6 KiB
/***************************************************************************
|
|
mimeio.cc - description
|
|
-------------------
|
|
begin : Wed Oct 25 2000
|
|
copyright : (C) 2000 by Sven Carstens
|
|
email : s.carstens@gmx.de
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include <iostream>
|
|
using namespace std;
|
|
|
|
#include "mimeio.h"
|
|
|
|
mimeIO::mimeIO ()
|
|
{
|
|
theCRLF = "\r\n";
|
|
crlfLen = 2;
|
|
}
|
|
|
|
mimeIO::~mimeIO ()
|
|
{
|
|
}
|
|
|
|
int
|
|
mimeIO::inputLine (TQCString & aLine)
|
|
{
|
|
char input;
|
|
|
|
aLine = (const char *) NULL;
|
|
while (inputChar (input))
|
|
{
|
|
aLine += input;
|
|
if (input == '\n')
|
|
break;
|
|
}
|
|
// cout << aLine.length() << " - " << aLine;
|
|
return aLine.length ();
|
|
}
|
|
|
|
int
|
|
mimeIO::outputLine (const TQCString & aLine, int len)
|
|
{
|
|
int i;
|
|
|
|
if (len == -1) {
|
|
len = aLine.length();
|
|
}
|
|
int start = len;
|
|
for (i = 0; i < start; i++)
|
|
if (!outputChar (aLine[i]))
|
|
break;
|
|
return i;
|
|
}
|
|
|
|
int
|
|
mimeIO::outputMimeLine (const TQCString & inLine)
|
|
{
|
|
int retVal = 0;
|
|
TQCString aLine = inLine;
|
|
int len = inLine.length();
|
|
|
|
int theLF = aLine.findRev ('\n');
|
|
if (theLF == len - 1 && theLF != -1)
|
|
{
|
|
//we have a trailing LF, now check for CR
|
|
if (aLine[theLF - 1] == '\r')
|
|
theLF--;
|
|
//truncate the line
|
|
aLine.truncate(theLF);
|
|
len = theLF;
|
|
theLF = -1;
|
|
}
|
|
//now truncate the line
|
|
{
|
|
int start, end, offset;
|
|
start = 0;
|
|
end = aLine.find ('\n', start);
|
|
while (end >= 0)
|
|
{
|
|
offset = 1;
|
|
if (end && aLine[end - 1] == '\r')
|
|
{
|
|
offset++;
|
|
end--;
|
|
}
|
|
outputLine (aLine.mid (start, end - start) + theCRLF, end - start + crlfLen);
|
|
start = end + offset;
|
|
end = aLine.find ('\n', start);
|
|
}
|
|
outputLine (aLine.mid (start, len - start) + theCRLF, len - start + crlfLen);
|
|
}
|
|
return retVal;
|
|
}
|
|
|
|
int
|
|
mimeIO::inputChar (char &aChar)
|
|
{
|
|
if (cin.eof ())
|
|
{
|
|
// cout << "EOF" << endl;
|
|
return 0;
|
|
}
|
|
cin.get (aChar);
|
|
return 1;
|
|
}
|
|
|
|
int
|
|
mimeIO::outputChar (char aChar)
|
|
{
|
|
cout << aChar;
|
|
return 1;
|
|
}
|
|
|
|
void
|
|
mimeIO::setCRLF (const char *aCRLF)
|
|
{
|
|
theCRLF = aCRLF;
|
|
crlfLen = strlen(aCRLF);
|
|
}
|
|
|
|
mimeIOQFile::mimeIOQFile (const TQString & aName):
|
|
mimeIO (),
|
|
myFile (aName)
|
|
{
|
|
myFile.open (IO_ReadOnly);
|
|
}
|
|
|
|
mimeIOQFile::~mimeIOQFile ()
|
|
{
|
|
myFile.close ();
|
|
}
|
|
|
|
int
|
|
mimeIOQFile::outputLine (const TQCString &, int)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int
|
|
mimeIOQFile::inputLine (TQCString & data)
|
|
{
|
|
data.resize( 1024 );
|
|
myFile.readLine (data.data(), 1024);
|
|
|
|
return data.length ();
|
|
}
|
|
|
|
mimeIOQString::mimeIOQString ()
|
|
{
|
|
}
|
|
|
|
mimeIOQString::~mimeIOQString ()
|
|
{
|
|
}
|
|
|
|
int
|
|
mimeIOQString::outputLine (const TQCString & _str, int len)
|
|
{
|
|
if (len == -1) {
|
|
len = _str.length();
|
|
}
|
|
theString += _str;
|
|
return len;
|
|
}
|
|
|
|
int
|
|
mimeIOQString::inputLine (TQCString & _str)
|
|
{
|
|
if (theString.isEmpty ())
|
|
return 0;
|
|
|
|
int i = theString.find ('\n');
|
|
|
|
if (i == -1)
|
|
return 0;
|
|
_str = theString.left (i + 1).latin1 ();
|
|
theString = theString.right (theString.length () - i - 1);
|
|
return _str.length ();
|
|
}
|