rpms/gtkterm/F-7 gtkterm-0.99.5-crlf.patch, NONE, 1.1 gtkterm.desktop, 1.2, 1.3 gtkterm.spec, 1.10, 1.11
Hans de Goede (jwrdegoede)
fedora-extras-commits at redhat.com
Sat Jun 16 19:49:29 UTC 2007
Author: jwrdegoede
Update of /cvs/extras/rpms/gtkterm/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv25152
Modified Files:
gtkterm.desktop gtkterm.spec
Added Files:
gtkterm-0.99.5-crlf.patch
Log Message:
* Sat Jun 16 2007 Hans de Goede <j.w.r.degoede at hhs.nl> 0.99.5-4
- Fix various CR LF handling issues (bug 244182)
gtkterm-0.99.5-crlf.patch:
--- NEW FILE gtkterm-0.99.5-crlf.patch ---
--- gtkterm-0.99.5/src/buffer.c.crlf 2005-09-22 21:33:44.000000000 +0200
+++ gtkterm-0.99.5/src/buffer.c 2007-06-16 13:10:41.000000000 +0200
@@ -23,11 +23,12 @@
#include "buffer.h"
#include "gettext.h"
#include "i18n.h"
+#include "serie.h"
static char *buffer = NULL;
static char *current_buffer;
static unsigned int pointer;
-
+static int cr_received = 0;
char overlapped;
void (*write_func)(char *, unsigned int) = NULL;
@@ -54,39 +55,56 @@
{
char *characters;
- int pos;
- GString *buffer_tmp;
- gchar *in_buffer;
-
- buffer_tmp = g_string_new(chars);
-
/* If the auto CR LF mode on, read the buffer to add \r before \n */
if(crlf_auto)
{
- in_buffer=buffer_tmp->str;
+ /* BUFFER_RECEPTION*2 for worst case scenario, all \n or \r chars */
+ char out_buffer[BUFFER_RECEPTION*2];
+ int i, out_size = 0;
- in_buffer += size;
- for(pos=size; pos>0; pos--)
- {
- in_buffer--;
-
- if(*in_buffer=='\n' && *(in_buffer-1) != '\r')
- {
- g_string_insert_c(buffer_tmp, pos-1, '\r');
- size += 1;
- }
-
- if(*in_buffer=='\r' && *(in_buffer+1) != '\n')
- {
- g_string_insert_c(buffer_tmp, pos, '\n');
- size += 1;
- }
- }
+ for (i=0; i<size; i++)
+ {
+ if (chars[i] == '\r')
+ {
+ /* If the previous character was a CR too, insert a newline */
+ if (cr_received)
+ {
+ out_buffer[out_size] = '\n';
+ out_size++;
+ }
+ cr_received = 1;
+ }
+ else
+ {
+ if (chars[i] == '\n')
+ {
+ /* If we get a newline without a CR first, insert a CR */
+ if (!cr_received)
+ {
+ out_buffer[out_size] = '\r';
+ out_size++;
+ }
+ }
+ else
+ {
+ /* If we receive a normal char, and the previous one was a
+ CR insert a newline */
+ if (cr_received)
+ {
+ out_buffer[out_size] = '\n';
+ out_size++;
+ }
+ }
+ cr_received = 0;
+ }
+ out_buffer[out_size] = chars[i];
+ out_size++;
+ }
+ chars = out_buffer;
+ size = out_size;
}
- chars = buffer_tmp->str;
-
if(buffer == NULL)
{
i18n_printf(_("ERROR : Buffer is not initialized !\n"));
@@ -157,6 +175,7 @@
memset(buffer, 0, BUFFER_SIZE);
current_buffer = buffer;
pointer = 0;
+ cr_received = 0;
}
void set_clear_func(void (*func)(void))
--- gtkterm-0.99.5/src/widgets.c.crlf 2005-09-22 22:13:00.000000000 +0200
+++ gtkterm-0.99.5/src/widgets.c 2007-06-16 13:10:26.000000000 +0200
@@ -438,30 +438,7 @@
void put_text(gchar *string, guint size)
{
- int pos;
- GString *buffer_tmp;
- gchar *in_buffer;
-
- buffer_tmp = g_string_new(string);
- in_buffer=buffer_tmp->str;
-
- in_buffer += size;
- for(pos=size; pos>0; pos--)
- {
- in_buffer--;
- if(*in_buffer=='\r' && *(in_buffer+1) != '\n')
- {
- g_string_insert_c(buffer_tmp, pos, '\n');
- size += 1;
- }
- if(*in_buffer=='\n' && *(in_buffer-1) != '\r')
- {
- g_string_insert_c(buffer_tmp, pos-1, '\r');
- size += 1;
- }
- }
-
- vte_terminal_feed(VTE_TERMINAL(display), buffer_tmp->str, size);
+ vte_terminal_feed(VTE_TERMINAL(display), string, size);
}
gint send_serial(gchar *string, gint len)
--- gtkterm-0.99.5/src/serie.c.crlf 2005-09-22 21:49:38.000000000 +0200
+++ gtkterm-0.99.5/src/serie.c 2007-06-16 13:10:26.000000000 +0200
@@ -111,8 +111,8 @@
int Send_chars(char *string, int length)
{
- char *buffer, *start_buffer;
- int i, size_written, buf_length;
+ char *buffer /*, *start_buffer */;
+/* int i, size_written, buf_length; */
int bytes_written = 0;
/* Normally it never happens, but it is better not to segfault ;) */
@@ -120,8 +120,11 @@
return 0;
buffer=string;
+
+ /* HDG <j.w.r.degoede at hhs.nl> this is non sense, when sending enter it
+ should be just '\r' and not "\r\n", disabling */
- if(config.crlfauto)
+/* if(config.crlfauto)
{
if(length == 1)
{
@@ -184,7 +187,7 @@
bytes_written += write(serial_port_fd, "\n", 1);
}
}
- else
+ else */
{
bytes_written = write(serial_port_fd, buffer, length);
}
Index: gtkterm.desktop
===================================================================
RCS file: /cvs/extras/rpms/gtkterm/F-7/gtkterm.desktop,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- gtkterm.desktop 31 Mar 2006 20:44:46 -0000 1.2
+++ gtkterm.desktop 16 Jun 2007 19:48:54 -0000 1.3
@@ -8,5 +8,4 @@
Terminal=false
StartupNotify=false
Type=Application
-Categories=Application;Utility;
-Version=0.99.5
+Categories=Utility;
Index: gtkterm.spec
===================================================================
RCS file: /cvs/extras/rpms/gtkterm/F-7/gtkterm.spec,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- gtkterm.spec 28 Aug 2006 11:34:55 -0000 1.10
+++ gtkterm.spec 16 Jun 2007 19:48:54 -0000 1.11
@@ -1,6 +1,6 @@
Name: gtkterm
Version: 0.99.5
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Serial port terminal
Group: Applications/Communications
License: GPL
@@ -9,9 +9,11 @@
Source1: gtkterm.desktop
Source2: gtkterm.png
Patch0: gtkterm-0.99.5-fixes.patch
+Patch1: gtkterm-0.99.5-crlf.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gtk2-devel gettext bison desktop-file-utils vte-devel
BuildRequires: zlib-devel ncurses-devel
+Requires: hicolor-icon-theme
%description
Simple GUI terminal used to communicate with the serial port.
@@ -21,6 +23,7 @@
%prep
%setup -q
%patch0 -p1
+%patch1 -p1 -z .crlf
%build
@@ -36,7 +39,6 @@
mkdir $RPM_BUILD_ROOT%{_datadir}/applications
desktop-file-install --vendor fedora \
--dir $RPM_BUILD_ROOT%{_datadir}/applications \
- --add-category X-Fedora \
%{SOURCE1}
mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps
install -p -m 644 %{SOURCE2} \
@@ -51,15 +53,11 @@
%post
touch --no-create %{_datadir}/icons/hicolor || :
-if [ -x %{_bindir}/gtk-update-icon-cache ]; then
- %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
-fi
+%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
%postun
touch --no-create %{_datadir}/icons/hicolor || :
-if [ -x %{_bindir}/gtk-update-icon-cache ]; then
- %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
-fi
+%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
%files -f %{name}.lang
@@ -72,6 +70,9 @@
%changelog
+* Sat Jun 16 2007 Hans de Goede <j.w.r.degoede at hhs.nl> 0.99.5-4
+- Fix various CR LF handling issues (bug 244182)
+
* Mon Aug 28 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 0.99.5-3
- FE6 Rebuild
More information about the fedora-extras-commits
mailing list