/*ARGSUSED*/ void GotoPage(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals; char error_buf[BUFSIZ]; Arg arglist[1]; Boolean sensitive; if (*num_params != 1) { XtAppWarning(XtWidgetToApplicationContext(w), "Xman - GotoPage: This action routine requires one argument."); return; } man_globals = GetGlobals(w); if (man_globals->both_shown) { ChangeLabel(man_globals->label, man_globals->section_name[man_globals->current_directory]); return; } switch (params[0][0]) { case 'M': case 'm': XtSetArg(arglist[0], XtNsensitive, &sensitive); XtGetValues(man_globals->manpage_entry, arglist, ONE); if (sensitive) { ChangeLabel(man_globals->label,man_globals->manpage_title); XtUnmanageChild(man_globals->manpagewidgets.directory); XtManageChild(man_globals->manpagewidgets.manpage); man_globals->dir_shown = FALSE; } break; case 'D': case 'd': ChangeLabel(man_globals->label, man_globals->section_name[man_globals->current_directory]); XtUnmanageChild(man_globals->manpagewidgets.manpage); XtManageChild(man_globals->manpagewidgets.directory); man_globals->dir_shown = TRUE; break; default: sprintf(error_buf,"%s %s", "Xman - GotoPage: Unknown argument must be", "either Manpage or Directory."); XtAppWarning(XtWidgetToApplicationContext(w), error_buf); return; } }
static void ToggleBothShownState(ManpageGlobals * man_globals) { char * label_str; Arg arglist[1]; if (man_globals->both_shown == TRUE) { label_str = SHOW_BOTH; if (man_globals->dir_shown) XtUnmanageChild(man_globals->manpagewidgets.manpage); else XtUnmanageChild(man_globals->manpagewidgets.directory); } else { Widget manpage = man_globals->manpagewidgets.manpage; Widget dir = man_globals->manpagewidgets.directory; label_str = SHOW_ONE; XtSetArg(arglist[0], XtNpreferredPaneSize, resources.directory_height); XtSetValues(dir, arglist, (Cardinal) 1); if (!man_globals->dir_shown) { XtUnmanageChild(manpage); XtManageChild(dir); } XtManageChild(manpage); } man_globals->both_shown = !man_globals->both_shown; if (man_globals->dir_shown) ChangeLabel(man_globals->label, man_globals->section_name[man_globals->current_directory]); else ChangeLabel(man_globals->label, man_globals->manpage_title); XtSetArg(arglist[0], XtNlabel, label_str); XtSetValues(man_globals->both_screens_entry, arglist, ONE); /* if both are shown there is no need to switch between the two. */ XtSetArg(arglist[0], XtNsensitive, !man_globals->both_shown); XtSetValues(man_globals->manpage_entry, arglist, ONE); XtSetValues(man_globals->dir_entry, arglist, ONE); }
void AlphaBetaSwap(){ INT32T alpha, beta; for (alpha = 0; alpha < numLabels; alpha++) for (beta = alpha + 1; beta < numLabels; beta++){ ModifyMap(alpha, beta); Maxflow(); ChangeLabel(alpha, beta); } }
void PopupWarning(ManpageGlobals * man_globals, char * string) { int n; Arg wargs[3]; Dimension topX, topY; char buffer[BUFSIZ]; Boolean hasPosition; snprintf( buffer, sizeof(buffer), "Xman Warning: %s", string); hasPosition = FALSE; if (top) { n=0; XtSetArg(wargs[n], XtNx, &topX); n++; XtSetArg(wargs[n], XtNy, &topY); n++; XtGetValues(top, wargs, n); hasPosition = TRUE; } if (man_globals != NULL) ChangeLabel(man_globals->label, buffer); if (man_globals->label == NULL) { n=0; if (hasPosition) { XtSetArg(wargs[n], XtNx, topX); n++; XtSetArg(wargs[n], XtNy, topY); n++; } XtSetArg(wargs[n], XtNtransientFor, top); n++; warnShell = XtCreatePopupShell("warnShell", transientShellWidgetClass, initial_widget, wargs, n); XtSetArg(wargs[0], XtNlabel, buffer); warnDialog = XtCreateManagedWidget("warnDialog", dialogWidgetClass, warnShell, wargs, 1); XawDialogAddButton(warnDialog, "dismiss", PopdownWarning, (XtPointer)warnShell); XtRealizeWidget(warnShell); Popup(warnShell, XtGrabNone); } }
/*ARGSUSED*/ void DirPopupCallback(Widget w, XtPointer pointer, XtPointer junk) { ManpageGlobals * man_globals; MenuStruct * menu_struct; Widget parent; int number; int current_box; menu_struct = (MenuStruct *) pointer; man_globals = (ManpageGlobals *) menu_struct->data; number = menu_struct->number; current_box = man_globals->current_directory; /* We have used this guy, pop down the menu. */ if (number != current_box) { /* This is the only one that we know has a parent. */ parent = XtParent(man_globals->manpagewidgets.box[INITIAL_DIR]); MakeDirectoryBox(man_globals, parent, man_globals->manpagewidgets.box + number, number); XtUnmanageChild(man_globals->manpagewidgets.box[current_box]); XtManageChild(man_globals->manpagewidgets.box[number]); XawListUnhighlight(man_globals->manpagewidgets.box[current_box]); ChangeLabel(man_globals->label, man_globals->section_name[number]); man_globals->current_directory = number; } /* put up directory. */ if (!man_globals->both_shown) { XtUnmanageChild(man_globals->manpagewidgets.manpage); XtManageChild(man_globals->manpagewidgets.directory); } }
FILE * DoSearch(ManpageGlobals * man_globals, int type) { char cmdbuf[BUFSIZ], *mantmp, *manpath; char tmp[BUFSIZ], path[BUFSIZ]; char string_buf[BUFSIZ], cmp_str[BUFSIZ], error_buf[BUFSIZ]; char *search_string = SearchString(man_globals); FILE *file; int fd; int count; Boolean flag; if (search_string == NULL) return (NULL); /* If the string is empty or starts with a space then do not search */ if (streq(search_string, "")) { PopupWarning(man_globals, "Search string is empty."); return (NULL); } if (strlen(search_string) >= BUFSIZ) { PopupWarning(man_globals, "Search string too long."); return (NULL); } if (search_string[0] == ' ') { PopupWarning(man_globals, "First character cannot be a space."); return (NULL); } if (type == APROPOS) { char label[BUFSIZ]; strlcpy(tmp, MANTEMP, sizeof(tmp)); /* get a temp file. */ fd = mkstemp(tmp); if (fd < 0) { PopupWarning(man_globals, "Cant create temp file"); return NULL; } mantmp = tmp; manpath = getenv("MANPATH"); if (manpath == NULL || streq(manpath, "")) { #ifdef MANCONF if (!ReadManConfig(path)) #endif { strlcpy(path, SYSMANPATH, sizeof(path)); #ifdef LOCALMANPATH strlcat(path, ":", sizeof(path)); strlcat(path, LOCALMANPATH, sizeof(path)); #endif } } else { strlcpy(path, manpath, sizeof(path)); } snprintf(label, sizeof(label), "Results of apropos search on: %s", search_string); #ifdef NO_MANPATH_SUPPORT /* not quite correct, but the best I can do. */ snprintf(cmdbuf, sizeof(cmdbuf), APROPOS_FORMAT, search_string, mantmp); #else snprintf(cmdbuf, sizeof(cmdbuf), APROPOS_FORMAT, path, search_string, mantmp); #endif if (system(cmdbuf) != 0) { /* execute search. */ snprintf(error_buf, sizeof(error_buf), "Something went wrong trying to run %s\n", cmdbuf); PopupWarning(man_globals, error_buf); } if ((file = fdopen(fd, "r")) == NULL) PrintError("lost temp file? out of temp space?"); /* * Since we keep the FD open we can remove the file safely, this * will keep extra files out of /tmp. */ remove(mantmp); snprintf(string_buf, sizeof(string_buf), "%s: nothing appropriate", search_string); /* * Check first LOOKLINES lines for "nothing appropriate". */ count = 0; flag = FALSE; while ((fgets(cmp_str, BUFSIZ, file) != NULL) && (count < LOOKLINES)) { size_t len = strlen(cmp_str); if (len > 0 && cmp_str[len - 1] == '\n') /* strip off the '\n' */ cmp_str[len - 1] = '\0'; if (streq(cmp_str, string_buf)) { flag = TRUE; break; } count++; } /* * If the file is less than this number of lines then assume that there is * nothing appropriate found. This does not confuse the apropos filter. */ if (flag) { fclose(file); file = NULL; ChangeLabel(man_globals->label, string_buf); return (NULL); } snprintf(man_globals->manpage_title, sizeof(man_globals->manpage_title), "%s", label); ChangeLabel(man_globals->label, label); fseek(file, 0L, SEEK_SET); /* reset file to point at top. */ } else { /* MANUAL SEARCH */ file = DoManualSearch(man_globals, search_string); if (file == NULL) { snprintf(string_buf, sizeof(string_buf), "No manual entry for %s.", search_string); ChangeLabel(man_globals->label, string_buf); if (man_globals->label == NULL) PopupWarning(man_globals, string_buf); return (NULL); } } if (resources.clear_search_string) { Arg arglist[1]; Widget dialog; dialog = XtNameToWidget(man_globals->search_widget, DIALOG); if (dialog == NULL) PopupWarning(man_globals, "Could not clear the search string."); XtSetArg(arglist[0], XtNvalue, ""); XtSetValues(dialog, arglist, (Cardinal) 1); } return (file); }
void SetCurrentFolderName(Scrn scrn, char *foldername) { scrn->curfolder = foldername; ChangeLabel((Widget) scrn->folderlabel, foldername); }
void ShowCurrentResidualProgOK() { char tmpstr[TEMPSTRINGLEN]; FILE *file_ptr; ShowpageGlobals * show_globals; /* The psuedo global structure. */ char c; int filesize0 = 0, filesize1 = 0; file_ptr = fopen(TEMPFILENAME, "r"); if (file_ptr != NULL) { strcpy(tmpstr, "rm "); strcat(tmpstr, TEMPFILENAME); system(tmpstr); } fclose(file_ptr); strcpy(tmpstr, "(writelpp (residual-program) \""); strcat(tmpstr, TEMPFILENAME); strcat(tmpstr, "\")"); SendToSimilix(tmpstr); /* Make sure TEMPFILENAME can be generated completely. */ sleep(SIMUONE); do { file_ptr = fopen(TEMPFILENAME, "r"); if (file_ptr != NULL) { c = fgetc(file_ptr); filesize0 = 0; while (c != EOF) { filesize0 = filesize0 + 1; c = fgetc(file_ptr); } } fclose(file_ptr); sleep(SIMUTWO); file_ptr = fopen(TEMPFILENAME, "r"); if (file_ptr != NULL) { c = fgetc(file_ptr); filesize1 = 0; while (c != EOF) { filesize1 = filesize1 + 1; c = fgetc(file_ptr); } } fclose(file_ptr); } while ((filesize0 == 0) || (filesize1 == 0) || (filesize0 != filesize1)); file_ptr = fopen(TEMPFILENAME, "r"); if (file_ptr != NULL) { strcpy(tmpstr, "rm "); strcat(tmpstr, TEMPFILENAME); system(tmpstr); textglobals_context = XStringToContext(SIMUNAME); show_globals = InitPsuedoGlobals(); strcpy(tmpstr, TITLESHOW); CreateDisplayWidget(show_globals, tmpstr); ReadFile(show_globals, file_ptr); strcpy(show_globals->showpage_title, "The current residual program"); ChangeLabel(show_globals->label, show_globals->showpage_title); XtManageChild(show_globals->showpage); StartDisplay(show_globals); } fclose(file_ptr); }
/*ARGSUSED*/ void ShowVersion(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals = GetGlobals(w); ChangeLabel(man_globals->label, XMAN_VERSION); }
/*ARGSUSED*/ void Search(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals = GetGlobals(w); FILE * file = NULL; XtPopdown( XtParent(XtParent(w)) ); /* popdown the search widget */ if ( (*num_params < 1) || (*num_params > 2) ) { XtAppWarning(XtWidgetToApplicationContext(w), "Xman - Search: This action routine requires one or two arguments."); return; } switch(params[0][0]) { case 'a': case 'A': file = DoSearch(man_globals,APROPOS); break; case 'm': case 'M': file = DoSearch(man_globals,MANUAL); break; case 'c': case 'C': file = NULL; break; default: XtAppWarning(XtWidgetToApplicationContext(w), "Xman - Search: First parameter unknown."); file = NULL; break; } if ( *num_params == 2 ) switch (params[1][0]) { case 'O': case 'o': if (file != NULL) { Widget w; char * label; w = CreateManpage(file); man_pages_shown++; /* Put title into new manual page. */ label = man_globals->manpage_title; man_globals = GetGlobals(w); strcpy(man_globals->manpage_title, label); ChangeLabel(man_globals->label, label); } break; default: XtAppWarning(XtWidgetToApplicationContext(w), "Xman - Search: Second parameter unknown."); break; } else { PutUpManpage(man_globals, file); } if (file != NULL) fclose(file); }