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.