1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
/* Copyright (c) 2002 Hewlett-Packard under GPL version 2 or later */
#include <stdio.h>
#include "dmain.h"
#include "pmccabe.h"
int Line;
int Unbuf[256];
int *Unptr = Unbuf;
void
Ungetc(int c)
{
if (c == '\n')
{
Line--;
}
*Unptr++ = c;
}
void
Ungets(char *s)
{
int c;
char *ptr;
ptr = s + strlen(s);
do
{
c = *--ptr;
if (!ISSPACE(c))
{
if (c == '\n')
{
Line--;
}
}
*Unptr++ = c;
}
while (ptr != s);
}
int
Getchar()
{
int c;
if (Unptr == Unbuf)
{
if (Piperead >= Pipewrite)
decomment();
c = *Piperead++;
}
else
{
c = *--Unptr;
}
if (c == '\n')
Line++;
return c;
}
|