More tweaks for Sylpheed
authorWerner Koch <wk@gnupg.org>
Fri, 13 Jan 2006 19:51:45 +0000 (19:51 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 13 Jan 2006 19:51:45 +0000 (19:51 +0000)
ChangeLog
Makefile.am
doc/manual-de/einsteiger.tex
patches/glib-2.9.2-wk1/02-gspawn-w32.patch [new file with mode: 0644]
patches/sylpheed-claws-1.9.100cvs124/02-std-plugins.patch [new file with mode: 0755]
src/inst-glib.nsi

index 6d25b1a..5f649a0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-01-13  Werner Koch  <wk@g10code.com>
+
+       * patches/glib-2.9.2-wk1/02-gspawn-w32.patch: New.
+
+2006-01-12  Werner Koch  <wk@g10code.com>
+
+       * src/inst-glib.nsi: Also install the console spawn helper.
+
 2006-01-10  Werner Koch  <wk@g10code.com>
 
        * configure.ac: New option --disable-source-installer.
index f6ed357..e7f63bc 100644 (file)
@@ -29,4 +29,6 @@ EXTRA_DIST = autogen.sh README.SVN \
        patches/gpgme-1.1.0/02-libtool-dll.patch \
         patches/pthreads-w32-2-7-0-release/01-make.patch \
         patches/glib-2.9.2-wk1/01-giowin32.patch \
-       patches/sylpheed-claws-1.9.100cvs124/01-fix-plugin-dir.patch
+        patches/glib-2.9.2-wk1/02-gspawn-w32.patch \
+       patches/sylpheed-claws-1.9.100cvs124/01-fix-plugin-dir.patch \
+       patches/sylpheed-claws-1.9.100cvs124/02-std-plugins.patch
index 5c1cade..b468fff 100644 (file)
@@ -700,9 +700,7 @@ Diesen Vorgang 
 Adressieren Sie nun diese Email an \verb-adele@Gpg4win.de- und
 schreiben in die Betreffzeile:
 
-\begin{verbatim}
-mein öffentlicher Schlüssel
-\end{verbatim}
+\textbf{mein öffentlicher Schlüssel}
 
 So etwa sollte Ihre Email nun aussehen:
 
@@ -721,12 +719,10 @@ bekommen$\ldots$
 \clearpage
 %% Original page 29
 
-XXXX
-
 Genauso gehen Sie vor, wenn Sie Ihren Schlüssel an eine echte
 Email-Adresse senden. Natürlich können Sie dann auch noch ein
 paar erklärende Sätze dazuschreiben. Adele braucht diese
-Erklärung nicht, denn sie ist zu Zichts anderem als zu diesem Zweck
+Erklärung nicht, denn sie ist zu Nichts anderem als zu diesem Zweck
 programmiert worden.  Fassen wir kurz zusammen: Sie haben Ihren
 öffentlichen Schlüssel per Email an einen Korrespondenzpartner
 geschickt.
@@ -735,7 +731,7 @@ $\spadesuit$ Im Handbuch ,,Gpg4win f
 beschreiben wir, wie Sie Ihren Schlüssel auch als Dateianhang
 versenden.
 
-Das ist oftmals das gebräuchlichere Verfahren. Wir haben Ihnen hier
+Das ist oftmals das gebräuchlichere Verfahren. Wir haben Ihnen hier
 die ,,Copy \& Paste''-Methode zuerst vorgestellt, weil sie
 transparenter und leichter nachzuvollziehen ist.  Sie können dieses
 Kapitel jetzt lesen oder später, wenn Sie diese Funktion benötigen.
diff --git a/patches/glib-2.9.2-wk1/02-gspawn-w32.patch b/patches/glib-2.9.2-wk1/02-gspawn-w32.patch
new file mode 100644 (file)
index 0000000..ef09310
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+patch -p1 -f $* < $0
+exit $?
+
+Fix calling of the spawn helper for W32.
+
+2006-01-12  Werner Koch  <wk@g10code.com>
+
+       * glib/gspawn-win32.c (do_spawn_with_pipes): First try to load the
+       helper from the module's directory.
+
+
+diff -upr glib-2.9.2-wk1/glib/gspawn-win32.c glib/glib/gspawn-win32.c
+--- glib-2.9.2-wk1/glib/gspawn-win32.c 2005-09-07 12:10:49.000000000 +0200
++++ glib/glib/gspawn-win32.c   2006-01-13 09:14:48.000000000 +0100
+@@ -632,6 +632,7 @@ do_spawn_with_pipes (gint               
+   GError *conv_error = NULL;
+   gint conv_error_index;
+   gchar *helper_process;
++  gchar *helper_process_buf = NULL;
+   CONSOLE_CURSOR_INFO cursor_info;
+   
+   SETUP_DEBUG();
+@@ -678,6 +679,23 @@ do_spawn_with_pipes (gint               
+     helper_process = HELPER_PROCESS "-console.exe";
+   else
+     helper_process = HELPER_PROCESS ".exe";
++
++  /* We better check whether the helper process is available in the
++     same directory as this library.  Only if this is not the case we
++     try it without a path and hope that it can be found n PATH. */
++  helper_process_buf = g_malloc (MAX_PATH + 50 + strlen (helper_process));
++  if ( GetModuleFileNameA (0, helper_process_buf, MAX_PATH + 50) )
++    {
++      char *p = strrchr (helper_process_buf, '\\');
++      if (!p)
++        p = helper_process_buf;
++      else
++        p++;
++      strcpy (p, helper_process);
++      if (!g_access (helper_process_buf, X_OK))
++        helper_process = helper_process_buf; /* Yes, use that one. */
++    }
++
+   new_argv[0] = helper_process;
+   _g_sprintf (args[ARG_CHILD_ERR_REPORT], "%d", child_err_report_pipe[1]);
+   new_argv[ARG_CHILD_ERR_REPORT] = args[ARG_CHILD_ERR_REPORT];
+@@ -944,6 +962,7 @@ do_spawn_with_pipes (gint               
+   if (rc != -1)
+     CloseHandle ((HANDLE) rc);
+   
++  g_free (helper_process_buf);
+   return TRUE;
+  cleanup_and_fail:
+@@ -965,6 +984,7 @@ do_spawn_with_pipes (gint               
+     close (stderr_pipe[0]);
+   if (stderr_pipe[1] != -1)
+     close (stderr_pipe[1]);
++  g_free (helper_process_buf);
+   return FALSE;
+ }
+
+
+
+
+
diff --git a/patches/sylpheed-claws-1.9.100cvs124/02-std-plugins.patch b/patches/sylpheed-claws-1.9.100cvs124/02-std-plugins.patch
new file mode 100755 (executable)
index 0000000..418763a
--- /dev/null
@@ -0,0 +1,117 @@
+#! /bin/sh
+patch -p1 -f $* < $0
+exit $?
+
+Force loading of the PGP plugins.
+
+
+2006-01-13  Werner Koch  <wk@g10code.com>
+
+       * src/common/plugin.c (plugin_load_standard_plugins): New.
+       (plugin_load_deps): Made more robust.
+       * src/main.c (main): Call it here.
+
+
+Only in sylpheed-claws-1.9.100cvs124/src/common: passcrypt.o
+diff -urp orig/sylpheed-claws-1.9.100cvs124/src/common/plugin.c sylpheed-claws-1.9.100cvs124/src/common/plugin.c
+--- orig/sylpheed-claws-1.9.100cvs124/src/common/plugin.c      2005-12-23 10:53:24.000000000 +0100
++++ sylpheed-claws-1.9.100cvs124/src/common/plugin.c   2006-01-13 20:44:02.000000000 +0100
+@@ -58,6 +58,11 @@ static gint list_find_by_string(gconstpo
+ static gint list_find_by_plugin_filename(const Plugin *plugin, const gchar *filename)
+ {
++        /* FIXME: There is a problem in case of symlinks or when a
++           user tries to load a plugin with the same name from a
++           different directory.  I think it would be better to compare
++           only the basename of the filename here (case-insensitive on
++           W32). */
+         g_return_val_if_fail(plugin, 1);
+         g_return_val_if_fail(plugin->filename, 1);
+         g_return_val_if_fail(filename, 1);
+@@ -130,9 +135,11 @@ static gint plugin_load_deps(const gchar
+       gchar *deps_file = NULL;
+       FILE *fp = NULL;
+       gchar buf[BUFFSIZE];
++        gchar *p;
+         tmp = g_strdup(filename);
+-      *strrchr(tmp, '.') = '\0';
++      if( (p = strrchr(tmp, '.')) )
++          *p = '\0';
+       deps_file = g_strconcat(tmp, ".deps", NULL);
+       g_free(tmp);
+       
+@@ -347,6 +354,43 @@ void plugin_unload_all(const gchar *type
+       }
+ }
++
++/* Load those plugins we always want to use.  No error output; just
++ * try. */
++void plugin_load_standard_plugins (void)
++{
++        static const char *names[] = {
++                "pgpmime",
++                "pgpinline",
++                NULL
++        };
++        int i;
++        gchar *error, *filename;
++        
++        for (i=0; names[i]; i++) {
++                /* Simple hack to check whether the plugin has already
++                 * been loaded but checking only for the basename. */
++                GSList *cur = plugins;
++                for(; cur; cur = cur->next) {
++                        Plugin *p = (Plugin *)cur->data;
++                        if (strstr(p->filename, names[i]))
++                                break;
++                }
++                if (!cur) { /* Not yet loaded. */
++                        /* FIXME: get_plugin_dir () returns with a trailing
++                         * (back)slash; this should be fixed so that we can use
++                         * g_module_build_path here. */
++                        filename = g_strconcat (get_plugin_dir(),
++                                                names[i], NULL);
++                        error = NULL;
++                        plugin_load(filename, &error);
++                        g_free (error);
++                        g_free(filename);
++                }
++        }
++}
++
++
+ GSList *plugin_get_list(void)
+ {
+       return g_slist_copy(plugins);
+
+diff -urp orig/sylpheed-claws-1.9.100cvs124/src/common/plugin.h sylpheed-claws-1.9.100cvs124/src/common/plugin.h
+--- orig/sylpheed-claws-1.9.100cvs124/src/common/plugin.h      2005-12-15 09:58:19.000000000 +0100
++++ sylpheed-claws-1.9.100cvs124/src/common/plugin.h   2006-01-13 15:20:45.000000000 +0100
+@@ -38,6 +38,7 @@ void plugin_unload           (Plugin          *plugin);
+ void plugin_load_all          (const gchar     *type);
+ void plugin_unload_all                (const gchar     *type);
+ void plugin_save_list         (void);
++void plugin_load_standard_plugins (void);
+ GSList *plugin_get_list               (void);
+ const gchar *plugin_get_name  (Plugin          *plugin);
+
+
+diff -urp orig/sylpheed-claws-1.9.100cvs124/src/main.c sylpheed-claws-1.9.100cvs124/src/main.c
+--- orig/sylpheed-claws-1.9.100cvs124/src/main.c       2005-12-20 20:50:35.000000000 +0100
++++ sylpheed-claws-1.9.100cvs124/src/main.c    2006-01-13 15:22:07.000000000 +0100
+@@ -518,7 +518,8 @@ int main(int argc, char *argv[])
+       prefs_toolbar_init();
+       plugin_load_all("GTK2");
+-      
++      plugin_load_standard_plugins ();
++
+       static_mainwindow = mainwin;
+ #ifdef HAVE_STARTUP_NOTIFICATION
+
+
+
index 784f75c..4a59863 100644 (file)
@@ -32,6 +32,7 @@ Section "-glib" SEC_glib
   File ${gpg4win_pkg_glib}
 !else
   File ${prefix}/bin/gspawn-win32-helper.exe
+  File ${prefix}/bin/gspawn-win32-helper-console.exe
   File ${prefix}/bin/libglib-2.0-0.dll
   File ${prefix}/bin/libgmodule-2.0-0.dll
   File ${prefix}/bin/libgobject-2.0-0.dll