diff options
author | Steve Bennett <steveb@workware.net.au> | 2014-01-12 20:20:44 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2016-09-28 10:54:03 +1000 |
commit | a34d251c9880c82cb96b97e6e5899d7174f9b067 (patch) | |
tree | 094f3de0f6d412aefa48f59b6fcee13cd427241a /jim-file.c | |
parent | 2797cc7ae1710b35db4f9c61987a2d82436afac2 (diff) | |
download | jimtcl-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>
Diffstat (limited to 'jim-file.c')
-rw-r--r-- | jim-file.c | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -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); |