summaryrefslogtreecommitdiff
path: root/contrib/gnome-ssh-askpass.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2001-02-16 11:18:58 +1100
committerDamien Miller <djm@mindrot.org>2001-02-16 11:18:58 +1100
commitb5e85a5d943462e81a4649617e87b7a76c645c1e (patch)
treeafb171524930ff1ab1f2f1eb20b6e433b834d228 /contrib/gnome-ssh-askpass.c
parentc547bf1930702f185fb5b077d8cce0bfd243f68a (diff)
- (djm) Make gnome-ssh-askpass handle multi-line prompts. Patch from
Nalin Dahyabhai <nalin@redhat.com> - (djm) BSD license for gnome-ssh-askpass (was X11) - (djm) KNF on gnome-ssh-askpass
Diffstat (limited to 'contrib/gnome-ssh-askpass.c')
-rw-r--r--contrib/gnome-ssh-askpass.c95
1 files changed, 45 insertions, 50 deletions
diff --git a/contrib/gnome-ssh-askpass.c b/contrib/gnome-ssh-askpass.c
index 5b6f65e88..27e5ccaa1 100644
--- a/contrib/gnome-ssh-askpass.c
+++ b/contrib/gnome-ssh-askpass.c
@@ -1,46 +1,35 @@
1/* 1/*
2 Compile with: 2 * Copyright (c) 2000 Damien Miller. All rights reserved.
3 3 *
4 cc `gnome-config --cflags gnome gnomeui` \ 4 * Redistribution and use in source and binary forms, with or without
5 gnome-ssh-askpass.c -o gnome-ssh-askpass \ 5 * modification, are permitted provided that the following conditions
6 `gnome-config --libs gnome gnomeui` 6 * are met:
7 7 * 1. Redistributions of source code must retain the above copyright
8*/ 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
15 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
16 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
17 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */
9 24
10/* 25/*
11** 26 * Compile with:
12** GNOME ssh passphrase requestor 27 *
13** 28 * cc `gnome-config --cflags gnome gnomeui` \
14** Damien Miller <djm@ibs.com.au> 29 * gnome-ssh-askpass.c -o gnome-ssh-askpass \
15** 30 * `gnome-config --libs gnome gnomeui`
16** Copyright 1999 Internet Business Solutions 31 *
17** 32 */
18** Permission is hereby granted, free of charge, to any person
19** obtaining a copy of this software and associated documentation
20** files (the "Software"), to deal in the Software without
21** restriction, including without limitation the rights to use, copy,
22** modify, merge, publish, distribute, sublicense, and/or sell copies
23** of the Software, and to permit persons to whom the Software is
24** furnished to do so, subject to the following conditions:
25**
26** The above copyright notice and this permission notice shall be
27** included in all copies or substantial portions of the Software.
28**
29** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
30** KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
31** WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
32** AND NONINFRINGEMENT. IN NO EVENT SHALL DAMIEN MILLER OR INTERNET
33** BUSINESS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
35** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
36** OR OTHER DEALINGS IN THE SOFTWARE.
37**
38** Except as contained in this notice, the name of Internet Business
39** Solutions shall not be used in advertising or otherwise to promote
40** the sale, use or other dealings in this Software without prior
41** written authorization from Internet Business Solutions.
42**
43*/
44 33
45#include <stdlib.h> 34#include <stdlib.h>
46#include <stdio.h> 35#include <stdio.h>
@@ -67,20 +56,25 @@ void
67passphrase_dialog(char *message) 56passphrase_dialog(char *message)
68{ 57{
69 char *passphrase; 58 char *passphrase;
70 int result; 59 char **messages;
60 int result, i;
71 61
72 GtkWidget *dialog, *entry, *label; 62 GtkWidget *dialog, *entry, *label;
73 63
74 dialog = gnome_dialog_new("OpenSSH", GNOME_STOCK_BUTTON_OK, 64 dialog = gnome_dialog_new("OpenSSH", GNOME_STOCK_BUTTON_OK,
75 GNOME_STOCK_BUTTON_CANCEL, NULL); 65 GNOME_STOCK_BUTTON_CANCEL, NULL);
76 66
77 label = gtk_label_new(message); 67 messages = g_strsplit(message, "\\n", 0);
78 gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), label, FALSE, 68 if (messages)
79 FALSE, 0); 69 for(i = 0; messages[i]; i++) {
70 label = gtk_label_new(messages[i]);
71 gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox),
72 label, FALSE, FALSE, 0);
73 }
80 74
81 entry = gtk_entry_new(); 75 entry = gtk_entry_new();
82 gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), entry, FALSE, 76 gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), entry, FALSE,
83 FALSE, 0); 77 FALSE, 0);
84 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); 78 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
85 gtk_widget_grab_focus(entry); 79 gtk_widget_grab_focus(entry);
86 80
@@ -90,13 +84,14 @@ passphrase_dialog(char *message)
90 gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); 84 gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
91 gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, TRUE); 85 gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, TRUE);
92 gnome_dialog_close_hides(GNOME_DIALOG(dialog), TRUE); 86 gnome_dialog_close_hides(GNOME_DIALOG(dialog), TRUE);
93 gtk_container_set_border_width(GTK_CONTAINER(GNOME_DIALOG(dialog)->vbox), GNOME_PAD); 87 gtk_container_set_border_width(GTK_CONTAINER(GNOME_DIALOG(dialog)->vbox),
88 GNOME_PAD);
94 gtk_widget_show_all(dialog); 89 gtk_widget_show_all(dialog);
95 90
96 /* Grab focus */ 91 /* Grab focus */
97 XGrabServer(GDK_DISPLAY()); 92 XGrabServer(GDK_DISPLAY());
98 if (gdk_pointer_grab(dialog->window, TRUE, 0, 93 if (gdk_pointer_grab(dialog->window, TRUE, 0, NULL, NULL,
99 NULL, NULL, GDK_CURRENT_TIME)) 94 GDK_CURRENT_TIME))
100 goto nograb; 95 goto nograb;
101 if (gdk_keyboard_grab(dialog->window, FALSE, GDK_CURRENT_TIME)) 96 if (gdk_keyboard_grab(dialog->window, FALSE, GDK_CURRENT_TIME))
102 goto nograbkb; 97 goto nograbkb;