v02i082: X11 Release 3, Patch7
Mike Wexler
mikew at wyse.wyse.com
Tue Jan 10 11:42:21 AEST 1989
Submitted-by: jim at expo.lcs.mit.edu (Jim Fulton)
Posting-number: Volume 2, Issue 82
Archive-name: x11.3/patch7
Created on Monday, 9 January 1989
PART 3 of 3
Fixes 5, 6, and 7 are part of a single update to the xman program. Together
they affect the following files:
clients/xman/CHANGES
clients/xman/README
clients/xman/ScrollByL.c
clients/xman/TODO
clients/xman/buttons.c
clients/xman/defs.h
clients/xman/globals.c
clients/xman/globals.h
clients/xman/handler.c
clients/xman/help.c
clients/xman/main.c
clients/xman/man.c
clients/xman/man.h
clients/xman/menu.c
clients/xman/misc.c
clients/xman/pages.c
clients/xman/search.c
clients/xman/tkfuncs.c
clients/xman/version.h
clients/xman/xman.help
clients/xman/xman.man
To apply these fixes, concatenate all three files and pipe them to patch -p0
from the top of your X sources:
% cat fix5 fix6 fix7 | patch -p0
The following is fix7 (you will also need fix5 and fix6):
*** /tmp/,RCSt1a17111 Fri Jan 6 18:56:24 1989
--- clients/xman/CHANGES Fri Jan 6 18:42:34 1989
***************
*** 3,56 ****
Here is the list of changes to xman. Unresolved bug fixes and
neat features are listed in the TODO file.
------------------------------------------------------------
! Version 3.0 (X11R2 Tape) -> Version 3.0.2
------------------------------------------------------------
! Additional Features:
! 1) Startup time is now 3 times faster.
! 2) Manual page searches now SCREAM, speed MUCH improved.
! 3) -pagesize argument added and documented in manual page.
! 4) List widget used for directory, may new features of directory
! a) vertical or horizontal orientation via the "verticalList" resource
! vertical is now the default.
! e.g xman*verticalList: False
! b) current manual page is highlighted in the directory listing.
! c) resizing the window now creates more columns in directory
! (see bug fix #4).
! d) Pixmaps no longer created for each directory listing.
! you people with color workstations should like this one.
! 5) Xman no longer uses the window widget, and it has been removed from
! the distribution. If you want a copy send me e-mail.
! Bug Fixes:
! 1) The height of the directory items was wrong if a different
! font is used for the directory than for the manual pages.
! 2) The topBox resource for the initial "Manual Browser" box now
! can be specified. This allows the geometry of this box to be
! set with resources.
! e.g xman*topBox.geometry: =100x100+2+2
! 3) Xman now handles the case of no help file correctly.
! 4) Resizing the directory now causes the columns to fill in the new area.
! This causes more of the directory to be visable in wider windows, and
! resizing narrower does not lose information.
! Know bugs yet to be resolved:
! 1) Resizing the man page causes the directory to grow too big.
! and the manpage to get real small. (1 pixel).
------------------------------------------------------------
Version 3.0.2 -> 3.0.3
--- 3,94 ----
Here is the list of changes to xman. Unresolved bug fixes and
neat features are listed in the TODO file.
+ I have changed this in to reverse chronological order to make it
+ easier to read.
+
------------------------------------------------------------
! Version 3.1 -> 3.1.1
------------------------------------------------------------
! Bug Fixes.
! 1) Manual Pages now handle text properly if partially obscured.
! 2) Manual Pages smaller than one screen do not cause xman to die.
! 3) Command line arguments and resources work properly again.
! 4) Scrollbars on man pages and directories are the same size by default.
! 5) Better handling of the decision to boldify.
! 6) Searching with multiple manual pages visable now works correctly.
! 7) Resources are all in a structure, so that machines with the MSB set
! on pointers will do the right thing.
! THANKS TO: Martin Streicher
! 8) Default width, is no longer dependant on the width of the display,
! but is set with #define DEFAULT_WIDTH in defs.h. Problems may still
! occur with displays that are not 75 dpi.
! 9) Fixes to man.c (internal maual page finding functions)
! a) xman knows about "mano" by default now.
! 10) Right button paging in manual pages works correctly on all machines.
! 11) The box with the message "Would you like to save this formatted manpage"
! comes up correctly in the center of the manual page.
! 12) Manual pages of the form foo.3x11.z show up as: foo(x11).
+ 13) Reverse video works correctly.
! 14) AproposFilter now uses "man -k" rather than "apropos"
! THANKS TO: Arthur David Olson.
! 15) When searching for manual pages, highlight now reflects current
! manual page.
!
! FEATURES:
!
! 1) Overstrike is now supported.
! THANKS TO: clyde at rutgers.edu
!
! 2) Addition to of "no default sections" option to mandesc file, read the
! latest man page for details.
!
! 3) Warning messages printed to manual page window as well as stdout.
!
! ------------------------------------------------------------
! Version 3.0.4 -> 3.1 (X11R3)
! ------------------------------------------------------------
!
! List widget is part of Xaw and removed from this directory.
!
! ------------------------------------------------------------
! Version 3.0.3 -> 3.0.4
! ------------------------------------------------------------
!
! Bug fixes.
!
! 1) First directory now comes up with all entries when the default
! size is used.
!
! 2) Command line syntax printed if an argument is not understood.
!
! 3) manpage rewritten.
!
! 4) Apropos no longer blows out with very long MANPATH's.
!
! 5) Better handling of mandesc file.
!
! Features:
!
! 1) additional command line arguments (see manpage for details):
! a) -notopbox
! b) -bothshown
! c) -helpfile <filename>
------------------------------------------------------------
Version 3.0.2 -> 3.0.3
***************
*** 86,121 ****
10) Left over highlight in menu have been fixed.
------------------------------------------------------------
! Version 3.0.3 -> 3.0.4
------------------------------------------------------------
! Bug fixes.
! 1) First directory now comes up with all entries when the default
! size is used.
! 2) Command line syntax printed if an argument is not understood.n
! 3) manpage rewritten.
! 4) Apropos no longer blows out with very long MANPATH's.
! 5) Better handling of mandesc file.
! Features:
! 1) additional command line arguments (see manpage for details):
! a) -notopbox
! b) -bothshown
! c) -helpfile <filename>
! ------------------------------------------------------------
! Version 3.0.4 -> 3.1 (X11R3)
! ------------------------------------------------------------
! List widget is part of Xaw and removed from this directory.
Chris D. Peterson
Project Athena
--- 124,180 ----
10) Left over highlight in menu have been fixed.
+
------------------------------------------------------------
! Version 3.0 (X11R2 Tape) -> Version 3.0.2
------------------------------------------------------------
! Additional Features:
! 1) Startup time is now 3 times faster.
! 2) Manual page searches now SCREAM, speed MUCH improved.
! 3) -pagesize argument added and documented in manual page.
! 4) List widget used for directory, may new features of directory
! a) vertical or horizontal orientation via the "verticalList" resource
! vertical is now the default.
! e.g xman*verticalList: False
! b) current manual page is highlighted in the directory listing.
! c) resizing the window now creates more columns in directory
! (see bug fix #4).
! d) Pixmaps no longer created for each directory listing.
! you people with color workstations should like this one.
! 5) Xman no longer uses the window widget, and it has been removed from
! the distribution. If you want a copy send me e-mail.
! Bug Fixes:
! 1) The height of the directory items was wrong if a different
! font is used for the directory than for the manual pages.
! 2) The topBox resource for the initial "Manual Browser" box now
! can be specified. This allows the geometry of this box to be
! set with resources.
+ e.g xman*topBox.geometry: =100x100+2+2
+
+ 3) Xman now handles the case of no help file correctly.
+
+ 4) Resizing the directory now causes the columns to fill in the new area.
+ This causes more of the directory to be visable in wider windows, and
+ resizing narrower does not lose information.
+
+
+ Know bugs yet to be resolved:
+
+ 1) Resizing the man page causes the directory to grow too big.
+ and the manpage to get real small. (1 pixel).
+
+ ------------------------------------------------------------
Chris D. Peterson
Project Athena
*** /tmp/,RCSt1a17125 Fri Jan 6 18:56:26 1989
--- clients/xman/README Fri Jan 6 18:42:35 1989
***************
*** 7,14 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: README,v 1.3 88/10/07 17:25:10 jim Exp $
! * $Athena: README,v 3.4 88/08/31 21:14:20 kit Locked $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 7,14 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: README,v 1.4 89/01/06 18:42:34 kit Exp $
! * $Athena: README,v 4.3 88/12/19 13:49:06 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 52,58 ****
pain. Oh yes, I also came up with what I think is a useful tool for all
users who wish to browse the manual pages.
! The ScrollByLine widget, while it looked like a good idea at t
the time, is really a hack and for widget examples please use the widget
set that came on the X tape, as the ScrollByLine Wiget was written about
three months and many Xtk intrinsic revisions ago. It still works for
--- 52,58 ----
pain. Oh yes, I also came up with what I think is a useful tool for all
users who wish to browse the manual pages.
! The ScrollByLine widget, while it looked like a good idea at
the time, is really a hack and for widget examples please use the widget
set that came on the X tape, as the ScrollByLine Wiget was written about
three months and many Xtk intrinsic revisions ago. It still works for
***************
*** 83,96 ****
both the naive user and the experience unix hacker in mind. Thus Xman
is:
! 1) Easy to use, start it up, and click the help button to start.
! 2) Uses the same default key bindings as other Xtk applications (xmh, xmore).
! 3) Conserves Screen space, and is usable even when resized fairly small.
! 4) Readily reconfigurable, this allows the experienced user to remove most
! information that is not necessary from his xman display.
! 5) Fast - once it has started up it has all the information in
! memory and can find and display formatted manual pages quite
! quickly.
Changes from version 3.0 (Distributed with X11R2) are in the |
file CHANGES. A list of bugs, and nice features is in the file TODO. |
--- 83,98 ----
both the naive user and the experience unix hacker in mind. Thus Xman
is:
! 1) Easy to use Start it up, and click the help button
! to start.
! 2) More or less Standard Uses the same default key bindings as
! other Xtk applications (xmh, xmore).
! 3) Conserves Screen space Xman is usable even when resized fairly small.
! 4) Readily reconfigurable Xman allows the experienced user to
! personalize the interface (somewhat :-)
! 5) Fast Once it has started up it has all the
! information in memory and can find and
! display formatted manual pages quite quickly.
Changes from version 3.0 (Distributed with X11R2) are in the |
file CHANGES. A list of bugs, and nice features is in the file TODO. |
*** /tmp/,RCSt1a17142 Fri Jan 6 18:56:31 1989
--- clients/xman/TODO Fri Jan 6 18:42:36 1989
***************
*** 20,30 ****
How about a "print this manpage" command that would confirm the
printer choice and go do a psroff -man?
! One more thing. It would be nice if "help" told you about the
Xresources used by xman (like xman*topBox.geometry) ...
show message when formatting manpage.
Implement searches within manpages.
Redo menus.
--- 20,32 ----
How about a "print this manpage" command that would confirm the
printer choice and go do a psroff -man?
! It would be nice if "help" told you about the
Xresources used by xman (like xman*topBox.geometry) ...
show message when formatting manpage.
+ Handle Compressed manual pages, by page and by directory.
+
Implement searches within manpages.
Redo menus.
***************
*** 38,40 ****
--- 40,44 ----
on to select one of those pages without having to switch sections and
then pick the manpage.
+
+ ** This needs to be added to the Athena List Widget.
*** /tmp/,RCSt1a17158 Fri Jan 6 18:56:37 1989
--- clients/xman/defs.h Fri Jan 6 18:41:57 1989
***************
*** 1,8 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: defs.h,v 1.6 88/10/20 19:03:47 jim Exp $
! * $Athena: defs.h,v 4.0 88/08/31 22:11:42 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 1,8 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: defs.h,v 1.7 89/01/06 18:41:55 kit Exp $
! * $Athena: defs.h,v 4.8 89/01/06 15:56:19 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 73,85 ****
#define INIT_SEARCH_STRING "xman" /* Intial search string. */
#define SEARCH_STRING_LENGTH 30
!
/*
* The command filters for the manual and apropos searches.
*/
! #define APROPOSCOMMAND "apropos -M"
! #define APROPOSFILTER "pr -h Apropos"
#define MANUALCOMMAND "man -M"
#ifdef macII
#define FORMAT "pcat" /* The format command. */
--- 73,84 ----
#define INIT_SEARCH_STRING "xman" /* Intial search string. */
#define SEARCH_STRING_LENGTH 30
! #define NO_SECTION_DEFAULTS ("no default sections")
/*
* The command filters for the manual and apropos searches.
*/
! #define APROPOSFILTER ("man -M %s -k %s | pr -h Apropos > %s")
#define MANUALCOMMAND "man -M"
#ifdef macII
#define FORMAT "pcat" /* The format command. */
***************
*** 89,103 ****
#define CANCEL "Cancel"
! #define MAXSECT 25 /* The maximum number of sections. */
! #define FIXEDSECT 11 /* The number of predefined sections.
! 0 - 8 and n, and l = 11. */
#define MAXENTRY 800 /* The maximum number of entries in one
! section. */
#define NLINES 66 /* This is the number of lines to wait until
we boldify the line again, this allows
me to bold the first line of each page.*/
#define LMAN 3 /* Name and length of the man and cat dirs. */
#define MAN "man"
--- 88,109 ----
#define CANCEL "Cancel"
! #define DEFAULT_WIDTH 500 /* The default width of xman. */
! #define MAXSECT 62 /* The maximum number of sections.
! one for each of (1-9) & (a-z) & (A-Z) */
! #ifdef sun
! #define MAXENTRY 2000 /* The maximum number of entries in one
! section, on a sun. */
! #else
#define MAXENTRY 800 /* The maximum number of entries in one
! section, on other machines. */
! #endif
!
#define NLINES 66 /* This is the number of lines to wait until
we boldify the line again, this allows
me to bold the first line of each page.*/
+ #define INITIAL_DIR 0 /* The Initial Directory displayed. */
#define LMAN 3 /* Name and length of the man and cat dirs. */
#define MAN "man"
***************
*** 165,173 ****
/* man.c */
int Man();
- void MatchEntries(),AddStruct(),SortAndRemove();
- Boolean GetEntry();
- void SetManNames();
char * StrAlloc();
/* menu.c is self contained */
--- 171,176 ----
***************
*** 175,181 ****
/* misc.c */
void PrintError(),PrintWarning(),KillManpage(), ChangeLabel();
! void RemovePixmaps(),PositionCenter(),AddCursor();
FILE *FindFilename(),*Format(), *OpenEntryFile();
/* pages.c */
--- 178,184 ----
/* misc.c */
void PrintError(),PrintWarning(),KillManpage(), ChangeLabel();
! void RemovePixmaps(),PositionCenter(),AddCursor(),ParseEntry();
FILE *FindFilename(),*Format(), *OpenEntryFile();
/* pages.c */
*** /tmp/,RCSt1a17166 Fri Jan 6 18:56:39 1989
--- clients/xman/globals.c Fri Jan 6 18:41:58 1989
***************
*** 1,7 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: globals.c,v 1.2 88/09/06 17:47:38 jim Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 1,7 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: globals.c,v 1.3 89/01/06 18:41:57 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 20,45 ****
*/
#if ( !defined(lint) && !defined(SABER))
! static char rcs_version[] = "$Athena: globals.c,v 4.0 88/08/31 22:11:49 kit Exp $";
#endif
#include "man.h"
! /* Resource manager sets these. */
! XmanFonts fonts; /* The fonts used for the man pages. */
! XmanCursors cursors; /* The cursors for xman. */
! Boolean both_shown_initial; /* The initial state of the manual pages
! show two screens or only one. */
! Boolean top_box_active; /* Put up the Top Box. */
! int directory_height; /* The default height of directory in
! both_shown mode. */
! char * help_file; /* The name of the help file. */
Widget help_widget; /* The help widget. */
- /* bookkeeping global variables. */
-
int default_height,default_width; /* Approximately the default with and
height, of the manpage when shown,
the the top level manual page
--- 20,36 ----
*/
#if ( !defined(lint) && !defined(SABER))
! static char rcs_version[] = "$Athena: globals.c,v 4.5 88/12/19 13:46:53 kit Exp $";
#endif
#include "man.h"
! Xman_Resources resources; /* Resource manager sets these. */
! /* bookkeeping global variables. */
Widget help_widget; /* The help widget. */
int default_height,default_width; /* Approximately the default with and
height, of the manpage when shown,
the the top level manual page
***************
*** 51,53 ****
--- 42,45 ----
int man_pages_shown; /* The current number of manual
pages being shown, if 0 we exit. */
+ Widget initial_widget; /* The initial widget, never realized. */
*** /tmp/,RCSt1a17176 Fri Jan 6 18:56:41 1989
--- clients/xman/globals.h Fri Jan 6 18:41:59 1989
***************
*** 1,8 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: globals.h,v 1.2 88/09/06 17:47:41 jim Exp $
! * $Athena: globals.h,v 4.0 88/08/31 22:11:54 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 1,8 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: globals.h,v 1.3 89/01/06 18:41:58 kit Exp $
! * $Athena: globals.h,v 4.5 88/12/19 13:46:58 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 22,42 ****
#include "man.h"
! /* Resource manager sets these. */
! extern XmanFonts fonts; /* The fonts used for the man pages. */
! extern XmanCursors cursors; /* The cursors for xman. */
! extern Boolean both_shown_initial; /* The initial state of the manual
! pages show two screens or only one. */
! extern Boolean top_box_active; /* Put up the Top Box. */
! extern int directory_height; /* The default height of directory in
! both_shown mode. */
! extern char * help_file; /* The name of the help file. */
extern Widget help_widget; /* The help widget. */
- /* bookkeeping global variables. */
-
extern int default_height,default_width; /* Approximately the default with and
height, of the manpage when shown,
the the top level manual page
--- 22,33 ----
#include "man.h"
! extern Xman_Resources resources; /* Resource manager sets these. */
! /* bookkeeping global variables. */
extern Widget help_widget; /* The help widget. */
extern int default_height,default_width; /* Approximately the default with and
height, of the manpage when shown,
the the top level manual page
***************
*** 47,50 ****
extern Manual manual[MAXSECT]; /* The manual structure. */
extern int sections; /* The number of manual sections. */
!
--- 38,41 ----
extern Manual manual[MAXSECT]; /* The manual structure. */
extern int sections; /* The number of manual sections. */
! extern Widget initial_widget; /* The initial widget, never realized. */
*** /tmp/,RCSt1a17190 Fri Jan 6 18:56:45 1989
--- clients/xman/help.c Fri Jan 6 18:42:04 1989
***************
*** 1,7 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: help.c,v 1.2 88/09/06 17:48:01 jim Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 1,7 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: help.c,v 1.3 89/01/06 18:42:03 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 55,61 ****
XtManageChild( man_globals->manpagewidgets.manpage );
XtRealizeWidget( help_widget );
! AddCursor( help_widget, cursors.manpage);
return(TRUE);
}
--- 55,61 ----
XtManageChild( man_globals->manpagewidgets.manpage );
XtRealizeWidget( help_widget );
! AddCursor( help_widget, resources.cursors.manpage);
return(TRUE);
}
***************
*** 85,92 ****
{
FILE * help_file_ptr;
! if( (help_file_ptr = fopen(help_file, "r")) == NULL ) {
! PrintWarning("Could not open help file, NO HELP WILL BE AVALIABLE.");
return(FALSE);
}
InitManpage(man_globals, man_globals->manpagewidgets.manpage, help_file_ptr);
--- 85,93 ----
{
FILE * help_file_ptr;
! if( (help_file_ptr = fopen(resources.help_file, "r")) == NULL ) {
! PrintWarning(man_globals,
! "Could not open help file, NO HELP WILL BE AVALIABLE.");
return(FALSE);
}
InitManpage(man_globals, man_globals->manpagewidgets.manpage, help_file_ptr);
*** /tmp/,RCSt1a17213 Fri Jan 6 18:56:52 1989
--- clients/xman/man.h Fri Jan 6 18:42:19 1989
***************
*** 1,8 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: man.h,v 1.2 88/09/06 17:48:12 jim Exp $
! * $Athena: man.h,v 4.0 88/08/31 22:12:43 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 1,8 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: man.h,v 1.3 89/01/06 18:42:18 kit Exp $
! * $Athena: man.h,v 4.6 89/01/06 12:17:38 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 80,109 ****
directory, /* The widget in which all directories will
appear. */
box[MAXSECT]; /* The boxes containing the sections. */
- Boolean created_box[MAXSECT]; /* Has this box been created yet?. */
} ManPageWidgets;
/*
! * How we store each entry such as cat.1, sh.1 etc.
*/
- struct entry {
- char *label; /* The filename of the entry. */
- char *path; /* The path for this entry. */
- /* So that't why this is a structure, good thinking Barry. */
- };
-
- /*
- * the manual sections and entries
- */
typedef struct tManual {
char * blabel; /* The button label. */
! char * sect; /* the section man directory. */
! struct entry *entries; /* the individual man page file names and paths*/
int nentries; /* how many */
- int longest; /* The length (in pixels) of the longest
- entry. */
- int ncols,nrows; /* The number of rows and columns */
} Manual;
/*
--- 80,95 ----
directory, /* The widget in which all directories will
appear. */
box[MAXSECT]; /* The boxes containing the sections. */
} ManPageWidgets;
/*
! * The manual sections and entries
*/
typedef struct tManual {
char * blabel; /* The button label. */
! char ** entries; /* the individual man page file names. */
int nentries; /* how many */
} Manual;
/*
***************
*** 133,139 ****
put_up_manpage, /* The button that puts up the manpage. */
put_up_directory, /* The button that puts up the directory. */
text_widget; /* text widget containing search string. */
! char * search_string; /* The search string. */
char manpage_title[80]; /* The label to use for the current manpage. */
char filename[80]; /* the name of the file that we are
currently looking at.*/
--- 119,125 ----
put_up_manpage, /* The button that puts up the manpage. */
put_up_directory, /* The button that puts up the directory. */
text_widget; /* text widget containing search string. */
! char search_string[SEARCH_STRING_LENGTH]; /* The search string. */
char manpage_title[80]; /* The label to use for the current manpage. */
char filename[80]; /* the name of the file that we are
currently looking at.*/
***************
*** 151,153 ****
--- 137,153 ----
this manpage. */
} ManpageGlobals;
+
+
+ /* Resource manager sets these. */
+
+ typedef struct _Xman_Resources {
+ XmanFonts fonts; /* The fonts used for the man pages. */
+ XmanCursors cursors; /* The cursors for xman. */
+ Boolean both_shown_initial; /* The initial state of the manual pages
+ show two screens or only one. */
+ Boolean top_box_active; /* Put up the Top Box. */
+ int directory_height; /* The default height of directory in
+ both_shown mode. */
+ char * help_file; /* The name of the help file. */
+ } Xman_Resources;
*** /tmp/,RCSt1a17227 Fri Jan 6 18:56:57 1989
--- clients/xman/menu.c Fri Jan 6 18:42:21 1989
***************
*** 1,7 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: menu.c,v 1.2 88/09/04 20:27:31 swick Exp $
* $oHeader: menu.c,v 4.0 88/08/31 22:12:49 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
--- 1,7 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: menu.c,v 1.3 89/01/06 18:42:20 kit Exp $
* $oHeader: menu.c,v 4.0 88/08/31 22:12:49 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
***************
*** 21,27 ****
*/
#if ( !defined(lint) && !defined(SABER))
! static char rcs_version[] = "$Athena: menu.c,v 4.0 88/08/31 22:12:49 kit Exp $";
#endif
/* std headers */
--- 21,27 ----
*/
#if ( !defined(lint) && !defined(SABER))
! static char rcs_version[] = "$Athena: menu.c,v 4.2 88/12/19 13:47:51 kit Exp $";
#endif
/* std headers */
*** /tmp/,RCSt1a17241 Fri Jan 6 18:57:00 1989
--- clients/xman/pages.c Fri Jan 6 18:42:27 1989
***************
*** 1,7 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: pages.c,v 1.2 88/09/06 17:48:20 jim Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 1,7 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: pages.c,v 1.3 89/01/06 18:42:26 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 20,26 ****
*/
#if ( !defined(lint) && !defined(SABER))
! static char rcs_version[] = "$Athena: pages.c,v 4.0 88/08/31 22:13:10 kit Exp $";
#endif
#include <ctype.h>
--- 20,26 ----
*/
#if ( !defined(lint) && !defined(SABER))
! static char rcs_version[] = "$Athena: pages.c,v 4.5 88/12/19 13:48:09 kit Exp $";
#endif
#include <ctype.h>
***************
*** 179,184 ****
--- 179,186 ----
* Returns: none.
*/
+ /* ARGSUSED */
+
void
PrintManpage(w,struct_pointer,data)
Widget w;
***************
*** 237,258 ****
* export the font height.
*/
! height = (fonts.normal->max_bounds.ascent +
! fonts.normal->max_bounds.descent);
bold_gc = XCreateGC(disp,window,0,NULL);
XSetForeground(disp,bold_gc,(unsigned long) fgcolor);
! XSetFont(disp,bold_gc,fonts.bold->fid);
normal_gc = XCreateGC(disp,window,0,NULL);
XSetForeground(disp,normal_gc,(unsigned long) fgcolor);
! XSetFont(disp,normal_gc,fonts.normal->fid);
italic_gc = XCreateGC(disp,window,0,NULL);
XSetForeground(disp,italic_gc,(unsigned long) fgcolor);
! XSetFont(disp,italic_gc,fonts.italic->fid);
! width = XTextWidth(fonts.normal," ",8); /* Width of a tab stop. */
/*
* Because XDrawString uses the bottom of the text as a position
--- 239,261 ----
* export the font height.
*/
! height = (resources.fonts.normal->max_bounds.ascent +
! resources.fonts.normal->max_bounds.descent);
bold_gc = XCreateGC(disp,window,0,NULL);
XSetForeground(disp,bold_gc,(unsigned long) fgcolor);
! XSetFont(disp,bold_gc,resources.fonts.bold->fid);
normal_gc = XCreateGC(disp,window,0,NULL);
XSetForeground(disp,normal_gc,(unsigned long) fgcolor);
! XSetFont(disp,normal_gc,resources.fonts.normal->fid);
italic_gc = XCreateGC(disp,window,0,NULL);
XSetForeground(disp,italic_gc,(unsigned long) fgcolor);
! XSetFont(disp,italic_gc,resources.fonts.italic->fid);
! /* Width of a tab stop. */
! width = XTextWidth(resources.fonts.normal," ",8);
/*
* Because XDrawString uses the bottom of the text as a position
***************
*** 260,266 ****
* to the ScollByLine position reference.
*/
! y_loc = scroll_info->location + fonts.normal->max_bounds.ascent;
/*
* Ok, here's the more than mildly heuristic man page formatter.
--- 263,269 ----
* to the ScollByLine position reference.
*/
! y_loc = scroll_info->location + resources.fonts.normal->max_bounds.ascent;
/*
* Ok, here's the more than mildly heuristic man page formatter.
***************
*** 334,340 ****
XDrawString(disp,window,normal_gc,col,y_loc,buf,strlen(buf));
bufp = buf;
italicflag = 0;
! cur_pos = XTextWidth(fonts.normal,buf,strlen(buf)) + col;
col = cur_pos - (cur_pos % width) + width;
break;
--- 337,343 ----
XDrawString(disp,window,normal_gc,col,y_loc,buf,strlen(buf));
bufp = buf;
italicflag = 0;
! cur_pos = XTextWidth(resources.fonts.normal,buf,strlen(buf)) + col;
col = cur_pos - (cur_pos % width) + width;
break;
***************
*** 342,347 ****
--- 345,406 ----
c++; /* should always be esc-x */
break;
+ /*
+ * Overstrike code supplied by: cs.utexas.edu!ut-emx!clyde at rutgers.edu
+ * Since my manual pages do not have overstrike I couldn't test this.
+ */
+
+ case BACKSPACE: /* Backspacing for nroff bolding */
+ if (c[-1] == c[1] && c[1] != BACKSPACE) { /* overstriking one char */
+ *--bufp = '\0'; /* Zap 1st instance of char to bolden */
+ if (bufp > &buf[0]) {
+ if (italicflag) {
+ XDrawString(disp,window,italic_gc,col,y_loc,buf,strlen(buf));
+ col += XTextWidth(resources.fonts.italic,buf,strlen(buf));
+ }
+ else {
+ XDrawString(disp,window,normal_gc,col,y_loc,buf,strlen(buf));
+ col += XTextWidth(resources.fonts.normal,buf,strlen(buf));
+ }
+ bufp = buf;
+ }
+ /*
+ * It is painful writing one bold char at a time but
+ * it is the only safe way to do it. We trust that the library
+ * buffers these one-char draw requests and sends one large
+ * request packet.
+ */
+ *bufp = c[1];
+ XDrawString(disp,window,bold_gc,col,y_loc,bufp,1);
+ col += XTextWidth(resources.fonts.bold,bufp,1);
+ *bufp = '\0';
+ first = FALSE;
+
+ /*
+ * Nroff bolding looks like:
+ * C\bC\bC\bCN...
+ * c points to ----^ ^
+ * it needs to point to --^
+ */
+ while (*c == BACKSPACE && c[-1] == c[1])
+ c += 2;
+ c--; /* Back up to previous char */
+ }
+ else {
+ if ((c[-1] == 'o' && c[1] == '+') /* Nroff bullet */
+ || (c[-1] == '+' && c[1] == 'o')) { /* Nroff bullet */
+ /* I would prefer to put a 'bullet' char here */
+ *bufp++ = 'o';
+ c++;
+ }
+ else { /* 'real' backspace - back up output ptr */
+ bufp--;
+ }
+ }
+ break;
+
+ /* End of contributed overstrike code. */
+
case '_': /* look for underlining [italicize] */
c++;
if(*c != BACKSPACE) {
***************
*** 354,360 ****
*bufp = '\0';
XDrawString(disp,window,normal_gc,col,y_loc,
buf,strlen(buf));
! col += XTextWidth(fonts.normal,buf,strlen(buf));
bufp = buf;
*bufp = '\0';
italicflag = 1;
--- 413,419 ----
*bufp = '\0';
XDrawString(disp,window,normal_gc,col,y_loc,
buf,strlen(buf));
! col += XTextWidth(resources.fonts.normal,buf,strlen(buf));
bufp = buf;
*bufp = '\0';
italicflag = 1;
***************
*** 368,374 ****
if(italicflag) { /* font change? */
*bufp = '\0';
XDrawString(disp,window,italic_gc,col,y_loc,buf,strlen(buf));
! col += XTextWidth(fonts.italic,buf,strlen(buf));
bufp = buf;
*bufp = '\0';
italicflag = 0;
--- 427,433 ----
if(italicflag) { /* font change? */
*bufp = '\0';
XDrawString(disp,window,italic_gc,col,y_loc,buf,strlen(buf));
! col += XTextWidth(resources.fonts.italic,buf,strlen(buf));
bufp = buf;
*bufp = '\0';
italicflag = 0;
***************
*** 400,406 ****
length = strlen(sp);
for (sp_pointer = sp, count = 0; count < length; sp_pointer++,count++)
! if (islower(*sp_pointer))
return(0);
return(1);
}
--- 459,465 ----
length = strlen(sp);
for (sp_pointer = sp, count = 0; count < length; sp_pointer++,count++)
! if ( !isupper(*sp_pointer) && !isspace(*sp_pointer) )
return(0);
return(1);
}
*** /tmp/,RCSt1a17256 Fri Jan 6 18:57:04 1989
--- clients/xman/tkfuncs.c Fri Jan 6 18:42:31 1989
***************
*** 1,7 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: tkfuncs.c,v 1.2 88/09/06 17:48:23 jim Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 1,7 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: tkfuncs.c,v 1.3 89/01/06 18:42:30 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 20,26 ****
*/
#if ( !defined(lint) && !defined(SABER))
! static char rcs_version[] = "$Athena: tkfuncs.c,v 4.0 88/08/31 22:13:27 kit Exp $";
#endif
#include <X11/X.h>
--- 20,26 ----
*/
#if ( !defined(lint) && !defined(SABER))
! static char rcs_version[] = "$Athena: tkfuncs.c,v 4.5 88/12/19 13:48:24 kit Exp $";
#endif
#include <X11/X.h>
***************
*** 141,147 ****
also the parent of the lable.*/
Widget w;
XtGeometryResult answer; /* result of geometery test. */
! Cardinal awidth,aheight; /* The height and width of the reply. */
int width = 0; /* The width of the biggest button */
int i;
--- 141,147 ----
also the parent of the lable.*/
Widget w;
XtGeometryResult answer; /* result of geometery test. */
! Dimension awidth,aheight; /* The height and width of the reply. */
int width = 0; /* The width of the biggest button */
int i;
*** /tmp/,RCSt1a17261 Fri Jan 6 18:57:06 1989
--- clients/xman/version.h Fri Jan 6 18:42:32 1989
***************
*** 1,8 ****
/*
* xman - X window system manual page display program.
*
! * $XConsortium: version.h,v 1.2 88/09/06 17:48:28 jim Exp $
! * $Athena: version.h,v 4.0 88/08/31 22:13:33 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
--- 1,8 ----
/*
* xman - X window system manual page display program.
*
! * $XConsortium: version.h,v 1.3 89/01/06 18:42:31 kit Exp $
! * $Athena: version.h,v 4.5 88/12/19 13:48:30 kit Exp $
*
* Copyright 1987, 1988 Massachusetts Institute of Technology
*
***************
*** 20,24 ****
* Created: July 18, 1988
*/
! #define XMAN_VERSION "Xman_Version 3.1"
--- 20,24 ----
* Created: July 18, 1988
*/
! #define XMAN_VERSION "Xman_Version 3.1.1"
*** /tmp/,RCSt1a17267 Fri Jan 6 18:57:07 1989
--- clients/xman/xman.help Fri Jan 6 18:42:38 1989
***************
*** 2,16 ****
XMAN is an X Window System manual browsing tool, built upon the XToolkit.
! CREDITS:
! Version 3.1
Based Upon: Xman for X10 by Barry Shein - Boston Univ.
Written By: Chris Peterson - MIT Project Athena.
Copyright 1988 Massachusetts Institute of Technology
! GETTING STARTED:
By default, XMAN starts by creating a small window that contains
three "buttons" (places on which to click a mouse button). Two of
--- 2,16 ----
XMAN is an X Window System manual browsing tool, built upon the XToolkit.
! CREDITS
! Version 3.1.1
Based Upon: Xman for X10 by Barry Shein - Boston Univ.
Written By: Chris Peterson - MIT Project Athena.
Copyright 1988 Massachusetts Institute of Technology
! GETTING STARTED
By default, XMAN starts by creating a small window that contains
three "buttons" (places on which to click a mouse button). Two of
***************
*** 31,37 ****
the middle button returns you to the manual page previously on the
screen.
! SCROLLING TEXT:
The scrollbars are similar to xterm, xmh, and xmore scrollbars;
clicking the left or right mouse buttons with the pointer at the
--- 31,37 ----
the middle button returns you to the manual page previously on the
screen.
! SCROLLING TEXT
The scrollbars are similar to xterm, xmh, and xmore scrollbars;
clicking the left or right mouse buttons with the pointer at the
***************
*** 46,52 ****
down or up one page, respectively. You may also type 'f' or
<space bar> to scroll down one page, and 'b' to scroll up one page.
! RESIZING THINGS:
You can resize any of the windows in xman with your favorite window
manager, and xman will to the best it can to resize everything
--- 46,52 ----
down or up one page, respectively. You may also type 'f' or
<space bar> to scroll down one page, and 'b' to scroll up one page.
! RESIZING THINGS
You can resize any of the windows in xman with your favorite window
manager, and xman will to the best it can to resize everything
***************
*** 60,71 ****
the mouse button is released xman will move the pane boundry to the
newly specified location.
! FOR FURTHER INFORMATION:
Information on customizing xman through resource and command line
options can be found in the xman manpage.
! SUMMARY OF BASIC ACTIONS:
Any time:
--- 60,71 ----
the mouse button is released xman will move the pane boundry to the
newly specified location.
! FOR FURTHER INFORMATION
Information on customizing xman through resource and command line
options can be found in the xman manpage.
! SUMMARY OF BASIC ACTIONS
Any time:
***************
*** 90,96 ****
CLICK RIGHT: Move Up - more if pointer is near bottom
of window, less if at top.
! EXTENDED COMMANDS:
To reach the extended commands simply move the mouse over the label
at the top of the manual page display window; this will activate the
--- 90,96 ----
CLICK RIGHT: Move Up - more if pointer is near bottom
of window, less if at top.
! EXTENDED COMMANDS
To reach the extended commands simply move the mouse over the label
at the top of the manual page display window; this will activate the
*** /tmp/,RCSt1a17274 Fri Jan 6 18:57:08 1989
--- clients/xman/xman.man Fri Jan 6 18:42:39 1989
***************
*** 1,6 ****
.TH XMAN 1 "24 October 1988" "X Version 11"
.SH NAME
! xman - display manual pages
.SH SYNOPSIS
.B xman
[-options ...]
--- 1,6 ----
.TH XMAN 1 "24 October 1988" "X Version 11"
.SH NAME
! xman - Manual page display program for the X Window System.
.SH SYNOPSIS
.B xman
[-options ...]
***************
*** 18,50 ****
help information. The rest of this manual page will discuss
customization of \fIxman\fP.
.PP
.I Xman
! accomodates new manual sections by the use of the environment variable
! MANPATH and by directory description files named \fImandesc\fP.
! .I Xman
! will search each directory specified in the environment variable
! MANPATH for the following subdirectories only: man0, man1, ..., man8,
! manl (local), and mann (new).
! (It usually ignores the
! information in man0 unless there is a \fImandesc\fP file that specifically
! tells it not to.)
! These subdirectories each represent
! a separate section of the manual. These subdirectories should contain
! man pages. Any manual section can be renamed by an optional
! \fImandesc\fP file.
.PP
! As an example, if MANPATH was set to \fI/usr/man:/usr/sipb/man\fP
! and there was no \fImandesc\fP file in /usr/man, \fIxman\fP
! would put all of the files in the default section names
! (e.g. manl gets a section name of local).
! But if there were a \fImandesc\fP file in
! /usr/sipb/man which contained the line \fIlSIPB Programs\fP,
! then \fIxman\fP would put all files in the
! manl subdirectory in a new section
! called ``SIPB Programs''. \fIXman\fP will search the \fImandesc\fP file until
! there are no more lines of information. This flexibility is ideal
! for courses that have their own manual pages.
.PP
.I Xman
creates temporary files in /tmp for all unformatted man pages and all apropos
searches.
--- 18,130 ----
help information. The rest of this manual page will discuss
customization of \fIxman\fP.
.PP
+ .sh "CUSTOMIZING XMAN"
+ .PP
.I Xman
! allows customization of both the directories to be searched for manual pages,
! and the name that each directory will map to in the \fIManual Sections\fP
! menu. Xman determines which direcories it will
! search by reading the \fIMANPATH\fP environment variable. This enviroment
! is expected to be a colon seperated list of directories for xman to search.
! .nf
!
! setenv MANPATH /mit/kit/man:/usr/man
! .fi
.PP
! By default,
! .I xman
! will search each of the following directories (in each of the directories
! specified in the users MANPATH) for manual pages. If manual pages exist
! in that directory then they are added to list of manual pages for
! the corrosponding menu item.
! A menu item is only displayed for those sections that actually contain
! manual pages.
! .ta 1.5i
! .nf
!
! Directory Section Name
! --------- ------------
! man1 User Commands (1)
! man2 System Calls (2)
! man3 Subroutines (3)
! man4 Devices (4)
! man5 File Formats (5)
! man6 Games (6)
! man7 Miscellaneous (7)
! man8 Sys. Administration (8)
! manl Local (l)
! mann New (n)
! mano Old (o)
!
! .fi
! For instance, a user has three directories in her manual path and each
! contain a directory called \fIman3\fP. All these manual pages will appear
! alphabetically sorted when the user clicks on the menu item called
! \fISubroutines (3)\fP. If there is no directory called \fImano\fP in
! any of the directories in her MANPATH, or there are no manual pages
! in any of the directories called \fImano\fP then no menu item will be
! displayed for the section called \fIOld (o)\fP.
.PP
+ .sh "THE MANDESC FILE"
+ .PP
+ By using the \fImandesc\fP file a user or system manager is able to
+ more closely control which manual pages will appear in each of the sections
+ represented by menu items in the \fIManual Sections\fP menu. This
+ functionality is only avaliable on a section by section basis, and individual
+ manual pages may not be handled in this manner (Although generous use of
+ symbolic links - ln(1) - will allow almost any configuration you can imagine).
+ The format of the mandesc file is a character followed by a label. The
+ character determines which of the sections will be added under this label.
+ For instance suppose that you would like to create an extra menu item that
+ contains all programmer subroutines. This label should contain all manual
+ pages in both sections two and three. The \fImandesc\fP file
+ would look like this.
+ .nf
+
+ 2Programmer Subroutines
+ 3Programmer Subroutines
+
+ .fi
+ This will add a menu item to the \fIManual Sections\fP menu that would
+ bring up a listing of all manual pages in sections two and three of
+ Unix Programmers Manual. Since the label names are \fIexactly\fP the
+ same they will be added to the same section. Note, however, that the
+ original sections still exist.
+ .PP
+ If you want to completely ignore the default sections in a manual directory
+ the add the line:
+ .nf
+
+ no default sections
+
+ .fi
+ Anywhere in your mandesc file. This keeps xman from searching
+ the default manual sections \fIIn that directory only\fP. As an example,
+ suppose you want to do the same thing as above, but you don't think that
+ it is useful to have the \fISystem Calls\fP or \fISubroutines\fP sections
+ any longer. You would need to duplicate the default entries, as well as
+ adding your new one.
+ .nf
+
+ no default sections
+ 1User Commands (1)
+ 2Programmer Subroutines
+ 3Programmer Subroutines
+ 4Devices (4)
+ 5File Formats (5)
+ 6Games (6)
+ 7Miscellaneous (7)
+ 8Sys. Administration (8)
+ lLocal (l)
+ nNew (n)
+ oOld (o)
+
+ .fi
+ Xman will read any section that is of the from \fIman<character>\fP, where
+ <character> is an upper or lower case letter (they are treated distinctly) or
+ a numeral (0-9). Be warned, however, that man(1) and catman(8) will
+ not search directories that are non-standard.
+ .PP
.I Xman
creates temporary files in /tmp for all unformatted man pages and all apropos
searches.
***************
*** 186,192 ****
mandesc
.PP
.SH "SEE ALSO"
! X(1), X(8C), man(1), apropos(1)
.PP
.SH ENVIRONMENT
DISPLAY - the default host and display to use.
--- 266,272 ----
mandesc
.PP
.SH "SEE ALSO"
! X(1), X(8C), man(1), apropos(1), catman(8)
.PP
.SH ENVIRONMENT
DISPLAY - the default host and display to use.
--
Mike Wexler(wyse!mikew) Phone: (408)433-1000 x1330
Moderator of comp.sources.x
More information about the Comp.sources.x
mailing list