0.8.10claws50
[claws.git] / src / common / sylpheed.c
index 1dd0a8932b3193dd35ec8951bac31ca408eb30d1..2587f00f8252203b068125c18339e6d45eb4600e 100644 (file)
 #include "utils.h"
 #include "ssl.h"
 #include "version.h"
+#include "plugin.h"
 
 static gboolean sylpheed_initialized = FALSE;
 
+/**
+ * Parse program parameters and remove all parameters
+ * that have been processed. Arguments are pointers to
+ * original passed programm arguments and these will
+ * be modified leaving only unknown parameters for
+ * further processing
+ *
+ * \param argc pointer to number of parameters
+ * \param argv pointer to array of parameter strings
+ */
+static void parse_parameter(int *argc, char ***argv)
+{
+       gint i, j, k;
+
+       g_return_if_fail(argc != NULL);
+       g_return_if_fail(argv != NULL);
+
+       for (i = 1; i < *argc;) {
+               if (strcmp("--debug", (*argv)[i]) == 0) {
+                       debug_set_mode(TRUE);
+
+                       (*argv)[i] = NULL;
+               }
+
+               i += 1;
+       }
+
+       /* Remove NULL args from argv[] for further processing */
+       for (i = 1; i < *argc; i++) {
+               for (k = i; k < *argc; k++)
+                       if ((*argv)[k] != NULL)
+                               break;
+
+               if (k > i) {
+                       k -= i;
+                       for (j = i + k; j < *argc; j++)
+                               (*argv)[j - k] = (*argv)[j];
+                       *argc -= k;
+               }
+       }
+}
+
 gboolean sylpheed_init(int *argc, char ***argv)
 {
        if (sylpheed_initialized)
                return TRUE;
 
+       parse_parameter(argc, argv);
+
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
@@ -53,13 +98,24 @@ gboolean sylpheed_init(int *argc, char ***argv)
                }
        }
 
+       srandom((gint)time(NULL));
+
 #if USE_OPENSSL
        ssl_init();
 #endif
 
-       srandom((gint)time(NULL));
+       plugin_load_all();
 
        sylpheed_initialized = TRUE;
 
        return TRUE;
 }
+
+void sylpheed_done()
+{
+       plugin_unload_all();
+
+#if USE_OPENSSL
+       ssl_done();
+#endif
+}