Message-ID: <CALh3q9xKUge+efKC2v+uJzZ5gBz4ojFCD4xhpO0J2v5kkGz_wQ@mail.gmail.com>
Date: 2014-10-27T14:15:37Z
From: Utkarsh Upadhyay
Subject: Calling the original function after tweaking arguments is an incorrect use of the R-API?
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]]