On Sun, 21 Dec 2008, Paul Gilmartin wrote:

Hello, Lyncei,

Trying to diagnose a misbehavior peculiar to z/OS (formerly
OS/390), I'm trying to trace a call to date_parse in parsdate.c.
I find a prototype, but no body of date_parse.  Is this a
function I don't know about in a standard library, or have
I failed to understand the tangle of macro definitions, or
is there some other explanation entirely?

it's supposed to be in a new file, which I added in dev.10 (src/parsdate.c). It's a yacc parser, so the original source file
(src/parsdate.y) ends with ".y".  (lynx sources have both .c and .y)


gil:137$ grep date_parse `find . ! -type d`
../lynx2-8-7/src/parsdate.y:extern int date_parse(void);
../lynx2-8-7/src/parsdate.y:#define yyparse              date_parse
../lynx2-8-7/src/parsdate.y: if (date_parse() || yyHaveTime > 1 || yyHaveDate > 1)
../lynx2-8-7/src/parsdate.c:extern int date_parse(void);
../lynx2-8-7/src/parsdate.c:#define yyparse              date_parse
../lynx2-8-7/src/parsdate.c: if (date_parse() || yyHaveTime > 1 || yyHaveDate > 1)

"yyparse" is the entrypoint that yacc generates.
It's #define'd in the source to a name that's more suitable to the application. But in the "C" file, it's this chunk:

int
YYPARSE_DECL()
{
    int yym, yyn, yystate;
#if YYDEBUG

because of another #define

/* compatibility with bison */
#ifdef YYPARSE_PARAM
/* compatibility with FreeBSD */
#ifdef YYPARSE_PARAM_TYPE
#define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
#else
#define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
#endif
#else
#define YYPARSE_DECL() yyparse(void)
#endif /* YYPARSE_PARAM */

extern int YYPARSE_DECL();


--
Thomas E. Dickey
http://invisible-island.net
ftp://invisible-island.net


_______________________________________________
Lynx-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lynx-dev

Reply via email to