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
00288
00290
00294
00296
00298
00300
00302
00304
00308
00311
00313
00315
00318
00321
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