On 14/05/2014 23:04, Andreas Leha wrote:> Hi all,
>
> how do I find out about the filename, the currently open (let's say
pdf)
> device is writing to?
>
> If I find 'dev.cur()' returning 'pdf 3' when I expect
'nulldevice 1' I
> would like to know, which file that pdf device is actually targeting.
>
> Any help for my poor organization is highly appreciated...
You cannot know this for an arbitrary device, at least not from R.
Most files in R are opened with the C call fopen() and thereafter 
referred to by a file handle: the file can be renamed, unlinked ... 
whilst the handle is open.  Some system utilities[*] may be able to tell 
you what filepaths are/were associated with file handles open in a 
process, but it cannot be done portably.
However, in R-devel there is the possibility of a device recording extra 
information about itself.  See the NEWS item
     ? Graphics devices can add attributes to their description in
       .Device and .Devices.  Several of those included with R use a
       "filepath" attribute.
AFAIR the pdf() device does: let's see
 > pdf('/tmp/foo.pdf')
 > dev.cur()
pdf
   2
 > .Devices
[[1]]
[1] "null device"
[[2]]
[1] "pdf"
attr(,"filepath")
[1] "/tmp/foo.pdf"
There is at least one exception: for historical reasons locked in by 
undocumented use in package tkrplot, the win.metafile() device does 
include the file path in the device 'name'.
[*] They have existed at least on Linux, Windows and OS X.
-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595