[arch-commits] Commit in vte/trunk (PKGBUILD pass-correct-term.patch)

Ionut Biru ibiru at archlinux.org
Fri Oct 8 20:42:34 UTC 2010


    Date: Friday, October 8, 2010 @ 16:42:34
  Author: ibiru
Revision: 94632

upgpkg: vte 0.26.0-4
fix passing correct TERM

Added:
  vte/trunk/pass-correct-term.patch
Modified:
  vte/trunk/PKGBUILD

-------------------------+
 PKGBUILD                |   10 ++-
 pass-correct-term.patch |  137 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 143 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2010-10-08 20:42:27 UTC (rev 94631)
+++ PKGBUILD	2010-10-08 20:42:34 UTC (rev 94632)
@@ -3,7 +3,7 @@
 
 pkgname=vte
 pkgver=0.26.0
-pkgrel=3
+pkgrel=4
 pkgdesc="Virtual Terminal Emulator library"
 arch=('i686' 'x86_64')
 license=('LGPL')
@@ -11,11 +11,13 @@
 options=('!libtool')
 makedepends=('pygtk>=2.22.0' 'pkg-config' 'intltool' 'gobject-introspection')
 url="http://www.gnome.org"
-source=(http://ftp.gnome.org/pub/GNOME/sources/vte/0.26/vte-${pkgver}.tar.bz2)
-sha256sums=('0b1e9ca377f80912d9fb9a2c2d876c8fddf8b0b7fe0bd169d80671afe6f47e4d')
-
+source=(http://ftp.gnome.org/pub/GNOME/sources/vte/0.26/vte-${pkgver}.tar.bz2
+        pass-correct-term.patch)
+sha256sums=('0b1e9ca377f80912d9fb9a2c2d876c8fddf8b0b7fe0bd169d80671afe6f47e4d'
+            '62f2ffbd0ae6904c154d1026893be67a7538c61368a1c75639dc9289919a3907')
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/pass-correct-term.patch"
   ./configure --prefix=/usr --sysconfdir=/etc \
       --libexecdir=/usr/lib/vte \
       --localstatedir=/var --disable-static \

Added: pass-correct-term.patch
===================================================================
--- pass-correct-term.patch	                        (rev 0)
+++ pass-correct-term.patch	2010-10-08 20:42:34 UTC (rev 94632)
@@ -0,0 +1,137 @@
+From c5d31b87d7a377f5e6fe93fc1efb061f5c7e9db7 Mon Sep 17 00:00:00 2001
+From: Tomeu Vizoso <tomeu.vizoso at collabora.co.uk>
+Date: Thu, 07 Oct 2010 10:57:45 +0000
+Subject: Pass the correct TERM value inside envp when spawning
+
+So the codepaths that end up invoking execve still have the correct
+TERM entry. Clarify the effect of vte_pty_set_term().
+
+https://bugzilla.gnome.org/show_bug.cgi?id=631589
+---
+diff --git a/src/pty.c b/src/pty.c
+index e3fb782..11dbe6a 100644
+--- a/src/pty.c
++++ b/src/pty.c
+@@ -394,7 +394,7 @@ __vte_pty_get_argv (const char *command,
+  * Returns: a newly allocated string array. Free using g_strfreev()
+  */
+ static gchar **
+-__vte_pty_merge_environ (char **envp)
++__vte_pty_merge_environ (char **envp, const char *term_value)
+ {
+ 	GHashTable *table;
+         GHashTableIter iter;
+@@ -425,6 +425,9 @@ __vte_pty_merge_environ (char **envp)
+ 		}
+ 	}
+ 
++        if (term_value != NULL)
++                g_hash_table_replace (table, g_strdup ("TERM"), g_strdup (term_value));
++
+ 	array = g_ptr_array_sized_new (g_hash_table_size (table) + 1);
+         g_hash_table_iter_init(&iter, table);
+         while (g_hash_table_iter_next(&iter, (gpointer) &name, (gpointer) &value)) {
+@@ -518,7 +521,7 @@ __vte_pty_spawn (VtePty *pty,
+         spawn_flags &= ~G_SPAWN_LEAVE_DESCRIPTORS_OPEN;
+ 
+         /* add the given environment to the childs */
+-        envp2 = __vte_pty_merge_environ (envv);
++        envp2 = __vte_pty_merge_environ (envv, pty->priv->term);
+ 
+         _VTE_DEBUG_IF (VTE_DEBUG_MISC) {
+                 g_printerr ("Spawing command:\n");
+@@ -1679,8 +1682,8 @@ vte_pty_class_init (VtePtyClass *klass)
+         /**
+          * VtePty:term:
+          *
+-         * The value to set for the TERM environment variable
+-         * in vte_pty_child_setup().
++         * The value to set for the TERM environment variable just after
++         * forking.
+          *
+          * Since: 0.26
+          */
+@@ -1816,13 +1819,7 @@ vte_pty_get_fd (VtePty *pty)
+  * @pty: a #VtePty
+  * @emulation: (allow-none): the name of a terminal description, or %NULL
+  *
+- * Sets what value of the TERM environment variable to set
+- * when using vte_pty_child_setup().
+- *
+- * Note: When using fork() and execve(), or the g_spawn_async() family of
+- * functions with vte_pty_child_setup(),
+- * and the environment passed to them contains the <literal>TERM</literal>
+- * environment variable, that value will override the one set here.
++ * Sets what value of the TERM environment variable to set just after forking.
+  *
+  * Since: 0.26
+  */
+diff --git a/src/vte.c b/src/vte.c
+index 5c2c1aa..72aa1a1 100644
+--- a/src/vte.c
++++ b/src/vte.c
+@@ -3518,32 +3518,6 @@ _vte_terminal_get_argv (const char *command,
+         return argv2;
+ }
+ 
+-/*
+- * _vte_terminal_filter_envv:
+- * @envv: the environment vector
+- *
+- * Filters out the TERM variable from @envv.
+- *
+- * Returns: (transfer container): the filtered environment vector
+- */
+-static char **
+-_vte_terminal_filter_envv (char **envv)
+-{
+-  GPtrArray *array;
+-  int i;
+-
+-  if (envv == NULL)
+-    return NULL;
+-
+-  array = g_ptr_array_sized_new (g_strv_length (envv));
+-  for (i = 0; envv[i]; ++i)
+-    if (!g_str_has_prefix (envv[i], "TERM="))
+-      g_ptr_array_add (array, envv[i]);
+-  g_ptr_array_add (array, NULL);
+-
+-  return (char **) g_ptr_array_free (array, FALSE);
+-}
+-
+ /**
+  * vte_terminal_fork_command:
+  * @terminal: a #VteTerminal
+@@ -3580,7 +3554,7 @@ vte_terminal_fork_command(VteTerminal *terminal,
+                           gboolean utmp,
+                           gboolean wtmp)
+ {
+-        char **real_argv, **real_envv;
++        char **real_argv;
+         GSpawnFlags spawn_flags;
+         GPid child_pid;
+         gboolean ret;
+@@ -3596,19 +3570,17 @@ vte_terminal_fork_command(VteTerminal *terminal,
+         spawn_flags = G_SPAWN_CHILD_INHERITS_STDIN |
+                       G_SPAWN_SEARCH_PATH;
+         real_argv = _vte_terminal_get_argv (command, argv, &spawn_flags);
+-        real_envv = _vte_terminal_filter_envv (envv);
+ 
+         ret = vte_terminal_fork_command_full(terminal,
+                                              __vte_pty_get_pty_flags(lastlog, utmp, wtmp),
+                                              working_directory,
+                                              real_argv,
+-                                             real_envv,
++                                             envv,
+                                              spawn_flags,
+                                              NULL, NULL,
+                                              &child_pid,
+                                              err);
+         g_strfreev (real_argv);
+-        g_free (real_envv);
+ 
+ #ifdef VTE_DEBUG
+         if (error) {
+--
+cgit v0.8.3.1




More information about the arch-commits mailing list