[maemo-commits] [maemo-commits] r13369 - projects/haf/branches/hildon-desktop/karoliina-safe-mode/src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Aug 23 11:45:09 EEST 2007
Author: karoliina
Date: 2007-08-23 11:45:06 +0300 (Thu, 23 Aug 2007)
New Revision: 13369

Added:
   projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-blacklist.c
   projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-blacklist.h
   projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-stamps.h
Modified:
   projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/Makefile.am
   projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-desktop.c
   projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-manager.c
Log:
Committed some changes. This version compiles but is not working as expected.



Modified: projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/Makefile.am
===================================================================
--- projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/Makefile.am	2007-08-23 07:04:58 UTC (rev 13368)
+++ projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/Makefile.am	2007-08-23 08:45:06 UTC (rev 13369)
@@ -121,6 +121,8 @@
 	hd-panel-window-dialog.c     \
 	hd-panel-window-dialog.h     \
 	hd-config.h                  \
+	hd-plugin-blacklist.c        \
+	hd-plugin-blacklist.h        \
 	main.c
 
 pluginlib_LTLIBRARIES = libhd-applications-menu-settings.la

Modified: projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-desktop.c
===================================================================
--- projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-desktop.c	2007-08-23 07:04:58 UTC (rev 13368)
+++ projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-desktop.c	2007-08-23 08:45:06 UTC (rev 13369)
@@ -59,6 +59,8 @@
 #include "hd-panel-window.h"
 #include "hd-panel-window-dialog.h"
 
+#include "hd-plugin-blacklist.h"
+
 #define HD_DESKTOP_GET_PRIVATE(object) \
         (G_TYPE_INSTANCE_GET_PRIVATE ((object), HD_TYPE_DESKTOP, HDDesktopPrivate))
 
@@ -82,10 +84,9 @@
  * ill-behaving plugin. The stamp file will be cleaned up in device boot (because
  * it is created on under /tmp/ and in hd-desktop finalize. 
  */
-#define STAMP_DIR                     "/tmp/osso-appl-states/"
-#define HILDON_DESKTOP_STAMP_DIR      "/tmp/osso-appl-states/hildon-desktop/"
-#define HILDON_DESKTOP_STAMP_FILE     HILDON_DESKTOP_STAMP_DIR"/stamp"
 
+#include "hd-stamps.h"
+
 typedef struct 
 {
   GtkWidget         *parent;
@@ -432,7 +433,7 @@
       return;
     }
   }
-
+   
   buffer = g_key_file_to_data (keyfile, (gsize *) &buffer_size, &error);
 
   if (error)
@@ -1279,10 +1280,22 @@
       /* 
        * Safe mode is not active, so load all plugins according to the plugin list 
        */
+      printf("Printing plugin list. Safe mode inactive\n----------------------------------------\n");
+
+      g_list_foreach (plugin_list, (GFunc) printf , NULL);
+
+      
+
+      printf("\n--------------------------------------------\nLoading now plugins\n");
+
+      
+      /* Black list functionality must be in the plugin-manager, otherwise it will not work, because
+         this is already a list and plugin manager handles what it loads and does not */
       hd_plugin_manager_load (HD_PLUGIN_MANAGER (priv->pm), 
                               plugin_list, 
                               HILDON_DESKTOP_WINDOW (info->container)->container,
                               info->policy);
+      
     } 
     else 
     {
@@ -1697,6 +1710,9 @@
     /* Hildon Desktop enters safe mode */
     g_warning ("hildon-desktop did not exit properly on the previous "
                "session. All home plugins will be disabled.");
+    
+    printf ("hildon-desktop did not exit properly on the previous "
+               "session. All home plugins will be disabled.\n");
 
     priv->safe_mode = TRUE;
   } 

Added: projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-blacklist.c
===================================================================
--- projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-blacklist.c	2007-08-23 07:04:58 UTC (rev 13368)
+++ projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-blacklist.c	2007-08-23 08:45:06 UTC (rev 13369)
@@ -0,0 +1,139 @@
+/*
+ * This file is part of hildon-desktop
+ *
+ * Copyright (C) 2007 Nokia Corporation.
+ *
+ * Author:  Karoliina Salminen <karoliina.t.salminen at nokia.com>
+ * Contact: Karoliina Salminen <karoliina.t.salminen at nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <glib.h>
+#include <glib-object.h>
+#include <glib/gstdio.h>
+
+
+#include <sys/types.h> // Required for file io (creat etc.)
+#include <sys/stat.h> // required for file io
+#include <fcntl.h> // required for file io
+
+
+#include "hd-plugin-blacklist.h"
+
+gchar* 
+hd_plugin_blacklist_transaction_read (gchar *key_file_name, const gchar *group_name, const gchar *key)
+{
+  GKeyFile *keyfile;
+  GError *error = NULL;
+  gchar *value = NULL;
+
+  g_return_val_if_fail (key_file_name != NULL, NULL);
+
+  printf("hd_plugin_blacklist_transaction_read\n");
+
+  keyfile = g_key_file_new ();
+
+  g_key_file_load_from_file (keyfile,
+                             key_file_name,
+                             G_KEY_FILE_NONE,
+                             &error);
+
+  if (error)
+  {
+    g_warning ("Error loading blacklist configuration file %s: %s", key_file_name, error->message);
+    g_error_free (error);
+    
+    return NULL;
+  }
+
+  value = g_key_file_get_string (keyfile, group_name, key, &error);
+
+  if (error)
+  {
+    g_error_free (error);
+    error = NULL;
+    g_key_file_free (keyfile);
+    return NULL;
+  }
+
+  g_key_file_free (keyfile);
+
+  return value;
+}
+
+void
+hd_plugin_blacklist_transaction_write (gchar *key_file_name, const gchar *group_name, const gchar *key, const gchar *value)
+{
+  GKeyFile *keyfile;
+  GError *error = NULL;
+  gchar *buffer;
+  gint buffer_size;
+
+  g_return_if_fail (key_file_name != NULL);
+
+  printf("hd_plugin_blacklist_transaction_write\n");
+
+  keyfile = g_key_file_new ();
+
+  /* Load old keyfile */
+
+  g_key_file_load_from_file (keyfile,
+                             key_file_name,
+                             G_KEY_FILE_NONE,
+                             &error);
+
+  /* Now set the key in there */
+  printf("g_key_file_set_string begin\n");
+  g_key_file_set_string (keyfile, group_name, key, value);
+  printf("g_key_file_set_string end\n");
+  buffer = g_key_file_to_data (keyfile, (gsize *) &buffer_size, &error);
+
+  printf("Buffer created. Buffer = %s \n",buffer);
+  /*
+  if (error)
+  {
+    g_warning ("Error saving desktop blacklist configuration file: %s", error->message);
+    g_error_free (error);
+
+    return;
+  }*/
+  printf("write buffer\n");
+  printf("Creat\n");
+  //g_creat (key_file_name, O_CREAT);
+  printf("Creat done\n");
+  printf("Write to file \n");
+  if(g_file_set_contents (key_file_name, buffer, buffer_size, &error)){
+    printf("Something occurred\n");
+  }
+  printf("buffer written\n");
+  if (error)
+  {
+    g_warning ("Error saving desktop blacklist configuration file: %s", error->message);
+    g_error_free (error);
+  }
+
+  g_free (buffer);
+  g_key_file_free (keyfile);
+}
+

Added: projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-blacklist.h
===================================================================
--- projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-blacklist.h	2007-08-23 07:04:58 UTC (rev 13368)
+++ projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-blacklist.h	2007-08-23 08:45:06 UTC (rev 13369)
@@ -0,0 +1,35 @@
+/*
+ * This file is part of hildon-desktop
+ *
+ * Copyright (C) 2007 Nokia Corporation.
+ *
+ * Author:  Karoliina Salminen <karoliina.t.salminen at nokia.com>
+ * Contact: Karoliina Salminen <karoliina.t.salminen at nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+
+#ifndef __hd_plugin_blacklist__h__
+#define __hd_plugin_blacklist__h__
+
+gchar* 
+hd_plugin_blacklist_transaction_read (gchar *key_file_name, const gchar *group_name, const gchar *key);
+
+void
+hd_plugin_blacklist_transaction_write (gchar *key_file_name, const gchar *group_name, const gchar *key, const gchar *value);
+
+#endif

Modified: projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-manager.c
===================================================================
--- projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-manager.c	2007-08-23 07:04:58 UTC (rev 13368)
+++ projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-plugin-manager.c	2007-08-23 08:45:06 UTC (rev 13369)
@@ -26,10 +26,14 @@
 #include <config.h>
 #endif
 
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
 #include <gtk/gtk.h>
 #include <glib.h>
 #include <glib-object.h>
-
 #include <libhildondesktop/hildon-desktop-container.h>
 
 #include "hd-plugin-manager.h"
@@ -37,6 +41,9 @@
 #include "hd-plugin-loader.h"
 #include "hd-plugin-loader-factory.h"
 
+#include "hd-stamps.h"
+#include "hd-plugin-blacklist.h"
+
 #define HD_PLUGIN_MANAGER_GET_PRIVATE(object) \
         (G_TYPE_INSTANCE_GET_PRIVATE ((object), HD_TYPE_PLUGIN_MANAGER, HDPluginManagerPrivate))
 
@@ -228,14 +235,66 @@
 
   for (iter = f_plugin_list; iter; iter = g_list_next (iter))
   {
-    if (!hd_plugin_manager_load_plugin (pm, 
-			    		(const gchar *) iter->data, 
-					container) && policy != NULL)
+    /* Add attempt to blacklist */
+  
+    gchar *status=NULL;
+
+    status = hd_plugin_blacklist_transaction_read (HILDON_DESKTOP_BLACKLIST, iter->data, "blacklist-status");
+    if(status == NULL)
     {
-      hd_plugin_manager_handle_plugin_failure (pm, container, policy, position);
+
+      hd_plugin_blacklist_transaction_write (HILDON_DESKTOP_BLACKLIST, iter->data, "blacklist-status", "init");
+
+      if (!hd_plugin_manager_load_plugin (pm, 
+              (const gchar *) iter->data, 
+          container) && policy != NULL)
+      {
+          hd_plugin_manager_handle_plugin_failure (pm, container, policy, position);
+      }
+    
+      position++;
+
+      
+      hd_plugin_blacklist_transaction_write (HILDON_DESKTOP_BLACKLIST, iter->data, "blacklist-status", "done");
+
+
     }
+    else 
+    {
+    if((strcmp(status,"init"))) 
+    { /* if not status init (=not crashed) */
 
-    position++;
+        
+        hd_plugin_blacklist_transaction_write (HILDON_DESKTOP_BLACKLIST, iter->data, "blacklist-status", "init");
+
+        if (!hd_plugin_manager_load_plugin (pm, 
+              (const gchar *) iter->data, 
+          container) && policy != NULL)
+        {
+          hd_plugin_manager_handle_plugin_failure (pm, container, policy, position);
+
+          hd_plugin_blacklist_transaction_write (HILDON_DESKTOP_BLACKLIST, iter->data, "blacklist-status", "fail");
+
+        }
+    
+        position++;
+        
+      hd_plugin_blacklist_transaction_write (HILDON_DESKTOP_BLACKLIST, iter->data, "blacklist-status", "done");
+
+
+      } 
+      else /* Actually crashed , init status found */
+      {
+        
+      
+      }
+
+    }
+
+    g_free(status);
+    
+    
+    
   }
 
   g_list_foreach (f_plugin_list, (GFunc) g_free, NULL);

Added: projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-stamps.h
===================================================================
--- projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-stamps.h	2007-08-23 07:04:58 UTC (rev 13368)
+++ projects/haf/branches/hildon-desktop/karoliina-safe-mode/src/hd-stamps.h	2007-08-23 08:45:06 UTC (rev 13369)
@@ -0,0 +1,33 @@
+/*
+ * This file is part of hildon-desktop
+ *
+ * Copyright (C) 2007 Nokia Corporation.
+ *
+ * Author:  Karoliina Salminen <karoliina.t.salminen at nokia.com>
+ * Contact: Karoliina Salminen <karoliina.t.salminen at nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#ifndef __hd_stamps__h__
+#define __hd_stamps__h__
+
+#define STAMP_DIR                     "/tmp/osso-appl-states/"
+#define HILDON_DESKTOP_STAMP_DIR      "/tmp/osso-appl-states/hildon-desktop/"
+#define HILDON_DESKTOP_STAMP_FILE     HILDON_DESKTOP_STAMP_DIR"/stamp"
+#define HILDON_DESKTOP_BLACKLIST     HILDON_DESKTOP_STAMP_DIR"/blacklist.conf"
+
+#endif


More information about the maemo-commits mailing list