Mercurial > hg > xemacs-beta
annotate src/gui-gtk.c @ 5891:a0e751d6c3ad
Import the #'clear-string API from GNU, use it in tls.c
src/ChangeLog addition:
2015-04-18 Aidan Kehoe <kehoea@parhasard.net>
* sequence.c (Fclear_string): New, API from GNU. Zero a string's
contents, making sure the text is not kept around even when the
string's data is reallocated because of a changed character
length.
* sequence.c (syms_of_sequence): Make it available to Lisp.
* lisp.h: Make it available to C code.
* tls.c (nss_pk11_password): Use it.
* tls.c (gnutls_pk11_password): Use it.
* tls.c (openssl_password): Use it.
tests/ChangeLog addition:
2015-04-18 Aidan Kehoe <kehoea@parhasard.net>
* automated/lisp-tests.el:
Test #'clear-string, just added. Unfortunately there's no way to
be certain from Lisp that the old password data has been erased
after realloc; it may be worth adding a test to tests.c, but
*we'll be reading memory we shouldn't be*, so that gives me pause.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 18 Apr 2015 23:00:14 +0100 |
parents | 56144c8593a8 |
children |
rev | line source |
---|---|
2168 | 1 /* General GUI code -- GTK-specific. (menubars, scrollbars, toolbars, dialogs) |
462 | 2 Copyright (C) 1995 Board of Trustees, University of Illinois. |
872 | 3 Copyright (C) 1995, 1996, 2002 Ben Wing. |
462 | 4 Copyright (C) 1995 Sun Microsystems, Inc. |
5 Copyright (C) 1998 Free Software Foundation, Inc. | |
6 | |
7 This file is part of XEmacs. | |
8 | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
2552
diff
changeset
|
9 XEmacs is free software: you can redistribute it and/or modify it |
462 | 10 under the terms of the GNU General Public License as published by the |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
2552
diff
changeset
|
11 Free Software Foundation, either version 3 of the License, or (at your |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
2552
diff
changeset
|
12 option) any later version. |
462 | 13 |
14 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
17 for more details. | |
18 | |
19 You should have received a copy of the GNU General Public License | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
2552
diff
changeset
|
20 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
462 | 21 |
22 /* Synched up with: Not in FSF. */ | |
23 | |
24 #include <config.h> | |
25 #include "lisp.h" | |
26 | |
27 #include "buffer.h" | |
872 | 28 #include "device-impl.h" |
462 | 29 #include "frame.h" |
30 #include "gui.h" | |
31 #include "opaque.h" | |
32 | |
872 | 33 #include "console-gtk-impl.h" |
34 | |
462 | 35 static GUI_ID gui_id_ctr = 0; |
36 | |
37 GUI_ID | |
38 new_gui_id (void) | |
39 { | |
40 return (++gui_id_ctr); | |
41 } | |
42 | |
43 /* This is like FRAME_MENUBAR_DATA (f), but contains an alist of | |
44 (id . popup-data) for GCPRO'ing the callbacks of the popup menus | |
45 and dialog boxes. */ | |
46 static Lisp_Object Vpopup_callbacks; | |
47 | |
48 void | |
49 gcpro_popup_callbacks (GUI_ID id, Lisp_Object data) | |
50 { | |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
51 Vpopup_callbacks = Fcons (Fcons (make_fixnum (id), data), Vpopup_callbacks); |
462 | 52 } |
53 | |
54 void | |
55 ungcpro_popup_callbacks (GUI_ID id) | |
56 { | |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
57 Lisp_Object lid = make_fixnum (id); |
2552 | 58 Lisp_Object this_callback = assq_no_quit (lid, Vpopup_callbacks); |
59 Vpopup_callbacks = delq_no_quit (this_callback, Vpopup_callbacks); | |
462 | 60 } |
61 | |
62 Lisp_Object | |
63 get_gcpro_popup_callbacks (GUI_ID id) | |
64 { | |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
65 Lisp_Object lid = make_fixnum (id); |
2552 | 66 Lisp_Object this_callback = assq_no_quit (lid, Vpopup_callbacks); |
462 | 67 |
2552 | 68 if (!NILP (this_callback)) |
462 | 69 { |
2552 | 70 return (XCDR (this_callback)); |
462 | 71 } |
72 return (Qnil); | |
73 } | |
74 | |
75 void | |
76 syms_of_gui_gtk (void) | |
77 { | |
78 #ifdef HAVE_POPUPS | |
563 | 79 DEFSYMBOL (Qmenu_no_selection_hook); |
462 | 80 #endif |
81 } | |
82 | |
83 void | |
84 vars_of_gui_gtk (void) | |
85 { | |
86 staticpro (&Vpopup_callbacks); | |
87 Vpopup_callbacks = Qnil; | |
88 #ifdef HAVE_POPUPS | |
89 popup_up_p = 0; | |
90 | |
91 #if 0 | |
92 /* This DEFVAR_LISP is just for the benefit of make-docfile. */ | |
93 /* #### misnamed */ | |
94 DEFVAR_LISP ("menu-no-selection-hook", &Vmenu_no_selection_hook /* | |
95 Function or functions to call when a menu or dialog box is dismissed | |
96 without a selection having been made. | |
97 */ ); | |
98 #endif | |
99 | |
100 Fset (Qmenu_no_selection_hook, Qnil); | |
101 #endif /* HAVE_POPUPS */ | |
102 } |