aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2014-01-12 20:20:44 +1000
committerSteve Bennett <steveb@workware.net.au>2016-09-28 10:54:03 +1000
commita34d251c9880c82cb96b97e6e5899d7174f9b067 (patch)
tree094f3de0f6d412aefa48f59b6fcee13cd427241a
parent2797cc7ae1710b35db4f9c61987a2d82436afac2 (diff)
downloadjimtcl-a34d251c9880c82cb96b97e6e5899d7174f9b067.zip
jimtcl-a34d251c9880c82cb96b97e6e5899d7174f9b067.tar.gz
jimtcl-a34d251c9880c82cb96b97e6e5899d7174f9b067.tar.bz2
file: update file stat to use Jim_DictMerge()
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim-file.c18
-rw-r--r--jim.h1
2 files changed, 11 insertions, 8 deletions
diff --git a/jim-file.c b/jim-file.c
index 065ff2c..07fe699 100644
--- a/jim-file.c
+++ b/jim-file.c
@@ -174,21 +174,23 @@ static int StoreStatData(Jim_Interp *interp, Jim_Obj *varName, const struct stat
/* Was a variable specified? */
if (varName) {
- Jim_Obj *objPtr = Jim_GetVariable(interp, varName, JIM_NONE);
+ Jim_Obj *objPtr;
+ objPtr = Jim_GetVariable(interp, varName, JIM_NONE);
+
if (objPtr) {
- if (Jim_DictSize(interp, objPtr) < 0) {
+ Jim_Obj *objv[2];
+
+ objv[0] = objPtr;
+ objv[1] = listObj;
+
+ objPtr = Jim_DictMerge(interp, 2, objv);
+ if (objPtr == NULL) {
/* This message matches the one from Tcl */
Jim_SetResultFormatted(interp, "can't set \"%#s(dev)\": variable isn't array", varName);
Jim_FreeNewObj(interp, listObj);
return JIM_ERR;
}
- if (Jim_IsShared(objPtr))
- objPtr = Jim_DuplicateObj(interp, objPtr);
-
- /* Just cheat here and append as a list and convert to a dict */
- Jim_ListAppendList(interp, objPtr, listObj);
- Jim_DictSize(interp, objPtr);
Jim_InvalidateStringRep(objPtr);
Jim_FreeNewObj(interp, listObj);
diff --git a/jim.h b/jim.h
index dd2b9ab..5c8de22 100644
--- a/jim.h
+++ b/jim.h
@@ -805,6 +805,7 @@ JIM_EXPORT int Jim_DictKeys(Jim_Interp *interp, Jim_Obj *objPtr, Jim_Obj *patter
JIM_EXPORT int Jim_DictValues(Jim_Interp *interp, Jim_Obj *dictObjPtr, Jim_Obj *patternObjPtr);
JIM_EXPORT int Jim_DictSize(Jim_Interp *interp, Jim_Obj *objPtr);
JIM_EXPORT int Jim_DictInfo(Jim_Interp *interp, Jim_Obj *objPtr);
+JIM_EXPORT Jim_Obj *Jim_DictMerge(Jim_Interp *interp, int objc, Jim_Obj *const *objv);
/* return code object */
JIM_EXPORT int Jim_GetReturnCode (Jim_Interp *interp, Jim_Obj *objPtr,