00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 #ifndef __global_h__
00019 #define __global_h__ "$Id: global.h,v 1.66 2003/10/01 02:45:50 staikos Exp $"
00020 
00021 #include <qstring.h>
00022 #include <qvaluelist.h>
00023 #include <qptrlist.h>
00024 #include <qdatastream.h>
00025 #include <qdatetime.h>
00026 #include <qmap.h>
00027 
00028 #include <kurl.h>
00029 
00034 namespace KIO
00035 {
00037   typedef signed long long int fileoffset_t;
00039   typedef unsigned long long int filesize_t;
00040 
00047   QString convertSize( KIO::filesize_t size );
00048 
00056   QString number( KIO::filesize_t size );
00057 
00064    QString convertSizeFromKB( KIO::filesize_t kbSize );
00065 
00074   QTime calculateRemaining( KIO::filesize_t totalSize, KIO::filesize_t processedSize, KIO::filesize_t speed );
00075 
00085   QString itemsSummaryString(uint items, uint files, uint dirs, KIO::filesize_t size, bool showSize);
00086 
00094   QString encodeFileName( const QString & str );
00101   QString decodeFileName( const QString & str );
00102 
00106   enum Command {
00107     CMD_HOST = '0', 
00108     CMD_CONNECT = '1', 
00109     CMD_DISCONNECT = '2', 
00110     CMD_SLAVE_STATUS = '3', 
00111     CMD_SLAVE_CONNECT = '4', 
00112     CMD_SLAVE_HOLD = '5', 
00113     CMD_NONE = 'A', 
00114     CMD_TESTDIR = 'B', 
00115     CMD_GET = 'C', 
00116     CMD_PUT = 'D', 
00117     CMD_STAT = 'E', 
00118     CMD_MIMETYPE = 'F', 
00119     CMD_LISTDIR = 'G', 
00120     CMD_MKDIR = 'H', 
00121     CMD_RENAME = 'I', 
00122     CMD_COPY = 'J', 
00123     CMD_DEL = 'K', 
00124     CMD_CHMOD = 'L', 
00125     CMD_SPECIAL = 'M', 
00126     CMD_USERPASS = 'N', 
00127     CMD_REPARSECONFIGURATION = 'O', 
00128     CMD_META_DATA = 'P', 
00129     CMD_SYMLINK = 'Q', 
00130     CMD_SUBURL = 'R', 
00131     CMD_MESSAGEBOXANSWER = 'S', 
00132     CMD_RESUMEANSWER = 'T', 
00133     CMD_CONFIG = 'U', 
00134     CMD_MULTI_GET = 'V' 
00135     
00136     
00137   };
00138 
00142   enum Error {
00143     ERR_CANNOT_OPEN_FOR_READING = 1,
00144     ERR_CANNOT_OPEN_FOR_WRITING = 2,
00145     ERR_CANNOT_LAUNCH_PROCESS = 3,
00146     ERR_INTERNAL = 4,
00147     ERR_MALFORMED_URL = 5,
00148     ERR_UNSUPPORTED_PROTOCOL = 6,
00149     ERR_NO_SOURCE_PROTOCOL = 7,
00150     ERR_UNSUPPORTED_ACTION = 8,
00151     ERR_IS_DIRECTORY = 9, 
00152     ERR_IS_FILE = 10, 
00153     ERR_DOES_NOT_EXIST = 11,
00154     ERR_FILE_ALREADY_EXIST = 12,
00155     ERR_DIR_ALREADY_EXIST = 13,
00156     ERR_UNKNOWN_HOST = 14,
00157     ERR_ACCESS_DENIED = 15,
00158     ERR_WRITE_ACCESS_DENIED = 16,
00159     ERR_CANNOT_ENTER_DIRECTORY = 17,
00160     ERR_PROTOCOL_IS_NOT_A_FILESYSTEM = 18,
00161     ERR_CYCLIC_LINK = 19,
00162     ERR_USER_CANCELED = 20,
00163     ERR_CYCLIC_COPY = 21,
00164     ERR_COULD_NOT_CREATE_SOCKET = 22,
00165     ERR_COULD_NOT_CONNECT = 23,
00166     ERR_CONNECTION_BROKEN = 24,
00167     ERR_NOT_FILTER_PROTOCOL = 25,
00168     ERR_COULD_NOT_MOUNT = 26,
00169     ERR_COULD_NOT_UNMOUNT = 27,
00170     ERR_COULD_NOT_READ = 28,
00171     ERR_COULD_NOT_WRITE = 29,
00172     ERR_COULD_NOT_BIND = 30,
00173     ERR_COULD_NOT_LISTEN = 31,
00174     ERR_COULD_NOT_ACCEPT = 32,
00175     ERR_COULD_NOT_LOGIN = 33,
00176     ERR_COULD_NOT_STAT = 34,
00177     ERR_COULD_NOT_CLOSEDIR = 35,
00178     ERR_COULD_NOT_MKDIR = 37,
00179     ERR_COULD_NOT_RMDIR = 38,
00180     ERR_CANNOT_RESUME = 39,
00181     ERR_CANNOT_RENAME = 40,
00182     ERR_CANNOT_CHMOD = 41,
00183     ERR_CANNOT_DELETE = 42,
00184     
00185     
00186     ERR_SLAVE_DIED = 43,
00187     ERR_OUT_OF_MEMORY = 44,
00188     ERR_UNKNOWN_PROXY_HOST = 45,
00189     ERR_COULD_NOT_AUTHENTICATE = 46,
00190     ERR_ABORTED = 47, 
00191     
00192     ERR_INTERNAL_SERVER = 48,
00193     ERR_SERVER_TIMEOUT = 49,
00194     ERR_SERVICE_NOT_AVAILABLE = 50,
00195     ERR_UNKNOWN = 51,
00196     
00197     ERR_UNKNOWN_INTERRUPT = 53,
00198     ERR_CANNOT_DELETE_ORIGINAL = 54,
00199     ERR_CANNOT_DELETE_PARTIAL = 55,
00200     ERR_CANNOT_RENAME_ORIGINAL = 56,
00201     ERR_CANNOT_RENAME_PARTIAL = 57,
00202     ERR_NEED_PASSWD = 58,
00203     ERR_CANNOT_SYMLINK = 59,
00204     ERR_NO_CONTENT = 60, 
00205     ERR_DISK_FULL = 61,
00206     ERR_IDENTICAL_FILES = 62, 
00207     ERR_SLAVE_DEFINED = 63, 
00208                             
00209                             
00210                             
00211                             
00212                             
00213     ERR_UPGRADE_REQUIRED = 64, 
00214                                
00215                                
00216     ERR_POST_DENIED = 65    
00217                                
00218   };
00219 
00227   QString buildErrorString(int errorCode, const QString &errorText);
00228 
00239   QString buildHTMLErrorString(int errorCode, const QString &errorText,
00240                                 const KURL *reqUrl = 0L, int method = -1 );
00241 
00258   QByteArray rawErrorDetail(int errorCode, const QString &errorText,
00259                                 const KURL *reqUrl = 0L, int method = -1 );
00260 
00269   QString unsupportedActionErrorString(const QString &protocol, int cmd);
00270 
00274   enum UDSAtomTypes {
00276     UDS_STRING = 1,
00277     UDS_LONG = 2,
00278     UDS_TIME = 4 | UDS_LONG,
00279 
00281     UDS_SIZE = 8 | UDS_LONG,
00282     UDS_SIZE_LARGE = 32768 | UDS_LONG, 
00284     UDS_USER = 16 | UDS_STRING,
00288     UDS_ICON_NAME = 24 | UDS_STRING,
00290     UDS_GROUP = 32 | UDS_STRING,
00294     UDS_EXTRA = 48 | UDS_STRING,
00296     UDS_NAME = 64 | UDS_STRING,
00298     UDS_ACCESS = 128 | UDS_LONG,
00300     UDS_MODIFICATION_TIME = 256 | UDS_TIME,
00302     UDS_ACCESS_TIME = 512 | UDS_TIME,
00304     UDS_CREATION_TIME = 1024 | UDS_TIME,
00308     UDS_FILE_TYPE = 2048 | UDS_LONG,
00311     UDS_LINK_DEST = 4096 | UDS_STRING,
00313     UDS_URL = 8192 | UDS_STRING,
00315     UDS_MIME_TYPE = 16384 | UDS_STRING,
00318     UDS_GUESSED_MIME_TYPE = 16392 | UDS_STRING,
00321     UDS_XML_PROPERTIES = 32768 | UDS_STRING
00322   };
00323 
00329   enum CacheControl
00330   {
00331       CC_CacheOnly, 
00332       CC_Cache,     
00333       CC_Verify,    
00334       CC_Refresh,   
00335 
00336       CC_Reload     
00337   };
00338 
00346   KIO::CacheControl parseCacheControl(const QString &cacheControl);
00347 
00355   QString getCacheControlString(KIO::CacheControl cacheControl);
00356 
00362   QString findDeviceMountPoint( const QString& device );
00363 
00371   QString findPathMountPoint( const QString & filename );
00372 
00380   bool probably_slow_mounted(const QString& filename);
00381 
00388   bool manually_mounted(const QString& filename);
00389 
00390   enum FileSystemFlag { SupportsChmod, SupportsChown, SupportsUTime,
00391                         SupportsSymlinks, CaseInsensitive };
00411   bool testFileSystemFlag(const QString& filename, FileSystemFlag flag);
00412 
00413 
00414 
00415 
00416 
00417 
00418 
00419 
00420 
00421 
00422 
00423 
00424 
00425 
00426 
00427 class UDSAtom
00428 {
00429 public:
00433   QString m_str;
00437   long long m_long;
00438 
00442   unsigned int m_uds;
00443 };
00444 
00448 typedef QValueList<UDSAtom> UDSEntry;
00449 typedef QValueList<UDSEntry> UDSEntryList;
00450 typedef QValueListIterator<UDSEntry> UDSEntryListIterator;
00451 typedef QValueListConstIterator<UDSEntry> UDSEntryListConstIterator;
00452 
00456 class MetaData : public QMap<QString, QString>
00457 {
00458 public:
00462    MetaData() : QMap<QString, QString>() { };
00466    MetaData(const QMap<QString, QString>&metaData) :
00467      QMap<QString, QString>(metaData) { };
00468 
00474    MetaData & operator+= ( const QMap<QString,QString> &metaData )
00475    {
00476       QMap<QString,QString>::ConstIterator it;
00477       for( it = metaData.begin();
00478            it !=  metaData.end();
00479            ++it)
00480       {
00481          replace(it.key(), it.data());
00482       }
00483       return *this;
00484    }
00485 };
00486 
00487 }
00488 #endif