⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pppgetpass.gtk.c

📁 linux 下的ppp源码,难得难得,大家快来下吧
💻 C
字号:
#include <glib.h>#include <gdk/gdk.h>#include <gtk/gtkwindow.h>#include <gtk/gtkmain.h>#include <gtk/gtkbutton.h>#include <gtk/gtkvbox.h>#include <gtk/gtklabel.h>#include <gtk/gtkentry.h>#include <gtk/gtksignal.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <syslog.h>int outfd;int err;static void okpressed(void *widget, void *clientdata){  GtkWidget *answer=clientdata;  gchar *pass;  int passlen;  ssize_t wrote;  (void)widget;  pass=gtk_entry_get_text(GTK_ENTRY(answer));  passlen=strlen(pass);  if(!passlen)    return;  if((wrote=write(outfd, pass, passlen))!=passlen) {    if(wrote<0)      syslog(LOG_ERR, "write error on outpipe: %m");    else      syslog(LOG_ERR, "short write on outpipe");    err=1;  }  gtk_main_quit();}int main(int argc, char **argv){  GtkWidget *mainwindow, *vbox, *question, *answer, *ok;  char buf[1024];  gtk_init(&argc, &argv);  openlog(argv[0], LOG_PID, LOG_DAEMON);  if(argc!=4) {    syslog(LOG_WARNING, "Usage error");    return 1;  }  outfd=atoi(argv[3]);  mainwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);  gtk_window_set_title(GTK_WINDOW(mainwindow), "pppgetpass");  gtk_signal_connect(GTK_OBJECT(mainwindow), "destroy",                     GTK_SIGNAL_FUNC(gtk_main_quit), 0);  vbox=gtk_vbox_new(FALSE, 5);  gtk_container_add(GTK_CONTAINER(mainwindow), vbox);  gtk_widget_show(vbox);  if(argv[1][0] && argv[2][0])    snprintf(buf, sizeof buf, "Password for PPP client %s on server %s: ", argv[1], argv[2]);  else if(argv[1][0] && !argv[2][0])    snprintf(buf, sizeof buf, "Password for PPP client %s: ", argv[1]);  else if(!argv[1][0] && argv[2][0])    snprintf(buf, sizeof buf, "Password for PPP on server %s: ", argv[2]);  else    snprintf(buf, sizeof buf, "Enter PPP password: ");  question=gtk_label_new(buf);  gtk_box_pack_start(GTK_BOX(vbox), question, FALSE, TRUE, 0);  gtk_widget_show(question);  answer=gtk_entry_new();  gtk_entry_set_visibility(GTK_ENTRY(answer), 0);  gtk_box_pack_start(GTK_BOX(vbox), answer, FALSE, TRUE, 0);  gtk_widget_show(answer);  ok=gtk_button_new_with_label("OK");  gtk_box_pack_start(GTK_BOX(vbox), ok, FALSE, TRUE, 0);  gtk_signal_connect(GTK_OBJECT(ok), "clicked",                     GTK_SIGNAL_FUNC(okpressed), answer);  gtk_widget_show(ok);  gtk_widget_show(mainwindow);  gtk_main();  return err;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -