Annotation of /trunk/eterm/patches/eterm-0.9.3-deadkeys.patch
Parent Directory | Revision Log
Revision 144 -
(hide annotations)
(download)
Tue May 8 20:06:05 2007 UTC (17 years, 6 months ago) by niro
File size: 4673 byte(s)
Tue May 8 20:06:05 2007 UTC (17 years, 6 months ago) by niro
File size: 4673 byte(s)
-import
1 | niro | 144 | http://bugs.gentoo.org/91878 |
2 | |||
3 | Tue Mar 15 16:44:09 2005 Michael Jennings (mej) | ||
4 | |||
5 | Reverted part of a patch from Chris Schoeneman <crs23@bigfoot.com> | ||
6 | (changelog entry "Fri Jun 25 17:48:24 2004") which broke dead keys and | ||
7 | compose-key sequences. | ||
8 | |||
9 | Fixed error in saving of cut_chars attribute. | ||
10 | |||
11 | Index: src/misc.c | ||
12 | =================================================================== | ||
13 | RCS file: /cvsroot/enlightenment/eterm/Eterm/src/misc.c,v | ||
14 | retrieving revision 1.25 | ||
15 | retrieving revision 1.26 | ||
16 | diff -u -r1.25 -r1.26 | ||
17 | --- src/misc.c 11 Jan 2004 22:10:29 -0000 1.25 | ||
18 | +++ src/misc.c 15 Mar 2005 21:48:02 -0000 1.26 | ||
19 | @@ -223,6 +223,53 @@ | ||
20 | return (pnew - str); | ||
21 | } | ||
22 | |||
23 | +spif_charptr_t | ||
24 | +escape_string(spif_charptr_t str, spif_char_t quote, spif_int32_t maxlen) | ||
25 | +{ | ||
26 | + spif_charptr_t buff, s = str, pbuff; | ||
27 | + | ||
28 | + D_STRINGS(("escape_string(%s %c %ld)\n", (char *) str, quote, maxlen)); | ||
29 | + if (! quote) { | ||
30 | + quote = '\"'; | ||
31 | + } | ||
32 | + | ||
33 | + /* The escaped string will be at most twice the length of the original. */ | ||
34 | + buff = SPIF_CAST(charptr) MALLOC(strlen(SPIF_CAST_PTR(char) str) * 2 + 1); | ||
35 | + | ||
36 | + /* Copy and escape the string from str into buff. */ | ||
37 | + for (pbuff = buff; (*s); s++, pbuff++) { | ||
38 | + if (*s == quote) { | ||
39 | + D_STRINGS(("Double-escaping \'%c\' at position %d\n", *s, s - str)); | ||
40 | + *pbuff = '\\'; | ||
41 | + pbuff++; | ||
42 | + *pbuff = '\\'; | ||
43 | + pbuff++; | ||
44 | + } else { | ||
45 | + if (quote == '\"') { | ||
46 | + if ((*s == '\\') || (*s == '`')) { | ||
47 | + D_STRINGS(("Escaping \'%c\' at position %d\n", *s, s - str)); | ||
48 | + *pbuff = '\\'; | ||
49 | + pbuff++; | ||
50 | + } | ||
51 | + } | ||
52 | + } | ||
53 | + D_STRINGS(("Copying \'%c\' at position %d\n", *s, s - str)); | ||
54 | + *pbuff = *s; | ||
55 | + } | ||
56 | + *pbuff = 0; | ||
57 | + | ||
58 | + if (maxlen) { | ||
59 | + /* Given maxlen, we know "str" can hold at least "maxlen" chars. */ | ||
60 | + if (!spiftool_safe_strncpy(str, buff, maxlen)) { | ||
61 | + str[maxlen] = 0; | ||
62 | + } | ||
63 | + FREE(buff); | ||
64 | + return str; | ||
65 | + } else { | ||
66 | + return buff; | ||
67 | + } | ||
68 | +} | ||
69 | + | ||
70 | char * | ||
71 | safe_print_string(const char *str, unsigned long len) | ||
72 | { | ||
73 | Index: src/misc.h | ||
74 | =================================================================== | ||
75 | RCS file: /cvsroot/enlightenment/eterm/Eterm/src/misc.h,v | ||
76 | retrieving revision 1.15 | ||
77 | retrieving revision 1.16 | ||
78 | diff -u -r1.15 -r1.16 | ||
79 | --- src/misc.h 11 Jan 2004 22:10:29 -0000 1.15 | ||
80 | +++ src/misc.h 15 Mar 2005 21:48:02 -0000 1.16 | ||
81 | @@ -40,6 +40,7 @@ | ||
82 | extern unsigned long str_leading_match(register const char *, register const char *); | ||
83 | extern char *str_trim(char *str); | ||
84 | extern int parse_escaped_string(char *str); | ||
85 | +extern spif_charptr_t escape_string(spif_charptr_t str, spif_char_t quote, spif_int32_t maxlen); | ||
86 | extern char *safe_print_string(const char *buff, unsigned long len); | ||
87 | extern unsigned long add_carriage_returns(unsigned char *buff, unsigned long cnt); | ||
88 | extern unsigned char mkdirhier(const char *); | ||
89 | Index: src/options.c | ||
90 | =================================================================== | ||
91 | RCS file: /cvsroot/enlightenment/eterm/Eterm/src/options.c,v | ||
92 | retrieving revision 1.135 | ||
93 | retrieving revision 1.136 | ||
94 | diff -u -r1.135 -r1.136 | ||
95 | --- src/options.c 23 Feb 2005 20:38:19 -0000 1.135 | ||
96 | +++ src/options.c 15 Mar 2005 21:48:02 -0000 1.136 | ||
97 | @@ -3850,7 +3863,10 @@ | ||
98 | } | ||
99 | #ifdef CUTCHAR_OPTION | ||
100 | if (rs_cutchars) { | ||
101 | - fprintf(fp, " cut_chars '%s'\n", rs_cutchars); | ||
102 | + spif_charptr_t cut_chars_escaped; | ||
103 | + | ||
104 | + cut_chars_escaped = escape_string(SPIF_CAST(charptr) rs_cutchars, '\"', 0); | ||
105 | + fprintf(fp, " cut_chars \"%s\"\n", (char *) cut_chars_escaped); | ||
106 | } | ||
107 | #endif | ||
108 | fprintf(fp, "end misc\n\n"); | ||
109 | Index: src/windows.c | ||
110 | =================================================================== | ||
111 | RCS file: /cvsroot/enlightenment/eterm/Eterm/src/windows.c,v | ||
112 | retrieving revision 1.68 | ||
113 | retrieving revision 1.69 | ||
114 | diff -u -r1.68 -r1.69 | ||
115 | --- src/windows.c 14 Dec 2004 23:24:33 -0000 1.68 | ||
116 | +++ src/windows.c 15 Mar 2005 21:48:12 -0000 1.69 | ||
117 | @@ -473,9 +473,7 @@ | ||
118 | XClearWindow(Xdisplay, TermWin.vt); | ||
119 | } | ||
120 | XDefineCursor(Xdisplay, TermWin.vt, TermWin_cursor); | ||
121 | - TermWin.mask = (KeyPressMask | EnterWindowMask | LeaveWindowMask | ExposureMask | ||
122 | - | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | ||
123 | - | Button2MotionMask | Button3MotionMask); | ||
124 | + TermWin.mask = (EnterWindowMask | LeaveWindowMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button2MotionMask | Button3MotionMask); | ||
125 | XSelectInput(Xdisplay, TermWin.vt, TermWin.mask); | ||
126 | |||
127 | /* If the user wants a specific desktop, tell the WM that */ |