You need to close the port I believe. <div><br></div><div>Robby<span></span><br><br>On Thursday, April 11, 2013, Steve Byan  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Section 3.7.4 &quot;Regexp Matching&quot; of the &quot;Racket Reference&quot; says in part:<br>
<br>
&quot;If the optional output-port is provided as an output port, the part of input from its beginning (not start-pos) that precedes the match is written to the port. All of input up to end-pos is written to the port if no match is found. This functionality is most useful when input is an input port.&quot;<br>

<br>
Given this input file:<br>
<br>
multivac:~ smb$ cat /Users/smb/Library/Mail/V2/Mailboxes/personal.mbox/PMRC.mbox/Info.plist<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br>
&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;<a href="http://www.apple.com/DTDs/PropertyList-1.0.dtd" target="_blank">http://www.apple.com/DTDs/PropertyList-1.0.dtd</a>&quot;&gt;<br>
&lt;plist version=&quot;1.0&quot;&gt;<br>
&lt;dict&gt;<br>
        &lt;key&gt;DisplayInThreadedMode&lt;/key&gt;<br>
        &lt;string&gt;no&lt;/string&gt;<br>
        &lt;key&gt;MailboxName&lt;/key&gt;<br>
        &lt;string&gt;PMRC&lt;/string&gt;<br>
        &lt;key&gt;SearchSortDescending&lt;/key&gt;<br>
        &lt;string&gt;YES&lt;/string&gt;<br>
        &lt;key&gt;SearchSortOrder&lt;/key&gt;<br>
        &lt;string&gt;received-date&lt;/string&gt;<br>
        &lt;key&gt;SortOrder&lt;/key&gt;<br>
        &lt;string&gt;received-date&lt;/string&gt;<br>
        &lt;key&gt;SortedDescending&lt;/key&gt;<br>
        &lt;string&gt;NO&lt;/string&gt;<br>
&lt;/dict&gt;<br>
&lt;/plist&gt;<br>
<br>
I expect the following racket function to copy the entire input port to the output port:<br>
<br>
#lang racket<br>
<br>
(define (plist-file-match-sorted-descending plist-path)<br>
 (let ([input-port (open-input-file plist-path)]<br>
       [output-port (open-output-file (path-replace-suffix plist-path &quot;.plist~&quot;) #:exists &#39;replace)])<br>
   (if (regexp-match &quot;&lt;key&gt;SortedDescending&lt;/key&gt;\n\t&lt;string&gt;YES&lt;/string&gt;&quot; input-port 0 #f output-port)<br>
       (displayln &quot;sorted descending&quot;)<br>
       (displayln &quot;sorted ascending&quot;))))<br>
<br>
(define test-path (string-&gt;path &quot;/Users/smb/Library/Mail/V2/Mailboxes/personal.mbox/PMRC.mbox/Info.plist&quot;))<br>
<br>
I apply the function to the file path:<br>
<br>
Welcome to DrRacket, version 5.3.3 [3m].<br>
Language: racket; memory limit: 128 MB.<br>
&gt; (plist-file-match-sorted-descending test-path)<br>
sorted ascending<br>
&gt;<br>
<br>
But despite my expectations the resulting Info.plist~ file is empty:<br>
<br>
multivac:~ smb$ ls -l /Users/smb/Library/Mail/V2/Mailboxes/personal.mbox/PMRC.mbox/Info.plist~<br>
-rw-r--r--  1 smb  staff  0 Apr 10 17:09 /Users/smb/Library/Mail/V2/Mailboxes/personal.mbox/PMRC.mbox/Info.plist~<br>
<br>
<br>
What am I missing?<br>
<br>
Best regards,<br>
-Steve<br>
<br>
--<br>
Steve Byan &lt;<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;stevebyan@me.com&#39;)">stevebyan@me.com</a>&gt;<br>
Littleton, MA 01460<br>
<br>
<br>
<br>
<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</blockquote></div>