[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/ioslaves/kio-giobridge/giobridge
From: Norbert Frese <nf2 () scheinwelt ! at>
Date: 2008-04-01 1:17:24
Message-ID: 1207012644.777590.15438.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 792411 by nfrese:
improve mapping of GIO GErrors to KIO codes and text
M +1 -1 CMakeLists.txt
A giobridge-errormapper.cpp [License: LGPL (v2+)]
A giobridge-errormapper.h [License: LGPL (v2+)]
M +6 -1 giobridge-mount.h
M +33 -69 giobridge.cpp
M +2 -0 giobridge.h
--- trunk/playground/ioslaves/kio-giobridge/giobridge/CMakeLists.txt #792410:792411
@@ -10,7 +10,7 @@
if(WIN32)
else(WIN32)
- set(kio_giobridge_PART_SRCS giobridge.cpp giobridge-remote.cpp giobridge-mount.cpp)
+ set(kio_giobridge_PART_SRCS giobridge.cpp giobridge-remote.cpp giobridge-mount.cpp \
giobridge-errormapper.cpp) endif(WIN32)
--- trunk/playground/ioslaves/kio-giobridge/giobridge/giobridge-mount.h #792410:792411
@@ -21,8 +21,13 @@
#ifndef GIOBRIDGEMOUNT_H_
#define GIOBRIDGEMOUNT_H_
-#include "giobridge.h"
+#include <kio/global.h>
+#include <QtCore/QObject>
+
+#include <glib.h>
+#include <gio/gio.h>
+
class GioBridgeMount
{
public:
--- trunk/playground/ioslaves/kio-giobridge/giobridge/giobridge.cpp #792410:792411
@@ -21,6 +21,7 @@
#include "giobridge.h"
#include "giobridge-remote.h"
#include "giobridge-mount.h"
+#include "giobridge-errormapper.h"
#include <QtCore/QBool> //for Q_OS_XXX
#include <sys/types.h>
@@ -103,50 +104,6 @@
return 0;
}
-
-static int gIOError2KIO(GError * err, bool isFileOp)
-{
-
- kDebug(GIOBRIDGE_DEBUG_AREA) << "gIOError2KIO! code=" << err->code << " msg=" << err->message << \
endl;
-
- int gioErrorCode= err->code;
- switch (gioErrorCode)
- {
- case G_IO_ERROR_FAILED : return ERR_UNKNOWN;
- case G_IO_ERROR_NOT_FOUND : return ERR_DOES_NOT_EXIST;
- case G_IO_ERROR_EXISTS : return isFileOp ? ERR_FILE_ALREADY_EXIST : \
ERR_DIR_ALREADY_EXIST;
- case G_IO_ERROR_IS_DIRECTORY : return ERR_IS_DIRECTORY;
- case G_IO_ERROR_NOT_DIRECTORY : return isFileOp ? ERR_UNKNOWN : ERR_IS_FILE;
- case G_IO_ERROR_NOT_EMPTY : return ERR_COULD_NOT_RMDIR;
- case G_IO_ERROR_NOT_REGULAR_FILE : return isFileOp ? ERR_IS_DIRECTORY : ERR_UNKNOWN;
- case G_IO_ERROR_NOT_SYMBOLIC_LINK : return ERR_CANNOT_DELETE; // todo
- case G_IO_ERROR_NOT_MOUNTABLE_FILE : return ERR_COULD_NOT_MOUNT;
- case G_IO_ERROR_FILENAME_TOO_LONG : return ERR_MALFORMED_URL;
- case G_IO_ERROR_INVALID_FILENAME : return ERR_MALFORMED_URL;
- case G_IO_ERROR_TOO_MANY_LINKS : return ERR_CYCLIC_LINK;
- case G_IO_ERROR_NO_SPACE : return ERR_DISK_FULL;
- case G_IO_ERROR_INVALID_ARGUMENT : return ERR_UNKNOWN;
- case G_IO_ERROR_PERMISSION_DENIED : return ERR_ACCESS_DENIED;
- case G_IO_ERROR_NOT_SUPPORTED : return ERR_UNSUPPORTED_ACTION;
- case G_IO_ERROR_NOT_MOUNTED : return ERR_ACCESS_DENIED; // todo: new KDE error code
- case G_IO_ERROR_ALREADY_MOUNTED : return ERR_UNSUPPORTED_ACTION; // todo: new KDE error code
- case G_IO_ERROR_CLOSED : return ERR_CONNECTION_BROKEN; // todo
- case G_IO_ERROR_CANCELLED : return ERR_USER_CANCELED;
- case G_IO_ERROR_PENDING : return ERR_INTERNAL; // todo
- case G_IO_ERROR_READ_ONLY : return ERR_UNKNOWN; // needs a better translation
- case G_IO_ERROR_CANT_CREATE_BACKUP : return ERR_INTERNAL; // todo
- case G_IO_ERROR_WRONG_ETAG : return ERR_UNKNOWN; // todo
- case G_IO_ERROR_TIMED_OUT : return ERR_SERVER_TIMEOUT;
- case G_IO_ERROR_WOULD_RECURSE : return ERR_UNKNOWN; // todo
- case G_IO_ERROR_BUSY : return ERR_INTERNAL;
- case G_IO_ERROR_WOULD_BLOCK : return ERR_INTERNAL;
- case G_IO_ERROR_HOST_NOT_FOUND : return ERR_SERVICE_NOT_AVAILABLE;
- case G_IO_ERROR_WOULD_MERGE : return ERR_INTERNAL; // todo
- case G_IO_ERROR_FAILED_HANDLED : return ERR_INTERNAL; // todo
- }
- return ERR_UNKNOWN;
-}
-
static void gFileInfoListAttributes(GFileInfo * gFileInfo)
{
char** attrs = g_file_info_list_attributes(gFileInfo, NULL);
@@ -162,7 +119,6 @@
g_strfreev(attrs);
}
-
static void gFileInfo2UDSEntry(GFileInfo * gFileInfo,
const char * basename, UDSEntry & entry,
short int details, bool withACL )
@@ -382,7 +338,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated( err, true, url );
g_error_free(err);
}
else
@@ -412,7 +368,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
}
else
@@ -442,7 +398,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
}
else
@@ -464,7 +420,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
}
else
@@ -493,7 +449,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
g_object_unref (gFile);
@@ -511,7 +467,7 @@
{
if (err->code != 15)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
g_object_unref (gFile);
@@ -533,7 +489,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
g_object_unref (gFile);
@@ -572,7 +528,7 @@
&err); // use seek instead?
if (skipped==-1)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
g_object_unref (gFile);
@@ -600,7 +556,7 @@
if (n == -1)
{
- error( gIOError2KIO(err, true), err->message ); // KIO::ERR_COULD_NOT_READ?
+ errorTranslated(err, true, url); // KIO::ERR_COULD_NOT_READ?
g_object_unref (gFile);
g_object_unref (gFileInputStream);
return;
@@ -658,7 +614,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
g_object_unref (gFile);
return;
@@ -685,7 +641,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
g_object_unref (gFile);
g_object_unref (gFileOutputStream);
@@ -700,7 +656,7 @@
g_output_stream_close(G_OUTPUT_STREAM(gFileOutputStream), NULL, &err);
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
g_object_unref (gFile);
g_object_unref (gFileOutputStream);
@@ -791,7 +747,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, src, dest);
g_error_free(err);
}
else
@@ -821,7 +777,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, src, dest);
g_error_free(err);
}
else
@@ -849,7 +805,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, dest, target);
g_error_free(err);
}
else
@@ -875,7 +831,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
g_object_unref (gFile);
@@ -905,7 +861,7 @@
if (err)
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
g_error_free(err);
}
else
@@ -965,12 +921,12 @@
if (mountErr)
{
- error( gIOError2KIO(mountErr, true), mountErr->message );
+ errorTranslated(mountErr, true, url);
g_error_free(mountErr);
}
else
{
- error( gIOError2KIO(err, true), err->message );
+ errorTranslated(err, true, url);
}
g_error_free(err);
@@ -1001,12 +957,12 @@
bool GioBridge::mountAndListAgain(GError * err, const KUrl & url, GError ** mountErr)
{
- kDebug(GIOBRIDGE_DEBUG_AREA) << "GioBridge::mountAndListAgain dontretry=" << dontRetry << endl;
+ kDebug(GIOBRIDGE_DEBUG_AREA) << "GioBridge::mountAndListAgain triggered by err: " << err->message << \
" dontretry=" << dontRetry << endl; if (dontRetry) return false;
QString errmsg = QString(err->message);
- kDebug(GIOBRIDGE_DEBUG_AREA) << errmsg << endl;
+ //kDebug(GIOBRIDGE_DEBUG_AREA) << errmsg << endl;
if (err->code != G_IO_ERROR_NOT_MOUNTED) return false;
@@ -1062,12 +1018,12 @@
if (mountErr)
{
- error( gIOError2KIO(mountErr, true), mountErr->message );
+ errorTranslated(mountErr, true, url);
g_error_free(mountErr);
}
else
{
- error( gIOError2KIO(err, false), err->message );
+ errorTranslated(err, false, url);
}
g_error_free(err);
g_object_unref (gFile);
@@ -1092,7 +1048,7 @@
if (err)
{
- error( gIOError2KIO(err, false), err->message );
+ errorTranslated(err, false, url);
g_error_free(err);
g_object_unref (gFile);
g_object_unref (gFileEnumerator);
@@ -1126,6 +1082,14 @@
g_object_unref (gFileEnumerator);
}
+
+void GioBridge::errorTranslated(GError * err, bool isFileOp, const KUrl & url, const KUrl & targetUrl)
+{
+ GioBridgeErrorMapper mapper(err, isFileOp, url, targetUrl);
+ error(mapper.resultErrId, mapper.resultText);
+}
+
+
// Connected to KShred
void GioBridge::slotProcessedSize( KIO::filesize_t bytes )
{
--- trunk/playground/ioslaves/kio-giobridge/giobridge/giobridge.h #792410:792411
@@ -74,6 +74,8 @@
bool mountAndStatAgain(GError * err, const KUrl & url, GError ** mountErr);
bool mountAndListAgain(GError * err, const KUrl & url, GError ** mountErr);
void followLink(const KUrl url);
+ void errorTranslated(GError * err, bool isFileOp, const KUrl & url, const KUrl & targetUrl = \
KUrl()); +
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic