unbewust
8/10/2007 1:00:00 PM
On 10 ao?t, 13:26, "Ronald Fischer" <ronald.fisc...@venyon.com> wrote:
> > i do have a shell script doing :
>
> > `man "#{arg}" 2> "#{tmp}/#{fm}" PIPE man2html > "#{tmp}/#{f1}"`
>
> > because i want to know if there is "No manual entry for "#{arg}""
>
> > then for the time being i'm using an tmp file "#{tmp}/#{fm}" which i
> > read after to know i i get the message :
>
> > "No manual entry for "#{arg}""
>
> > i'm sure there is a more elegant way doing that in Ruby, avoiding
> > shelling, BUT HOW TO ?
>
> If you want to do it completely within Ruby, you could first slurp the
> output of man into a Ruby variable, i.e.
>
> man_page=%x(man #{arg})
>
> and if it is OK, i.e.
>
> if man_page.length > 0
> ...
> send this as stdin into man2html, i.e. something like:
>
> to_html=IO.popen("man2html >#{f1}","w")
> to_html.print(man_page)
> to_html.close
>
> From a logical point of view, this solution has the advantage
> that you don't overwrite your file f1 if the man page does not exist.
>
> For a simpler solution (a bit dirty, but less keystrokes), you might
> consider
> the following idea, which however *does* use a shell:
>
> error_message=%x[(man #{arg}|man2html >#{f1}) 2>&1]
>
> After this, error_message contains whatever man and/org man2html spilled
> out onto stderr, but f1 is always overwritten (even if there is no man
> page).
OK, fine thanks, in fact f1 is never overwritten the way i use it ...
thanks a lot !