pod.c

来自「ftam等标准协议服务器和客户端的源代码。」· C语言 代码 · 共 2,398 行 · 第 1/5 页

C
2,398
字号
   "Requested data unavailable at present.\nClick on this window to continue");    break;  case duaerror:    dnseq = 0;    displayError      (outer, "Internal error. Sorry!\nClick on this window to continue");    break;  case security:    dnseq = 0;    displayError      (outer,       "You do not have the access privileges required\n\to make this request!\nClick on this window to continue");    break;  case namerror:    dnseq = 0;    displayError      (outer, "Invalid directory position!\nClick on this window to continue");    break;  case attributerror:    dnseq = 0;    displayError      (outer,        "Faulty data found in database!\nClick on this window to continue");    break;  case serviceerror:    dnseq = 0;    displayError      (outer, "Directory Service Error!\nClick on this window to continue");    break;  case updaterror:    dnseq = 0;    displayError      (outer, "Update Error!\nClick on this window to continue");    break;  case error_string_given:    dnseq = 0;    (void) sprintf(show_message, "%sClick on this window to continue",		   dir_error_message);    displayError(outer, show_message);    break;  }}void displayError(refto, mess)     Widget refto;     String mess;{  Arg args[MAXARGS];  int count;  Widget text;  text = XtNameToWidget(error_popup, "error_popup");  count = 0;  XtSetArg(args[count], XtNlabel, mess); count++;  XtSetValues(text, args, count);  PopupMessage(error_popup, refto, text, mess, XtGrabExclusive);  XBell(dpy, 100);}void displayStartupError(mess)     String mess;{  Arg args[MAXARGS];  int count;  Widget text;  text = XtNameToWidget(error_popup, "error_popup");  XtRemoveAllCallbacks(text, XtNcallback);  XtAddCallback(text, XtNcallback, Quit, (XtPointer) 0);  count = 0;  XtSetArg(args[count], XtNlabel, mess); count++;  XtSetValues(text, args, count);  PopupMessage(error_popup, (Widget) 0, text, mess, XtGrabExclusive);}/*ARGSUSED*/static void killError(w, closure, calldata)     Widget w;     XtPointer closure, calldata;{  kill_error();}static void kill_error(){  Arg args[MAXARGS];  int count;  Pixmap pixmap_resource;  Widget text = XtNameToWidget(error_popup, "error_popup");  XtPopdown(error_popup);  count = 0;  XtSetArg(args[count], XtNbackgroundPixmap, &pixmap_resource); count++;  XtGetValues(text, args, count);  count = 0;  XtSetArg(args[count], XtNbackgroundPixmap, XtUnspecifiedPixmap); count++;  XtSetValues(text, args, count);  if (pixmap_resource != XtUnspecifiedPixmap)     XFreePixmap(dpy, pixmap_resource);}void message(refto, mess)     Widget refto;     char *mess;{  Arg args[MAXARGS];  int count;  Widget text;  XEvent event;  text = XtNameToWidget(standby, "standby");    count = 0;  XtSetArg(args[count], XtNlabel, mess); count++;  XtSetValues(text, args, count);  PopupMessage(standby, refto, text, mess, XtGrabNonexclusive);  while (!XCheckTypedWindowEvent(dpy, XtWindow(text), Expose, &event));  XtDispatchEvent(&event);  XFlush(dpy);}void kill_message(){  Arg args[MAXARGS];  int count;  Pixmap pixmap_resource;  Widget text = XtNameToWidget(standby, "standby");  XtPopdown(standby);  count = 0;  XtSetArg(args[count], XtNbackgroundPixmap, &pixmap_resource); count++;  XtGetValues(text, args, count);  count = 0;  XtSetArg(args[count], XtNbackgroundPixmap, XtUnspecifiedPixmap); count++;  XtSetValues(text, args, count);  if (pixmap_resource != XtUnspecifiedPixmap)     XFreePixmap(dpy, pixmap_resource);} static void CreateHelpPopup(){  Widget popup_help, popup_help_button, popup_quit_button,   popup_help_form, popup_help_scrolwin;  Arg args[MAXARGS];  int count;  count = 0;  popup_help = XtCreatePopupShell("Pod Help Screen", topLevelShellWidgetClass,				  toplevel, args, count);    count = 0;  popup_help_form = XtCreateManagedWidget("popup_help_form", formWidgetClass,					  popup_help, args, count);  count = 0;  XtSetArg(args[count], XtNheight, Close_height); count++;  XtSetArg(args[count], XtNwidth, Close_width); count++;  popup_quit_button = XtCreateManagedWidget("popup_help_quit", 					    commandWidgetClass, 					    popup_help_form, args, count);  XtAddCallback(popup_quit_button, XtNcallback, QuitFromHelp, (XtPointer) 0);    count = 0;  XtSetArg(args[count], XtNheight, About_height); count++;  XtSetArg(args[count], XtNwidth, About_width); count++;  popup_help_button = XtCreateManagedWidget("popup_help_general",					    commandWidgetClass,                                            popup_help_form, args, count);  XtAddCallback(popup_help_button, XtNcallback, ShowVersion, (XtPointer) NULL);  count = 0;  popup_help_scrolwin = XtCreateManagedWidget("popup_help_scrolwin",					      viewportWidgetClass,					      popup_help_form, args, count);  count = 0;  (void) XtCreateManagedWidget("popup_help_text",					  asciiTextWidgetClass,					  popup_help_scrolwin, args, count);  XtRealizeWidget(popup_help);  CreateBackgroundPixmap(popup_help_button, About_bits, 			 About_width, About_height);  CreateBackgroundPixmap(popup_quit_button, Close_bits, 			 Close_width, Close_height);  if (DefaultDepthOfScreen(screen) == 1) {    CreateBackgroundPixmap(popup_help_form, gray_bits, 			   gray_width, gray_height);  }}/*ARGSUSED*/static void Help(w, closure, calldata)     Widget w;     XtPointer closure, calldata;{  Widget help_popup;  help_popup = XtNameToWidget(toplevel, "Pod Help Screen");  XtPopup(help_popup, XtGrabNone);  InsertHelp((Widget) 0, (XtPointer) "help", (XtPointer) 0);  XFlush(dpy);  help_up = TRUE;}/*ARGSUSED*/static void QuitFromHelp(w, closure, calldata)     Widget w;     XtPointer closure, calldata;{  Widget help_popup;   help_up = FALSE;  help_popup = XtNameToWidget(toplevel, "Pod Help Screen");  XtPopdown(help_popup);  HideVersion((Widget) NULL, (XEvent *) NULL, (String *) NULL, 0);}/*ARGSUSED*/static void InsertHelp(w, closure, calldata)     Widget w;     XtPointer closure, calldata;{  Widget text, scrolwin;  FILE *file;  char filename[STRINGLEN], help_buf[RESBUF];  int count;  Arg args[MAXARGS];  Dimension width, height;  XFontStruct *font;  scrolwin = XtNameToWidget(toplevel,		      "Pod Help Screen.popup_help_form.popup_help_scrolwin");  text = XtNameToWidget(scrolwin, "popup_help_text");  count = 0;  XtSetArg(args[count], XtNwidth, &width); count++;  XtGetValues(scrolwin, args, count);    (void) strcpy(filename, dua_help_dir);  (void) strcat(filename, (String) closure);  count = 0;  XtSetArg(args[count], XtNfont, &font); count++;  XtGetValues(text, args, count);  height = FONTHEIGHT(font);  count = 0;  XtSetArg(args[count], XtNheight, height); count++;  XtSetValues(text, args, count);  height = 0;  if (!(file = fopen(filename, "r"))) {    (void) strcpy(filename, "./Xd/podHelpdir/");    (void) strcat(filename, (String) closure);    if (!(file = fopen(filename, "r"))) {      (void) fprintf(stderr, "Helpfile '%s%s' not found\n", 		     dua_help_dir, closure);      return;    }  }  if (file) {    (void) strcpy(help_buf, "\0");    while (fgets(help_string, STRINGLEN - 1, file)) {      height += (FONTHEIGHT(font));      (void) strcat(help_buf, help_string);    }        (void) fclose(file);    count = 0;    XtSetArg(args[count], XtNstring, ""); count++;    XtSetValues(text, args, count);    count = 0;    XtSetArg(args[count], XtNwidth, width - 18); count++;    XtSetArg(args[count], XtNheight, height); count++;    XtSetArg(args[count], XtNstring, help_buf); count++;    XtSetValues(text, args, count);  }}static void CreateBackgroundPixmap(widget, bits, width, height)     Widget widget;     char bits[];     Cardinal width, height;{  Arg args[MAXARGS];  int count;  Pixmap bitmap;  bitmap = XCreatePixmapFromBitmapData(dpy,				       XtWindow(widget), bits,				       width, height,				       BlackPixelOfScreen(screen),				       WhitePixelOfScreen(screen),				       DefaultDepthOfScreen(screen));  count = 0;  XtSetArg(args[count], XtNheight, height); count++;  XtSetArg(args[count], XtNwidth, width); count++;  XtSetArg(args[count], XtNbackgroundPixmap, bitmap); count++;  XtSetArg(args[count], XtNresizable, FALSE); count++;  XtSetValues(widget, args, count);  XtAddCallback(widget, XtNdestroyCallback, 		FreeWidgetPixmap, (XtPointer) bitmap);}/*ARGSUSED*/static void ListDestroy(w, list_seq, calldata)     Widget w;     XtPointer calldata, list_seq;{  free_seq((str_seq) list_seq);}/*ARGSUSED*/static void destroyList(w, shellwidget, calldata)     Widget w;     XtPointer shellwidget, calldata;{  if (curr_list_popup == (Widget) shellwidget) curr_list_popup = 0;    XtPopdown((Widget) shellwidget);  XtUnmanageChild((Widget) shellwidget);  XtDestroyWidget((Widget) shellwidget);  XFlush(dpy);}/*ARGSUSED*/static void keepList(w, shellwidget, calldata)     Widget w;     XtPointer calldata, shellwidget;{  if (curr_list_popup == (Widget) shellwidget) curr_list_popup = 0;}static void CreateHistoryPopup(list_seq, mess)     str_seq list_seq;     char *mess;{  int count = 0;  Widget shell, swindow, HistoryForm, ListWindow, closeButton;  Arg args[MAXARGS];  count = 0;  shell = XtCreatePopupShell("Session History", topLevelShellWidgetClass,                             toplevel, args, 0);  count = 0;  HistoryForm = XtCreateManagedWidget("HistoryForm", formWidgetClass,				       shell, args, count);  count = 0;  XtSetArg(args[count], XtNheight, Close_height); count++;  XtSetArg(args[count], XtNwidth, Close_width); count++;  closeButton = XtCreateManagedWidget("closeButton",				     commandWidgetClass,                                     HistoryForm, args, count);    XtAddCallback(closeButton, XtNcallback,                (XtCallbackProc) popdownHistory, (XtPointer) shell);  count = 0;  XtSetArg(args[count], XtNlabel, "History Window"); count++;  (void) XtCreateManagedWidget("HistoryTitle", labelWidgetClass, 				HistoryForm, args, count);  count = 0;  swindow = XtCreateManagedWidget("ListScrolledWindow", viewportWidgetClass,				  HistoryForm, args, count);  count = 0;  ListWindow = XtCreateManagedWidget("ListWindow", formWidgetClass,				     swindow, args, count);  count = 0;  XtSetArg(args[count], XtNlabel, mess); count++;  (void) XtCreateManagedWidget("ListMessage", labelWidgetClass,                                HistoryForm, args, count);    XtAddCallback(ListWindow, XtNdestroyCallback, 		ListDestroy, (XtPointer) list_seq);  AddNewList(ListWindow, list_seq,  (unsigned) entry_number);  XtRealizeWidget(shell);  CreateBackgroundPixmap(closeButton, Close_bits, Close_width, Close_height);  if (DefaultDepthOfScreen(screen) == 1)    CreateBackgroundPixmap(HistoryForm, gray_bits, gray_width, gray_height);}/*ARGSUSED*/static void popupHistory(w, closure, calldata)     Widget w;     XtPointer closure, calldata;{  Widget history_popup;  history_popup = XtNameToWidget(toplevel, "Session History");  XtPopup(history_popup, XtGrabNone);  XRaiseWindow(dpy, XtWindow(history_popup));}/*ARGSUSED*/static void popdownHistory(w, closure, calldata)     Widget w;     XtPointer closure, calldata;{  Widget history_popup;  history_popup = XtNameToWidget(toplevel, "Session History");  XtPopdown(history_popup);}/*ARGSUSED*/static void ChangeHelp(w, event, params, num_params)     Widget w;     XEvent *event;     String *params;     Cardinal num_params;{  if ((help_up) && strcmp(params[0], curr_help)) {    InsertHelp((Widget) 0, (XtPointer) params[0], (XtPointer) 0);    (void) strcpy(curr_help, params[0]);  }}/*ARGSUSED*/static void buttonPress(w, event, params, num_params)     Widget w;     XEvent *event;     String *params;     Cardinal num_params;{  char *buttonName = params[0];  if (!strcmp(buttonName, "search"))     CreateBackgroundPixmap(w, SearchPress_bits, 			   SearchPress_width, SearchPress_height);  else if (!strcmp(buttonName, "help"))     CreateBackgroundPixmap(w, HelpPress_bits,			   HelpPress_width, HelpPress_height);  else if (!strcmp(buttonName, "quit"))    CreateBackgroundPixmap(w, QuitPress_bits,                           QuitPress_width, QuitPress_height);  else if (!strcmp(buttonName, "list"))    CreateBackgroundPixmap(w, ListPress_bits,                           ListPress_width, ListPress_height);  else if (!strcmp(buttonName, "history"))    CreateBackgroundPixmap(w, HistoryPress_bits,                           HistoryPres

⌨️ 快捷键说明

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