Rev 43767 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
/** SYSTEM DEPENDENT CODE** The sys*.c files contain the platform dependent code for* the Unix command-line (reference) port of R.** sys-common.c has code common to the unix/gnome/gnuwin32 ports* sys-unix.c has code common to the unix/gnome ports* system.c has interface-specific code*** 1) FATAL MESSAGES AT STARTUP** void R_Suicide(char *msg)** This function displays the given message and the causes R to* die immediately. It is used for non-recoverable errors such as* not having enough memory to launch etc. The phrase "dialog box"* springs to mind for non-Unix platforms.*** 2. CONSOLE I/O** The first group of functions is concerned with reading and* writing to the system console.** int R_ReadConsole(const char *prompt, unsigned char *buf,* int buflen, int hist)** This function prints the given prompt at the console and then* does an fgets(3)-like operation, transferring up to "buflen" bytes* into the buffer "buf". This should be zero-terminated, and end* with "\n\0" if there is no more input available (but not if the* input line exceeds "buflen" bytes). If "hist" is non-zero, then* the line is added to any command history which is being maintained.* Note that this is one natural place from which to run an event loop.** void R_WriteConsole(const char *buf, int buflen)* void R_WriteConsoleEx(const char *buf, int buflen, int otype)** Those functions write the given buffer out to the console. No* special actions are required. Under Unix the characters are* just appended to stdout. otype determines whether the content is* regular output (0) or error/warning (1) and can be used by GUIs* to distinguish those.** void R_ResetConsole(void)** This function is called when the system is reset after an error.* It probably isn't really needed.** void R_FlushConsole(void)** This called to flush any output to the system console. Under Unix* this is just fflush(stdout). Other systems may not need this.** void R_ClearerrConsole(void)** This function clears any errors associated with reading from the* console. In Unix it is used to clear any EOF condition associated* with stdin.** void R_ShowMessage(const char *s)** Display the (multi-line) message in the string s. This might be* printed on an error stream or displayed in a message dialog box:* it should be brought to the user's attention immediately.*** 3) ACTIONS DURING (LONG) COMPUTATIONS** void R_Busy(int which)** This function invokes actions (such as change of cursor) when* R embarks on an extended computation (which=1) and when such a* state terminates (which=0).*** 4) INITIALIZATION AND TERMINATION ACTIONS** void R_InitialData(void)* FILE* R_OpenInitFile(void)* FILE* R_OpenLibraryFile(char *file)* FILE* R_OpenSysInitFile(void)* FILE* R_OpenSiteFile()** These functions load the initial system and user data into R.** void R_RestoreGlobalEnv(void)* void R_SaveGlobalEnv(void)** These functions save and restore the user's global environment.* The system specific aspect of this is what files are used.** void R_CleanUp(Rboolean saveact, int status, int RunLast)* This function invokes any actions which occur at system termination.*** 5) FILESYSTEM INTERACTION** int FileExists(const char *file)** This function returns 1 if the named file exists and 0 otherwise.* On Unix/Windows this is just an interface to "stat".** int R_HiddenFile(const char *file)** This function returns 1 if the named file is "hidden". In Unix,* this is the case if the file name begins with a '.'. On the Mac* a file is hidden if the file name ends in '\r'.* More complex tests may be needed on other platforms.** int R_ShowFiles(int nfile, const char **file, const char **headers,* const char *wtitle, Rboolean del, const char *pager)** nfile = number of files* file = array of filenames* headers = the `headers' args of file.show. Printed before each file.* wtitle = title for window: the `title' arg of file.show* del = flag for whether files should be deleted after use* pager = pager to be used.** This function is used to display the contents of files. On (raw)* Unix this means invoking a pager on the file. On Gui-based platforms* the file would probably be displayed in a window with the given* title.** int R_ChooseFile(int new, const char *buf, int len)** Choose a file and return its name in buf of length len. On* command-line systems ask the user, on GUI platforms bring up a* dialog box.** Argument new is designed to choose the style of dialog box* presented to the user: at present only new = 0 is used. (In* file.choose(new), new is logical.)** char* R_ExpandFileName(const char *s)** This is a utility function which can be used to expand special* characters in file names. In Unix it's sole function is to expand* and "~"s which occur in filenames. The minimal action is to* return the argument unaltered.** FILE *R_fopen(const char *filename, const char *mode);** This is a wrapper function for ``fopen''. It was necessary for* classic MacOS.*** 6) SYSTEM INFORMATION** char *R_HomeDir(void)** Get the R ``home directory'' as a string.*** 7) PLATFORM DEPENDENT FUNCTIONS** SEXP do_getenv(SEXP call, SEXP op, SEXP args, SEXP rho)* SEXP do_interactive(SEXP call, SEXP op, SEXP args, SEXP rho)* SEXP do_machine(SEXP call, SEXP op, SEXP args, SEXP rho)* SEXP do_proctime(SEXP call, SEXP op, SEXP args, SEXP rho)* SEXP do_system(SEXP call, SEXP op, SEXP args, SEXP rho)**/