blob: 38d34dd2aa5d8bbcbf1a8f1d3cf83d6e6989d0c7 [file] [log] [blame]
/*
* 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)
*
*/