| |||
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] |
I was attempting to compile the latest version of flex, 2.5.31, when it failed with three errors. All three had to do with invalid lvalues so I opened up filter.c (the offending file) and checked the lines. They were of the form:_______________________________________________
if ((stdin = fdopen(0, "r") == NULL)
Since I had just successfully compiled this version on linux, I decided to open /usr/include/stdio.h to see just how stdin and stdout were defined. Here is what I found:
#define stdin (&__sF[0])
#define stdout (&__sF[1])
#define stderr (&__sF[2])
I checked the stdio.h file on the linux computer to see what it contained. It had:
extern FILE *stdin; /* Standard input stream. */
extern FILE *stdout; /* Standard output stream. */
extern FILE *stderr; /* Standard error output stream. */
#ifdef __STDC__
/* C89/C99 say they're macros. Make them happy. */
#define stdin stdin
#define stdout stdout
#define stderr stderr
#endif
I suspected that changing stdin/stdout in the lines that were failing to fp = fdopen... where fp was a FILE* and then adding an else clause of memcpy(stdin, fp, sizeof(FILE)) would be a bad idea but I went ahead and tried it. 5 tests failed when I ran make check (and then 4 subsequent times...) so I don't know if the problem is unrelated or if I was correct and that really was a bad idea.
After all that background, I suppose my questions are:
1) Is there a reason to make stdin, stdout, and stderr be addresses of a FILE rather than a FILE*?
2) How should I hack around the assignment to stdin/stdout?
Thanks,
Steve Checkoway
_______________________________________________
darwin-development mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-development
Do not post admin requests to the list. They will be ignored.
| References: | |
| >stdin/stdout (From: Steve Checkoway <email@hidden>) |
| Home | Archives | FAQ | Terms/Conditions | Contact | RSS | Lists | About |
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE
Contact Apple | Terms of Use | Privacy Policy
Copyright © 2007 Apple Inc. All rights reserved.