2008/10/28 Greg Snow <[EMAIL PROTECTED]>:
> I have some functions that write an external text file for postprocessing by 
> another program.  Some instructions to the other program need to be indicated 
> by null values (\000 or ^@).  The function currently uses code like:
>
> writeChar(rawToChar(as.raw(0)), con)
>
> where con is a connection to the file.  Previous to version 2.8.0 this worked 
> fine.  With 2.8.0 it still works, but I get a warning message about 
> "truncating string with embedded null: '\0'" every time.  This is documented 
> and not a bug, but I still find it annoying.
>
> One thing I could do is to turn off all warnings before doing this, but then 
> if there is some other warning generated, then I will miss the other 
> warning(s).
>
> Is there a better way to write the null to the text file? Or is there a way 
> to suppress just this warning without suppressing any other warnings that may 
> occur?

 The warning happens when you construct the string, so somehow you
have to avoid making the string. How about using writeBin with a
connection opened in binary mode:

 > con=file("test2.raw","wb")
 > writeBin(as.raw(1),con,size=1)
 > writeBin(as.raw(0),con,size=1)
 > writeBin(as.raw(0),con,size=1)
 > writeBin(as.raw(7),con,size=1)
 > close(con)
 >
Save workspace image? [y/n/c]: n

 now lets dump it:

 [EMAIL PROTECTED]:~$ od -x test2.raw
 0000000 0001 0700
 0000004

 Which I think is correct, maybe some fiddling with endianness is needed...

Barry

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to