Xref: utzoo comp.sources.d:2069 comp.os.vms:5993 comp.lang.c:10056 Path: utzoo!mnetor!uunet!lll-winken!lll-tis!ames!ncar!noao!arizona!naucse!jdc From: jdc@naucse.UUCP (John Campbell) Newsgroups: comp.sources.d,comp.os.vms,comp.lang.c Subject: flex Message-ID: <690@naucse.UUCP> Date: 10 May 88 20:21:17 GMT Organization: Northern Arizona University, Flagstaff, AZ Lines: 38 Keywords: flex on VMS Well I just finished making flex (Fast lex from Vern Paxson) work on VMS. The reason for this posting is to raise a 'C' question and to let people know flex will run on VMS. The 'C' question: Flex has the following global line: FILE *yyin=stdin, *yyout=stdout; which does not work at compile time on VMS. In other words, it appears the compiler does not treat stdin as a constant--it's value is known only at run-time. (VMS stdio.h says "extern noshare FILE *stdin;.) To work around this I had to concote a fake main(): FILE *yyin, *yyout; main() { yyin = stdin; yyout = stdout; Question: Is my compiler deficient? Is the initialization done in flex suppose to work in ANSI C? Flex on VMS: For those interested, the following changes were done to make flex work on VMS: 1) 2 macro names > 31 characters where changed, 2) some file names were corrected to fit the VMS file system, 3) the yyin problem mentioned above was worked around, 4) bzero was defined as OTS$MOVEC5, and 5) unlink() was replaced with delete(). If there is enough interest I can post a SEARCH for VMS (300 lines) indicating how the original was changed. I'm afraid my port is only a start toward folding VMS support back into the original. Anyone wanting to improve on my effort is more than welcome, but I fear the unix community may be less than sympathetic to those of us stuck on VMS :-). MUCH THANKS TO VERN PAXSON, KEVIN GONG, VAN JACOBSON, ET.AL.!!!!!! -- John Campbell ...!arizona!naucse!jdc unix? Sure send me a dozen, all different colors.