rpms/lxterminal/devel lxterminal-0.1.7-Fix-one-function-prototype.patch, NONE, 1.1 lxterminal-0.1.7-Fix-package-dependency-checks-Bug2933091.patch, NONE, 1.1 lxterminal-0.1.7-Major-rework.patch, NONE, 1.1 lxterminal-0.1.7-Remove-unnecessary-redraw.patch, NONE, 1.1 lxterminal-0.1.7-XML-compressor.patch, NONE, 1.1 lxterminal-0.1.7-update-translations.patch, NONE, 1.1 lxterminal.spec, 1.13, 1.14 lxterminal-0.1.6-dsofix.patch, 1.1, NONE

Christoph Wickert cwickert at fedoraproject.org
Thu May 27 12:31:55 UTC 2010


Author: cwickert

Update of /cvs/pkgs/rpms/lxterminal/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv27158/devel

Modified Files:
	lxterminal.spec 
Added Files:
	lxterminal-0.1.7-Fix-one-function-prototype.patch 
	lxterminal-0.1.7-Fix-package-dependency-checks-Bug2933091.patch 
	lxterminal-0.1.7-Major-rework.patch 
	lxterminal-0.1.7-Remove-unnecessary-redraw.patch 
	lxterminal-0.1.7-XML-compressor.patch 
	lxterminal-0.1.7-update-translations.patch 
Removed Files:
	lxterminal-0.1.6-dsofix.patch 
Log Message:
* Thu May 27 2010 Christoph Wickert <cwickert at fedoraproject.org> - 0.1.7-2
- Major code rework from git (fixes #571591 and 596358)


lxterminal-0.1.7-Fix-one-function-prototype.patch:
 lxterminal.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- NEW FILE lxterminal-0.1.7-Fix-one-function-prototype.patch ---
>From 92897593fccf0c1ad37670bf0cd3ce7ff04e1d97 Mon Sep 17 00:00:00 2001
From: Marty Jack <martyj at linux.local>
Date: Mon, 29 Mar 2010 16:59:33 -0400
Subject: [PATCH 11/60] Fix one function prototype

---
 src/lxterminal.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/lxterminal.c b/src/lxterminal.c
index 60712bb..6782dc7 100644
--- a/src/lxterminal.c
+++ b/src/lxterminal.c
@@ -62,7 +62,7 @@ static const GdkColor linux_color[16] =
 static void gdk_window_get_geometry_hints(GdkWindow * window, GdkGeometry * geometry, GdkWindowHints * geometry_mask);
 
 /* Utilities. */
-static void terminal_get_padding(Term * term, GtkBorder * border);
+static GtkBorder * terminal_get_border(Term * term);
 static void terminal_geometry_restore(Term * term);
 static void terminal_tab_set_position(GtkWidget * notebook, gint tab_position);
 
-- 
1.7.0.1


lxterminal-0.1.7-Fix-package-dependency-checks-Bug2933091.patch:
 configure.ac |   13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

--- NEW FILE lxterminal-0.1.7-Fix-package-dependency-checks-Bug2933091.patch ---
>From f3e089627e973c9436cd22510549b0943ecd93be Mon Sep 17 00:00:00 2001
From: Marty Jack <martyj at linux.local>
Date: Sat, 27 Mar 2010 12:22:18 -0400
Subject: [PATCH 07/60] Fix package dependency checks (Bug2933091)
 - The one that was there was a no-op

---
 configure.ac |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/configure.ac b/configure.ac
index 4a2c081..d3942c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,13 +20,11 @@ AC_ARG_ENABLE(man,
        [enable_man=no]
 )
 # Checks for libraries.
-pkg_modules="glib-2.0 >= 2.6.0 \
-             gthread-2.0 \
-             vte"
-
-PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
-AC_SUBST(PACKAGE_CFLAGS)
-AC_SUBST(PACKAGE_LIBS)
+PKG_CHECK_MODULES(glib, [glib-2.0 >= 2.6.0])
+PKG_CHECK_MODULES(gtk, [gtk+-2.0 >= 2.6.0])
+PKG_CHECK_MODULES(vte, [vte >= 0.17.1])
+CFLAGS="$CFLAGS $glib_CFLAGS $gtk_CFLAGS $vte_CFLAGS"
+LIBS="$LIBS $glib_LIBS $gtk_LIBS $vte_LIBS"
 
 GETTEXT_PACKAGE=lxterminal
 AC_SUBST(GETTEXT_PACKAGE)
-- 
1.7.0.1


lxterminal-0.1.7-Major-rework.patch:
 AUTHORS                           |    1 
 configure.ac                      |    2 
 data/Makefile.am                  |   15 
 data/lxterminal-preferences.glade |  512 +++++++++
 data/lxterminal.conf.in           |    1 
 man/lxterminal.xml                |   30 
 src/Makefile.am                   |    7 
 src/lxterminal.c                  | 2017 ++++++++++++++++++++------------------
 src/lxterminal.h                  |  111 +-
 src/preferences.c                 |  526 +++------
 src/preferences.h                 |   78 -
 src/setting.c                     |  208 +--
 src/setting.h                     |   58 -
 src/tab.c                         |  112 --
 src/tab.h                         |   29 
 src/unixsocket.c                  |  361 +++---
 src/unixsocket.h                  |   23 
 17 files changed, 2361 insertions(+), 1730 deletions(-)

--- NEW FILE lxterminal-0.1.7-Major-rework.patch ---
>From 20d518389a6d2e2cac761d62890c8321397d292a Mon Sep 17 00:00:00 2001
From: Marty Jack <martyj at linux.local>
Date: Mon, 29 Mar 2010 16:50:48 -0400
Subject: [PATCH 09/60] Major rework
 - -e and --command now consume arguments to the end of the line (--command= is unchanged)
 - Preference dialog now GtkBuilder based, must have external XML file to operate successfully
 - 2973537 Failure to either connect or bind to the communication socket now handled gracefully; the LXTerminal will run standalone
 - Terminal failed to resize when font changed from larger to smaller
 - Failed to honor --working-directory with --command
 - Configuration now applies immediately
 - User preference for cursor shape
 - User preference for audible bell
 - 2977944 User preference for allow bold
 - 2842542 User preference for hide Close button
 - 2842542 Middle click on tab closes it; consistent with other applications such as Firefox
 - 2845142 User can edit tab labels

---
 AUTHORS                           |    1 +
 configure.ac                      |    2 +-
 data/Makefile.am                  |   15 +
 data/lxterminal-preferences.glade |  512 ++++++++++
 data/lxterminal.conf.in           |    1 +
 man/lxterminal.xml                |   30 +-
 src/Makefile.am                   |    7 +-
 src/lxterminal.c                  | 2017 ++++++++++++++++++++-----------------
 src/lxterminal.h                  |  111 ++-
 src/preferences.c                 |  526 ++++------
 src/preferences.h                 |   78 +-
 src/setting.c                     |  208 ++--
 src/setting.h                     |   58 +-
 src/tab.c                         |  112 +--
 src/tab.h                         |   29 +-
 src/unixsocket.c                  |  361 ++++---
 src/unixsocket.h                  |   22 +-
 17 files changed, 2361 insertions(+), 1729 deletions(-)
 create mode 100644 data/lxterminal-preferences.glade

diff --git a/AUTHORS b/AUTHORS
index 975d44a..e976153 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -4,6 +4,7 @@ Alessandro Pellizzari <alex_shu at users.sourceforge.net>
 Micahel <metsger at users.sourceforge.net>
 Yotam Medini <yotam.medini at gmail.com>
 Liu Yubao <yubao.liu at gmail.com>
+Marty Jack <martyj19 at comcast.net>
 
 Icon:
 Taken from "nuoveXT 2" icon theme created by Alexandre Moore (saki)
diff --git a/configure.ac b/configure.ac
index d3942c2..120deea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -21,7 +21,7 @@ AC_ARG_ENABLE(man,
 )
 # Checks for libraries.
 PKG_CHECK_MODULES(glib, [glib-2.0 >= 2.6.0])
-PKG_CHECK_MODULES(gtk, [gtk+-2.0 >= 2.6.0])
+PKG_CHECK_MODULES(gtk, [gtk+-2.0 >= 2.12.0])
 PKG_CHECK_MODULES(vte, [vte >= 0.17.1])
 CFLAGS="$CFLAGS $glib_CFLAGS $gtk_CFLAGS $vte_CFLAGS"
 LIBS="$LIBS $glib_LIBS $gtk_LIBS $vte_LIBS"
diff --git a/data/Makefile.am b/data/Makefile.am
index a0eacd4..046918a 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,6 +1,20 @@
 default_config_DATA = lxterminal.conf
 default_configdir = $(datadir)/lxterminal
 
+uidir=$(datadir)/lxterminal
+ui_in_files= \
+	lxterminal-preferences.glade
+
+ui_DATA = $(ui_in_files:.glade=.ui)
+
+# Generate GtkBuilder UI files from Glade files
+%.ui: %.glade
+	cp $< $@
+	$(top_builddir)/src/xml-purge $@
+
+CLEANFILES = \
+        $(ui_DATA)
+
 lxterminal.desktop_in_files = lxterminal.desktop.in
 lxterminal.desktop.in_DATA = $(lxterminal.desktop_in_files:.desktop.in=.desktop)
 @INTLTOOL_DESKTOP_RULE@
@@ -13,4 +27,5 @@ EXTRA_DIST = \
 	lxterminal.conf.in \
 	$(lxterminal_images_DATA) \
 	$(lxterminal.desktop.in_DATA) \
+	$(ui_DATA) \
 	$(default_config_DATA)
diff --git a/data/lxterminal-preferences.glade b/data/lxterminal-preferences.glade
new file mode 100644
index 0000000..6b9ebaf
--- /dev/null
+++ b/data/lxterminal-preferences.glade
@@ -0,0 +1,512 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkListStore" id="liststore1">
+    <columns>
+      <!-- column-name gchararray1 -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Top</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Bottom</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Left</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Right</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="lxterminal_preferences">
+    <property name="border_width">5</property>
+    <property name="type_hint">normal</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkNotebook" id="notebook1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkTable" id="table1">
+                <property name="visible">True</property>
+                <property name="n_rows">8</property>
+                <property name="n_columns">2</property>
+                <property name="column_spacing">5</property>
+                <property name="row_spacing">3</property>
+                <child>
+                  <object class="GtkLabel" id="label4">
+                    <property name="visible">True</property>
+                    <property name="xalign">1</property>
+                    <property name="label" translatable="yes">Terminal font</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkFontButton" id="terminal_font">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label5">
+                    <property name="visible">True</property>
+                    <property name="xalign">1</property>
+                    <property name="label" translatable="yes">Background</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkColorButton" id="background_color">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_alpha">True</property>
+                    <property name="color">#000000000000</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkColorButton" id="foreground_color">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="color">#000000000000</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
[...4248 lines suppressed...]
-		int i;
-		gboolean setworkdir = FALSE;
-
-		gio = g_io_channel_unix_new(skfd);
-		g_io_channel_set_encoding(gio, NULL, NULL);
-
-		for (i=0;i<argc;i++) {
-			if (strncmp(argv[i],"--working-directory=", 20)==0) {
-				setworkdir = TRUE;
-			}
-
-			g_io_channel_write_chars(gio, g_shell_quote(*(argv+i)), -1, NULL, NULL);
-			if (i+1!=argc) {
-				g_io_channel_write_chars(gio, " ", -1, NULL, NULL);
-			} else {
-				if (!setworkdir) {
-					gchar *workdir = g_get_current_dir();
-					g_io_channel_write_chars(gio, " --working-directory=", -1, NULL, NULL);
-					g_io_channel_write_chars(gio, workdir, -1, NULL, NULL);
-					g_free(workdir);
-				}
-			}
-		}
-
-		g_io_channel_write_chars(gio, "\n", -1, NULL, NULL);
-		g_io_channel_flush(gio, NULL);
-		g_io_channel_unref(gio);
-		g_free(socket_path);
-		return FALSE;
-	}
+    /* Normally, LXTerminal uses one process to control all of its windows.
+     * The first process to start will create a Unix domain socket in /tmp.
+     * It will then bind and listen on this socket.
+     * The subsequent processes will connect to the controller that owns the Unix domain socket.
+     * They will pass their command line over the socket and exit.
+     *
+     * If for any reason both the connect and bind fail, we will fall back to having that
+     * process be standalone; it will not be either the controller or a user of the controller.
+     * This behavior was introduced in response to a problem report (2973537).
+     *
+     * This function returns TRUE if this process should keep running and FALSE if it should exit. */
+
+    /* Formulate the path for the Unix domain socket. */
+    gchar * socket_path = g_strdup_printf("/tmp/.lxterminal-socket%s-%s", gdk_get_display(), g_get_user_name());
+
+    /* Create socket. */
+    int fd = socket(PF_UNIX, SOCK_STREAM, 0);
+    if (fd < 0)
+    {
+        g_warning("Socket create failed: %s\n", g_strerror(errno));
+        g_free(socket_path);
+        return TRUE;
+    }
+
+    /* Initialize socket address for Unix domain socket. */
+    struct sockaddr_un sock_addr;
+    memset(&sock_addr, 0, sizeof(sock_addr));
+    sock_addr.sun_family = AF_UNIX;
+    snprintf(sock_addr.sun_path, sizeof(sock_addr.sun_path), "%s", socket_path);
+
+    /* Try to connect to an existing LXTerminal process. */
+    if (connect(fd, (struct sockaddr *) &sock_addr, sizeof(sock_addr)) < 0)
+    {
+        /* Connect failed.  We are the controller, unless something fails. */
+        unlink(socket_path);
+        g_free(socket_path);
+
+        /* Bind to socket. */
+        if (bind(fd, (struct sockaddr *) &sock_addr, sizeof(sock_addr)) < 0)
+        {
+            g_warning("Bind on socket failed: %s\n", g_strerror(errno));
+            close(fd);
+            return TRUE;
+        }
+
+        /* Listen on socket. */
+        if (listen(fd, 5) < 0)
+        {
+            g_warning("Listen on socket failed: %s\n", g_strerror(errno));
+            close(fd);
+            return TRUE;
+        }
+
+        /* Create a glib I/O channel. */
+        GIOChannel * gio = g_io_channel_unix_new(fd);
+        if (gio == NULL)
+        {
+            g_warning("Cannot create GIOChannel\n");
+            close(fd);
+            return TRUE;
+        }
+
+        /* Set up GIOChannel. */
+        g_io_channel_set_encoding(gio, NULL, NULL);
+        g_io_channel_set_buffered(gio, FALSE);
+        g_io_channel_set_close_on_unref(gio, TRUE);
+
+        /* Add I/O channel to the main event loop. */
+        if ( ! g_io_add_watch(gio, G_IO_IN | G_IO_HUP, (GIOFunc) lxterminal_socket_accept_client, lxtermwin))
+        {
+            g_warning("Cannot add watch on GIOChannel\n");
+            close(fd);
+            g_io_channel_unref(gio);
+            return TRUE;
+        }
+
+        /* Channel will automatically shut down when the watch returns FALSE. */
+        g_io_channel_set_close_on_unref(gio, TRUE);
+        g_io_channel_unref(gio);
+        return TRUE;
+    }
+    else
+    {
+        g_free(socket_path);
+
+        /* Create a glib I/O channel. */
+        GIOChannel * gio = g_io_channel_unix_new(fd);
+        g_io_channel_set_encoding(gio, NULL, NULL);
+
+        /* Reissue arguments to the socket.  Start with the name of the executable. */
+	g_io_channel_write_chars(gio, arguments->executable, -1, NULL, NULL);
+
+        /* --command or -e. */
+        if (arguments->command != NULL)
+        {
+            gchar * command = g_shell_quote(arguments->command);
+            gchar * command_argument = g_strdup_printf(" --command=%s", command);
+            g_io_channel_write_chars(gio, command_argument, -1, NULL, NULL);
+            g_free(command);
+            g_free(command_argument);
+        }
+
+        /* --geometry. */
+        if ((arguments->geometry_columns != 0) && (arguments->geometry_rows != 0))
+        {
+            gchar * geometry = g_strdup_printf(" --geometry=%dx%d", arguments->geometry_columns, arguments->geometry_rows);
+            g_io_channel_write_chars(gio, geometry, -1, NULL, NULL);
+            g_free(geometry);
+        }
+
+        /* -t, -T, or --title. */
+        if (arguments->title != NULL)
+        {
+            gchar * title = g_shell_quote(arguments->title);
+            gchar * title_argument = g_strdup_printf(" --title=%s", title);
+            g_io_channel_write_chars(gio, title_argument, -1, NULL, NULL);
+            g_free(title);
+            g_free(title_argument);
+        }
+
+        /* Always issue a --working-directory, either from the user's specification or the current directory. */
+        gchar * working_directory = ((arguments->working_directory != NULL) ? g_shell_quote(arguments->working_directory) : g_get_current_dir());
+        gchar * working_directory_argument = g_strdup_printf(" --working-directory=%s", working_directory);
+        g_io_channel_write_chars(gio, working_directory_argument, -1, NULL, NULL);
+        g_free(working_directory);
+        g_free(working_directory_argument);
+
+        /* Finish up the transaction on the Unix domain socket. */
+        g_io_channel_write_chars(gio, "\n", -1, NULL, NULL);
+        g_io_channel_flush(gio, NULL);
+        g_io_channel_unref(gio);
+        return FALSE;
+    }
 }
diff --git a/src/unixsocket.h b/src/unixsocket.h
index ac32e3f..db8f73c 100644
--- a/src/unixsocket.h
+++ b/src/unixsocket.h
@@ -1,7 +1,27 @@
+/**
+ *      Copyright 2008 Fred Chien <cfsghost at gmail.com>
+ *      Copyright (c) 2010 LxDE Developers, see the file AUTHORS for details.
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program 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 General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
+
 #ifndef LXTERMINAL_UNIXSOCKET_H
 #define LXTERMINAL_UNIXSOCKET_H
 
-gboolean lxterminal_socket_init(LXTermWindow *lxtermwin, int argc, char **argv);
+extern gboolean lxterminal_socket_initialize(LXTermWindow * lxtermwin, CommandArguments * arguments);
 
 #endif
 
-- 
1.7.0.1


lxterminal-0.1.7-Remove-unnecessary-redraw.patch:
 lxterminal.c |    4 ----
 1 file changed, 4 deletions(-)

--- NEW FILE lxterminal-0.1.7-Remove-unnecessary-redraw.patch ---
>From 59c7288f5aff2b86d0d474ec08bd9ec3755a77c9 Mon Sep 17 00:00:00 2001
From: Marty Jack <martyj at linux.local>
Date: Tue, 30 Mar 2010 10:52:51 -0400
Subject: [PATCH 17/60] Remove unnecessary redraw

---
 src/lxterminal.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/src/lxterminal.c b/src/lxterminal.c
index 6782dc7..61a7669 100644
--- a/src/lxterminal.c
+++ b/src/lxterminal.c
@@ -370,9 +370,6 @@ static void terminal_new_tab_activate_event(GtkAction * action, LXTerminal * ter
     term->index = gtk_notebook_get_n_pages(GTK_NOTEBOOK(terminal->notebook)) - 1;
     g_ptr_array_add(terminal->terms, term);
 
-    /* Redraw the terminal. */
-    gtk_widget_queue_draw(term->vte);
-
     /* Make the new terminal's tab current and, if we went from one to more than one tab,
      * turn the tab display on. */
     gtk_notebook_set_current_page(GTK_NOTEBOOK(term->parent->notebook), term->index);
-- 
1.7.0.1


lxterminal-0.1.7-XML-compressor.patch:
 xml-purge.c |  124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 123 insertions(+), 1 deletion(-)

--- NEW FILE lxterminal-0.1.7-XML-compressor.patch ---
>From 0b96cda2934fcfba2152d4ea487b4ef2097cea53 Mon Sep 17 00:00:00 2001
From: Marty Jack <martyj at linux.local>
Date: Mon, 29 Mar 2010 16:55:00 -0400
Subject: [PATCH 10/60] XML compressor

---
 src/xml-purge.c |  123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 0 deletions(-)
 create mode 100644 src/xml-purge.c

diff --git a/src/xml-purge.c b/src/xml-purge.c
new file mode 100644
index 0000000..39cdf4a
--- /dev/null
+++ b/src/xml-purge.c
@@ -0,0 +1,123 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#define IS_BLANK(ch)	strchr(" \t\n\r", ch)
+
+static void purge_file( const char* file )
+{
+	struct stat statbuf;
+	int fd;
+	char* buf, *pbuf;
+	int in_tag = 0, in_quote = 0;
+	FILE* fo;
+
+	fd = open( file, O_RDONLY );
+	if( fd == -1 )
+		return;
+
+	if( fstat( fd, &statbuf) == -1 )
+		return;
+
+	if( (buf = (char*)malloc( statbuf.st_size + 1 )) )
+	{
+		if( read( fd, buf, statbuf.st_size) == -1 )
+		{
+			free( buf );
+			return;
+		}
+		buf[ statbuf.st_size ] = '\0';
+	}
+	close( fd );
+
+	fo = fopen( file, "w" );
+	if( ! fo )
+		goto error;
+
+	for( pbuf = buf; *pbuf; ++pbuf )
+	{
+		if( in_tag > 0 )
+		{
+			if( in_quote )
+			{
+				if( *pbuf == '\"' )
+					in_quote = 0;
+			}
+			else
+			{
+				if( *pbuf == '\"' )
+					++in_quote;
+				if( ! in_quote && IS_BLANK(*pbuf) )	/* skip unnecessary blanks */
+				{
+					do{
+						++pbuf;
+					}while( IS_BLANK( *pbuf ) );
+
+					if( *pbuf != '>' )
+						fputc( ' ', fo );
+					--pbuf;
+					continue;
+				}
+			}
+			if( *pbuf == '>' )
+				--in_tag;
+			fputc( *pbuf, fo );
+		}
+		else
+		{
+			if( *pbuf == '<' )
+			{
+				if( 0 == strncmp( pbuf, "<!--", 4 ) )	/* skip comments */
+				{
+					pbuf = strstr( pbuf, "-->" );
+					if( ! pbuf )
+						goto error;
+					pbuf += 2;
+					continue;
+				}
+				++in_tag;
+				fputc( '<', fo );
+			}
+			else
+			{
+				char* tmp = pbuf;
+				while( *tmp && IS_BLANK( *tmp ) && *tmp != '<' )
+					++tmp;
+				if( *tmp == '<' )	/* all cdata are blank characters */
+					pbuf = tmp - 1;
+				else /* not blank, keep the cdata */
+				{
+					if( tmp == pbuf )
+						fputc( *pbuf, fo );
+					else
+					{
+						fwrite( pbuf, 1, tmp - pbuf, fo );
+						pbuf = tmp - 1;
+					}
+				}
+			}
+		}
+	}
+	
+	fclose( fo );
+
+error:
+	free( buf );
+}
+
+int main( int argc, char** argv )
+{
+	int i;
+	if( argc < 2 )
+		return 1;
+
+	for( i = 1; i < argc; ++i )
+		purge_file( argv[ i] );
+
+	return 0;
+}
-- 
1.7.0.1


lxterminal-0.1.7-update-translations.patch:
 POTFILES.in |    1 
 af.po       |  341 +++++++++++++++++++++++++--------------------
 ar.po       |  259 +++++++++++++++++++---------------
 bg.po       |  230 ++++++++++++++++---------------
 bn_IN.po    |  221 +++++++++++++++++------------
 ca.po       |  348 ++++++++++++++++++++++++++++------------------
 cs.po       |  268 ++++++++++++++++++++----------------
 da.po       |  259 +++++++++++++++++++---------------
 de.po       |  241 ++++++++++++++++++--------------
 el.po       |  259 +++++++++++++++++++---------------
 en_GB.po    |  375 ++++++++++++++++++++++++++++++++++++++++++++++++++
 es.po       |  267 ++++++++++++++++++++----------------
 es_VE.po    |  251 +++++++++++++++++++--------------
 et.po       |  340 ++++++++++++++++++++++-----------------------
 eu.po       |  201 +++++++++++++++------------
 fa.po       |  246 +++++++++++++++++++--------------
 fi.po       |  221 ++++++++++++++++-------------
 fo.po       |  394 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 fr.po       |  264 +++++++++++++++++++----------------
 frp.po      |  209 +++++++++++++++-------------
 gl.po       |  251 +++++++++++++++++++--------------
 he.po       |  260 +++++++++++++++++++----------------
 hr.po       |  280 ++++++++++++++++++++-----------------
 hu.po       |  248 +++++++++++++++++++--------------
 id.po       |  226 +++++++++++++++++-------------
 it.po       |  358 ++++++++++++++++++++++++++++--------------------
 ja.po       |  259 ++++++++++++++++++----------------
 ko.po       |  190 ++++++++++++++-----------
 lt.po       |  262 +++++++++++++++++++----------------
 ml.po       |  190 ++++++++++++++-----------
 ms.po       |  232 +++++++++++++++++--------------
 nb.po       |  235 ++++++++++++++++++-------------
 nl.po       |  256 +++++++++++++++++++---------------
 nn.po       |  248 +++++++++++++++++++--------------
 pl.po       |  252 +++++++++++++++++++--------------
 pl.po.orig  |  445 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ps.po       |  189 ++++++++++++++-----------
 pt.po       |  313 ++++++++++++++++++++----------------------
 pt_BR.po    |  264 +++++++++++++++++++----------------
 ru.po       |  267 ++++++++++++++++++++----------------
 sk.po       |  243 ++++++++++++++++++--------------
 sl.po       |  253 ++++++++++++++++++++--------------
 sr.po       |  226 +++++++++++++++++-------------
 sv.po       |  271 ++++++++++++++++++++----------------
 th.po       |  367 +++++++++++++++++++++++++++++++++++++++++++++++++
 tr.po       |  249 +++++++++++++++++++--------------
 uk.po       |  254 +++++++++++++++++++---------------
 ur.po       |  238 ++++++++++++++++++--------------
 ur_PK.po    |  238 ++++++++++++++++++--------------
 vi.po       |  264 +++++++++++++++++++----------------
 zh_CN.po    |  245 +++++++++++++++++++--------------
 zh_TW.po    |  247 +++++++++++++++++++--------------
 52 files changed, 8310 insertions(+), 5205 deletions(-)

--- NEW FILE lxterminal-0.1.7-update-translations.patch ---
diff -Nur lxterminal-0.1.7.orig/po/af.po lxterminal-0.1.7/po/af.po
--- lxterminal-0.1.7.orig/po/af.po	2010-03-01 22:03:01.000000000 +0100
+++ lxterminal-0.1.7/po/af.po	2010-05-27 14:08:22.000000000 +0200
@@ -3,346 +3,389 @@
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
 #
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-02-04 11:36+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: F Wolff <friedel at translate.org.za>\n"
+"POT-Creation-Date: 2010-03-30 00:22+0200\n"
+"PO-Revision-Date: 2010-03-24 16:24+0200\n"
+"Last-Translator: F <friedel at translate.org.za>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: af\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.1\n"
 
 #: ../src/encoding.c:124
 msgid "West European"
-msgstr ""
+msgstr "Wes-Europees"
 
 #: ../src/encoding.c:125
 msgid "East European"
-msgstr ""
+msgstr "Oos-Europees"
 
 #: ../src/encoding.c:126
 msgid "East Asian"
-msgstr ""
+msgstr "Oos-Asies"
 
 #: ../src/encoding.c:127
 msgid "SE & SW Asian"
-msgstr ""
+msgstr "SO- en SW-Asies"
 
 #: ../src/encoding.c:128
 msgid "Middle Eastern"
-msgstr ""
+msgstr "Middel-Oosters"
 
 #: ../src/encoding.c:129 ../src/encoding.c:151 ../src/encoding.c:152
 #: ../src/encoding.c:153 ../src/encoding.c:154 ../src/encoding.c:155
 msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
 
 #. { NULL, TERMINAL_ENCODING_CURRENT_LOCALE, NULL, N_("Current Locale") },
 #: ../src/encoding.c:135 ../src/encoding.c:148 ../src/encoding.c:172
 #: ../src/encoding.c:197 ../src/encoding.c:210
 msgid "Western"
-msgstr ""
+msgstr "Westers"
 
 #: ../src/encoding.c:136 ../src/encoding.c:173 ../src/encoding.c:187
 #: ../src/encoding.c:208
 msgid "Central European"
-msgstr ""
+msgstr "Sentraal-Europees"
 
 #: ../src/encoding.c:137
 msgid "South European"
-msgstr ""
+msgstr "Suid-Europees"
 
 #: ../src/encoding.c:138 ../src/encoding.c:146 ../src/encoding.c:215
 msgid "Baltic"
-msgstr ""
+msgstr "Balties"
 
 #: ../src/encoding.c:139 ../src/encoding.c:174 ../src/encoding.c:181
 #: ../src/encoding.c:183 ../src/encoding.c:189 ../src/encoding.c:209
 msgid "Cyrillic"
-msgstr ""
+msgstr "Cyrillies"
 
 #: ../src/encoding.c:140 ../src/encoding.c:177 ../src/encoding.c:186
 #: ../src/encoding.c:214
 msgid "Arabic"
-msgstr ""
+msgstr "Arabies"
 
 #: ../src/encoding.c:141 ../src/encoding.c:192 ../src/encoding.c:211
 msgid "Greek"
-msgstr ""
+msgstr "Grieks"
 
 #: ../src/encoding.c:142
 msgid "Hebrew Visual"
-msgstr ""
+msgstr "Hebreeus visueel"
 
 #: ../src/encoding.c:143 ../src/encoding.c:176 ../src/encoding.c:195
 #: ../src/encoding.c:213
 msgid "Hebrew"
-msgstr ""
+msgstr "Hebreeus"
 
 #: ../src/encoding.c:144 ../src/encoding.c:175 ../src/encoding.c:199
 #: ../src/encoding.c:212
 msgid "Turkish"
-msgstr ""
+msgstr "Turks"
 
 #: ../src/encoding.c:145
 msgid "Nordic"
-msgstr ""
+msgstr "Noors"
 
 #: ../src/encoding.c:147
 msgid "Celtic"
-msgstr ""
+msgstr "Kelties"
 
 #: ../src/encoding.c:149 ../src/encoding.c:198
 msgid "Romanian"
-msgstr ""
+msgstr "Roemeens"
 
 #: ../src/encoding.c:157
 msgid "Armenian"
-msgstr ""
+msgstr "Armeens"
 
 #: ../src/encoding.c:158 ../src/encoding.c:159 ../src/encoding.c:164
 msgid "Chinese Traditional"
-msgstr ""
+msgstr "Sjinees tradisioneel"
 
 #: ../src/encoding.c:160
 msgid "Cyrillic/Russian"
-msgstr ""
+msgstr "Cyrillies/Russies"
 
 #: ../src/encoding.c:162 ../src/encoding.c:179 ../src/encoding.c:202
 msgid "Japanese"
-msgstr ""
+msgstr "Japannees"
 
 #: ../src/encoding.c:163 ../src/encoding.c:180 ../src/encoding.c:182
 #: ../src/encoding.c:205
 msgid "Korean"
-msgstr ""
+msgstr "Koreaans"
 
 #: ../src/encoding.c:166 ../src/encoding.c:167 ../src/encoding.c:168
 #: ../src/encoding.c:170
 msgid "Chinese Simplified"
-msgstr ""
+msgstr "Sjinees vereenvoudig"
 
 #: ../src/encoding.c:169
 msgid "Georgian"
-msgstr ""
+msgstr "Georgies"
 
 #: ../src/encoding.c:184 ../src/encoding.c:200
 msgid "Cyrillic/Ukrainian"
-msgstr ""
+msgstr "Cyrillies/Oekraïens"
 
 #: ../src/encoding.c:188
 msgid "Croatian"
-msgstr ""
+msgstr "Kroaties"
 
 #: ../src/encoding.c:190
 msgid "Hindi"
-msgstr ""
+msgstr "Hindi"
 
 #: ../src/encoding.c:191
 msgid "Farsi"
-msgstr ""
+msgstr "Persies"
 
 #: ../src/encoding.c:193
 msgid "Gujarati"
-msgstr ""
+msgstr "Goedjarati"
 
 #: ../src/encoding.c:194
 msgid "Gurmukhi"
-msgstr ""
+msgstr "Goermukhi"
 
 #: ../src/encoding.c:196
 msgid "Icelandic"
-msgstr ""
[...18329 lines suppressed...]
+"Fred Chien <cfsghost at gmail.com>\n"
+"Ming-Ting Wei <medicalwei at gmail.com>"
 
-#: ../src/preferences.c:47
-msgid "Style"
-msgstr "樣式"
+#: ../src/lxterminal.c:592
+#, fuzzy
+msgid "Copyright (C) 2008-2010"
+msgstr "版權(C) 2008"
 
-#: ../src/preferences.c:54
-msgid "Display"
-msgstr "顯示"
+#: ../src/lxterminal.c:593
+msgid "Terminal emulator for LXDE project"
+msgstr "LXDE 專案的終端機模擬器"
 
-#: ../src/preferences.c:61
-msgid "Misc"
-msgstr "其他"
-
-#. terminal font
-#: ../src/preferences.c:82
-msgid "Terminal Font:"
-msgstr "終端機字型:"
+#: ../data/lxterminal-preferences.glade.h:1
+msgid "Advanced"
+msgstr ""
 
-#. Background color
-#: ../src/preferences.c:89
-msgid "Background:"
+#: ../data/lxterminal-preferences.glade.h:2
+msgid "Allow bold font"
+msgstr ""
+
+#: ../data/lxterminal-preferences.glade.h:3
+msgid "Audible bell"
+msgstr ""
+
+#: ../data/lxterminal-preferences.glade.h:4
+#, fuzzy
+msgid "Background"
 msgstr "背景色:"
 
-#. Foreground color
-#: ../src/preferences.c:98
-msgid "Foreground:"
-msgstr "前景色:"
+#: ../data/lxterminal-preferences.glade.h:5
+msgid "Block"
+msgstr ""
+
+#: ../data/lxterminal-preferences.glade.h:6
+msgid "Bottom"
+msgstr "底部"
 
-#. Cursor Blinks
-#: ../src/preferences.c:105
-msgid "Cursor Blinks:"
+#: ../data/lxterminal-preferences.glade.h:7
+#, fuzzy
+msgid "Cursor blink"
 msgstr "文字游標閃爍:"
 
-#. tab-panel position
-#: ../src/preferences.c:129
-msgid "Tab panel position:"
-msgstr "分頁顯示位置:"
+#: ../data/lxterminal-preferences.glade.h:8
+#, fuzzy
+msgid "Cursor style"
+msgstr "文字游標閃爍:"
 
-#: ../src/preferences.c:132
-msgid "Top"
-msgstr "頂部"
+#: ../data/lxterminal-preferences.glade.h:9
+msgid "Disable menu shortcut key (F10 by default)"
+msgstr ""
 
-#: ../src/preferences.c:133
-msgid "Bottom"
-msgstr "底部"
+#: ../data/lxterminal-preferences.glade.h:10
+msgid "Display"
+msgstr "顯示"
+
+#: ../data/lxterminal-preferences.glade.h:11
+#, fuzzy
+msgid "Foreground"
+msgstr "前景色:"
+
+#: ../data/lxterminal-preferences.glade.h:12
+msgid "Hide Close buttons"
+msgstr ""
+
+#: ../data/lxterminal-preferences.glade.h:13
+#, fuzzy
+msgid "Hide menu bar"
+msgstr "隱藏選單列:"
+
+#: ../data/lxterminal-preferences.glade.h:14
+#, fuzzy
+msgid "Hide scroll bar"
+msgstr "隱藏捲動列:"
 
-#: ../src/preferences.c:134
+#: ../data/lxterminal-preferences.glade.h:15
 msgid "Left"
 msgstr "左側"
 
-#: ../src/preferences.c:135
+#: ../data/lxterminal-preferences.glade.h:16
 msgid "Right"
 msgstr "右側"
 
-#. Scrollback buffer
-#: ../src/preferences.c:141
-msgid "Scrollback lines:"
+#: ../data/lxterminal-preferences.glade.h:17
+#, fuzzy
+msgid "Scrollback lines"
 msgstr "保留行數:"
 
-#. Hide scroll bar
-#: ../src/preferences.c:149
-msgid "Hide scroll bar:"
-msgstr "隱藏捲動列:"
+#: ../data/lxterminal-preferences.glade.h:18
+#, fuzzy
+msgid "Select-by-word characters"
+msgstr "選取字詞時會選取以下的字元:"
 
-#. Hide menu bar
-#: ../src/preferences.c:157
-msgid "Hide menu bar:"
-msgstr "隱藏選單列:"
+#: ../data/lxterminal-preferences.glade.h:19
+msgid "Style"
+msgstr "樣式"
 
-#. Select-by-word
-#: ../src/preferences.c:181
-msgid "Select-by-word characters:"
-msgstr "選取字詞時會選取以下的字元:"
+#: ../data/lxterminal-preferences.glade.h:20
+#, fuzzy
+msgid "Tab panel position"
+msgstr "分頁顯示位置:"
+
+#: ../data/lxterminal-preferences.glade.h:21
+#, fuzzy
+msgid "Terminal font"
+msgstr "終端機字型:"
+
+#: ../data/lxterminal-preferences.glade.h:22
+msgid "Top"
+msgstr "頂部"
+
+#: ../data/lxterminal-preferences.glade.h:23
+msgid "Underline"
+msgstr ""
+
+#: ../data/lxterminal-preferences.glade.h:24
+msgid "gtk-cancel"
+msgstr ""
 
-#. Disable F10 for menu
-#: ../src/preferences.c:189
-msgid "Disable F10 shortcut for menu:"
-msgstr "取消 F10 目錄快捷鍵:"
-
-#. create window
-#: ../src/preferences.c:378
-msgid "Preferences"
-msgstr "偏好設定"
+#: ../data/lxterminal-preferences.glade.h:25
+msgid "gtk-ok"
+msgstr ""
 
 #: ../data/lxterminal.desktop.in.h:2
 msgid "Terminal"
@@ -358,6 +390,15 @@
 msgid "Use the command line"
 msgstr "使用命令列"
 
+#~ msgid "Misc"
+#~ msgstr "其他"
+
+#~ msgid "Disable F10 shortcut for menu:"
+#~ msgstr "取消 F10 目錄快捷鍵:"
+
+#~ msgid "Preferences"
+#~ msgstr "偏好設定"
+
 #~ msgid "General"
 #~ msgstr "一般"
 


Index: lxterminal.spec
===================================================================
RCS file: /cvs/pkgs/rpms/lxterminal/devel/lxterminal.spec,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -r1.13 -r1.14
--- lxterminal.spec	3 Mar 2010 03:26:26 -0000	1.13
+++ lxterminal.spec	27 May 2010 12:31:54 -0000	1.14
@@ -1,6 +1,6 @@
 Name:           lxterminal
 Version:        0.1.7
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Desktop-independent VTE-based terminal emulator
 Summary(de):    Desktup-unabhängiger VTE-basierter Terminal Emulator
 
@@ -8,7 +8,19 @@ Group:          User Interface/Desktops
 License:        GPLv2+
 URL:            http://lxde.sourceforge.net/
 Source0:        http://downloads.sourceforge.net/sourceforge/lxde/%{name}-%{version}.tar.gz
-Patch0:         lxterminal-0.1.6-dsofix.patch
+# http://lxde.git.sourceforge.net/git/gitweb.cgi?p=lxde/lxterminal;a=commit;h=20d518389a6d2e2cac761d62890c8321397d292a
+# fixes https://bugzilla.redhat.com/show_bug.cgi?id=571591
+Patch0:         lxterminal-0.1.7-Fix-package-dependency-checks-Bug2933091.patch 
+# http://lxde.git.sourceforge.net/git/gitweb.cgi?p=lxde/lxterminal;a=commit;h=0b96cda2934fcfba2152d4ea487b4ef2097cea53
+Patch1:         lxterminal-0.1.7-Major-rework.patch
+# http://lxde.git.sourceforge.net/git/gitweb.cgi?p=lxde/lxterminal;a=commit;h=f3e089627e973c9436cd22510549b0943ecd93be
+Patch2:         lxterminal-0.1.7-XML-compressor.patch
+# http://lxde.git.sourceforge.net/git/gitweb.cgi?p=lxde/lxterminal;a=commit;h=92897593fccf0c1ad37670bf0cd3ce7ff04e1d97
+Patch3:         lxterminal-0.1.7-Fix-one-function-prototype.patch
+# http://lxde.git.sourceforge.net/git/gitweb.cgi?p=lxde/lxterminal;a=commit;h=59c7288f5aff2b86d0d474ec08bd9ec3755a77c9
+Patch4:         lxterminal-0.1.7-Remove-unnecessary-redraw.patch
+# put all translations from pootle and transifex into one big patch
+Patch5:         lxterminal-0.1.7-update-translations.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  gtk2-devel >= 2.6 vte-devel
@@ -28,10 +40,16 @@ erhöhen teilen sich alle Instanzen des 
 
 %prep
 %setup -q
-%patch0 -p1 -b .dsofix
-
+%patch0 -p1 -b .Fix-package-dependency-checks
+%patch1 -p1 -b .Major-rework
+%patch2 -p1 -b .XML-compressor
+%patch3 -p1 -b .Fix-one-function-prototype
+%patch4 -p1 -b .Remove-unnecessary-redraw
+%patch5 -p1 -b .updated-translations
 
 %build
+# because of patch 1
+autoreconf
 %configure
 make %{?_smp_mflags}
 
@@ -63,6 +81,9 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Thu May 27 2010 Christoph Wickert <cwickert at fedoraproject.org> - 0.1.7-2
+- Major code rework from git (fixes #571591 and 596358)
+
 * Wed Mar 03 2010 Christoph Wickert <cwickert at fedoraproject.org> - 0.1.7-1
 - Update to 0.1.7
 


--- lxterminal-0.1.6-dsofix.patch DELETED ---



More information about the scm-commits mailing list