diff options
Diffstat (limited to 'tdeioslaves/mbox/stat.cc')
-rw-r--r-- | tdeioslaves/mbox/stat.cc | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/tdeioslaves/mbox/stat.cc b/tdeioslaves/mbox/stat.cc new file mode 100644 index 000000000..99267ca7d --- /dev/null +++ b/tdeioslaves/mbox/stat.cc @@ -0,0 +1,115 @@ +/* + * This is a simple tdeioslave to handle mbox-files. + * Copyright (C) 2004 Mart Kelder ([email protected]) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include "stat.h" + +#include "readmbox.h" +#include "urlinfo.h" + +#include <kdebug.h> +#include <tdeio/global.h> + +#include <sys/stat.h> + +TDEIO::UDSEntry Stat::stat( const UrlInfo& info ) +{ + if( info.type() == UrlInfo::message ) + return Stat::statMessage( info ); + else if( info.type() == UrlInfo::directory ) + return Stat::statDirectory( info ); + else + return TDEIO::UDSEntry(); +} + +TDEIO::UDSEntry Stat::stat( ReadMBox& mbox, const UrlInfo& info ) +{ + kdDebug() << "Stat::stat()" << endl; + TDEIO::UDSEntry entry; + TQString url; + + if( info.type() == UrlInfo::invalid ) + return entry; + else if( info.type() == UrlInfo::message ) + mbox.searchMessage( info.id() ); + + Stat::addAtom( entry, TDEIO::UDS_FILE_TYPE, S_IFREG ); + Stat::addAtom( entry, TDEIO::UDS_MIME_TYPE, "message/rfc822" ); + + url = TQString( "mbox:%1/%2" ).arg( info.filename(), mbox.currentID() ); + Stat::addAtom( entry, TDEIO::UDS_URL, url ); + if( mbox.currentID().isEmpty() ) + Stat::addAtom( entry, TDEIO::UDS_NAME, "foobar" ); + else + Stat::addAtom( entry, TDEIO::UDS_NAME, mbox.currentID() ); + + + Stat::addAtom( entry, TDEIO::UDS_SIZE, mbox.skipMessage() ); + + return entry; +} + +TDEIO::UDSEntry Stat::statDirectory( const UrlInfo& info ) +{ + kdDebug() << "statDirectory()" << endl; + TDEIO::UDSEntry entry; + + //Specific things for a directory + Stat::addAtom( entry, TDEIO::UDS_FILE_TYPE, S_IFDIR ); + Stat::addAtom( entry, TDEIO::UDS_NAME, info.filename() ); + + return entry; +} + +TDEIO::UDSEntry Stat::statMessage( const UrlInfo& info ) +{ + kdDebug() << "statMessage( " << info.url() << " )" << endl; + TDEIO::UDSEntry entry; + TQString url = TQString( "mbox:%1" ).arg( info.url() ); + + //Specific things for a message + Stat::addAtom( entry, TDEIO::UDS_FILE_TYPE, S_IFREG ); + Stat::addAtom( entry, TDEIO::UDS_MIME_TYPE, "message/rfc822" ); + + Stat::addAtom( entry, TDEIO::UDS_URL, url ); + url = url.right( url.length() - url.findRev( "/" ) - 1 ); + Stat::addAtom( entry, TDEIO::UDS_NAME, url ); + + return entry; +} + +void Stat::addAtom( TDEIO::UDSEntry& entry, unsigned int uds, const TQString& str ) +{ + TDEIO::UDSAtom atom; + atom.m_uds = uds; + atom.m_str = str; + atom.m_long = 0; + + entry.append( atom ); +} + + +void Stat::addAtom( TDEIO::UDSEntry& entry, unsigned int uds, long lng ) +{ + TDEIO::UDSAtom atom; + atom.m_uds = uds; + atom.m_str = TQString(); + atom.m_long = lng; + + entry.append( atom ); +} + |