aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Shpilkin <ashpilkin@gmail.com>2011-08-29 20:33:05 +0400
committerSteve Bennett <steveb@workware.net.au>2011-08-30 12:28:31 +1000
commit4f1aac96264a55165a04396f37b4302111602b5b (patch)
treeb17e4158bf5885b216ed90a308723af74c1825f4
parenta213c750258a7d2a362d39aae6b8654723c58ea9 (diff)
downloadjimtcl-4f1aac96264a55165a04396f37b4302111602b5b.zip
jimtcl-4f1aac96264a55165a04396f37b4302111602b5b.tar.gz
jimtcl-4f1aac96264a55165a04396f37b4302111602b5b.tar.bz2
Change Jim_EvalObjPrefix to accept arbitrary objects
Jim_EvalObjPrefix now accepts an arbitrary Jim_Obj as a prefix, with Jim_EvalPrefix being equivalent to the older version.
-rw-r--r--jim-file.c4
-rw-r--r--jim.c8
-rw-r--r--jim.h3
3 files changed, 8 insertions, 7 deletions
diff --git a/jim-file.c b/jim-file.c
index 6e12de7..3ac23d6 100644
--- a/jim-file.c
+++ b/jim-file.c
@@ -372,7 +372,7 @@ static int file_cmd_delete(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
if (unlink(path) == -1 && errno != ENOENT) {
if (rmdir(path) == -1) {
/* Maybe try using the script helper */
- if (!force || Jim_EvalObjPrefix(interp, "file delete force", 1, argv) != JIM_OK) {
+ if (!force || Jim_EvalPrefix(interp, "file delete force", 1, argv) != JIM_OK) {
Jim_SetResultFormatted(interp, "couldn't delete file \"%s\": %s", path,
strerror(errno));
return JIM_ERR;
@@ -584,7 +584,7 @@ static int file_cmd_mtime(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
static int file_cmd_copy(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
- return Jim_EvalObjPrefix(interp, "file copy", argc, argv);
+ return Jim_EvalPrefix(interp, "file copy", argc, argv);
}
static int file_cmd_size(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
diff --git a/jim.c b/jim.c
index 0f42303..5bfc0e5 100644
--- a/jim.c
+++ b/jim.c
@@ -9631,13 +9631,13 @@ int Jim_EvalObjVector(Jim_Interp *interp, int objc, Jim_Obj *const *objv)
/**
* Invokes 'prefix' as a command with the objv array as arguments.
*/
-int Jim_EvalObjPrefix(Jim_Interp *interp, const char *prefix, int objc, Jim_Obj *const *objv)
+int Jim_EvalObjPrefix(Jim_Interp *interp, Jim_Obj *prefix, int objc, Jim_Obj *const *objv)
{
int i;
int ret;
Jim_Obj **nargv = Jim_Alloc((objc + 1) * sizeof(*nargv));
- nargv[0] = Jim_NewStringObj(interp, prefix, -1);
+ nargv[0] = prefix;
for (i = 0; i < objc; i++) {
nargv[i + 1] = objv[i];
}
@@ -13375,7 +13375,7 @@ static int Jim_DictCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *arg
return JIM_ERR;
}
else {
- return Jim_EvalObjPrefix(interp, "dict merge", argc - 2, argv + 2);
+ return Jim_EvalPrefix(interp, "dict merge", argc - 2, argv + 2);
}
case OPT_WITH:
@@ -13387,7 +13387,7 @@ static int Jim_DictCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *arg
return JIM_ERR;
}
else {
- return Jim_EvalObjPrefix(interp, "dict with", argc - 2, argv + 2);
+ return Jim_EvalPrefix(interp, "dict with", argc - 2, argv + 2);
}
case OPT_CREATE:
diff --git a/jim.h b/jim.h
index 667a05d..59595f8 100644
--- a/jim.h
+++ b/jim.h
@@ -647,8 +647,9 @@ JIM_EXPORT int Jim_EvalFileGlobal(Jim_Interp *interp, const char *filename);
JIM_EXPORT int Jim_EvalObj (Jim_Interp *interp, Jim_Obj *scriptObjPtr);
JIM_EXPORT int Jim_EvalObjVector (Jim_Interp *interp, int objc,
Jim_Obj *const *objv);
-JIM_EXPORT int Jim_EvalObjPrefix(Jim_Interp *interp, const char *prefix,
+JIM_EXPORT int Jim_EvalObjPrefix(Jim_Interp *interp, Jim_Obj *prefix,
int objc, Jim_Obj *const *objv);
+#define Jim_EvalPrefix(i, p, oc, ov) Jim_EvalObjPrefix((i), Jim_NewStringObj((i), (p), -1), (oc), (ov))
JIM_EXPORT int Jim_SubstObj (Jim_Interp *interp, Jim_Obj *substObjPtr,
Jim_Obj **resObjPtrPtr, int flags);