summaryrefslogtreecommitdiffstats
path: root/generic/tclZipfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclZipfs.c')
-rw-r--r--generic/tclZipfs.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c
index 910ba53..9d6749a 100644
--- a/generic/tclZipfs.c
+++ b/generic/tclZipfs.c
@@ -2240,22 +2240,30 @@ ZipFSMountObjCmd(
"?zipfile? ?mountpoint? ?password?");
return TCL_ERROR;
}
+ /*
+ * A single argument is treated as the mountpoint. Two arguments
+ * are treated as zipfile and mountpoint.
+ */
if (objc > 1) {
- zipFileObj = Tcl_FSGetNormalizedPath(interp, objv[1]);
- if (!zipFileObj) {
- Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "could not normalize zip filename", -1));
- Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NORMALIZE", NULL);
- return TCL_ERROR;
+ if (objc == 2) {
+ mountPoint = Tcl_GetString(objv[1]);
+ } else {
+ /* 2 < objc < 4 */
+ zipFileObj = Tcl_FSGetNormalizedPath(interp, objv[1]);
+ if (!zipFileObj) {
+ Tcl_SetObjResult(
+ interp,
+ Tcl_NewStringObj("could not normalize zip filename", -1));
+ Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NORMALIZE", NULL);
+ return TCL_ERROR;
+ }
+ Tcl_IncrRefCount(zipFileObj);
+ zipFile = Tcl_GetString(zipFileObj);
+ mountPoint = Tcl_GetString(objv[2]);
+ if (objc > 3) {
+ password = Tcl_GetString(objv[3]);
+ }
}
- Tcl_IncrRefCount(zipFileObj);
- zipFile = Tcl_GetString(zipFileObj);
- }
- if (objc > 2) {
- mountPoint = Tcl_GetString(objv[2]);
- }
- if (objc > 3) {
- password = Tcl_GetString(objv[3]);
}
result = TclZipfs_Mount(interp, zipFile, mountPoint, password);