]> git.pld-linux.org Git - packages/Eterm.git/blob - Eterm-deadkeys.patch
0eafab7257486abff883525f6f5f91fd7b95801b
[packages/Eterm.git] / Eterm-deadkeys.patch
1 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 */
This page took 0.053266 seconds and 2 git commands to generate.