* Makefile.in (SEP): Replaced with...
[s-roff.git] / src / xditview / page.c
blobbd3bb60d7a47927c506a3f91e030357a5dbbea05
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 #ifdef X_NOT_STDC_ENV
15 extern long ftell();
16 #endif
18 static DviFileMap *
19 MapPageNumberToFileMap (dw, number)
20 DviWidget dw;
21 int number;
23 DviFileMap *m;
25 for (m = dw->dvi.file_map; m; m=m->next)
26 if (m->page_number == number)
27 break;
28 return m;
31 void
32 DestroyFileMap (m)
33 DviFileMap *m;
35 DviFileMap *next;
37 for (; m; m = next) {
38 next = m->next;
39 XtFree ((char *) m);
43 void
44 ForgetPagePositions (dw)
45 DviWidget dw;
47 DestroyFileMap (dw->dvi.file_map);
48 dw->dvi.file_map = 0;
51 void
52 RememberPagePosition(dw, number)
53 DviWidget dw;
54 int number;
56 DviFileMap *m;
58 if (!(m = MapPageNumberToFileMap (dw, number))) {
59 m = (DviFileMap *) XtMalloc (sizeof *m);
60 m->page_number = number;
61 m->next = dw->dvi.file_map;
62 dw->dvi.file_map = m;
64 if (dw->dvi.tmpFile)
65 m->position = ftell (dw->dvi.tmpFile);
66 else
67 m->position = ftell (dw->dvi.file);
70 long
71 SearchPagePosition (dw, number)
72 DviWidget dw;
73 int number;
75 DviFileMap *m;
77 if (!(m = MapPageNumberToFileMap (dw, number)))
78 return -1;
79 return m->position;
82 void
83 FileSeek(dw, position)
84 DviWidget dw;
85 long position;
87 if (dw->dvi.tmpFile) {
88 dw->dvi.readingTmp = 1;
89 fseek (dw->dvi.tmpFile, position, 0);
90 } else
91 fseek (dw->dvi.file, position, 0);