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
);