[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