<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style>
<!--
.EmailQuote
        {margin-left:1pt;
        padding-left:4pt;
        border-left:#800000 2px solid}
-->
</style><style type="text/css" id="owaParaStyle">
<!--
-->
</style>
</head>
<body>
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt">Perhaps something like:
<div>  sources = </div>
<div><span class="Apple-style-span" style="font-family:'Courier New',monospace; font-size:large">
<div> sources = [stripdot</div>
<div>                   [collect find . –type f –name ‘*.c’                             print]]];</div>
<div>Then do:</div>
<div> manifest = [filter_out %0%_32.c [sources]];</div>
<div>You are correct that you can't pass 2 patterns to the same filter_out, but you don't need a loop, just nest the 2 ala:</div>
<div> manifest = [filter_out %0%_32.c</div>
<div>               [filter_out %0%_16.c</div>
<div>                  [sources]]];</div>
<div><br>
</div>
</span></div>
<div><font class="Apple-style-span" face="'Courier New', monospace"><span class="Apple-style-span" style="font-size:large">OR you could do the filtering in the collect command ala:</span></font></div>
<div><font class="Apple-style-span" face="'Courier New', monospace"><span class="Apple-style-span" style="font-size:large"> manifest = [stripdot</span></font></div>
<div><font class="Apple-style-span" face="'Courier New', monospace"><span class="Apple-style-span" style="font-size:large">              [collect </span></font><span class="Apple-style-span" style="font-family:'Courier New',monospace; font-size:large">find
 . -type f -name '*.c' -print</span></div>
<div><span class="Apple-style-span" style="font-family:'Courier New',monospace; font-size:large">                 | egrep -v 'scan_(16|32).c']];</span></div>
<div><span class="Apple-style-span" style="font-family:'Courier New',monospace; font-size:large"><br>
</span></div>
<div>
<div style="font-family:Times New Roman; color:#000000; font-size:16px">
<hr tabindex="-1">
<div id="divRpF490853" style="direction:ltr"><font face="Tahoma" size="2" color="#000000"><b>From:</b> cook-users-bounces+jpendergraft=sjm.com@lists.auug.org.au [cook-users-bounces+jpendergraft=sjm.com@lists.auug.org.au] on behalf of Henderson, Michael D [michael.d.henderson@lmco.com]<br>
<b>Sent:</b> Tuesday, December 28, 2010 4:45 PM<br>
<b>To:</b> cook-users@lists.auug.org.au<br>
<b>Subject:</b> [Cook] looking at ways to exclude files from compilation<br>
</font><br>
</div>
<div></div>
<div><font face="Courier New, monospace" size="4">
<div>I have a project that includes files from a vendor that are used to build a library. I put those files into a directory called “vendlib”. I have been using a manifest to find the .c files in that directory and compile them into the library.</div>
<div> </div>
<div>That’s been working well but now I need to break it. We’re now receiving files from the vendor that have names like “scan_16.c” and “scan_32.c” and “scan_64.c”. I don’t want to compile the *_32.c files but want the *_16 and *_64.c files.</div>
<div> </div>
<div>I can hardwire the bit in the cook file that builds the manifest to ignore those files. I tried something like:</div>
<div>  manifest = [filter_out %0%_32.c</div>
<div>               [stripdot</div>
<div>                 [collect find . –type f –name ‘*.c’ print]]];</div>
<div> </div>
<div>It works but I’m trying to keep that part of the cook file generic since it’s included in many projects. I would like something like</div>
<div> </div>
<div>  if [filterFile] then</div>
<div>    manifest = [filter_out [filterFile]</div>
<div>                 [stripdot</div>
<div>                   [collect find . –type f –name ‘*.c’ print]]];</div>
<div>  else</div>
<div>    manifest = [stripdot</div>
<div>                 [collect find . –type f –name ‘*.c’ print]];</div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div>So, now that that’s working, I’m wondering “so what to do when I need to filter out *_32.c and *_16.c”? I don’t see a way to pass two patterns to filter on without going through a loop</div>
<div> </div>
<div>  manifest [stripdot [collect find . –type f –name ‘*.c’ print]];</div>
<div>  loop local aFilter = [filterFile] {</div>
<div>    manifest = [filter_out [aFile] [manifest]];</div>
<div>  }</div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div>Is there a better way to handle that?</div>
<div> </div>
<div>Thanks,</div>
<div style="margin-bottom:10pt"><font face="Palatino Linotype, serif" size="4">Michael D Henderson</font></div>
<div style="margin-bottom:8pt"><font face="Arial Narrow, sans-serif" size="2">   no problem is too big if you don't have to solve all of it</font></div>
<div style="margin-bottom:10pt"><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
</font></div>
</div>
</div>
</div>
This communication, including any attachments, may contain information that is proprietary, privileged, confidential or legally exempt from disclosure. If you are not a named addressee, you are hereby notified that you are not authorized to read, print, retain
 a copy of or disseminate any portion of this communication without the consent of the sender and that doing so may be unlawful. If you have received this communication in error, please immediately notify the sender via return e-mail and delete it from your
 system.
</body>
</html>