On 4/3/07, Simon Urbanek <[EMAIL PROTECTED]> wrote: > On Apr 2, 2007, at 8:51 PM, Deepayan Sarkar wrote: > > > Hi, > > > > I'm trying to understand (mostly from the R-exts manual) how to use > > the callbacks declared in Rinterface.h. As a first attempt, I'm trying > > to redefine ptr_R_WriteConsole in a very trivial manner. Here's my > > code: > > > > --------------- > > $ cat altr.c > > > > int Rf_initialize_R(int ac, char **av); > > > > #define R_INTERFACE_PTRS 1 > > #include <Rinterface.h> > > > > extern int R_running_as_main_program; > > > > static void my_R_WriteConsole(char *buf, int len) > > { > > printf("R<< %s", buf); > > } > > > > int main(int ac, char **av) > > { > > R_running_as_main_program = 1; > > ptr_R_WriteConsole = my_R_WriteConsole; > > Rf_initialize_R(ac, av); > > Rf_mainloop(); > > return 0; > > } > > --------------- > > > > I compile and run this in bash with > > > > > > RPROG=R > > > > INC=`${RPROG} CMD config --cppflags` > > LDF=`${RPROG} CMD config --ldflags` > > export LD_LIBRARY_PATH=`${RPROG} RHOME`/lib > > gcc -o altr ${INC} ${LDF} altr.c > > > > ${RPROG} CMD ./altr > > > > However, my customized version seems not to be used. What am I > > missing? > > > > 1) see Byron's e-mail > 2) by default R uses stdout/err connections instead of the console > API, you need to disable that > > so the resulting code should look like this: > > Rf_initialize_R(ac, av); > ptr_R_WriteConsole = my_R_WriteConsole; > R_Outputfile = NULL; > R_Consolefile = NULL; > Rf_mainloop();
Thanks, setting things to NULL was the critical piece (I had tried Byron's suggestion myself). A note mentioning this in R-exts would be helpful. -Deepayan ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel