Don't use .Xo/.Xc. Fix date format.
[netbsd-mini2440.git] / gnu / usr.bin / groff / libXdvi / lex.c
blob4c7d3ced7011c8c93d04cbe6880686484d2dd121
1 #include <X11/Xos.h>
2 #include <X11/IntrinsicP.h>
3 #include <X11/StringDefs.h>
4 #include <stdio.h>
5 #include "DviP.h"
7 DviGetAndPut(dw, cp)
8 DviWidget dw;
9 int *cp;
11 if (dw->dvi.ungot)
13 dw->dvi.ungot = 0;
14 *cp = getc (dw->dvi.file);
16 else
18 *cp = getc (dw->dvi.file);
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;
31 char *p = Buffer;
33 Length--; /* Save room for final NULL */
35 while (i < Length && DviGetC (dw, &c) != EOF && c != '\n')
36 if (p)
37 *p++ = c;
38 if (c == '\n' && p) /* Retain the newline like fgets */
39 *p++ = c;
40 if (c == '\n')
41 DviUngetC(dw, c);
42 if (p)
43 *p = NULL;
44 return (Buffer);
47 char *
48 GetWord(dw, Buffer, Length)
49 DviWidget dw;
50 char *Buffer;
51 int Length;
53 int i = 0, c;
54 char *p = Buffer;
56 Length--; /* Save room for final NULL */
57 while (DviGetC(dw, &c) != EOF && (c == ' ' || c == '\n'))
59 if (c != EOF)
60 DviUngetC(dw, c);
61 while (i < Length && DviGetC(dw, &c) != EOF && c != ' ' && c != '\n')
62 if (p)
63 *p++ = c;
64 if (c != EOF)
65 DviUngetC(dw, c);
66 if (p)
67 *p = NULL;
68 return (Buffer);
71 GetNumber(dw)
72 DviWidget dw;
74 int i = 0, c;
75 int negative = 0;
77 while (DviGetC(dw, &c) != EOF && (c == ' ' || c == '\n'))
79 if (c != EOF)
80 DviUngetC(dw, c);
82 while (DviGetC(dw, &c) != EOF && c >= '0' && c <= '9') {
83 if (negative)
84 i = i*10 - (c - '0');
85 else
86 i = i*10 + c - '0';
89 if (c != EOF)
90 DviUngetC(dw, c);
91 return (i);
95 Local Variables:
96 c-indent-level: 8
97 c-continued-statement-offset: 8
98 c-brace-offset: -8
99 c-argdecl-indent: 8
100 c-label-offset: -8
101 c-tab-always-indent: nil
102 End: