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