1#include <X11/Xos.h> 2#include <X11/IntrinsicP.h> 3#include <X11/StringDefs.h> 4#include <stdio.h> 5#include "DviP.h" 6 7int 8DviGetAndPut(DviWidget dw, int *cp) 9{ 10 if (dw->dvi.ungot) { 11 dw->dvi.ungot = 0; 12 *cp = getc (dw->dvi.file); 13 } 14 else { 15 *cp = getc (dw->dvi.file); 16 if (*cp != EOF) 17 putc (*cp, dw->dvi.tmpFile); 18 } 19 return *cp; 20} 21 22char * 23GetLine(DviWidget dw, char *Buffer, int Length) 24{ 25 int i = 0, c; 26 27 Length--; /* Save room for final '\0' */ 28 29 while (DviGetC (dw, &c) != EOF) { 30 if (Buffer && i < Length) 31 Buffer[i++] = c; 32 if (c == '\n') { 33 DviUngetC(dw, c); 34 break; 35 } 36 } 37 if (Buffer) 38 Buffer[i] = '\0'; 39 return Buffer; 40} 41 42char * 43GetWord(DviWidget dw, char *Buffer, int Length) 44{ 45 int i = 0, c; 46 47 Length--; /* Save room for final '\0' */ 48 while (DviGetC(dw, &c) == ' ' || c == '\n') 49 ; 50 while (c != EOF) { 51 if (Buffer && i < Length) 52 Buffer[i++] = c; 53 if (DviGetC(dw, &c) == ' ' || c == '\n') { 54 DviUngetC(dw, c); 55 break; 56 } 57 } 58 if (Buffer) 59 Buffer[i] = '\0'; 60 return Buffer; 61} 62 63int 64GetNumber(DviWidget dw) 65{ 66 int i = 0, c; 67 int negative = 0; 68 69 while (DviGetC(dw, &c) == ' ' || c == '\n') 70 ; 71 if (c == '-') { 72 negative = 1; 73 DviGetC(dw, &c); 74 } 75 76 for (; c >= '0' && c <= '9'; DviGetC(dw, &c)) { 77 if (negative) 78 i = i*10 - (c - '0'); 79 else 80 i = i*10 + c - '0'; 81 } 82 if (c != EOF) 83 DviUngetC(dw, c); 84 return i; 85} 86 87/* 88Local Variables: 89c-indent-level: 8 90c-continued-statement-offset: 8 91c-brace-offset: -8 92c-argdecl-indent: 8 93c-label-offset: -8 94c-tab-always-indent: nil 95End: 96*/ 97