Really sort alphabetically.
[dragonfly.git] / contrib / groff-1.19 / src / xditview / lex.c
1 #include <X11/Xos.h>
2 #include <X11/IntrinsicP.h>
3 #include <X11/StringDefs.h>
4 #include <stdio.h>
5 #include "DviP.h"
6
7 int
8 DviGetAndPut(dw, cp)
9     DviWidget   dw;
10     int         *cp;
11 {
12         if (dw->dvi.ungot) {
13                 dw->dvi.ungot = 0;
14                 *cp = getc (dw->dvi.file);
15         }
16         else {
17                 *cp = getc (dw->dvi.file);
18                 if (*cp != EOF)
19                         putc (*cp, dw->dvi.tmpFile);
20         }
21         return *cp;
22 }
23
24 char *
25 GetLine(dw, Buffer, Length)
26         DviWidget       dw;
27         char    *Buffer;
28         int     Length;
29 {
30         int     i = 0, c;
31         
32         Length--;                    /* Save room for final '\0' */
33         
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;
40                 }
41         }
42         if (Buffer)
43                 Buffer[i] = '\0';
44         return Buffer;
45
46
47 char *
48 GetWord(dw, Buffer, Length)
49         DviWidget       dw;
50         char    *Buffer;
51         int     Length;
52 {
53         int     i = 0, c;
54         
55         Length--;                           /* Save room for final '\0' */
56         while (DviGetC(dw, &c) == ' ' || c == '\n')
57                 ;
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;
64                 }
65         }
66         if (Buffer)
67                 Buffer[i] = '\0';
68         return Buffer;
69
70
71 int
72 GetNumber(dw)
73         DviWidget       dw;
74 {
75         int     i = 0,  c;
76         int     negative = 0;
77
78         while (DviGetC(dw, &c) == ' ' || c == '\n')
79                 ;
80         if (c == '-') {
81                 negative = 1;
82                 DviGetC(dw, &c);
83         }
84
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';
90         }
91         if (c != EOF)
92                 DviUngetC(dw, c);
93         return i;
94 }
95         
96 /*
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:
105 */