3 #include <gtk/gtkwindow.h>
4 #include <gtk/gtkmain.h>
5 #include <gtk/gtkbutton.h>
6 #include <gtk/gtkvbox.h>
7 #include <gtk/gtklabel.h>
8 #include <gtk/gtkentry.h>
9 #include <gtk/gtksignal.h>
20 static void okpressed(void *widget, void *clientdata)
22 GtkWidget *answer=clientdata;
28 pass=gtk_entry_get_text(GTK_ENTRY(answer));
34 if((wrote=write(outfd, pass, passlen))!=passlen) {
36 syslog(LOG_ERR, "write error on outpipe: %m");
38 syslog(LOG_ERR, "short write on outpipe");
44 int main(int argc, char **argv)
46 GtkWidget *mainwindow, *vbox, *question, *answer, *ok;
48 gtk_init(&argc, &argv);
50 openlog(argv[0], LOG_PID, LOG_DAEMON);
52 syslog(LOG_WARNING, "Usage error");
56 mainwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);
57 gtk_window_set_title(GTK_WINDOW(mainwindow), "pppgetpass");
58 gtk_signal_connect(GTK_OBJECT(mainwindow), "destroy",
59 GTK_SIGNAL_FUNC(gtk_main_quit), 0);
61 vbox=gtk_vbox_new(FALSE, 5);
62 gtk_container_add(GTK_CONTAINER(mainwindow), vbox);
63 gtk_widget_show(vbox);
65 if(argv[1][0] && argv[2][0])
66 snprintf(buf, sizeof buf, "Password for PPP client %s on server %s: ", argv[1], argv[2]);
67 else if(argv[1][0] && !argv[2][0])
68 snprintf(buf, sizeof buf, "Password for PPP client %s: ", argv[1]);
69 else if(!argv[1][0] && argv[2][0])
70 snprintf(buf, sizeof buf, "Password for PPP on server %s: ", argv[2]);
72 snprintf(buf, sizeof buf, "Enter PPP password: ");
73 question=gtk_label_new(buf);
74 gtk_box_pack_start(GTK_BOX(vbox), question, FALSE, TRUE, 0);
75 gtk_widget_show(question);
77 answer=gtk_entry_new();
78 gtk_entry_set_visibility(GTK_ENTRY(answer), 0);
79 gtk_box_pack_start(GTK_BOX(vbox), answer, FALSE, TRUE, 0);
80 gtk_widget_show(answer);
82 ok=gtk_button_new_with_label("OK");
83 gtk_box_pack_start(GTK_BOX(vbox), ok, FALSE, TRUE, 0);
84 gtk_signal_connect(GTK_OBJECT(ok), "clicked",
85 GTK_SIGNAL_FUNC(okpressed), answer);
88 gtk_widget_show(mainwindow);