The R Project SVN R

Rev

Rev 5178 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

#include <windows.h>
#include <stdio.h>
#include "Platform.h"

#define CharacterMode (*__imp_CharacterMode)
#define UserBreak     (*__imp_UserBreak)

extern void cmdlineoptions(int, char **);
extern void setup_term_ui(void);
extern void mainloop(void);
extern int CharacterMode;
extern int UserBreak;

extern char *getDLLVersion();

static char Rversion[25];
char *getRVersion()
{
    sprintf(Rversion, "%s.%s", R_MAJOR, R_MINOR);
    return(Rversion);
}

static BOOL hCtrlc(DWORD type)
{
    if (type == CTRL_BREAK_EVENT) 
    UserBreak = 1;
    return TRUE;
}


int AppMain (int argc, char **argv)
{
    CharacterMode = 1;
    if(strcmp(getDLLVersion(), getRVersion()) != 0) {
    fprintf(stderr, "Error: R.DLL version does not match\n");
    exit(1);
    }
    if (isatty(0)) 
    FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
    cmdlineoptions(argc, argv);
    SetConsoleCtrlHandler(hCtrlc, TRUE);
    setup_term_ui();
    mainloop();
}