aboutsummaryrefslogtreecommitdiff
path: root/jim.h
diff options
context:
space:
mode:
authorantirez <antirez>2006-11-02 22:38:56 +0000
committerantirez <antirez>2006-11-02 22:38:56 +0000
commitd5240821fbafdee486129fc181fb2c7dbc9b4548 (patch)
treea3bb9d6845d126d120e8f2f4abe7c8fac0bd9e68 /jim.h
parent59ee0bb784e62a611d43e625c0e0e69392036ca9 (diff)
downloadjimtcl-d5240821fbafdee486129fc181fb2c7dbc9b4548.zip
jimtcl-d5240821fbafdee486129fc181fb2c7dbc9b4548.tar.gz
jimtcl-d5240821fbafdee486129fc181fb2c7dbc9b4548.tar.bz2
Ability to configure file descriptors for standard input, output, error.
Default is stdin,stdout,stderr but it's possible to change the default after creating the interpreter using Jim_(Set|Get)(Stdin|Stdout|Stderr) if needed.
Diffstat (limited to 'jim.h')
-rw-r--r--jim.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/jim.h b/jim.h
index 38e0319..b02f15b 100644
--- a/jim.h
+++ b/jim.h
@@ -2,7 +2,7 @@
* Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
* Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
*
- * $Id: jim.h,v 1.74 2006/11/01 13:37:05 antirez Exp $
+ * $Id: jim.h,v 1.75 2006/11/02 22:38:56 antirez Exp $
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@ extern "C" {
#include <time.h>
#include <limits.h>
+#include <stdio.h> /* for the FILE typedef definition */
#include <stdlib.h> /* In order to export the Jim_Free() macro */
/* -----------------------------------------------------------------------------
@@ -483,6 +484,9 @@ typedef struct Jim_Interp {
struct Jim_HashTable assocData; /* per-interp storage for use by packages */
Jim_PrngState *prngState; /* per interpreter Random Number Gen. state. */
struct Jim_HashTable packages; /* Provided packages hash table */
+ FILE *stdin; /* input file pointer, 'stdin' by default */
+ FILE *stdout; /* output file pointer, 'stdout' by default */
+ FILE *stderr; /* errors file pointer, 'stderr' by default */
} Jim_Interp;
/* Currently provided as macro that performs the increment.
@@ -640,7 +644,13 @@ JIM_STATIC int JIM_API(Jim_GetFinalizer) (Jim_Interp *interp, Jim_Obj *objPtr, J
/* interpreter */
JIM_STATIC Jim_Interp * JIM_API(Jim_CreateInterp) (void);
JIM_STATIC void JIM_API(Jim_FreeInterp) (Jim_Interp *i);
-JIM_STATIC int Jim_GetExitCode(Jim_Interp *interp);
+JIM_STATIC int JIM_API(Jim_GetExitCode) (Jim_Interp *interp);
+JIM_STATIC void JIM_API(Jim_SetStdin) (Jim_Interp *interp, FILE *fp);
+JIM_STATIC void JIM_API(Jim_SetStdout) (Jim_Interp *interp, FILE *fp);
+JIM_STATIC void JIM_API(Jim_SetStderr) (Jim_Interp *interp, FILE *fp);
+JIM_STATIC FILE * JIM_API(Jim_GetStdin) (Jim_Interp *interp);
+JIM_STATIC FILE * JIM_API(Jim_GetStdout) (Jim_Interp *interp);
+JIM_STATIC FILE * JIM_API(Jim_GetStderr) (Jim_Interp *interp);
/* commands */
JIM_STATIC void JIM_API(Jim_RegisterCoreCommands) (Jim_Interp *interp);
@@ -789,7 +799,7 @@ JIM_STATIC void JIM_API(Jim_PrintErrorMessage) (Jim_Interp *interp);
JIM_STATIC int JIM_API(Jim_InteractivePrompt) (Jim_Interp *interp);
/* Misc */
-JIM_STATIC void JIM_API(Jim_Panic) (const char *fmt, ...);
+JIM_STATIC void JIM_API(Jim_Panic) (Jim_Interp *interp, const char *fmt, ...);
#undef JIM_STATIC
#undef JIM_API
@@ -848,6 +858,13 @@ static void Jim_InitExtension(Jim_Interp *interp)
JIM_GET_API(GetFinalizer);
JIM_GET_API(CreateInterp);
JIM_GET_API(FreeInterp);
+ JIM_GET_API(GetExitCode);
+ JIM_GET_API(SetStdin);
+ JIM_GET_API(SetStdout);
+ JIM_GET_API(SetStderr);
+ JIM_GET_API(GetStdin);
+ JIM_GET_API(GetStdout);
+ JIM_GET_API(GetStderr);
JIM_GET_API(CreateCommand);
JIM_GET_API(CreateProcedure);
JIM_GET_API(DeleteCommand);