<br><br><div class="gmail_quote">On Thu, Jul 10, 2008 at 12:47 PM, Gabe Turner &lt;<a href="mailto:gabe@msi.umn.edu">gabe@msi.umn.edu</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;">
On Thu, Jul 10, 2008 at 10:19:27AM -0400, Glen Beane wrote:<br>
[snip]<br>
<div class="Ih2E3d">&gt; &nbsp; &nbsp;I think a submit filter *should* also have access to anything passed on<br>
&gt; &nbsp; &nbsp;the command line (but that doesn&#39;t mean that is what the current<br>
&gt; &nbsp; &nbsp;implementation does, I would consider that a bug if it does not).<br>
<br>
</div>Can anyone confirm that a submit filter has access to qsub options passed<br>
on the command line? &nbsp;As far as I know, it just reads the submission script<br>
in line-by-line. &nbsp;The information in the Torque admin manual and on the<br>
wiki is sparse.</blockquote></div><br><br>in qsub.c, in the get_script() function, the code relaited to the submit filter does this, not ArgV, ArgC are parameters to get_script(), and get script is called with argc, argv for those parameters:<br>
<br><br>&nbsp;strcpy(cfilter,PBS_Filter);<br><br>&nbsp;&nbsp;&nbsp; for (index = 1;index &lt; ArgC;index++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ArgV[index] != NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcat(cfilter,&quot; &quot;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcat(cfilter,ArgV[index]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; /* END for (index) */<br><br>&nbsp;&nbsp;&nbsp; strcat(cfilter,&quot; &gt;&quot;);<br>&nbsp;&nbsp;&nbsp; strcat(cfilter,tmp_name2);<br>&nbsp;&nbsp;&nbsp; filter_pipe = popen(cfilter,&quot;w&quot;);<br><br>&nbsp;&nbsp;&nbsp; while ((in = fgets(s,MAX_LINE_LEN,file)) != NULL)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fputs(in,filter_pipe) &lt; 0)<br>&nbsp; &nbsp; &nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr,&quot;qsub: error writing to filter stdin\n&quot;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fclose(filter_pipe);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unlink(tmp_name2);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(3);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; rc = pclose(filter_pipe);<br><br><br>-----------------------------------------------------------------------------------------------<br><br>so the way the submit filter is actually called should be like this:<br>
<br>path_to_submit_filter qub_args... &gt; /tmp/qsub.XXXXX<br><br>and then each line from the script gets written to the pipe created by calling popen on the&nbsp; command shown above<br><br><br><br>that being said, there may be some bugs in qsub with respect to the submit filter.&nbsp; i&#39;m not sure if everything works 100% correctly with interactive jobs, I know some people had issues with that in the past and I&#39;m not sure if they have been fixed yet<br>