From rpeng at jhsph.edu  Mon Jun 20 14:10:00 2005
From: rpeng at jhsph.edu (Roger D. Peng)
Date: Mon, 20 Jun 2005 08:10:00 -0400
Subject: [Rd] capabilities() and non-catchable messages
In-Reply-To: <42B697EE.7040004@maths.lth.se>
References: <42B697EE.7040004@maths.lth.se>
Message-ID: <42B6B217.9020403@jhsph.edu>

Would using 'capture.output()' work for you in this case?

-roger

Henrik Bengtsson wrote:
> Just for the record (not a request for fix) and an ad hoc workaround if 
> anyone needs it:
> 
> REASON:
> Running an R script as a plugin on a remote Suse Linux 8.2 with R v2.1.0 
> (2005-04-18), I have noticed that capabilities() generates (to standard 
> error)
> 
>    Xlib: connection to "base:0.0" refused by server
>    Xlib: Client is not authorized to connect to Server
> 
> which cannot be caught by tryCatch();
> 
>    tryCatch({
>      print(capabilities());
>    }, condition=function(c) {
>      cat("Condition caught:\n");
>      str(c);
>    })
> 
> because it is not a 'condition' (error or warning).
> 
> CONTEXT:
> Since source() calls capabilities("iconv") this messages always show up. 
> My R plugin loads custom code using source() and since the standard 
> error from the plugin is checked for messages, the host system 
> interprets this as if something problematic has occured.
> 
> WORKAROUND:
> The workaround that I use now is to redefine capabilities() temporarily 
> (since I do not need "iconv" support):
> 
>   orgCapabilities <- base::capabilities;
>   basePos <- which(search() == "package:base"));
>   assign("capabilities", function(...) FALSE, pos=basePos);
> 
>   source(<my file>)
> 
>   basePos <- which(search() == "package:base"));
>   assign("capabilities", orgCapabilities, pos=basePos);
>   rm(orgCapabilities)
> 
> Cheers
> 
> Henrik
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] capabilities() and non-catchable messages
Roger D. Peng