Update to groff 1.19.2.
[dragonfly.git] / contrib / groff-1.19 / src / xditview / lex.c
blob1f60bbbbc90ba2f4c49b182ced05aaecc2228323
1 #include <X11/Xos.h>
2 #include <X11/IntrinsicP.h>
3 #include <X11/StringDefs.h>
4 #include <stdio.h>
5 #include "DviP.h"
7 int
8 DviGetAndPut(dw, cp)
9 DviWidget dw;
10 int *cp;
12 if (dw->dvi.ungot) {
13 dw->dvi.ungot = 0;
14 *cp = getc (dw->dvi.file);
16 else {
17 *cp = getc (dw->dvi.file);
18 if (*cp != EOF)
19 putc (*cp, dw->dvi.tmpFile);
21 return *cp;
24 char *
25 GetLine(dw, Buffer, Length)
26 DviWidget dw;
27 char *Buffer;
28 int Length;
30 int i = 0, c;
32 Length--; /* Save room for final '\0' */
34 while (DviGetC (dw, &c) != EOF) {
35 if (Buffer && i < Length)
36 Buffer[i++] = c;
37 if (c == '\n') {
38 DviUngetC(dw, c);
39 break;
42 if (Buffer)
43 Buffer[i] = '\0';
44 return Buffer;
47 char *
48 GetWord(dw, Buffer, Length)
49 DviWidget dw;
50 char *Buffer;
51 int Length;
53 int i = 0, c;
55 Length--; /* Save room for final '\0' */
56 while (DviGetC(dw, &c) == ' ' || c == '\n')
58 while (c != EOF) {
59 if (Buffer && i < Length)
60 Buffer[i++] = c;
61 if (DviGetC(dw, &c) == ' ' || c == '\n') {
62 DviUngetC(dw, c);
63 break;
66 if (Buffer)
67 Buffer[i] = '\0';
68 return Buffer;
71 int
72 GetNumber(dw)
73 DviWidget dw;
75 int i = 0, c;
76 int negative = 0;
78 while (DviGetC(dw, &c) == ' ' || c == '\n')
80 if (c == '-') {
81 negative = 1;
82 DviGetC(dw, &c);
85 for (; c >= '0' && c <= '9'; DviGetC(dw, &c)) {
86 if (negative)
87 i = i*10 - (c - '0');
88 else
89 i = i*10 + c - '0';
91 if (c != EOF)
92 DviUngetC(dw, c);
93 return i;
97 Local Variables:
98 c-indent-level: 8
99 c-continued-statement-offset: 8
100 c-brace-offset: -8
101 c-argdecl-indent: 8
102 c-label-offset: -8
103 c-tab-always-indent: nil
104 End: