title: Safely replacing text with m4, disabling new defines
body: <p>Given a "rules" file and an "input" file, I would like to process the input file with m4 using the rules defined in the rule file.</p>
  
  <p>So, for example, if the rule file contains</p>
  
  <pre><code>define(FOO, BAR)dnl
  </code></pre>
  
  <p>and the text file contains</p>
  
  <pre><code>FOO FOO define(FOO,BAZ) BAR
  </code></pre>
  
  <p>I would like to get</p>
  
  <pre><code>BAR BAR define(BAR,BAZ) BAR
  </code></pre>
  
  <p>instead of the expected</p>
  
  <pre><code>BAR BAR  BAZ
  </code></pre>
  
  <p>I would like to use a file to define the macros, and process the other file skipping any new define or change in the m4 behavior. Macros should just be expanded, never altered.</p>
  
  <p>Basically, this is because in the text file there may be some text which looks like M4 code, but it is not, and I which it to be ignored.</p>
  
  <p>Or, from another perspective, I need something like search-and-replace, but with the ability to define "complex" macros with arguments.</p>
  
  <p>Is that possible?</p>