diff options
author | ru <ru@FreeBSD.org> | 2001-04-17 12:12:05 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2001-04-17 12:12:05 +0000 |
commit | 78a36d21097dbce47cbcd4818ecd041388952f73 (patch) | |
tree | 8c20bfd611f113ea0cc691f0a026ad5ed1b43c72 /contrib/groff/src/xditview/page.c | |
parent | 3b4ec64f2874f8497458268896220e5c9c859d05 (diff) | |
parent | 0e0a0e6429c7113acf15c4c94bd5fe94c45f9e99 (diff) | |
download | FreeBSD-src-78a36d21097dbce47cbcd4818ecd041388952f73.zip FreeBSD-src-78a36d21097dbce47cbcd4818ecd041388952f73.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r75584,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/groff/src/xditview/page.c')
-rw-r--r-- | contrib/groff/src/xditview/page.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/contrib/groff/src/xditview/page.c b/contrib/groff/src/xditview/page.c new file mode 100644 index 0000000..9284199 --- /dev/null +++ b/contrib/groff/src/xditview/page.c @@ -0,0 +1,88 @@ +/* + * page.c + * + * map page numbers to file position + */ + +#include <X11/Xos.h> +#include <X11/IntrinsicP.h> +#include <X11/StringDefs.h> +#include <stdio.h> +#include <ctype.h> +#include "DviP.h" + +#ifdef X_NOT_STDC_ENV +extern long ftell(); +#endif + +static DviFileMap * +MapPageNumberToFileMap (dw, number) + DviWidget dw; + int number; +{ + DviFileMap *m; + + for (m = dw->dvi.file_map; m; m=m->next) + if (m->page_number == number) + break; + return m; +} + +DestroyFileMap (m) + DviFileMap *m; +{ + DviFileMap *next; + + for (; m; m = next) { + next = m->next; + XtFree ((char *) m); + } +} + +ForgetPagePositions (dw) + DviWidget dw; +{ + DestroyFileMap (dw->dvi.file_map); + dw->dvi.file_map = 0; +} + +RememberPagePosition(dw, number) + DviWidget dw; + int number; +{ + DviFileMap *m; + + if (!(m = MapPageNumberToFileMap (dw, number))) { + m = (DviFileMap *) XtMalloc (sizeof *m); + m->page_number = number; + m->next = dw->dvi.file_map; + dw->dvi.file_map = m; + } + if (dw->dvi.tmpFile) + m->position = ftell (dw->dvi.tmpFile); + else + m->position = ftell (dw->dvi.file); +} + +SearchPagePosition (dw, number) + DviWidget dw; + int number; +{ + DviFileMap *m; + + if (!(m = MapPageNumberToFileMap (dw, number))) + return -1; + return m->position; +} + +FileSeek(dw, position) +DviWidget dw; +long position; +{ + if (dw->dvi.tmpFile) { + dw->dvi.readingTmp = 1; + fseek (dw->dvi.tmpFile, position, 0); + } else + fseek (dw->dvi.file, position, 0); +} + |