argv@island.uu.net (Dan Heller) (05/17/89)
Submitted-by: Donald Richardson <donr@crystal.mie.clarkson.edu>
Posting-number: Volume 4, Issue 1
Archive-name: dvi.pach3/patch3
[ I can't test this as we don't use dvi --argv ]
Enclosed is patch 3 for xdvi. Mostly it contains bug fixes, and also
it includes an option to specify a default font (e.g. cmr10) if it can't
find the one you want---see the -altfont option in the man page. Many
thanks to those who have sent me these patches.
---- cut here ----
diff -cr old/AUTHOR new/AUTHOR
*** old/AUTHOR Wed May 10 19:48:19 1989
--- new/AUTHOR Wed May 10 20:02:18 1989
***************
*** 7,12 ****
--- 7,13 ----
Mark Eichin, MIT SIPB
Paul Vojta, UC Berkeley
Jeffrey Lee, U of Toronto
+ Donald Richardson, Clarkson Univ.
At the present time, the person to send bug reports to is Paul Vojta,
vojta@math.berkeley.edu.
This address will be valid at least through August, 1989.
diff -cr old/README new/README
*** old/README Wed May 10 19:48:33 1989
--- new/README Wed May 10 19:56:41 1989
***************
*** 46,51 ****
--- 46,53 ----
ENVIRONMENT section of the man page for details on
how to get xdvi to recognize the directory structure
you use for storing fonts.
+ SYSV (dvi_init pxl_open xdvi.c) Set for System V
+ compilation.
MSBITFIRST (X11 only; xdvi.c dvi_draw.c gf.c pk.c pxl.c) Store
bitmaps internally with the most significant bit at
the left. For performance reasons, it would be best
***************
*** 61,66 ****
--- 63,71 ----
bitmaps in long integers instead of bytes.
MAXCHARS (dvi_init.c dvi_draw.c gf.c pk.c pxl.c) Set to 256 for
256-character fonts. Default is 128.
+ ALTFONT Default font to use if the font named in the dvi file
+ cannot be found. Can be set to NULL. By default, it
+ is "cmr10".
All flags should be set in the appropriate Makefile.
================================================================
***************
*** 118,122 ****
--- 123,136 ----
-- Patchlevel 2: --
12. Added MAXCHARS compilation option. Eliminated the nonsense with
generating table.h.
+ -- Patchlevel 3: --
+ 13. Added -altfont command line option and SYSV compilation option.
Paul Vojta, vojta@math.berkeley.edu
+ ================================================================================
+
+ 4/1989 Modified for System V boxes. -DSYSV compiler option.
+
+ Donald Richardson, donr@crystal.mie.clarkson.edu
+
+ ================================================================================
diff -cr old/dvi_draw.c new/dvi_draw.c
*** old/dvi_draw.c Wed May 10 19:48:44 1989
--- new/dvi_draw.c Wed May 10 20:16:56 1989
***************
*** 11,18 ****
--- 11,20 ----
* 12/1988 Added 'R' option, toolkit, magnifying glass
* --Paul Vojta, UC Berkeley.
* 2/1989 Added tpic support --Jeffrey Lee, U of Toronto
+ * 4/1989 Modified for System V by Donald Richardson, Clarkson Univ.
*
* Compilation options:
+ * SYSV compile for System V
* X10 compile for X10
* MSBITFIRST store bitmaps internally in with significant bit first
* BMSHORT store bitmaps in shorts instead of bytes
***************
*** 424,431 ****
--- 426,435 ----
case SET1:
case PUT1:
ch1 = one(dvi_file);
+ #if MAXCHARS < 256
if (ch1 >= MAXCHARS)
oops("Character code too large: %d", ch1);
+ #endif MAXCHARS
set_char(ch1);
if (ch == SET1)
DVI_H += current_font->glyph[ch1].dvi_adv;
diff -cr old/dvi_init.c new/dvi_init.c
*** old/dvi_init.c Wed May 10 19:48:50 1989
--- new/dvi_init.c Wed May 10 20:16:57 1989
***************
*** 11,18 ****
--- 11,20 ----
* 12/1988 Added 'R' option, toolkit, magnifying glass
* --Paul Vojta, UC Berkeley.
* 2/1989 Added tpic support --Jeffrey Lee, U of Toronto
+ * 4/1989 Modified for System V by Donald Richardson, Clarkson Univ.
*
* Compilation options:
+ * SYSV compile for System V
* X10 compile for X10
* MSBITFIRST store bitmaps internally in with significant bit first
* BMSHORT store bitmaps in shorts instead of bytes
***************
*** 27,32 ****
--- 29,35 ----
#include <sys/stat.h>
#define dvi_oops(str) longjmp(dvi_env, (int) str);
+ extern char *alt_font;
static struct stat fstatbuf; /* mechanism to see if file was */
time_t dvi_time; /* modified since last usage */
***************
*** 60,82 ****
*/
static long last_page_offset;
! char *malloc(), *sprintf();
FILE *pxl_open();
static Boolean
! define_new_font(fontp)
register struct font *fontp;
{
read_font_index_proc read_font_index;
if (n_fonts_left == 0)
close_a_file();
! fontp->file = pxl_open(font_path, fontp->fontname, fontp->size,
(fontp->size + 2) / 5, &fontp->filename, &read_font_index);
if (fontp->file == NULL) {
! Fprintf(stderr, "%s at %d dpi [not found]\n", fontp->fontname,
(fontp->size + 2) / 5);
- font_not_found = True;
return(False);
}
(*read_font_index)(fontp);
--- 63,88 ----
*/
static long last_page_offset;
! #ifndef SYSV
! char *sprintf();
! #endif
! char *malloc();
FILE *pxl_open();
static Boolean
! define_new_font(fontp, fontname)
register struct font *fontp;
+ char *fontname;
{
read_font_index_proc read_font_index;
if (n_fonts_left == 0)
close_a_file();
! fontp->file = pxl_open(font_path, fontname, fontp->size,
(fontp->size + 2) / 5, &fontp->filename, &read_font_index);
if (fontp->file == NULL) {
! Fprintf(stderr, "Font %s at %d dpi [not found]\n", fontname,
(fontp->size + 2) / 5);
return(False);
}
(*read_font_index)(fontp);
***************
*** 153,159 ****
for (;;) {
fontp1 = *fontpp;
if (fontp1 == NULL) {
! if (!define_new_font(fontp)) return;
break;
}
if (strcmp(fontp->fontname, fontp1->fontname) == 0
--- 159,176 ----
for (;;) {
fontp1 = *fontpp;
if (fontp1 == NULL) {
! if (!define_new_font(fontp, fontp->fontname)) {
! if (alt_font == NULL || !define_new_font(fontp, alt_font)) {
! font_not_found = True;
! return;
! }
! Fprintf(stderr,
! "Can't find <%s>, using <%s> instead at %d dpi\n",
! fontp->fontname, alt_font, (size + 2) / 5);
! free(fontp->fontname);
! fontp->fontname = malloc((unsigned) strlen(alt_font)+1);
! (void) strcpy(fontp->fontname, alt_font);
! }
break;
}
if (strcmp(fontp->fontname, fontp1->fontname) == 0
diff -cr old/patchlevel.h new/patchlevel.h
*** old/patchlevel.h Wed May 10 19:48:56 1989
--- new/patchlevel.h Wed May 10 19:56:43 1989
***************
*** 1 ****
! #define PATCHLEVEL 2
--- 1 ----
! #define PATCHLEVEL 3
diff -cr old/pxl_open.c new/pxl_open.c
*** old/pxl_open.c Wed May 10 19:49:10 1989
--- new/pxl_open.c Wed May 10 19:56:45 1989
***************
*** 43,49 ****
read_font_index_proc read_GF_index, read_PK_index, read_PXL_index;
! char *malloc(), *index(), *sprintf();
#define Strcpy (void) strcpy
#define Sprintf (void) sprintf
--- 43,52 ----
read_font_index_proc read_GF_index, read_PK_index, read_PXL_index;
! #ifndef SYSV
! char *sprintf();
! #endif
! char *malloc(), *index();
#define Strcpy (void) strcpy
#define Sprintf (void) sprintf
diff -cr old/xdvi.c new/xdvi.c
*** old/xdvi.c Wed May 10 19:49:32 1989
--- new/xdvi.c Wed May 10 20:16:56 1989
***************
*** 11,23 ****
--- 11,26 ----
* 12/1988 Added 'R' option, toolkit, magnifying glass
* --Paul Vojta, UC Berkeley.
* 2/1989 Added tpic support --Jeffrey Lee, U of Toronto
+ * 4/1989 Modified for System V by Donald Richardson, Clarkson Univ.
*
* Compilation options:
+ * SYSV compile for System V
* X10 compile for X10
* MSBITFIRST store bitmaps internally in with significant bit first
* BMSHORT store bitmaps in shorts instead of bytes
* BMLONG store bitmaps in longs instead of bytes
* MAXCHARS set to 256 for 256 character fonts (default = 128)
+ * ALTFONT default for -altfont option.
*/
#ifndef lint
#include "patchlevel.h"
***************
*** 29,34 ****
--- 32,41 ----
#endif X10
#endif lint
+ #ifndef ALTFONT
+ #define ALTFONT "cmr10"
+ #endif ALTFONT
+
#ifndef X10
#undef Boolean
***************
*** 92,97 ****
--- 99,105 ----
#define MAGBORD 1 /* border size for magnifier */
char *font_path;
char default_font_path[] = DEFAULT_FONT_PATH;
+ char *alt_font = ALTFONT;
/*
* Command line flags.
***************
*** 118,124 ****
/* fg and bg colors */
static Arg fore_args = {XtNforeground, (XtArgVal) 0};
static Arg back_args = {XtNbackground, (XtArgVal) 0};
! static XColor hl_Color, cr_Color;
#endif X10
static char *fore_color;
--- 126,132 ----
/* fg and bg colors */
static Arg fore_args = {XtNforeground, (XtArgVal) 0};
static Arg back_args = {XtNbackground, (XtArgVal) 0};
! static Pixel hl_Pixel, cr_Pixel;
#endif X10
static char *fore_color;
***************
*** 173,180 ****
static void can_exposures(), read_events();
! char *malloc(), *index(), *rindex(), *sprintf(), *getenv(),
! *strcpy(), *strcat();
double atof();
--- 181,190 ----
static void can_exposures(), read_events();
! #ifndef SYSV
! char *sprintf();
! #endif
! char *malloc(), *index(), *rindex(), *getenv(), *strcpy(), *strcat();
double atof();
***************
*** 977,982 ****
--- 987,993 ----
static void
enable_intr() {
+ #ifndef SYSV
int socket = ConnectionNumber(DISP);
if (!isatty(0)) {
puts("trying...");
***************
*** 986,991 ****
--- 997,1003 ----
(void) signal(SIGIO, handle_intr);
(void) fcntl(socket, F_SETOWN, getpid());
(void) fcntl(socket, F_SETFL, fcntl(socket, F_GETFL, 0) | FASYNC);
+ #endif
}
static
***************
*** 1039,1045 ****
[-cr <color>]\n\
[-margins <inches>] [-sidemargin <inches>] [-topmargin <inches>]\n\
[-mgs[n] <size>] [-geometry <geometry>] [#<geometry>]\n\
! [-display <host:display>] dvi_file\n", stderr);
#else X10
fputs("\
Usage: xdvi [+[<page>]] [-s <shrink>] [-S <density>] [-p <pixels>] [-l] [-rv]\n\
--- 1051,1057 ----
[-cr <color>]\n\
[-margins <inches>] [-sidemargin <inches>] [-topmargin <inches>]\n\
[-mgs[n] <size>] [-geometry <geometry>] [#<geometry>]\n\
! [-altfont <font>] [-display <host:display>] dvi_file\n", stderr);
#else X10
fputs("\
Usage: xdvi [+[<page>]] [-s <shrink>] [-S <density>] [-p <pixels>] [-l] [-rv]\n\
***************
*** 1047,1053 ****
[-cr <color>]\n\
[-margins <inches>] [-sidemargin <inches>] [-topmargin <inches>]\n\
[-mgs[n] <size>] [-geometry <geometry> | =<geometry>]\n\
! [-display <host:display> | host:display] dvi_file\n", stderr);
#endif X10
exit(1);
}
--- 1059,1066 ----
[-cr <color>]\n\
[-margins <inches>] [-sidemargin <inches>] [-topmargin <inches>]\n\
[-mgs[n] <size>] [-geometry <geometry> | =<geometry>]\n\
! [-altfont <font>] [-display <host:display> | host:display] dvi_file\n",
! stderr);
#endif X10
exit(1);
}
***************
*** 1069,1074 ****
--- 1082,1088 ----
{"-margins", ".margins", XrmoptionSepArg, (caddr_t) NULL},
{"-sidemargin", ".sideMargin", XrmoptionSepArg, (caddr_t) NULL},
{"-topmargin", ".topMargin", XrmoptionSepArg, (caddr_t) NULL},
+ {"-altfont", ".altFont", XrmoptionSepArg, (caddr_t) NULL},
{"-l", ".listFonts", XrmoptionNoArg, (caddr_t) "on"},
{"+l", ".listFonts", XrmoptionNoArg, (caddr_t) "off"},
{"-fg", ".foreground", XrmoptionSepArg, (caddr_t) NULL},
***************
*** 1105,1110 ****
--- 1119,1126 ----
(Cardinal) &sidemargin, XtRString, NULL},
{"topMargin", "Margin", XtRString, sizeof(char *),
(Cardinal) &topmargin, XtRString, NULL},
+ {"altFont", "AltFont", XtRString, sizeof(char *),
+ (Cardinal) &alt_font, XtRString, (caddr_t) ALTFONT},
{"listFonts", "ListFonts", XtRBoolean, sizeof(Boolean),
(Cardinal) &list_fonts, XtRBoolean, (caddr_t) &list_fonts},
{"reverseVideo", "ReverseVideo", XtRBoolean, sizeof(Boolean),
***************
*** 1117,1128 ****
(Cardinal)&back_args.value, XtRPixel, (caddr_t) &back_args.value},
{"background", "Background", XtRString, sizeof(char *),
(Cardinal)&back_color, XtRString, NULL},
! {"highlight", "Highlight", XtRColor, sizeof(XColor),
! (Cardinal)&hl_Color, XtRColor, (caddr_t) &hl_Color},
{"highlight", "Highlight", XtRString, sizeof(char *),
(Cardinal)&high_color, XtRString, NULL},
! {"cursorColor", "CursorColor", XtRColor, sizeof(XColor),
! (Cardinal)&cr_Color, XtRColor, (caddr_t) &cr_Color},
{"cursorColor", "CursorColor", XtRString, sizeof(char *),
(Cardinal)&curs_color, XtRString, NULL},
{"iconGeometry", "IconGeometry", XtRString, sizeof(char *),
--- 1133,1144 ----
(Cardinal)&back_args.value, XtRPixel, (caddr_t) &back_args.value},
{"background", "Background", XtRString, sizeof(char *),
(Cardinal)&back_color, XtRString, NULL},
! {"highlight", "Highlight", XtRPixel, sizeof(Pixel),
! (Cardinal)&hl_Pixel, XtRPixel, (caddr_t) &hl_Pixel},
{"highlight", "Highlight", XtRString, sizeof(char *),
(Cardinal)&high_color, XtRString, NULL},
! {"cursorColor", "CursorColor", XtRPixel, sizeof(Pixel),
! (Cardinal)&cr_Pixel, XtRPixel, (caddr_t) &cr_Pixel},
{"cursorColor", "CursorColor", XtRString, sizeof(char *),
(Cardinal)&curs_color, XtRString, NULL},
{"iconGeometry", "IconGeometry", XtRString, sizeof(char *),
***************
*** 1286,1306 ****
}
highGC = ruleGC;
if (high_color)
! highGC = MakeGC(GXcopy, hl_Color.pixel, back_args.value);
}
ready_cursor = XCreateFontCursor(DISP, XC_cross);
redraw_cursor = XCreateFontCursor(DISP, XC_watch);
if (!curs_color)
! if (high_color) cr_Color = hl_Color;
! else {
! cr_Color.pixel = fore_args.value;
! XQueryColor(DISP, DefaultColormapOfScreen(SCRN), &cr_Color);
! }
{
! XColor bg_Color;
bg_Color.pixel = back_args.value;
XQueryColor(DISP, DefaultColormapOfScreen(SCRN), &bg_Color);
XRecolorCursor(DISP, ready_cursor, &cr_Color, &bg_Color);
XRecolorCursor(DISP, redraw_cursor, &cr_Color, &bg_Color);
}
--- 1302,1321 ----
}
highGC = ruleGC;
if (high_color)
! highGC = MakeGC(GXcopy, hl_Pixel, back_args.value);
}
ready_cursor = XCreateFontCursor(DISP, XC_cross);
redraw_cursor = XCreateFontCursor(DISP, XC_watch);
if (!curs_color)
! cr_Pixel = high_color ? hl_Pixel : fore_args.value;
{
! XColor bg_Color, cr_Color;
!
bg_Color.pixel = back_args.value;
XQueryColor(DISP, DefaultColormapOfScreen(SCRN), &bg_Color);
+ cr_Color.pixel = cr_Pixel;
+ XQueryColor(DISP, DefaultColormapOfScreen(SCRN), &cr_Color);
XRecolorCursor(DISP, ready_cursor, &cr_Color, &bg_Color);
XRecolorCursor(DISP, redraw_cursor, &cr_Color, &bg_Color);
}
***************
*** 1343,1348 ****
--- 1358,1364 ----
{"-margins", "margins", SepArg, StringArg, (caddr_t) &margins},
{"-sidemargin", "sideMargin", SepArg, StringArg, (caddr_t) &sidemargin},
{"-topmargin", "topMargin", SepArg, StringArg, (caddr_t) &topmargin},
+ {"-altfont", "altFont", SepArg, StringArg, (caddr_t) &alt_font},
{"-l", "listFonts", TrueArg, BooleanArg, (caddr_t) &list_fonts},
{"+l", NULL, FalseArg, BooleanArg, (caddr_t) &list_fonts},
{"-rv", "reverseVideo", TrueArg, BooleanArg, (caddr_t) &reverse},
diff -cr old/xdvi.man.sed new/xdvi.man.sed
*** old/xdvi.man.sed Wed May 10 19:49:47 1989
--- new/xdvi.man.sed Wed May 10 20:11:40 1989
***************
*** 1,14 ****
! .TH XDVI SIPB "17 January 1989" "X Version 11"
.SH NAME
xdvi \- DVI Previewer for the X Window System
.SH SYNOPSIS
.B xdvi
[+[\fIpage\fP]] [\-s \fIshrink\fP] [\-S \fIdensity\fP] [\-p \fIpixels\fP]
! [\-l] [\-rv] [\-fg \fIcolor\fP] [\-bg \fIcolor\fP] [\-hl \fIcolor\fP]
! [\-bd \fIcolor\fP] [\-cr \fIcolor\fP] [-thorough] [\-margins \fIinches\fP]
! [\-sidemargin \fIinches\fP] [\-topmargin \fIinches\fP]
[\-mgs[\fIn\fP] \fIsize\fP] [\-geometry \fIgeometry\fP | =\fIgeometry\fP]
[%\fIgeometry\fP] [\-display \fIdisplay\fP] file
.SH DESCRIPTION
.I Xdvi
is a program which runs under the X window system. It is used to preview
--- 1,16 ----
! .TH XDVI SIPB "8 May 1989" "X Version 11"
.SH NAME
xdvi \- DVI Previewer for the X Window System
.SH SYNOPSIS
.B xdvi
+ .nh
[+[\fIpage\fP]] [\-s \fIshrink\fP] [\-S \fIdensity\fP] [\-p \fIpixels\fP]
! [\-altfont \fIfont\fP] [\-l] [\-rv] [\-fg \fIcolor\fP] [\-bg \fIcolor\fP]
! [\-hl \fIcolor\fP] [\-bd \fIcolor\fP] [\-cr \fIcolor\fP] [-thorough]
! [\-margins \fIinches\fP] [\-sidemargin \fIinches\fP] [\-topmargin \fIinches\fP]
[\-mgs[\fIn\fP] \fIsize\fP] [\-geometry \fIgeometry\fP | =\fIgeometry\fP]
[%\fIgeometry\fP] [\-display \fIdisplay\fP] file
+ .hy
.SH DESCRIPTION
.I Xdvi
is a program which runs under the X window system. It is used to preview
***************
*** 53,58 ****
--- 55,65 ----
(.pixelsPerInch)
Defines the size of the fonts to use, in pixels per inch. The
default value is 300.
+ .TP
+ .BI \-altfont " font"
+ (.altFont)
+ Declares a default font to use when the font in the dvi file cannot be found.
+ This is useful, for example, with PostScript <tm> fonts.
.TP
.B \-l
(.listFonts)
diff -cr old/xdvi10.man.s new/xdvi10.man.s
*** old/xdvi10.man.s Wed May 10 19:49:51 1989
--- new/xdvi10.man.s Wed May 10 20:11:40 1989
***************
*** 1,14 ****
! .TH XDVI SIPB "17 January 1989" "X Version 10"
.SH NAME
xdvi \- DVI Previewer for the X Window System
.SH SYNOPSIS
.B xdvi
[+[\fIpage\fP]] [\-s \fIshrink\fP] [\-S \fIdensity\fP] [\-p \fIpixels\fP]
! [\-l] [\-rv] [\-fg \fIcolor\fP] [\-bg \fIcolor\fP] [\-hl \fIcolor\fP]
! [\-bd \fIcolor\fP] [\-cr \fIcolor\fP] [\-margins \fIinches\fP]
! [\-sidemargin \fIinches\fP] [\-topmargin \fIinches\fP]
[\-mgs[\fIn\fP] \fIsize\fP] [\-geometry \fIgeometry\fP | =\fIgeometry\fP]
[\-display \fIdisplay\fP | \fIhost\fP:\fIdisplay\fP] file
.SH DESCRIPTION
.I Xdvi
is a program which runs under the X window system. It is used to preview
--- 1,16 ----
! .TH XDVI SIPB "8 May 1989" "X Version 10"
.SH NAME
xdvi \- DVI Previewer for the X Window System
.SH SYNOPSIS
.B xdvi
+ .nh
[+[\fIpage\fP]] [\-s \fIshrink\fP] [\-S \fIdensity\fP] [\-p \fIpixels\fP]
! [\-altfont \fIfont\fP] [\-l] [\-rv] [\-fg \fIcolor\fP] [\-bg \fIcolor\fP]
! [\-hl \fIcolor\fP] [\-bd \fIcolor\fP] [\-cr \fIcolor\fP]
! [\-margins \fIinches\fP] [\-sidemargin \fIinches\fP] [\-topmargin \fIinches\fP]
[\-mgs[\fIn\fP] \fIsize\fP] [\-geometry \fIgeometry\fP | =\fIgeometry\fP]
[\-display \fIdisplay\fP | \fIhost\fP:\fIdisplay\fP] file
+ .hy
.SH DESCRIPTION
.I Xdvi
is a program which runs under the X window system. It is used to preview
***************
*** 53,58 ****
--- 55,65 ----
(pixelsPerInch)
Defines the size of the fonts to use, in pixels per inch. The
default value is 300.
+ .TP
+ .BI \-altfont " font"
+ (altFont)
+ Declares a default font to use when the font in the dvi file cannot be found.
+ This is useful, for example, with PostScript <tm> fonts.
.TP
.B \-l
(listFonts)