ic bug ...

Per Bergqvist per@REDACTED
Wed Jan 16 18:06:00 CET 2002

there is a bit of "not so very forward compatible" code in ic.        
If gcc is used as preprocessor command (as mnesia session do) by ic,  
icpreproc.erl will check if the output begins with the string "# 1" as
then treats this as an                                                
indication of succesful preprocessing.                                
However, gcc 3.0  (and probably earlier versions as well) will        
generate "# <line-number-of-first-non-comment-line>"                  
in this case.                                                         
My quick fix is to replace the line :                                 
               [$#, $ , $1 | Rest] ->                  % Ok output    
               [$#, $ , C | Rest] when integer(C),C>$0,C=<$9 ->       
              % Ok output                                             
A better and more future proof solution would be to actually check the
return status from the command ;-).                                   
(I know you can't get it from os:cmd but the needed underlying        
mechanisms are present so we just need a                              
"os:ext_cmd" that gives you return status as well.)                   
The only user of this alternative preprocessor is mnesia_session.     
I am a bit puzzled that nobody detected this bug earlier. Are there   
any users of mnesia_session out there ?                               
Per Bergqvist                                                         
Synapse Systems AB                                                    
Phone: +46 709 686 685                                                
Email: per@REDACTED                                                   

More information about the erlang-questions mailing list