1151497Sru#include <X11/Xos.h>
2151497Sru#include <X11/IntrinsicP.h>
3151497Sru#include <X11/StringDefs.h>
4151497Sru#include <stdio.h>
5151497Sru#include "DviP.h"
6151497Sru
7151497Sruint
8151497SruDviGetAndPut(DviWidget dw, int *cp)
9151497Sru{
10151497Sru	if (dw->dvi.ungot) {
11151497Sru		dw->dvi.ungot =	0;
12151497Sru		*cp = getc (dw->dvi.file);
13151497Sru	}
14151497Sru	else {
15151497Sru		*cp = getc (dw->dvi.file);
16151497Sru		if (*cp != EOF)
17151497Sru			putc (*cp, dw->dvi.tmpFile);
18151497Sru	}
19151497Sru	return *cp;
20151497Sru}
21151497Sru
22151497Sruchar *
23151497SruGetLine(DviWidget dw, char *Buffer, int Length)
24151497Sru{
25151497Sru	int 	i = 0, c;
26151497Sru
27151497Sru	Length--;		     /* Save room for final '\0' */
28151497Sru
29151497Sru	while (DviGetC (dw, &c) != EOF) {
30151497Sru		if (Buffer && i < Length)
31151497Sru			Buffer[i++] = c;
32151497Sru		if (c == '\n') {
33151497Sru			DviUngetC(dw, c);
34151497Sru			break;
35151497Sru		}
36151497Sru	}
37151497Sru	if (Buffer)
38151497Sru		Buffer[i] = '\0';
39151497Sru	return Buffer;
40151497Sru}
41151497Sru
42151497Sruchar *
43151497SruGetWord(DviWidget dw, char *Buffer, int Length)
44151497Sru{
45151497Sru	int 	i = 0, c;
46151497Sru
47151497Sru	Length--;			    /* Save room for final '\0' */
48151497Sru	while (DviGetC(dw, &c) == ' ' || c == '\n')
49151497Sru		;
50151497Sru	while (c != EOF) {
51151497Sru		if (Buffer && i < Length)
52151497Sru			Buffer[i++] = c;
53151497Sru		if (DviGetC(dw, &c) == ' ' || c == '\n') {
54151497Sru			DviUngetC(dw, c);
55151497Sru			break;
56151497Sru		}
57151497Sru	}
58151497Sru	if (Buffer)
59151497Sru		Buffer[i] = '\0';
60151497Sru	return Buffer;
61151497Sru}
62151497Sru
63151497Sruint
64151497SruGetNumber(DviWidget dw)
65151497Sru{
66151497Sru	int	i = 0,  c;
67151497Sru	int	negative = 0;
68151497Sru
69151497Sru	while (DviGetC(dw, &c) == ' ' || c == '\n')
70151497Sru		;
71151497Sru	if (c == '-') {
72151497Sru		negative = 1;
73151497Sru		DviGetC(dw, &c);
74151497Sru	}
75151497Sru
76151497Sru	for (; c >= '0' && c <= '9'; DviGetC(dw, &c)) {
77151497Sru		if (negative)
78151497Sru			i = i*10 - (c - '0');
79151497Sru		else
80151497Sru			i = i*10 + c - '0';
81151497Sru	}
82151497Sru	if (c != EOF)
83151497Sru		DviUngetC(dw, c);
84151497Sru	return i;
85151497Sru}
86151497Sru
87151497Sru/*
88151497SruLocal Variables:
89151497Sruc-indent-level: 8
90151497Sruc-continued-statement-offset: 8
91151497Sruc-brace-offset: -8
92151497Sruc-argdecl-indent: 8
93151497Sruc-label-offset: -8
94151497Sruc-tab-always-indent: nil
95151497SruEnd:
96151497Sru*/
97