[Rd] Calling the original function after tweaking arguments is an incorrect use of the R-API?
Utkarsh Upadhyay
musically.ut at gmail.com
Mon Oct 27 15:15:37 CET 2014
Hi,
I am trying to create a small extension for R here for embedding the
current time on the R prompt:https://github.com/musically-ut/extPrompt
Things seem to be working overall, but R CMD check . raised a warning:
File '[truncated]..Rcheck/extPrompt/libs/extPrompt.so’: Found non-API call
> to R: ‘ptr_R_ReadConsole’
Compiled code should not call non-API entry points in R.
The concerned file is this:
https://github.com/musically-ut/extPrompt/blob/master/src/extPrompt.c and
occurs on line 38, I think.
void extPrompt() {
> // Initialize the plugin by replacing the R_ReadConsole function
> old_R_ReadConsole = ptr_R_ReadConsole;
> ptr_R_ReadConsole = extPrompt_ReadConsole;
> // ...
> }
> int extPrompt_ReadConsole(const char *old_prompt, unsigned char *buf, int
> len,
> int addtohistory) {
> // ...
> // Call the old function with the `new_prompt`
> return (*old_R_ReadConsole)(new_prompt, buf, len, addtohistory);
> }
I am trying to make the R_ReadConsole API call. However, since a different
plugin (like mine) could have overridden it already, I do not want to
directly invoke R_ReadConsole but the function which previously was at
ptr_R_ReadConsole.
Is this an incorrect use of the API?
Also, any other feedback on the plugin is also welcome.
Thanks.
~
ut
PS: I had posted this question on StackOverflow a while back:
http://stackoverflow.com/questions/26335571/is-this-an-incorrect-use-of-the-r-api
If I receive a response, I will update the question with the appropriate
answer.
[[alternative HTML version deleted]]
More information about the R-devel
mailing list