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).
HTH,
Ronald
···
--
Ronald Fischer <ronald.fischer@venyon.com>
Phone: +49-89-452133-162