aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-09-28 07:47:28 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:55 +1000
commit9e64d4521dbf5247580929eb0a00c9f83cd311f8 (patch)
tree6a153be3ebe57df79a88a03572f87fa9d8ffb4a9
parent0833de336567cccd1de4d246eed30b7fd5ce0413 (diff)
downloadjimtcl-9e64d4521dbf5247580929eb0a00c9f83cd311f8.zip
jimtcl-9e64d4521dbf5247580929eb0a00c9f83cd311f8.tar.gz
jimtcl-9e64d4521dbf5247580929eb0a00c9f83cd311f8.tar.bz2
Ensure that Tcl extensions can be built-in or external
All C extensions must call Jim_PackageProvide() make-c-ext ensures that Tcl extensions call Jim_PackageProvide() if compiled in. Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim-aio.c3
-rw-r--r--jim-array.c3
-rw-r--r--jim-bio.c3
-rw-r--r--jim-clock.c3
-rw-r--r--jim-eventloop.c3
-rw-r--r--jim-exec.c3
-rw-r--r--jim-file.c3
-rw-r--r--jim-posix.c3
-rw-r--r--jim-readdir.c3
-rw-r--r--jim-readline.c3
-rw-r--r--jim-regexp.c3
-rw-r--r--jim-sdl.c3
-rw-r--r--jim-signal.c3
-rw-r--r--jim-sqlite.c3
-rw-r--r--jim-sqlite3.c3
-rw-r--r--jim-syslog.c7
-rw-r--r--make-c-ext.sh3
-rw-r--r--tclcompat.tcl2
-rw-r--r--tree.tcl2
19 files changed, 54 insertions, 5 deletions
diff --git a/jim-aio.c b/jim-aio.c
index 6f08993..71e11cc 100644
--- a/jim-aio.c
+++ b/jim-aio.c
@@ -1277,6 +1277,9 @@ static void JimAioTclCompat(Jim_Interp *interp)
int Jim_aioInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "aio", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "open", JimAioOpenCommand, NULL, NULL);
#ifndef JIM_ANSIC
Jim_CreateCommand(interp, "socket", JimAioSockCommand, NULL, NULL);
diff --git a/jim-array.c b/jim-array.c
index 26febb3..8ed0ea7 100644
--- a/jim-array.c
+++ b/jim-array.c
@@ -288,6 +288,9 @@ static const jim_subcmd_type array_command_table[] = {
int Jim_arrayInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "array", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "array", Jim_SubCmdProc, (void *)array_command_table, NULL);
return JIM_OK;
}
diff --git a/jim-bio.c b/jim-bio.c
index f6e8b01..245374d 100644
--- a/jim-bio.c
+++ b/jim-bio.c
@@ -250,6 +250,9 @@ static const jim_subcmd_type bio_command_table[] = {
int
Jim_bioInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "bio", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "bio", Jim_SubCmdProc, (void *)bio_command_table, NULL);
return JIM_OK;
}
diff --git a/jim-clock.c b/jim-clock.c
index 46f1d39..a5b8d07 100644
--- a/jim-clock.c
+++ b/jim-clock.c
@@ -107,6 +107,9 @@ static const jim_subcmd_type clock_command_table[] = {
int Jim_clockInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "clock", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "clock", Jim_SubCmdProc, (void *)clock_command_table, NULL);
return JIM_OK;
}
diff --git a/jim-eventloop.c b/jim-eventloop.c
index 3256536..0f3fa3e 100644
--- a/jim-eventloop.c
+++ b/jim-eventloop.c
@@ -713,6 +713,9 @@ int Jim_eventloopInit(Jim_Interp *interp)
{
Jim_EventLoop *eventLoop;
+ if (Jim_PackageProvide(interp, "eventloop", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
eventLoop = Jim_Alloc(sizeof(*eventLoop));
eventLoop->fileEventHead = NULL;
eventLoop->timeEventHead = NULL;
diff --git a/jim-exec.c b/jim-exec.c
index 77e6afd..662d79c 100644
--- a/jim-exec.c
+++ b/jim-exec.c
@@ -1233,6 +1233,9 @@ static int Jim_ExecCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int Jim_execInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "exec", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "exec", Jim_ExecCmd, NULL, NULL);
return JIM_OK;
}
diff --git a/jim-file.c b/jim-file.c
index 3632432..8c4450d 100644
--- a/jim-file.c
+++ b/jim-file.c
@@ -862,6 +862,9 @@ static int Jim_PwdCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int Jim_fileInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "file", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "file", Jim_SubCmdProc, (void *)file_command_table, NULL);
Jim_CreateCommand(interp, "pwd", Jim_PwdCmd, NULL, NULL);
Jim_CreateCommand(interp, "cd", Jim_CdCmd, NULL, NULL);
diff --git a/jim-posix.c b/jim-posix.c
index 7fedf66..4658c51 100644
--- a/jim-posix.c
+++ b/jim-posix.c
@@ -215,6 +215,9 @@ static int Jim_PosixPidCommand(Jim_Interp *interp, int argc, Jim_Obj *const *arg
int Jim_posixInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "posix", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
#ifdef HAVE_FORK
Jim_CreateCommand(interp, "os.fork", Jim_PosixForkCommand, NULL, NULL);
#endif
diff --git a/jim-readdir.c b/jim-readdir.c
index 3f49ed4..7341a69 100644
--- a/jim-readdir.c
+++ b/jim-readdir.c
@@ -113,6 +113,9 @@ int Jim_ReaddirCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int Jim_readdirInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "readdir", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "readdir", Jim_ReaddirCmd, NULL, NULL);
return JIM_OK;
}
diff --git a/jim-readline.c b/jim-readline.c
index 0b59216..6ad3e41 100644
--- a/jim-readline.c
+++ b/jim-readline.c
@@ -52,6 +52,9 @@ static int JimRlAddHistoryCommand(Jim_Interp *interp, int argc, Jim_Obj *const *
int Jim_readlineInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "readline", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "readline.readline", JimRlReadlineCommand, NULL, NULL);
Jim_CreateCommand(interp, "readline.addhistory", JimRlAddHistoryCommand, NULL, NULL);
return JIM_OK;
diff --git a/jim-regexp.c b/jim-regexp.c
index 8624710..77be9f7 100644
--- a/jim-regexp.c
+++ b/jim-regexp.c
@@ -509,6 +509,9 @@ int Jim_RegsubCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int Jim_regexpInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "regexp", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "regexp", Jim_RegexpCmd, NULL, NULL);
Jim_CreateCommand(interp, "regsub", Jim_RegsubCmd, NULL, NULL);
return JIM_OK;
diff --git a/jim-sdl.c b/jim-sdl.c
index 9a902f9..8a3fbd5 100644
--- a/jim-sdl.c
+++ b/jim-sdl.c
@@ -221,6 +221,9 @@ static int JimSdlSurfaceCommand(Jim_Interp *interp, int argc, Jim_Obj *const *ar
int Jim_sdlInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "sdl", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
JimSdlSetError(interp);
return JIM_ERR;
diff --git a/jim-signal.c b/jim-signal.c
index e841d61..506c08a 100644
--- a/jim-signal.c
+++ b/jim-signal.c
@@ -491,6 +491,9 @@ static int Jim_KillCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int Jim_signalInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "signal", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
/* Teach the jim core how to set a result from a sigmask */
interp->signal_set_result = signal_set_sigmask_result;
diff --git a/jim-sqlite.c b/jim-sqlite.c
index 075b325..08cdb67 100644
--- a/jim-sqlite.c
+++ b/jim-sqlite.c
@@ -261,6 +261,9 @@ static int JimSqliteOpenCommand(Jim_Interp *interp, int argc, Jim_Obj *const *ar
int Jim_sqliteInit(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "sqlite", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "sqlite.open", JimSqliteOpenCommand, NULL, NULL);
return JIM_OK;
}
diff --git a/jim-sqlite3.c b/jim-sqlite3.c
index 8f603df..228e3bc 100644
--- a/jim-sqlite3.c
+++ b/jim-sqlite3.c
@@ -278,6 +278,9 @@ static int JimSqliteOpenCommand(Jim_Interp *interp, int argc, Jim_Obj *const *ar
int Jim_sqlite3Init(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "sqlite3", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
Jim_CreateCommand(interp, "sqlite3.open", JimSqliteOpenCommand, NULL, NULL);
return JIM_OK;
}
diff --git a/jim-syslog.c b/jim-syslog.c
index 21c9eed..a128e63 100644
--- a/jim-syslog.c
+++ b/jim-syslog.c
@@ -170,7 +170,12 @@ int Jim_SyslogCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int Jim_syslogInit(Jim_Interp *interp)
{
- SyslogInfo *info = Jim_Alloc(sizeof(*info));
+ SyslogInfo *info;
+
+ if (Jim_PackageProvide(interp, "syslog", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
+ info = Jim_Alloc(sizeof(*info));
info->logOpened = 0;
info->options = 0;
diff --git a/make-c-ext.sh b/make-c-ext.sh
index 05f30a5..c4415fa 100644
--- a/make-c-ext.sh
+++ b/make-c-ext.sh
@@ -11,6 +11,9 @@ cat <<EOF
#include <jim.h>
int Jim_${basename}Init(Jim_Interp *interp)
{
+ if (Jim_PackageProvide(interp, "$basename", "1.0", JIM_ERRMSG))
+ return JIM_ERR;
+
return Jim_Eval_Named(interp,
EOF
diff --git a/tclcompat.tcl b/tclcompat.tcl
index d99e6ed..01db0cb 100644
--- a/tclcompat.tcl
+++ b/tclcompat.tcl
@@ -3,8 +3,6 @@
# Loads some Tcl-compatible features.
# case, lassign, parray, errorInfo, ::tcl_platform, ::env
-package provide tclcompat 1.0
-
# Set up the ::env array
set env [env]
diff --git a/tree.tcl b/tree.tcl
index fc61306..2fe5002 100644
--- a/tree.tcl
+++ b/tree.tcl
@@ -1,5 +1,3 @@
-package provide tree
-
# Conceptually compatible with tcllib ::struct::tree
# but uses an object based interface.
# To mimic tcllib, do: