summaryrefslogtreecommitdiffstats
path: root/kfile-plugins
diff options
context:
space:
mode:
Diffstat (limited to 'kfile-plugins')
-rw-r--r--kfile-plugins/CMakeLists.txt12
-rw-r--r--kfile-plugins/Makefile.am1
-rw-r--r--kfile-plugins/RETURNED_ITEMS15
-rw-r--r--kfile-plugins/torrent/CMakeLists.txt38
-rw-r--r--kfile-plugins/torrent/Makefile.am22
-rw-r--r--kfile-plugins/torrent/README7
-rw-r--r--kfile-plugins/torrent/bbase.h91
-rw-r--r--kfile-plugins/torrent/bdict.cpp220
-rw-r--r--kfile-plugins/torrent/bdict.h203
-rw-r--r--kfile-plugins/torrent/bint.cpp104
-rw-r--r--kfile-plugins/torrent/bint.h111
-rw-r--r--kfile-plugins/torrent/blist.cpp178
-rw-r--r--kfile-plugins/torrent/blist.h200
-rw-r--r--kfile-plugins/torrent/bstring.cpp128
-rw-r--r--kfile-plugins/torrent/bstring.h138
-rw-r--r--kfile-plugins/torrent/bytetape.cpp158
-rw-r--r--kfile-plugins/torrent/bytetape.h194
-rw-r--r--kfile-plugins/torrent/kfile_torrent.cpp404
-rw-r--r--kfile-plugins/torrent/kfile_torrent.desktop58
-rw-r--r--kfile-plugins/torrent/kfile_torrent.h85
20 files changed, 0 insertions, 2367 deletions
diff --git a/kfile-plugins/CMakeLists.txt b/kfile-plugins/CMakeLists.txt
deleted file mode 100644
index 26723ebe..00000000
--- a/kfile-plugins/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-#################################################
-#
-# (C) 2010-2011 Serghei Amelian
-# serghei (DOT) amelian (AT) gmail.com
-#
-# Improvements and feedback are welcome
-#
-# This file is released under GPL >= 2
-#
-#################################################
-
-add_subdirectory( torrent )
diff --git a/kfile-plugins/Makefile.am b/kfile-plugins/Makefile.am
deleted file mode 100644
index d092f6a0..00000000
--- a/kfile-plugins/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS=torrent
diff --git a/kfile-plugins/RETURNED_ITEMS b/kfile-plugins/RETURNED_ITEMS
deleted file mode 100644
index 13a579ca..00000000
--- a/kfile-plugins/RETURNED_ITEMS
+++ /dev/null
@@ -1,15 +0,0 @@
-If you make a new plugin, please add the list of returned items to this list.
-
-torrent plugin:
-===========
-
-type tag comment
-==============================================================================
-String name Default file/directory name.
-Int length In Bytes, not the size of the .torrent.
-String announce URL of the tracker server.
-Date creation date Date the .torrent was generated.
-Int NumFiles The number of files the .torrent will download.
-Int piece length The block size used for this torrent. Each block
- is downloaded and hashed separately.
-String comment
diff --git a/kfile-plugins/torrent/CMakeLists.txt b/kfile-plugins/torrent/CMakeLists.txt
deleted file mode 100644
index 92f07537..00000000
--- a/kfile-plugins/torrent/CMakeLists.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-#################################################
-#
-# (C) 2010-2011 Serghei Amelian
-# serghei (DOT) amelian (AT) gmail.com
-#
-# Improvements and feedback are welcome
-#
-# This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
- ${CMAKE_CURRENT_BINARY_DIR}
- ${TDE_INCLUDE_DIR}
- ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
- ${TQT_LIBRARY_DIRS}
-)
-
-
-##### other data ################################
-
-install( FILES
- kfile_torrent.desktop
- DESTINATION ${SERVICES_INSTALL_DIR} )
-
-
-##### kfile_torrent (module) ####################
-
-tde_add_kpart( kfile_torrent AUTOMOC
- SOURCES
- bytetape.cpp bint.cpp bstring.cpp blist.cpp
- bdict.cpp kfile_torrent.cpp
- LINK kio-shared
- DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kfile-plugins/torrent/Makefile.am b/kfile-plugins/torrent/Makefile.am
deleted file mode 100644
index 3b76c814..00000000
--- a/kfile-plugins/torrent/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-## Makefile.am for folder file meta info plugin
-
-INCLUDES = $(all_includes)
-
-# these are the headers for your project
-noinst_HEADERS = kfile_torrent.h bbase.h bdict.h bytetape.h \
- bstring.h bint.h blist.h
-
-kde_module_LTLIBRARIES = kfile_torrent.la
-
-kfile_torrent_la_SOURCES = bytetape.cpp bint.cpp bstring.cpp blist.cpp bdict.cpp kfile_torrent.cpp
-kfile_torrent_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_KIO) -ltdetexteditor
-kfile_torrent_la_LIBADD = $(LIB_KIO)
-
-# let automoc handle all of the meta source files (moc)
-METASOURCES = AUTO
-
-services_DATA = kfile_torrent.desktop
-servicesdir = $(kde_servicesdir)
-
-messages:
- $(XGETTEXT) *.cpp -o $(podir)/kfile_torrent.pot
diff --git a/kfile-plugins/torrent/README b/kfile-plugins/torrent/README
deleted file mode 100644
index c7147c9d..00000000
--- a/kfile-plugins/torrent/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a meta information plugin for BitTorrent files (*.torrent).
-
-It doesn't depend on BitTorrent or any non-standard library being installed.
-
-The .torrent files used by BitTorrent are coded in what is called a b-encoding
-by the BitTorrent author. Please see the actual kfile plugin source code for
-more information on the encoding.
diff --git a/kfile-plugins/torrent/bbase.h b/kfile-plugins/torrent/bbase.h
deleted file mode 100644
index 30da7528..00000000
--- a/kfile-plugins/torrent/bbase.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#ifndef _BBASE_H
-#define _BBASE_H
-
-#include <ksharedptr.h>
-
-class TQIODevice;
-
-/**
- * Abstract base class for the b-encoded types. Re-implemented
- * by BInt, BList, BDict, and BString. Derive from this class in
- * order to make a new type for the b-encoding suite. Classes
- * derived from this one should not throw exceptions. Instead,
- * they should implement isValid(), and allow calling modules to
- * check error status that way.
- *
- * @author Michael Pyne <mpyne@grammarian.homelinux.net>
- * @see BInt, BList, BDict, BString, KSharedPtr
- */
-
-// Derive from KShared to enable use of KSharedPtr.
-class BBase : public KShared
-{
- public:
-
- /**
- * Identifies the particular class that has been instantiated. All
- * subclasses of this class should have an identifier here.
- */
- enum classID {
- bBase, /**< This class is BBase. No subclass should return this. */
- bString, /**< This class is a BString. */
- bInt, /**< This class is a BInt. */
- bList, /**< This class is a BList. */
- bDict /**< This class is a BDict. (Dictionary/Map) */
- };
-
- /**
- * Returns the type identification of the object. It will
- * be a value in the classID enum. A subclass of this class
- * must implement this function.
- *
- * @return type identifier of the class
- * @see classID
- */
- virtual classID type_id() const = 0;
-
- /**
- * Destructor for the class. This function must be reimplemented
- * in subclasses.
- */
- virtual ~BBase () { ; }
-
- /**
- * Returns the validity status of the object. Newly constructed
- * objects are invalid unless the initialization sequence completed
- * successfully.
- *
- * @return the validity status of the object
- */
- virtual bool isValid() const = 0;
-
- /**
- * Outputs the b-encoded representation of the object to the given
- * TQIODevice.
- * @param device the TQIODevice to write to
- * @return true on a successful write, false otherwise
- */
- virtual bool writeToDevice (TQIODevice &device) = 0;
-};
-
-#endif /* _BBASE_H */
-
-// vim: set et sw=4 ts=4:
diff --git a/kfile-plugins/torrent/bdict.cpp b/kfile-plugins/torrent/bdict.cpp
deleted file mode 100644
index 712fd526..00000000
--- a/kfile-plugins/torrent/bdict.cpp
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <tqstringlist.h>
-#include <tqiodevice.h>
-
-#include <kdebug.h>
-
-#include "bbase.h"
-#include "bdict.h"
-#include "bstring.h"
-#include "bint.h"
-#include "blist.h"
-
-BDict::BDict (TQByteArray &dict, int start)
- : m_map(), m_valid(false)
-{
- ByteTape tape(dict, start);
-
- init (tape);
-}
-
-BDict::BDict (ByteTape &tape)
- : m_map(), m_valid (false)
-{
- init (tape);
-}
-
-void BDict::init (ByteTape &tape)
-{
- if (*tape != 'd')
- {
- kdDebug(7034) << "This isn't a dictionary!" << endl;
- return; // This isn't a dictionary
- }
-
- tape++;
-
- // We need to loop and read in a string, then read in some data
- while (*tape != 'e')
- {
- BBase *temp_item = 0;
-
- // Read in string
- KSharedPtr<BString> str (new BString (tape));
-
- // Ensure str will be automatically deleted
- if (!str || !str->isValid())
- {
- kdDebug(7034) << (str ? "Invalid string" : "Unable to read String!") << endl;
- return;
- }
-
- // Read in data
- switch (*tape)
- {
- case 'l':
- temp_item = new BList (tape);
- break;
-
- case 'i':
- temp_item = new BInt (tape);
- break;
-
- case 'd':
- temp_item = new BDict (tape);
- break;
-
- default:
- // Hopefully this is a string
- temp_item = new BString (tape);
- }
-
- if (!temp_item || !temp_item->isValid())
- {
- kdDebug(7034) << (temp_item ? "Invalid item!"
- : "Unable to create keyed data!") << endl;
- return;
- }
-
- m_map.insert(str->get_string(), temp_item);
- }
-
- // Move past the 'e'
- tape++;
-
- // Let the map delete the items
- m_map.setAutoDelete (true);
-
- // Oh yeah, we're valid now, too. :-)
- m_valid = true;
-}
-
-BDict::~BDict ()
-{
- // TQDict will take care of deleting each entry that
- // it holds.
-}
-
-BInt *BDict::findInt (const char *key)
-{
- BBase *base = find(key);
-
- if (base && base->type_id() == bInt)
- return dynamic_cast<BInt*>(base);
-
- return 0;
-}
-
-BList *BDict::findList (const char *key)
-{
- BBase *base = find(key);
-
- if (base && base->type_id() == bList)
- return dynamic_cast<BList*>(base);
-
- return 0;
-}
-
-BDict *BDict::findDict (const char *key)
-{
- BBase *base = find(key);
-
- if (base && base->type_id() == bDict)
- return dynamic_cast<BDict*>(base);
-
- return 0;
-}
-
-BString *BDict::findStr (const char *key)
-{
- BBase *base = find(key);
-
- if (base && base->type_id() == bString)
- return dynamic_cast<BString*>(base);
-
- return 0;
-}
-
-bool BDict::writeToDevice(TQIODevice &device)
-{
- if (!isValid())
- return false;
-
- const char *d_str = "d";
- const char *e_str = "e";
- TQ_LONG written = 0, result = 0;
-
- written = device.writeBlock (d_str, 1);
- while (written < 1)
- {
- if (written < 0 || result < 0)
- return false;
-
- result = device.writeBlock (d_str, 1);
- written += result;
- }
-
- // Strings are supposed to be written in the dictionary such that
- // the keys are in sorted order. TQDictIterator doesn't support an
- // ordering, so we have to get a list of all the keys, sort it, and
- // then go by the list.
-
- BBaseHashIterator iter (m_map);
- TQStringList key_list;
-
- for ( ; iter.current(); ++iter)
- key_list.append(iter.currentKey());
-
- key_list.sort();
-
- TQStringList::Iterator key_iter;
- for (key_iter = key_list.begin(); key_iter != key_list.end(); ++key_iter)
- {
- TQCString utfString = (*key_iter).utf8();
- TQString str = TQString("%1:").arg(utfString.size() - 1);
-
- TQCString lenString = str.utf8();
-
- // Write out length of key
- device.writeBlock(lenString.data(), lenString.size() - 1);
-
- // Write out actual key
- device.writeBlock(utfString.data(), utfString.size() - 1);
-
- // Write out the key's data
- BBase *base = m_map.find(*key_iter);
- if (!base->writeToDevice (device))
- return false;
- }
-
- written = device.writeBlock (e_str, 1);
- while ((uint) written < 1)
- {
- if (written < 0 || result < 0)
- return false;
-
- result = device.writeBlock (e_str, 1);
- written += result;
- }
-
- return true;
-}
-
-// vim: set et sw=4 ts=4:
diff --git a/kfile-plugins/torrent/bdict.h b/kfile-plugins/torrent/bdict.h
deleted file mode 100644
index 61be065b..00000000
--- a/kfile-plugins/torrent/bdict.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#ifndef _BDICT_H
-#define _BDICT_H
-
-#include <tqdict.h>
-#include <tqcstring.h> // TQByteArray
-#include "bytetape.h"
-#include "bbase.h"
-
-// Some useful typedefs
-typedef TQDict<BBase> BBaseHash;
-typedef TQDictIterator<BBase> BBaseHashIterator;
-
-// Forward declarations
-class BInt;
-class BList;
-class BString;
-
-/**
- * Class to handle the BitTorrent b-encoded dictionary. It is keyed
- * using const char *strings, and stores pointers to a class descended
- * from BBase, such as BInt, BString, BList, or even more BDicts.
- *
- * @author Michael Pyne <mpyne@grammarian.homelinux.net>
- * @see BBase, BInt, BString, BList
- */
-class BDict : public BBase
-{
- public:
-
- /**
- * Construct a dictionary based on the b-encoded data contained in
- * @p dict. You need to pass a value for @p start if the b-encoded
- * dictionary doesn't start at the beginning of @p dict.
- *
- * @param dict the buffer containing the b-encoded dictionary
- * @param start the position of the data within the buffer
- */
- BDict (TQByteArray &dict, int start = 0);
-
- /**
- * Construct a dictionary from a ByteTape. The data and current
- * position of @p tape will be shared with all objects using it.
- * @p tape should already be positioned to the b-encoded dictionary.
- * After construction, @p tape will point to the byte after the
- * dictionary if successful. If not successful, @p tape will have
- * an undefined position.
- *
- * @param tape the ByteTape to read from
- * @see ByteTape
- */
- BDict (ByteTape &tape);
-
- /**
- * Destroys the object and frees all memory allocated to it.
- */
- virtual ~BDict();
-
- /**
- * Returns the type of this class.
- *
- * @return bDict. This value is only returned by this class.
- */
- virtual classID type_id() const { return bDict; }
-
- /**
- * Returns the number of keyed values contained within this
- * dictionary.
- *
- * @return the number of items in this dictionary
- */
- virtual int count() const { return m_map.count(); }
-
- /**
- * This function should be called to determine whether the
- * dictionary was successfully created, since no exceptions
- * are thrown.
- *
- * @return true if this is a valid (possibly empty!) dictionary,
- * false otherwise
- */
- virtual bool isValid() const { return m_valid; }
-
- /**
- * This function determines whether or not a value with a
- * certain key exists in the dictionary. The key is case-sensitive.
- *
- * @param key the key to search for a value for
- * @return true, if there is a value for the @p key in the
- * dictionary, false otherwise
- */
- virtual bool contains (const char *key) { return m_map.find(key) != 0; }
-
- /**
- * Returns a pointer to the BBase descendant keyed by @p key. You
- * can use the type_id() method to determine the type of the
- * object returned.
- *
- * @param key the key to search the dictionary for
- * @return a pointer to the matching object, or 0 if no object
- * matches the key
- * @see BBase
- */
- virtual BBase *find (const char *key) { return m_map.find(key); }
-
- /**
- * Convienience function to find and return a BInt keyed by @p key.
- *
- * @param key the key to find a value for
- * @return 0 if the key doesn't match a value, or if the value isn't
- * a BInt. Otherwise, a pointer to the matching BInt is
- * returned.
- * @see BInt
- */
- BInt* findInt (const char *key);
-
- /**
- * Convienience function to find and return a BList keyed by @p key.
- *
- * @param key the key to find a value for
- * @return 0 if the key doesn't match a value, or if the value isn't
- * a BList. Otherwise, a pointer to the matching BList is
- * returned.
- * @see BList
- */
- BList* findList (const char *key);
-
- /**
- * Convienience function to find and return a BDict keyed by @p key.
- *
- * @param key the key to find a value for
- * @return 0 if the key doesn't match a value, or if the value isn't
- * a BDict. Otherwise, a pointer to the matching BDict is
- * returned.
- * @see BDict
- */
- BDict* findDict (const char *key);
-
- /**
- * Convienience function to find and return a BString keyed by @p key.
- *
- * @param key the key to find a value for
- * @return 0 if the key doesn't match a value, or if the value isn't
- * a BString. Otherwise, a pointer to the matching BString is
- * returned.
- * @see BString
- */
- BString* findStr (const char *key);
-
- /**
- * Outputs the b-encoded representation of the object to the given
- * TQIODevice.
- * @param device the TQIODevice to write to
- * @return true on a successful write, false otherwise
- */
- virtual bool writeToDevice (TQIODevice &device);
-
- /**
- * Returns a TQDictIterator<BBase> that you can use to iterate through
- * the items in the dictionary.
- *
- * @return TQDictIterator<BBase>, which can be used to iterate through
- * the items in the dictionary.
- */
- BBaseHashIterator iterator() const
- {
- return BBaseHashIterator(m_map);
- }
-
- private:
-
- /**
- * This function handles the actual initialization of the object upon
- * construction, and set the m_valid flag if successful.
- *
- * @param tape the ByteTape to read from
- */
- void init (ByteTape &tape);
-
- BBaseHash m_map; /// The TQDict that actually store the data
- bool m_valid; /// Store initialization status
-};
-
-#endif /* _BDICT_H */
-
-// vim: set et sw=4 ts=4:
diff --git a/kfile-plugins/torrent/bint.cpp b/kfile-plugins/torrent/bint.cpp
deleted file mode 100644
index db73aa72..00000000
--- a/kfile-plugins/torrent/bint.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <tqstring.h>
-#include <tqcstring.h>
-#include <tqiodevice.h>
-
-#include "bytetape.h"
-#include "bint.h"
-
-// A bencoded int is (approximately) as follows:
-// i(\d)+e
-BInt::BInt (TQByteArray &dict, int start)
- : m_value (0), m_valid(false)
-{
- ByteTape tape (dict, start);
- init (tape);
-}
-
-BInt::BInt (ByteTape &tape)
- : m_value(0), m_valid(false)
-{
- init(tape);
-}
-
-void BInt::init (ByteTape &tape)
-{
- if (*tape != 'i')
- return;
-
- tape ++; // Move to start of digits
-
- TQByteArray &dict (tape.data());
- if (dict.find('e', tape.pos()) == -1)
- return;
-
- // Copy the part from the start to the e. The values in-between
- // should be digits, perhaps preceded by a negative sign.
- int length = dict.find('e', tape.pos()) - tape.pos();
- char *ptr = dict.data(); // Get start of buffer
- ptr += tape.pos(); // Advance to current position in tape
-
- // Allocate temporary data buffer
- TQByteArray buffer(length + 1);
-
- tqmemmove (buffer.data(), ptr, length);
- buffer[length] = 0; // Null-terminate
-
- TQString numberString (buffer);
- bool a_isValid; // We want to make sure the string is a valid number
-
- m_value = numberString.toLongLong(&a_isValid);
-
- tape += length; // Move to 'e'
- tape ++; // Move to next char
-
- m_valid = a_isValid; // Now we're good, if it was a number
-}
-
-BInt::~BInt()
-{
- /* Nothing yet */
-}
-
-bool BInt::writeToDevice (TQIODevice &device)
-{
- if (!m_valid)
- return false;
-
- /* Write out i234e, and such */
- TQString str = TQString("i%1e").
- arg (m_value);
-
- TQ_LONG written = 0, result = 0;
- written = device.writeBlock (str.latin1(), str.length());
- while ((uint) written < str.length())
- {
- if (written < 0 || result < 0)
- return false;
-
- result = device.writeBlock(str.latin1() + written,
- str.length() - written);
- written += result;
- }
-
- return true;
-}
-
-// vim: set et ts=4 sw=4:
diff --git a/kfile-plugins/torrent/bint.h b/kfile-plugins/torrent/bint.h
deleted file mode 100644
index e2ce2cc3..00000000
--- a/kfile-plugins/torrent/bint.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#ifndef _BINT_H
-#define _BINT_H
-
-#include <tqcstring.h>
-#include "bbase.h"
-#include "bytetape.h"
-
-/**
- * Class to represent a b-encoded integer.
- *
- * @author Michael Pyne <mpyne@grammarian.homelinux.net>
- * @see BBase
- */
-class BInt : public BBase
-{
- public:
-
- /**
- * Constructs a BInt by reading a b-encoded integer from @p dict.
- * You can start reading from a position other than the beginning
- * by passing that position to the constructor.
- *
- * @param dict the buffer to read from
- * @param start the position within the buffer of the beginning
- * of the b-encoded integer.
- */
- BInt (TQByteArray &dict, int start = 0);
-
- /**
- * Constructs a BInt by reading a b-encoded integer from @p tape.
- *
- * @param tape the ByteTape to read from. It should already be
- * positioned at the beginning of the b-encoded integer data.
- * After construction, @p tape will point to the byte after
- * the b-encoded integer on success. If construction was
- * not successful, @p tape will have an undefined position.
- */
- BInt (ByteTape &tape);
-
- /**
- * Destructor for this class. No special action is taken.
- */
- virtual ~BInt ();
-
- /**
- * Returns the integer value of the data used to construct this
- * object.
- *
- * @return this object's integer value
- */
- TQ_LLONG get_value () const { return m_value; }
-
- /**
- * Returns the type of this class.
- *
- * @return bInt. This value is only returned by this class.
- */
- virtual classID type_id() const { return bInt; }
-
- /**
- * This function should be called to determine whether the
- * integer was successfully created, since no exceptions
- * are thrown.
- *
- * @return true if this is a valid integer, false otherwise
- */
- virtual bool isValid() const { return m_valid; }
-
- /**
- * Outputs the b-encoded representation of the object to the given
- * TQIODevice.
- * @param device the TQIODevice to write to
- * @return true on a successful write, false otherwise
- */
- virtual bool writeToDevice (TQIODevice &device);
-
- private:
-
- /**
- * Initialization function for the class, called to handle the
- * actual work of reading the b-encoded data from @p tape.
- *
- * @param tape the ByteTape to read from
- */
- void init(ByteTape &tape);
-
- TQ_LLONG m_value;
- bool m_valid;
-};
-
-#endif /* _BINT_H */
-
-// vim: set et ts=4 sw=4:
diff --git a/kfile-plugins/torrent/blist.cpp b/kfile-plugins/torrent/blist.cpp
deleted file mode 100644
index 4b510e76..00000000
--- a/kfile-plugins/torrent/blist.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <tqiodevice.h>
-
-#include "bytetape.h"
-#include "blist.h"
-#include "bdict.h"
-#include "bstring.h"
-#include "bint.h"
-
-BList::BList (ByteTape &tape)
- : m_valid(false), m_array()
-{
- init (tape);
-}
-
-BList::BList (TQByteArray &dict, unsigned int start)
- : m_valid(false), m_array()
-{
- ByteTape tape (dict, start);
-
- init (tape);
-}
-
-void BList::init (ByteTape &tape)
-{
- BBase *temp;
-
- if (*tape != 'l')
- return;
-
- tape++;
-
- /* Repeat circling over the string until the list is over */
- while (*tape != 'e')
- {
- switch (*tape)
- {
- case 'd':
- temp = new BDict (tape);
- break;
-
- case 'l': /* This element is a list */
- temp = new BList (tape);
- break;
-
- case 'i': /* This element is an int */
- temp = new BInt (tape);
- break;
-
- default: /* Maybe a string? */
- temp = new BString (tape);
- }
-
- if (!temp || !temp->isValid())
- return; // Invalid list element
-
- m_array.append (temp);
- }
-
- m_valid = true;
-
- // Only way out is to detect 'e', so we need to increment tape past that.
- tape++;
-}
-
-BList::~BList()
-{
- BBaseVectorIterator iter;
-
- for (iter = begin(); iter != end(); ++iter)
- delete *iter;
-}
-
-BBase* BList::index (unsigned int i)
-{
- if (i >= count())
- return 0;
- else
- return m_array[i];
-}
-
-BList * BList::indexList (unsigned int i)
-{
- BBase *base = index(i);
-
- if (base && base->type_id() == bList)
- return dynamic_cast<BList*>(base);
-
- return 0;
-}
-
-BInt * BList::indexInt (unsigned int i)
-{
- BBase *base = index(i);
-
- if (base && base->type_id() == bInt)
- return dynamic_cast<BInt*>(base);
-
- return 0;
-}
-
-BDict * BList::indexDict (unsigned int i)
-{
- BBase *base = index(i);
-
- if (base && base->type_id() == bDict)
- return dynamic_cast<BDict*>(base);
-
- return 0;
-}
-
-BString * BList::indexStr (unsigned int i)
-{
- BBase *base = index(i);
-
- if (base && base->type_id() == bString)
- return dynamic_cast<BString*>(base);
-
- return 0;
-}
-
-bool BList::writeToDevice(TQIODevice &device)
-{
- if (!m_valid)
- return false;
-
- const char *l_str = "l";
- const char *e_str = "e";
- TQ_LONG written = 0, result = 0;
-
- written = device.writeBlock (l_str, 1);
- while (written < 1)
- {
- if (written < 0 || result < 0)
- return false;
-
- result = device.writeBlock (l_str, 1);
- written += result;
- }
-
- BBaseVectorIterator iter;
- for (iter = begin(); iter != end(); ++iter)
- {
- if (!((*iter)->writeToDevice (device)))
- return false;
- }
-
- written = device.writeBlock (e_str, 1);
- while (written < 1)
- {
- if (written < 0 || result < 0)
- return false;
-
- result = device.writeBlock (e_str, 1);
- written += result;
- }
-
- return true;
-}
-
-// vim: set et sw=4 ts=4:
diff --git a/kfile-plugins/torrent/blist.h b/kfile-plugins/torrent/blist.h
deleted file mode 100644
index 89721822..00000000
--- a/kfile-plugins/torrent/blist.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#ifndef _BLIST_H
-#define _BLIST_H
-
-#include <tqvaluelist.h>
-#include <tqcstring.h>
-#include "bbase.h"
-#include "bytetape.h"
-
-typedef TQValueList<BBase *> BBaseVector;
-typedef TQValueList<BBase *>::iterator BBaseVectorIterator;
-
-// Predeclare the following classes
-class BDict;
-class BString;
-class BInt;
-
-/**
- * Class to construct a list of BBase objects from a b-encoded
- * list.
- *
- * @author Michael Pyne <mpyne@grammarian.homelinux.net>
- * @see BBase
- */
-class BList : public BBase
-{
- public:
-
- /**
- * Construct a BList from @p dict.
- *
- * @param dict the buffer to read from
- * @param start the position in the buffer to start
- * reading from
- */
- BList (TQByteArray &dict, unsigned int start = 0);
-
- /**
- * Construct a BList from @p tape. Any changes made to
- * @p tape, such as its current position and data, will be
- * shared with the object that called this constructor. @p tape
- * should already be positioned at the position to read from.
- * If construction was successful, @p tape will point to the
- * byte after the list data. If construction was unsuccessful,
- * the position of the tape is undefined.
- *
- * @param tape the ByteTape to read from.
- */
- BList (ByteTape &tape);
-
- /**
- * Destroys the list, and deletes all of the items that had
- * been contained within.
- */
- virtual ~BList ();
-
- /**
- * Returns the type of this class.
- *
- * @return bList. This value is only returned by this class.
- */
- virtual classID type_id() const { return bList; }
-
- /**
- * Returns the number of items contained within the list.
- *
- * @return number of items in the list
- */
- virtual unsigned int count() const { return m_array.count(); }
-
- /**
- * This function should be called to determine whether the
- * list was successfully created, since no exceptions
- * are thrown.
- *
- * @return true if this is a valid list, false otherwise
- */
- virtual bool isValid() const { return m_valid; }
-
- /**
- * This function returns a pointer to the appropriate
- * item in the list.
- *
- * @param i index of the item to return
- * @return pointer to the appropriate BBase, or 0 if
- * the index is out-of-bounds
- */
- inline BBase * index (unsigned int i);
-
- /**
- * Convience function to return a pointer to the appropriate
- * item in the list, already casted.
- *
- * @param i index of the item to return
- * @return pointer to the appropriate BBase, downcasted to
- * BList. If the element is <b>not</b> a BList, 0
- * will be returned instead, even if it was a valid
- * BBase.
- */
- BList * indexList (unsigned int i);
-
- /**
- * Convience function to return a pointer to the appropriate
- * item in the list, already casted.
- *
- * @param i index of the item to return
- * @return pointer to the appropriate BBase, downcasted to
- * BInt. If the element is <b>not</b> a BInt, 0
- * will be returned instead, even if it was a valid
- * BBase.
- */
- BInt * indexInt (unsigned int i);
-
- /**
- * Convience function to return a pointer to the appropriate
- * item in the list, already casted.
- *
- * @param i index of the item to return
- * @return pointer to the appropriate BBase, downcasted to
- * BDict. If the element is <b>not</b> a BDict, 0
- * will be returned instead, even if it was a valid
- * BBase.
- */
- BDict * indexDict (unsigned int i);
-
- /**
- * Convience function to return a pointer to the appropriate
- * item in the list, already casted.
- *
- * @param i index of the item to return
- * @return pointer to the appropriate BBase, downcasted to
- * BString. If the element is <b>not</b> a BString, 0
- * will be returned instead, even if it was a valid
- * BBase.
- */
- BString * indexStr (unsigned int i);
-
- /**
- * Returns an iterator to the first element in the list.
- * There is no particular sorting associated with the list
- * at this time.
- *
- * @return iterator pointing to the beginning of the list
- * @see TQValueList
- */
- BBaseVectorIterator begin(void) { return m_array.begin(); }
-
- /**
- * Returns an iterator pointing one element past the end of
- * the list. Although this element belongs to the list,
- * you should never dereference this iterator. Instead, treat
- * it as a boundary condition to avoid.
- *
- * @return iterator pointing one element past the end of the list
- * @see TQValueList
- */
- BBaseVectorIterator end(void) { return m_array.end(); }
-
- /**
- * Outputs the b-encoded representation of the object to the given
- * TQIODevice.
- * @param device the TQIODevice to write to
- * @return true on a successful write, false otherwise
- */
- virtual bool writeToDevice (TQIODevice &device);
-
- private:
-
- /**
- * This function handles the actual initialization of the object upon
- * construction, and set the m_valid flag if successful.
- *
- * @param tape the ByteTape to read from
- */
- void init(ByteTape &tape);
-
- bool m_valid;
- BBaseVector m_array;
-};
-
-#endif /* _BLIST_H */
-
-// vim: set et sw=4 ts=4:
diff --git a/kfile-plugins/torrent/bstring.cpp b/kfile-plugins/torrent/bstring.cpp
deleted file mode 100644
index 0b40b46a..00000000
--- a/kfile-plugins/torrent/bstring.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <tqcstring.h>
-#include <tqiodevice.h>
-
-#include <kdebug.h>
-
-#include "bstring.h"
-#include "bytetape.h"
-
-BString::BString (TQByteArray &dict, int start) :
- m_data(), m_valid(false)
-{
- ByteTape tape (dict, start);
- init (tape);
-}
-
-BString::BString (ByteTape &tape)
- : m_data(), m_valid(false)
-{
- init (tape);
-}
-
-// The reason we don't store stuff in a TQString is because BitTorrent
-// b-encoded strings may contain zeroes within the string, which makes
-// a BString more of a buffer than a true string.
-void BString::init (ByteTape &tape)
-{
- TQByteArray &dict(tape.data());
-
- if (dict.find(':', tape.pos()) == -1)
- {
- kdDebug(7034) << "Can't find : for string!" << endl;
- return;
- }
-
- // Copy the part from start to :, as it will be a number
- // That number is the number of characters to read
- int length = dict.find(':', tape.pos()) - tape.pos();
- char *ptr = dict.data();
-
- ptr += tape.pos();
-
- TQByteArray buffer (length + 1);
- tqmemmove (buffer.data(), ptr, length);
- buffer[length] = 0;
-
- TQString numberString (buffer);
- bool a_isValid;
- ulong len = numberString.toULong (&a_isValid);
-
- if (!a_isValid)
- {
- kdDebug(7034) << "Invalid string length!" << endl;
- return;
- }
-
- // Now that we have the length, we need to advance the tape
- // past the colon
- tape += length; // Move to colon
- if (*tape != ':')
- {
- // Sanity check
- kdError(7034) << "SANITY CHECK FAILED. *tape != ':'!" << endl;
- return;
- }
-
- tape++; // Move past colon
-
- // Time to copy the data
- char *textBuffer = tape.at(tape.pos());
- if (!m_data.resize(len + 1))
- return;
-
- tqmemmove (m_data.data(), textBuffer, len);
- m_data[len] = 0; // Null terminate for convienience
-
- tape += len;
- m_valid = true;
-}
-
-BString::~BString ()
-{
-}
-
-bool BString::writeToDevice(TQIODevice &device)
-{
- if (!m_valid)
- return false;
-
- TQString str = TQString("%1:").
- arg(get_len());
-
- TQCString utfString = str.utf8();
-
- /* Don't write null terminator */
- device.writeBlock (utfString.data(), utfString.size() - 1);
-
- // Output the actual data
- device.writeBlock (m_data.data(), m_data.size() - 1);
-
- // Done
- return true;
-}
-
-bool BString::setValue (const TQString &str)
-{
- m_data = str.utf8();
- return true;
-}
-
-// vim: set et ts=4 sw=4:
diff --git a/kfile-plugins/torrent/bstring.h b/kfile-plugins/torrent/bstring.h
deleted file mode 100644
index c51311fc..00000000
--- a/kfile-plugins/torrent/bstring.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#ifndef _BSTRING_H
-#define _BSTRING_H
-
-#include <tqstring.h>
-#include <tqcstring.h>
-
-#include "bytetape.h"
-#include "bbase.h"
-
-/**
- * A class to handle the b-encoded strings used by BitTorrent.
- * It implements BBase, and although the class is referred to
- * as a string, it can hold arbitrary data, since b-encoded strings
- * are stored with a length, instead of using a terminator character.
- *
- * @author Michael Pyne <mpyne@grammarian.homelinux.net>
- * @see BBase
- */
-class BString : public BBase
-{
- public:
-
- /**
- * Construct a BString from @p dict.
- *
- * @param dict the buffer to read from
- * @param start the position in the buffer to start
- * reading from
- */
- BString (TQByteArray &dict, int start = 0);
-
- /**
- * Construct a BString from @p tape. Any changes made to
- * @p tape, such as its current position and data, will be
- * shared with the object that called this constructor. @p tape
- * should already be positioned at the position to read from.
- * If construction was successful, @p tape will point to the
- * byte after the string data. If construction was unsuccessful,
- * the position of the tape is undefined.
- *
- * @param tape the ByteTape to read from.
- */
- BString (ByteTape &tape);
-
- /**
- * Destroys the BString, and deallocates all memory that had
- * been used.
- */
- virtual ~BString ();
-
- /**
- * Returns a TQString representation of the data in the
- * BString. It is the responsibility of the caller to ensure
- * that the data is convertible to a TQString. More specifically,
- * the data should not contain any embedded NULLs.
- *
- * @return TQString containing the data from this BString.
- */
- TQString get_string() const { return TQString::fromUtf8(m_data.data()); }
-
- /**
- * Returns the amount of data held by the string. It would be
- * perhaps more appropriate to call this size(), since this is
- * a buffer, not a true text string.
- *
- * @return the size of the string, not including the NULL
- * terminator.
- */
- const int get_len() const { return m_data.size() - 1; }
-
- /**
- * Returns the type of this class.
- *
- * @return bString. This value is only returned by this class.
- */
- virtual classID type_id() const { return bString; }
-
- /**
- * This function should be called to determine whether the
- * string was successfully created, since no exceptions
- * are thrown.
- *
- * @return true if this is a valid string, false otherwise
- */
- virtual bool isValid() const { return m_valid; }
-
- /**
- * Outputs the b-encoded representation of the object to the given
- * TQIODevice.
- * @param device the TQIODevice to write to
- * @return true on a successful write, false otherwise
- */
- virtual bool writeToDevice (TQIODevice &device);
-
- /**
- * Changes the value of the string to the given TQString.
- *
- * @param str the TQString containing the new value
- * @return true if the value was successfully changed,
- * false otherwise.
- */
- bool setValue (const TQString &str);
-
- private:
-
- /**
- * This function handles the actual initialization of the object upon
- * construction, and set the m_valid flag if successful.
- *
- * @param tape the ByteTape to read from
- */
- void init (ByteTape &tape);
-
- TQByteArray m_data;
- bool m_valid;
-};
-
-#endif /* _BSTRING_H */
-
-// vim: set et ts=4 sw=4:
diff --git a/kfile-plugins/torrent/bytetape.cpp b/kfile-plugins/torrent/bytetape.cpp
deleted file mode 100644
index 5d6b8099..00000000
--- a/kfile-plugins/torrent/bytetape.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <kdebug.h>
-
-#include "bytetape.h"
-
-ByteTape::ByteTape (TQByteArray &array, int pos)
- : m_array(array), m_shared(new ByteTapeShared)
-{
- m_shared->pos = pos;
-}
-
-ByteTape::ByteTape (const ByteTape &tape)
- : m_array(tape.m_array), m_shared(tape.m_shared)
-{
-}
-
-ByteTape& ByteTape::operator += (const unsigned int i)
-{
- m_shared->pos += i;
- if (m_array.size() <= m_shared->pos)
- {
- kdDebug(7034) << "Whoops. Advanced too far." << endl;
- m_shared->pos = m_array.size() - 1;
- }
-
- return *this;
-}
-
-ByteTape& ByteTape::operator -= (const unsigned int i)
-{
- if (i > m_shared->pos)
- {
- kdDebug(7034) << "Whoops, tried to back up too far." << endl;
- m_shared->pos = 0;
- }
- else
- m_shared->pos -= i;
-
- return *this;
-}
-
-char ByteTape::operator [] (const unsigned int i)
-{
- if (i < m_array.size())
- return m_array[i];
- else
- {
- kdWarning() << "Can't dereference tape at " << i
- << ", size is " << m_array.size() << endl;
- return 0;
- }
-}
-
-char &ByteTape::operator * ()
-{
- return m_array[m_shared->pos];
-}
-
-// Postfix increment
-ByteTape ByteTape::operator ++ (int)
-{
- // Can't use copy ctor, as we'll be copying shared data, which defeats
- // the semantics of the postfix operator.
- ByteTape temp(m_array, m_shared->pos);
- m_shared->pos ++;
-
- if (m_shared->pos >= m_array.size())
- {
- m_shared->pos = m_array.size() - 1;
- kdDebug(7034) << "Tape already at end!" << endl;
- kdDebug(7034) << "Tape size is " << m_array.size() << endl;
- }
-
- return temp;
-}
-
-// Prefix increment
-ByteTape & ByteTape::operator ++()
-{
- m_shared->pos ++;
- if (m_shared->pos >= m_array.size())
- {
- m_shared->pos = m_array.size() - 1;
- kdDebug(7034) << "Tape already at end!" << endl;
- kdDebug(7034) << "Tape size is " << m_array.size() << endl;
- }
-
- return *this;
-}
-
-// Postfix decrement
-ByteTape ByteTape::operator -- (int)
-{
- // Can't use copy ctor, as we'll be copying shared data, which defeats
- // the semantics of the postfix operator.
- ByteTape temp(m_array, m_shared->pos);
-
- if (m_shared->pos != 0)
- m_shared->pos --;
- else
- kdDebug(7034) << "Tape already at beginning!" << endl;
-
- return temp;
-}
-
-// Prefix decrement
-ByteTape & ByteTape::operator -- ()
-{
- if (m_shared->pos != 0)
- m_shared->pos --;
- else
- kdDebug(7034) << "Tape already at beginning!" << endl;
-
- return *this;
-}
-
-bool ByteTape::setPos (unsigned int pos)
-{
- if (pos >= m_array.size())
- {
- kdDebug(7034) << "Can't set tape to " << pos << endl;
- return false;
- }
-
- m_shared->pos = pos;
- return true;
-}
-
-char* ByteTape::at (const unsigned int i)
-{
- if (i >= m_array.size())
- {
- kdDebug(7034) << "Access to tape at " << i << " out-of-range." << endl;
- return 0;
- }
-
- return m_array.data() + i;
-}
-
-// vim: set et ts=4 sw=4:
diff --git a/kfile-plugins/torrent/bytetape.h b/kfile-plugins/torrent/bytetape.h
deleted file mode 100644
index f7309b11..00000000
--- a/kfile-plugins/torrent/bytetape.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#ifndef _BYTETAPE_H
-#define _BYTETAPE_H
-
-#include <ksharedptr.h>
-
-#include <tqcstring.h>
-
-class ByteTapeShared : public KShared
-{
- public:
-
- unsigned int pos;
-};
-
-/**
- * Class to simulate a seekable byte stream. Very similar to TQByteArray,
- * but the difference is that this class "knows" what a current position
- * is. Also, the copy constructor will share the byte stream of the
- * ByteTape being copied. This means that any copies made of an object of
- * this class will share BOTH the data and the current position. This is
- * by design.
- *
- * @author Michael Pyne <mpyne@grammarian.homelinux.net>
- * @see TQByteArray
- */
-class ByteTape
-{
- public:
-
- /**
- * Constructs a new ByteTape object from @p array. The
- * current position will be set to @p pos.
- *
- * @param array a data buffer to use for reading and writing.
- * The tape will be fixed to the size of this buffer.
- * @param pos the initial position of the tape head. It must be
- * a position within the buffer contained in @p array.
- */
- ByteTape (TQByteArray &array, int pos = 0);
-
- /**
- * Creates a ByteTape as a copy of @p tape. The newly created
- * object will share both data and the current position with @p tape.
- * This is done using reference counts.
- *
- * @param tape the ByteTape to copy
- */
- ByteTape (const ByteTape &tape);
-
- /**
- * Increments the current position by @p i. It is the responsibility
- * of the function caller to ensure that the new position is in bounds.
- * The position will be capped to remain in bounds regardless.
- *
- * @param i the amount to increment the current position by
- * @return t reference to the object incremented
- */
- ByteTape & operator += (const unsigned int i);
-
- /**
- * Decrements the current position by @p i. It is the responsibility
- * of the function caller to ensure that the new position is in bounds.
- * Unlike a real Turing machine, attempting to decrement past the
- * start will be capped to the beginning instead of crashing the
- * computer.
- *
- * @param i the amount to decrement the current position by
- * @return a reference to the object decremented
- */
- ByteTape & operator -= (const unsigned int i);
-
- /**
- * Increments the current position by 1. This is a postfix
- * operator (i++). The current position will be capped to the end
- * of the buffer.
- *
- * @return the object before the increment operation
- */
- ByteTape operator ++ (int);
-
- /**
- * Increments the current position by 1. This is a prefix
- * operator (++i). The current position will be capped to the end
- * of the buffer.
- *
- * @return a reference to the object incremented
- */
- ByteTape & operator ++ ();
-
- /**
- * Decrements the current position by 1. This is a postfix
- * operator (i--). The current position will be capped to the start
- * of the buffer.
- *
- * @return the object before the decrement operation
- */
- ByteTape operator -- (int);
-
- /**
- * Decrements the current position by 1. This is a prefix
- * operator (--i). The current position will be capped to the start
- * of the buffer.
- *
- * @return a reference to the object decremented
- */
- ByteTape & operator -- ();
-
- /**
- * Returns the byte within the array indexed by @p i. It is
- * the responsibility of the caller to ensure that @p i is in bounds.
- * Although out-of-range errors will be detected, no exceptions will
- * be thrown. Since a reference is not returned, you won't be able
- * to assign to the result. Example: tape[i] = 'a' will not work.
- *
- * The reason a reference isn't returned is because no exceptions are
- * thrown by this class, and we can't return a reference to an out-of-
- * bounds character.
- *
- * @param i the index of the byte to return
- * @return the byte at the given index. 0 may be returned on error,
- * but does not necessarily indicate an error.
- */
- char operator [] (const unsigned int i);
-
- /**
- * Returns the byte at the tape's current position. You can assign
- * to the reference returned.
- *
- * @return a reference to the byte at the tape head's current position
- */
- char &operator * ();
-
- /**
- * Returns the position in memory of data at the given index, @p i.
- * Unlike operator [], this function returns a pointer, so it can be
- * used to access memory.
- *
- * @param i index of the byte to lookup.
- * @return 0 if @p i is out of range, else the address of memory
- * at that index
- */
- char *at(const unsigned int i);
-
- /**
- * Returns the current position of the tape head.
- *
- * @return the tape head's current position
- */
- unsigned int pos() const { return m_shared->pos; }
-
- /**
- * Sets the current position of the tape head to @p pos. If the
- * position given is out-of-bounds, it will be capped to be within
- * the array.
- *
- * @param pos the new position of the tape head
- * @return whether the set operation was successful
- */
- bool setPos(unsigned int pos);
-
- /**
- * Returns a reference to the TQByteArray used to hold all the data.
- *
- * @return the TQByteArray used to hold the data
- * @see TQByteArray
- */
- TQByteArray &data() { return m_array; }
-
- private:
- TQByteArray &m_array;
- KSharedPtr<ByteTapeShared> m_shared;
-};
-
-#endif /* _BYTETAPE_H */
-
-// vim: set et ts=4 sw=4:
diff --git a/kfile-plugins/torrent/kfile_torrent.cpp b/kfile-plugins/torrent/kfile_torrent.cpp
deleted file mode 100644
index 69767129..00000000
--- a/kfile-plugins/torrent/kfile_torrent.cpp
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <tqdatetime.h>
-#include <tqfile.h>
-#include <tqregexp.h>
-#include <tqdir.h>
-#include <tqstringlist.h>
-
-#include <kmessagebox.h>
-#include <kgenericfactory.h>
-
-#include "kfile_torrent.h"
-#include "bdict.h"
-#include "blist.h"
-#include "bint.h"
-#include "bstring.h"
-
-typedef KGenericFactory<KTorrentPlugin> TorrentFactory;
-K_EXPORT_COMPONENT_FACTORY(kfile_torrent, TorrentFactory("kfile_torrent"))
-
-TQStringList filesList (BList *list);
-TQ_ULLONG filesLength (BList *list);
-
-KTorrentPlugin::KTorrentPlugin (TQObject *parent, const char *name,
- const TQStringList &args)
- : KFilePlugin (parent, name, args), m_failed(true), m_dict(0)
-{
- KFileMimeTypeInfo *info = addMimeTypeInfo ("application/x-bittorrent");
- if (!info)
- {
- kdError() << "Error creating application/x-bittorrent mime type info!\n";
- return;
- }
-
- KFileMimeTypeInfo::GroupInfo* group =
- addGroupInfo (info, "TorrentInfo", i18n("Torrent Information"));
- if (!group)
- {
- kdError() << "Error creating TorrentInfo group!\n";
- return;
- }
- setAttributes (group, KFileMimeTypeInfo::Modifiable);
-
- KFileMimeTypeInfo::ItemInfo *item = 0;
-
- item = addItemInfo(group, "name", i18n("Name"), TQVariant::String);
- if (!item)
- {
- kdError() << "Error adding Name to group!\n";
- return;
- }
- setHint (item, KFileMimeTypeInfo::Name);
- setAttributes (item, KFileMimeTypeInfo::Modifiable);
-
- item = addItemInfo(group, "length", i18n("Torrent Length"), TQVariant::ULongLong);
- if (!item)
- {
- kdError() << "Error adding Length to group!\n";
- return;
- }
- setHint (item, KFileMimeTypeInfo::Length);
- setUnit (item, KFileMimeTypeInfo::Bytes);
-
- item = addItemInfo(group, "announce", i18n("Tracker URL"), TQVariant::String);
- if (!item)
- {
- kdError() << "Error adding Announce to group!\n";
- return;
- }
-
- item = addItemInfo(group, "creation date", i18n("Date Created"), TQVariant::DateTime);
- if (!item)
- {
- kdError() << "Error adding DateCreated to group!\n";
- return;
- }
-
- item = addItemInfo(group, "NumFiles", i18n("Number of Files"), TQVariant::Int);
- if (!item)
- {
- kdError() << "Error adding NumFiles to group!\n";
- return;
- }
-
- item = addItemInfo(group, "piece length", i18n("File Piece Length"), TQVariant::Int);
- if (!item)
- {
- kdError() << "Error adding PieceLength to group!\n";
- return;
- }
- setUnit (item, KFileMimeTypeInfo::Bytes);
-
- item = addItemInfo(group, "comment", i18n("Comment"), TQVariant::String);
- if (!item)
- {
- kdError() << "Error adding Comment to group!\n";
- return;
- }
- setAttributes (item, KFileMimeTypeInfo::MultiLine | KFileMimeTypeInfo::Modifiable);
-
- m_failed = false;
-}
-
-bool KTorrentPlugin::readInfo (KFileMetaInfo &info, unsigned int)
-{
- /* Since we don't throw during the ctor, check here whether we actually
- * are valid are not. If not, die.
- */
- if (m_failed)
- {
- kdError() << "Construction of KTorrentPlugin failed for " << info.path() << endl;
- kdError() << "Aborting meta-info read.\n";
- return false;
- }
-
- TQFile file (info.path());
- if (!file.open(IO_ReadOnly))
- {
- kdError() << "Unable to open given file!\n";
- return false;
- }
-
- // We need to read in the entire file to parse the dictionary structure.
- TQByteArray buf = file.readAll();
- file.close();
-
- if (buf.isEmpty())
- {
- kdError() << "Empty file: " << info.path() << endl;
- return false;
- }
-
- m_dict = new BDict(buf);
-
- if (!m_dict)
- {
- kdError() << "Error creating dictionary from open file: " << info.path() << endl;
- return false;
- }
-
- if (!m_dict->isValid())
- {
- kdDebug(7034) << "Invalid torrent file: " << info.path() << endl;
- return false;
- }
-
- KFileMetaInfoGroup group = appendGroup(info, "TorrentInfo");
-
- // The remainder of this function will consist of a lot of redundancy checks.
- // If a torrent has a key, but it is of the wrong type, then it isn't a valid
- // torrent, and so we should just die.
-
- if (m_dict->contains("announce"))
- {
- BString *str = m_dict->findStr ("announce");
- if (!str)
- return false;
- appendItem (group, "announce", TQString(str->get_string()));
- }
-
- if (m_dict->contains("creation date"))
- {
- BInt *the_data = m_dict->findInt ("creation date");
- TQDateTime my_date;
-
- if (!the_data)
- return false;
-
- unsigned int the_time = the_data->get_value();
-
- /* Hopefully the_time is UTC, because that's what TQDateTime does. */
- my_date.setTime_t (the_time);
- appendItem (group, "creation date", my_date);
- }
-
- // A valid torrent must have the info dict, no reason to check twice for
- // it.
- BDict *info_dict = m_dict->findDict("info");
- int num_files = 1;
- TQ_ULLONG length = 0;
-
- if (!info_dict)
- return false;
-
- if (!info_dict->contains("length"))
- {
- /* Has more than one file. The list of files is contained in a
- * list called, appropriately enough, 'files'
- */
- BList *info_list = info_dict->findList("files");
- if (!info_list)
- return false;
-
- num_files = info_list->count();
- length = filesLength (info_list);
- }
- else
- {
- /* Only one file, let's put its length */
- BInt *blength = info_dict->findInt("length");
- if (!blength)
- return false;
-
- length = blength->get_value();
- }
-
- appendItem (group, "NumFiles", num_files);
- appendItem (group, "length", length);
-
- if (info_dict->contains("name"))
- {
- BString *str = info_dict->findStr("name");
- if (!str)
- return false;
-
- TQString real_str (str->get_string());
-
- if (num_files > 1 && !real_str.endsWith("/"))
- real_str.append('/');
-
- appendItem (group, "name", real_str);
- }
-
- // piece length is required as well
- BInt *piece_length = info_dict->findInt("piece length");
- if (!piece_length)
- return false;
-
- appendItem (group, "piece length", piece_length->get_value());
-
- if (m_dict->contains("comment"))
- {
- BString *comment = m_dict->findStr("comment");
- if (!comment)
- return false;
-
- appendItem (group, "comment", comment->get_string());
- }
- else
- appendItem (group, "comment", TQString());
-
- return true;
-}
-
-/* Returns a TQStringList containing file names within the list. The list
- * should be the one contained within the info dictionary of the torrent,
- * keyed by 'files'
- */
-TQStringList filesList (BList *list)
-{
- TQStringList str_list, failList;
-
- for (unsigned int i = 0; i < list->count(); ++i)
- {
- /* Each item in this list is a dictionary, composed as follows:
- * length -> BInt (size of file)
- * path -> BList (list of strings)
- * The list of strings is used to construct directory paths. The
- * last element of the list is the file name.
- */
-
- BDict *list_dict = list->indexDict(i);
- if (!list_dict)
- return failList;
-
- BList *list_path = list_dict->findList("path");
- if (!list_path)
- return failList;
-
- TQString str;
- BString *temp_str;
-
- if (list_path->count() > 0)
- {
- temp_str = list_path->indexStr (0);
- if (!temp_str)
- return failList;
-
- str.append (temp_str->get_string());
- }
-
- /* Construct TQString consisting of path and file name */
- for (unsigned int j = 1; j < list_path->count(); ++j)
- {
- str.append (TQDir::separator());
- temp_str = list_path->indexStr (j);
- if (!temp_str)
- return failList;
-
- str.append (temp_str->get_string());
- }
-
- str_list += str;
- }
-
- return str_list;
-}
-
-/* This function determines the total length of a torrent stream.
- * The list provided should be the same one provided for filesList.
- */
-TQ_ULLONG filesLength (BList *list)
-{
- TQ_ULLONG length = 0;
-
- for (unsigned int i = 0; i < list->count(); ++i)
- {
- /* Each item in this list is a dictionary, composed as follows:
- * length -> BInt (size of file)
- * path -> BList (list of strings)
- */
-
- BDict *list_dict = list->indexDict(i);
- if (!list_dict)
- return 0;
-
- BInt *bfile_len = list_dict->findInt("length");
- if (!bfile_len)
- return 0;
-
- length += bfile_len->get_value();
- }
-
- return length;
-}
-
-bool KTorrentPlugin::writeInfo(const KFileMetaInfo &info) const
-{
- if (m_failed || !m_dict)
- return false;
-
- // The m_dict is ready, all we have to do is open a file, and
- // let 'er go.
- TQStringList list = info.groups();
- TQStringList::Iterator it = list.begin();
-
- for (; it != list.end(); ++it)
- {
- TQStringList list2 = info[*it].keys();
- TQStringList::Iterator it2 = list2.begin();
-
- for (; it2 != list2.end(); ++it2)
- {
- TQString key = *it2;
-
- if (info[*it][key].isModified())
- {
- // Re-enter the entry in the dictionary.
- if (key == "comment")
- {
- BString *b_str = m_dict->findStr("comment");
- if (!b_str)
- return false;
-
- b_str->setValue (info[*it][key].value().toString());
- }
- else if (key == "name")
- {
- BDict *info_dict = m_dict->findDict ("info");
- if (!info_dict)
- return false;
-
- BString *name_str = info_dict->findStr ("name");
- if (!name_str)
- return false;
-
- TQString the_name = info[*it][key].value().toString();
-
- // Remove trailing slashes
- the_name.replace (TQRegExp("/*$"), "");
-
- name_str->setValue (the_name);
- }
- }
- }
- }
-
- TQFile output (info.path());
-
- if (!output.open(IO_WriteOnly | IO_Truncate))
- return false;
-
- return m_dict->writeToDevice(*TQT_TQIODEVICE(&output));
-}
-
-#include "kfile_torrent.moc"
-
-// vim: set ts=4 sw=4 et:
diff --git a/kfile-plugins/torrent/kfile_torrent.desktop b/kfile-plugins/torrent/kfile_torrent.desktop
deleted file mode 100644
index 6fc78639..00000000
--- a/kfile-plugins/torrent/kfile_torrent.desktop
+++ /dev/null
@@ -1,58 +0,0 @@
-[Desktop Entry]
-Type=Service
-Name=Bit Torrent Info
-Name[be]=Звесткі Bit Torrent
-Name[bn]=বিট টোরেন্ট তথ্য
-Name[br]=Titouriñ diwar-benn Bit Torrent
-Name[bs]=Bit Torrent informacije
-Name[ca]=Informació de Bit Torrent
-Name[cs]=Bit Torrent informace
-Name[da]=Info om bittorrent
-Name[de]=Bit Torrent Informationen
-Name[el]=Πληροφορίες Bit Torrent
-Name[es]=Información Bit Torrent
-Name[et]=Bit Torrenti info
-Name[eu]=Bit-torrent informazioa
-Name[fa]=اطلاعات جریان بیتی
-Name[fi]=Bit Torrent
-Name[fr]=Infos Bit Torrent
-Name[gl]=Información de Bit Torrent
-Name[he]=מידע ביטטורנט
-Name[hu]=Bit Torrent-jellemzők
-Name[is]=Bit Torrent upplýsingar
-Name[it]=Informazioni Bittorrent
-Name[ja]=Bit Torrent 情報
-Name[ka]=Bit Torrent ინფორმაცია
-Name[kk]=Bit Torrent мәліметі
-Name[km]=ព័ត៌មាន Bit Torrent
-Name[lt]=Bit Torrent Informacija
-Name[mk]=Информации за Bit Torrent
-Name[nds]=BitTorrent-Info
-Name[ne]=बिट टोरेन्ट सूचना
-Name[nl]=Bittorent-informatie
-Name[nn]=Bit Torrent-info
-Name[pa]=Bit Torrent ਜਾਣਕਾਰੀ
-Name[pl]=Informacja o Bit Torrent
-Name[pt]=Informações Bit Torrent
-Name[pt_BR]=Informações do Bit Torrent
-Name[ro]=Informaţii Bit Torrent
-Name[ru]=Сведения о BitTorrent
-Name[sk]=Bit Torrent informácie
-Name[sl]=Podatki o BitTorrentu
-Name[sr]=Bit Torrent информације
-Name[sr@Latn]=Bit Torrent informacije
-Name[sv]=Information om Bit Torrent
-Name[ta]=பிட் டோர்ரெண்ட் தகவல்
-Name[tr]=Bit Torrent Bilgisi
-Name[uk]=Інформація про Bit Torrent
-Name[zh_CN]=BitTorrent 信息
-Name[zh_HK]=Bit Torrent 資訊
-Name[zh_TW]=Bit Torrent 資訊
-ServiceTypes=KFilePlugin
-X-TDE-Library=kfile_torrent
-# change MimeType here! (example: inode/directory)
-MimeType=application/x-bittorrent
-# change PreferredGroups here! (example: FolderInfo)
-PreferredGroups=
-# change PreferredItems here! (example: Items;Size)
-PreferredItems=
diff --git a/kfile-plugins/torrent/kfile_torrent.h b/kfile-plugins/torrent/kfile_torrent.h
deleted file mode 100644
index 9b16e4e4..00000000
--- a/kfile-plugins/torrent/kfile_torrent.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Michael Pyne <michael.pyne@kdemail.net>
- *
- * This software 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.
- *
- * This software 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; see the file COPYING.
- * If not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#ifndef _KFILE_TORRENT_H
-#define _KFILE_TORRENT_H
-
-#include <kfilemetainfo.h>
-
-#include "bdict.h"
-
-class TQStringList;
-
-/**
- * Class to provide meta info for BitTorrent files within Konqueror.
- * Handles the mime type application/x-bittorrent, files typically
- * have the extension .torrent
- *
- * @author Michael Pyne <mpyne@grammarian.homelinux.net>
- * @todo Handle editing the meta info as well
- * @bug The comment meta info should be Multi Line, but that only
- * works when the comment can also be edited.
- */
-class KTorrentPlugin : public KFilePlugin
-{
- Q_OBJECT
-
-
- public:
- /**
- * Constructs the class, and prepares for reading info on a torrent.
- *
- * @param parent the parent of this object
- * @param name the name of this object (not user-readable)
- * @param args unused by this class
- */
- KTorrentPlugin (TQObject *parent, const char *name, const TQStringList &args);
-
- /**
- * Destructor that closes the dictionary holding the torrent information.
- */
- ~KTorrentPlugin () { delete m_dict; }
-
- /**
- * Reads information on a torrent file given by @p info.
- *
- * @param info information on the file to decode
- * @return true if the meta info was successfully detected and added,
- * false otherwise.
- */
- virtual bool readInfo (KFileMetaInfo& info, unsigned int);
-
- /**
- * Writes information on a torrent file given by @p info.
- * BitTorrent are practically nothing but meta information.
- * Therefore, the entire file might be changed.
- *
- * @param info information on the file to encode
- * @return true if the meta info was successfully updated,
- * false otherwise
- */
- virtual bool writeInfo (const KFileMetaInfo& info) const;
-
- private:
- bool m_failed;
- BDict *m_dict;
-};
-
-#endif /* _KFILE_TORRENT_H */
-
-// vim: set et ts=4 sw=4: