Change HANDLE_PRAGMA macro so that it supports USE_CPPLIB

From-SVN: r22167
This commit is contained in:
Nick Clifton 1998-09-02 10:04:26 +00:00 committed by Nick Clifton
parent ae4d12ca9f
commit c5168e64d4
2 changed files with 47 additions and 4 deletions

View file

@ -1,3 +1,12 @@
Wed Sep 02 09:25:29 1998 Nick Clifton <nickc@cygnus.com>
* lex.c (check_newline): Change how HANDLE_PRAGMA is called.
Generate warning messages if unknown pragmas are encountered.
(pragma_getc): New function: retrieves characters from the
input stream. Defined when HANDLE_PRAGMA is defined.
(pragma_ungetc): New function: replaces characters back into the
input stream. Defined when HANDLE_PRAGMA is defined.
Mon Aug 31 15:35:16 1998 Dave Brolley <brolley@cygnus.com>
* decl.c (layout_chill_variants): Calculate nlables properly.

View file

@ -1,5 +1,5 @@
/* Lexical analyzer for GNU CHILL. -*- C -*-
Copyright (C) 1992, 93, 1994 Free Software Foundation, Inc.
Copyright (C) 1992, 93, 1994, 1998 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -1495,6 +1495,22 @@ getlc (file)
return c;
}
#if defined HANDLE_PRAGMA
/* Local versions of these macros, that can be passed as function pointers. */
static int
pragma_getc ()
{
return getc (finput);
}
static void
pragma_ungetc (arg)
int arg;
{
ungetc (arg, finput);
}
#endif /* HANDLE_PRAGMA */
/* At the beginning of a line, increment the line number and process
any #-directive on this line. If the line is a #-directive, read
the entire line and return a newline. Otherwise, return the line's
@ -1553,10 +1569,28 @@ check_newline ()
&& (isspace (c = getlc (finput))))
{
#ifdef HANDLE_PRAGMA
return HANDLE_PRAGMA (finput, c);
#else
goto skipline;
static char buffer [128];
char * buff = buffer;
/* Read the pragma name into a buffer. */
while (isspace (c = getlc (finput)))
continue;
do
{
* buff ++ = c;
c = getlc (finput);
}
while (c != EOF && ! isspace (c) && c != '\n'
&& buff < buffer + 128);
pragma_ungetc (c);
* -- buff = 0;
(void) HANDLE_PRAGMA (pragma_getc, pragma_ungetc, buffer);
#endif /* HANDLE_PRAGMA */
goto skipline;
}
}