Thanks, <br>excellent advice as usual, I&#39;ll keep going (and it keeps me learning)<br><br>Cheers, <br><br>Stephen<br><br><br><div class="gmail_quote">On Wed, Mar 12, 2008 at 8:20 PM, Eli Barzilay &lt;<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">On Mar 12, Stephen De Gabrielle wrote:<br>
</div>&gt; Thanks,<br>
<div class="Ih2E3d">&gt;<br>
&gt; I don&#39;t need the path, so I modified your suggestion;<br>
&gt;<br>
&gt; (system &quot;/bin/sh -c \&quot;. /etc/profile;. ~/.profile ;svn commit &nbsp;-m<br>
&gt; \&quot;auto-commit\&quot;\&quot;&quot;)<br>
<br>
</div>This approach is *extremely* fragile, and likely to break in all kinds<br>
of ways. &nbsp;One thing that is already broken are your quotes, it should be<br>
<div class="Ih2E3d"><br>
 &nbsp;(system &quot;/bin/sh -c \&quot;. /etc/profile;. ~/.profile ;svn commit &nbsp;-m<br>
</div> &nbsp;\\\&quot;auto-commit\\\&quot;\&quot;&quot;)<br>
<br>
But it&#39;s a bad idea in way you look at it. &nbsp;If all you need is the<br>
PATH, then I recommend writing code *just* for OSX to set *just* the<br>
PATH. &nbsp;Here&#39;s a sketch that seems reasonable:<br>
<br>
 &nbsp;(when (equal? &#39;macosx (system-type))<br>
 &nbsp; &nbsp;(parameterize ([current-output-port (open-output-string)])<br>
 &nbsp; &nbsp; &nbsp;(if (system* &quot;/bin/sh&quot; &quot;-c&quot;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;. /etc/profile ; printf \&quot;%s\&quot; \&quot;$PATH\&quot;&quot;)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;(putenv &quot;PATH&quot; (get-output-string (current-output-port)))<br>
 &nbsp; &nbsp; &nbsp; &nbsp;(error &quot;something bad happened&quot;))))<br>
<br>
Once you have that, I recommend using `system*&#39; to invoke executables,<br>
so you don&#39;t end up in shell-quoting-hell. &nbsp;I usually like to make a<br>
scheme function that behaves like the command, something like this:<br>
<br>
 &nbsp;(define svn<br>
 &nbsp; &nbsp;(let ([exe (or (find-executable-path &quot;svn&quot;)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (error &#39;svn &quot;cannot find executable&quot;))])<br>
 &nbsp; &nbsp; &nbsp;(lambda args<br>
 &nbsp; &nbsp; &nbsp; &nbsp;(apply system* exe args))))<br>
<br>
And then<br>
<br>
 &nbsp;(svn &quot;commit&quot; &quot;-m&quot; &quot;auto-commit&quot;)<br>
<br>
(Warning: I didn&#39;t test any of the above code, but it should get you<br>
closer to a better solution.)<br>
<div class="Ih2E3d"><br>
<br>
&gt; Works nicely. (I&#39;m this will work on my linux machine)<br>
&gt;<br>
&gt; Weirdly a &#39;read&#39;-syle[eof] prompt appears then disappears - without<br>
&gt; need for input.<br>
<br>
</div>If you&#39;re running this from DrScheme, then when the process starts it<br>
gets all input -- drscheme gives you a chance to feed the process that<br>
input, because it cannot tell that the process will never use it. &nbsp;To<br>
avoid that, make sure that the subprocess is always working from an<br>
explicitly empty input, for example:<br>
<br>
 &nbsp;(parameterize ([current-input-port (open-input-string &quot;&quot;)])<br>
 &nbsp; &nbsp;...your-code...)<br>
<font color="#888888"><br>
--<br>
</font><div><div></div><div class="Wj3C7c"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((lambda (x) (x x)) (lambda (x) (x x))) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Eli Barzilay:<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.barzilay.org/" target="_blank">http://www.barzilay.org/</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Maze is Life!<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Cheers,<br><br>Stephen<br><br>--<br>Stephen De Gabrielle<br><a href="mailto:s.degabrielle@ucl.ac.uk">s.degabrielle@ucl.ac.uk</a><br>Telephone +44 (0)20 7679 5242 (x45242)<br>
Mobile 079 851 890 45<br>Project: Making Sense of Information (MaSI)<br><a href="http://www.uclic.ucl.ac.uk/annb/MaSI.html">http://www.uclic.ucl.ac.uk/annb/MaSI.html</a><br><br>UCLIC: University College London Interaction Centre<br>
<a href="http://www.uclic.ucl.ac.uk/">http://www.uclic.ucl.ac.uk/</a><br><br>Remax House - 31/32 Alfred Place<br>London - WC1E 7DP