diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-10-12 18:29:24 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-10-12 18:29:24 (GMT) |
commit | da2d06ef7001453e949f73dff29d7f3720c11cee (patch) | |
tree | 6120e0c0366c67e9287f917203aa1be8e26f3b55 /generic/tclZipfs.c | |
parent | 24d57ac2241711f505d3c2b6aa488a2b36062404 (diff) | |
parent | 7fcc213b7aa1313c6bbe4ee2f794913e6776b0db (diff) | |
download | tcl-da2d06ef7001453e949f73dff29d7f3720c11cee.zip tcl-da2d06ef7001453e949f73dff29d7f3720c11cee.tar.gz tcl-da2d06ef7001453e949f73dff29d7f3720c11cee.tar.bz2 |
Merge 8.7
Diffstat (limited to 'generic/tclZipfs.c')
-rw-r--r-- | generic/tclZipfs.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c index 0babc72..4cdace1 100644 --- a/generic/tclZipfs.c +++ b/generic/tclZipfs.c @@ -665,7 +665,7 @@ CanonicalPath( const char *root, const char *tail, Tcl_DString *dsPtr, - int ZIPFSPATH) + int inZipfs) { char *path; int i, j, c, isUNC = 0, isVfs = 0, n = 0; @@ -742,7 +742,7 @@ CanonicalPath( memcpy(path, tail, j); break; default: - if (ZIPFSPATH) { + if (inZipfs) { Tcl_DStringSetLength(dsPtr, i + j + ZIPFS_VOLUME_LEN); path = Tcl_DStringValue(dsPtr); memcpy(path, ZIPFS_VOLUME, ZIPFS_VOLUME_LEN); @@ -765,7 +765,7 @@ CanonicalPath( } #endif /* _WIN32 */ - if (ZIPFSPATH) { + if (inZipfs) { n = ZIPFS_VOLUME_LEN; } else { n = 0; @@ -2911,7 +2911,7 @@ ZipFSCanonicalObjCmd( Tcl_DString dPath; if (objc < 2 || objc > 4) { - Tcl_WrongNumArgs(interp, 1, objv, "?mntpnt? filename ?ZIPFS?"); + Tcl_WrongNumArgs(interp, 1, objv, "?mountpoint? filename ?inZipfs?"); return TCL_ERROR; } Tcl_DStringInit(&dPath); @@ -4737,8 +4737,8 @@ TclZipfs_Init( " }\n" " return $result\n" "}\n" - "proc ::tcl::zipfs::find dir {\n" - " return [lsort [Find $dir]]\n" + "proc ::tcl::zipfs::find {directoryName} {\n" + " return [lsort [Find $directoryName]]\n" "}\n"; /* @@ -4753,11 +4753,22 @@ TclZipfs_Init( Unlock(); if (interp) { + Tcl_Command ensemble; + Tcl_Obj *mapObj; + Tcl_EvalEx(interp, findproc, -1, TCL_EVAL_GLOBAL); Tcl_LinkVar(interp, "::tcl::zipfs::wrmax", (char *) &ZipFS.wrmax, TCL_LINK_INT); - TclMakeEnsemble(interp, "zipfs", + ensemble = TclMakeEnsemble(interp, "zipfs", Tcl_IsSafe(interp) ? (initMap + 4) : initMap); + + /* + * Add the [zipfs find] subcommand. + */ + + Tcl_GetEnsembleMappingDict(NULL, ensemble, &mapObj); + Tcl_DictObjPut(NULL, mapObj, Tcl_NewStringObj("find", -1), + Tcl_NewStringObj("::tcl::zipfs::find", -1)); Tcl_PkgProvide(interp, "zipfs", "2.0"); } return TCL_OK; |