Don't use .Xo/.Xc. Fix date format.
[netbsd-mini2440.git] / gnu / usr.bin / groff / libXdvi / page.c
blob0c5a5f6080eaa93f0b155d5290c04934d441a28e
1 /*
2 * page.c
4 * map page numbers to file position
5 */
7 #include <X11/Xos.h>
8 #include <X11/IntrinsicP.h>
9 #include <X11/StringDefs.h>
10 #include <stdio.h>
11 #include <ctype.h>
12 #include "DviP.h"
14 static DviFileMap *
15 MapPageNumberToFileMap (dw, number)
16 DviWidget dw;
17 int number;
19 DviFileMap *m;
21 for (m = dw->dvi.file_map; m; m=m->next)
22 if (m->page_number == number)
23 break;
24 return m;
27 DestroyFileMap (m)
28 DviFileMap *m;
30 DviFileMap *next;
32 for (; m; m = next) {
33 next = m->next;
34 free ((char *) m);
38 ForgetPagePositions (dw)
39 DviWidget dw;
41 DestroyFileMap (dw->dvi.file_map);
42 dw->dvi.file_map = 0;
45 RememberPagePosition(dw, number)
46 DviWidget dw;
47 int number;
49 extern long ftell();
50 DviFileMap *m;
52 if (!(m = MapPageNumberToFileMap (dw, number))) {
53 m = (DviFileMap *) malloc (sizeof *m);
54 m->page_number = number;
55 m->next = dw->dvi.file_map;
56 dw->dvi.file_map = m;
58 if (dw->dvi.tmpFile)
59 m->position = ftell (dw->dvi.tmpFile);
60 else
61 m->position = ftell (dw->dvi.file);
64 SearchPagePosition (dw, number)
65 DviWidget dw;
66 int number;
68 DviFileMap *m;
70 if (!(m = MapPageNumberToFileMap (dw, number)))
71 return -1;
72 return m->position;
75 FileSeek(dw, position)
76 DviWidget dw;
77 long position;
79 if (dw->dvi.tmpFile) {
80 dw->dvi.readingTmp = 1;
81 fseek (dw->dvi.tmpFile, position, 0);
82 } else
83 fseek (dw->dvi.file, position, 0);