Skip to content
Prev 61375 / 63424 Next

determine if `suppressMessages()` has been invoked

Nino,

that is the wrong way around as Ivan pointed out. Rprintf() is not the tool for this as explained. If you want messages, use them, it's easy to wrap it to C code:

static void Rmessage(const char *msg) {
    SEXP msg_sym = Rf_install("message");
    SEXP msg_call = PROTECT(lang2(msg_sym, PROTECT(Rf_mkString(msg))));
    Rf_eval(msg_call, R_BaseEnv);
    UNPROTECT(2);
}

or the f version if needed:

static void Rmessagef(const char *format, ...)
{
    char msg[512];
    va_list(ap);
    va_start(ap, format);
    if (vsnprintf(msg, sizeof(msg), format, ap) >= sizeof(msg))
        memcpy(msg + sizeof(msg) - 4, "...", 4);
    Rmessage(msg);
    va_end(ap);
}

Cheers,
Simon