summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-10-24 07:57:54 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-10-24 07:57:54 (GMT)
commit93bbcb5679af7338995fa47ea14198c32d90958d (patch)
treee324bac995b3095c40458e48569929c2510e65e1
parent679ef5e967c52fdf7746043fbc66b9f13a0ea016 (diff)
parentcfeb43055f355846aea09f6177573de5a34586ef (diff)
downloadtcl-93bbcb5679af7338995fa47ea14198c32d90958d.zip
tcl-93bbcb5679af7338995fa47ea14198c32d90958d.tar.gz
tcl-93bbcb5679af7338995fa47ea14198c32d90958d.tar.bz2
Backout [0f2870649c804dd8], since testcase encoding-2.2 fails
-rw-r--r--generic/tclFileName.c6
-rw-r--r--generic/tclIOUtil.c4
-rw-r--r--generic/tclInt.h8
-rw-r--r--generic/tclPathObj.c67
-rw-r--r--unix/tclUnixFile.c5
-rw-r--r--win/tclWinFile.c4
6 files changed, 14 insertions, 80 deletions
diff --git a/generic/tclFileName.c b/generic/tclFileName.c
index 053812e..3419d7c 100644
--- a/generic/tclFileName.c
+++ b/generic/tclFileName.c
@@ -2437,8 +2437,7 @@ DoGlob(
joinedPtr = TclDStringToObj(&append);
} else if (flags) {
joinedPtr = TclNewFSPathObj(pathPtr, Tcl_DStringValue(&append),
- Tcl_DStringLength(&append),
- TclFSPathEncoding(interp, pathPtr));
+ Tcl_DStringLength(&append));
} else {
joinedPtr = Tcl_DuplicateObj(pathPtr);
if (strchr(separators, Tcl_DStringValue(&append)[0]) == NULL) {
@@ -2471,8 +2470,7 @@ DoGlob(
if (pathPtr == NULL) {
joinedPtr = Tcl_NewStringObj(pattern, p-pattern);
} else if (flags) {
- joinedPtr = TclNewFSPathObj(pathPtr, pattern, p-pattern,
- TclFSPathEncoding(interp, pathPtr));
+ joinedPtr = TclNewFSPathObj(pathPtr, pattern, p-pattern);
} else {
joinedPtr = Tcl_DuplicateObj(pathPtr);
if (strchr(separators, pattern[0]) == NULL) {
diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c
index ba9c6bc..3773159 100644
--- a/generic/tclIOUtil.c
+++ b/generic/tclIOUtil.c
@@ -1225,9 +1225,7 @@ FsAddMountsToGlobResult(
len--;
}
len++; /* account for '/' in the mElt [Bug 1602539] */
-
- mElt = TclNewFSPathObj(pathPtr, mount + len, mlen - len
- , TclFSPathEncoding(NULL, pathPtr));
+ mElt = TclNewFSPathObj(pathPtr, mount + len, mlen - len);
Tcl_ListObjAppendElement(NULL, resultPtr, mElt);
}
/*
diff --git a/generic/tclInt.h b/generic/tclInt.h
index ddc58d6..1fe3822 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -3009,12 +3009,6 @@ MODULE_SCOPE double TclFloor(const mp_int *a);
MODULE_SCOPE void TclFormatNaN(double value, char *buffer);
MODULE_SCOPE int TclFSFileAttrIndex(Tcl_Obj *pathPtr,
const char *attributeName, int *indexPtr);
-MODULE_SCOPE
- Tcl_Encoding TclFSPathEncoding(
- Tcl_Interp *interp,
- Tcl_Obj *pathPtr
- );
-
MODULE_SCOPE Tcl_Command TclNRCreateCommandInNs(Tcl_Interp *interp,
const char *cmdName, Tcl_Namespace *nsPtr,
Tcl_ObjCmdProc *proc, Tcl_ObjCmdProc *nreProc,
@@ -3138,7 +3132,7 @@ MODULE_SCOPE int TclpObjLstat(Tcl_Obj *pathPtr, Tcl_StatBuf *buf);
MODULE_SCOPE Tcl_Obj * TclpTempFileName(void);
MODULE_SCOPE Tcl_Obj * TclpTempFileNameForLibrary(Tcl_Interp *interp, Tcl_Obj* pathPtr);
MODULE_SCOPE Tcl_Obj * TclNewFSPathObj(Tcl_Obj *dirPtr, const char *addStrRep,
- int len, Tcl_Encoding encoding);
+ int len);
MODULE_SCOPE int TclpDeleteFile(const void *path);
MODULE_SCOPE void TclpFinalizeCondition(Tcl_Condition *condPtr);
MODULE_SCOPE void TclpFinalizeMutex(Tcl_Mutex *mutexPtr);
diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c
index 9d2637c..2fa93d8 100644
--- a/generic/tclPathObj.c
+++ b/generic/tclPathObj.c
@@ -87,7 +87,6 @@ typedef struct FsPath {
* epoch. The epoch changes when
* filesystem-mounts are changed. */
const Tcl_Filesystem *fsPtr;/* The Tcl_Filesystem that claims this path */
- Tcl_Encoding encoding;
} FsPath;
/*
@@ -663,18 +662,9 @@ TclPathPart(
* the tail.
*/
- /*
- * We don't know that the encoding of the fileName is the
- * same as the encoding of, but that's on the caller to
- * harmonize. In any case, if the encoding doesn't match
- * at the time it the FsPath object is used, the object is
- * ignored.
- */
-
Tcl_Obj *resultPtr =
- TclNewFSPathObj(fsPathPtr->cwdPtr, fileName,
- (int)(length - strlen(extension)),
- TclFSPathEncoding(interp, fsPathPtr->cwdPtr));
+ TclNewFSPathObj(fsPathPtr->cwdPtr, fileName,
+ (int)(length - strlen(extension)));
Tcl_IncrRefCount(resultPtr);
return resultPtr;
@@ -888,7 +878,6 @@ TclJoinPath(
&& !((elt->bytes != NULL) && (elt->bytes[0] == '\0'))
&& TclGetPathType(elt, NULL, NULL, NULL) == TCL_PATH_ABSOLUTE) {
Tcl_Obj *tailObj = objv[1];
-
Tcl_PathType type;
/* if forceRelative - second path is relative */
@@ -930,17 +919,14 @@ TclJoinPath(
|| (strchr(Tcl_GetString(elt), '\\') == NULL)) {
if (PATHFLAGS(elt)) {
- return TclNewFSPathObj(elt, str, len,
- TclFSPathEncoding(NULL, elt));
+ return TclNewFSPathObj(elt, str, len);
}
if (TCL_PATH_ABSOLUTE != Tcl_FSGetPathType(elt)) {
- return TclNewFSPathObj(
- elt, str, len, TclFSPathEncoding(NULL, elt));
+ return TclNewFSPathObj(elt, str, len);
}
(void) Tcl_FSGetNormalizedPath(NULL, elt);
if (elt == PATHOBJ(elt)->normPathPtr) {
- return TclNewFSPathObj(
- elt, str, len, TclFSPathEncoding(NULL, elt));
+ return TclNewFSPathObj(elt, str, len);
}
}
}
@@ -1272,9 +1258,7 @@ Tcl_Obj *
TclNewFSPathObj(
Tcl_Obj *dirPtr,
const char *addStrRep,
- int len,
- Tcl_Encoding encoding
-)
+ int len)
{
FsPath *fsPathPtr;
Tcl_Obj *pathPtr;
@@ -1320,7 +1304,6 @@ TclNewFSPathObj(
fsPathPtr->nativePathPtr = NULL;
fsPathPtr->fsPtr = NULL;
fsPathPtr->filesystemEpoch = 0;
- fsPathPtr->encoding = encoding;
SETPATHOBJ(pathPtr, fsPathPtr);
PATHFLAGS(pathPtr) = TCLPATH_APPENDED;
@@ -2177,39 +2160,6 @@ TclFSSetPathDetails(
/*
*---------------------------------------------------------------------------
*
- * TclFSPathEncoding --
- *
- * Produce the encoding, if any, associated with a filesystem path.
- *
- * Results:
- * NULL or a valid Tcl_Encoding.
- *
- * Side effects:
- * None.
- *
- *---------------------------------------------------------------------------
- */
-
-Tcl_Encoding
-TclFSPathEncoding(
- Tcl_Interp *interp,
- Tcl_Obj *pathPtr)
-{
- FsPath *fsPathPtr;
- Tcl_Encoding encoding = NULL;
-
- if (Tcl_FSConvertToPathType(interp, pathPtr) != TCL_OK) {
- return NULL;
- }
- if (TclFetchIntRep(pathPtr, &fsPathType)) {
- fsPathPtr = PATHOBJ(pathPtr);
- encoding = fsPathPtr->encoding;
- }
- return encoding;
-}
-/*
- *---------------------------------------------------------------------------
- *
* Tcl_FSEqualPaths --
*
* This function tests whether the two paths given are equal path
@@ -2294,10 +2244,7 @@ SetFsPathFromAny(
Tcl_Obj *transPtr;
const char *name;
- Tcl_Encoding sysencoding = Tcl_GetEncoding(interp, NULL);
-
- if (TclHasIntRep(pathPtr, &fsPathType)
- && TclFSPathEncoding(interp, pathPtr) == sysencoding) {
+ if (TclHasIntRep(pathPtr, &fsPathType)) {
return TCL_OK;
}
diff --git a/unix/tclUnixFile.c b/unix/tclUnixFile.c
index fec528e..8268132 100644
--- a/unix/tclUnixFile.c
+++ b/unix/tclUnixFile.c
@@ -365,8 +365,7 @@ TclpMatchInDirectory(
* and pattern. If so, add the file to the result.
*/
-
- utfname = Tcl_ExternalToUtfDString(encoding, entryPtr->d_name, -1,
+ utfname = Tcl_ExternalToUtfDString(NULL, entryPtr->d_name, -1,
&utfDs);
if (Tcl_StringCaseMatch(utfname, pattern, 0)) {
int typeOk = 1;
@@ -381,7 +380,7 @@ TclpMatchInDirectory(
if (typeOk) {
Tcl_ListObjAppendElement(interp, resultPtr,
TclNewFSPathObj(pathPtr, utfname,
- Tcl_DStringLength(&utfDs), encoding));
+ Tcl_DStringLength(&utfDs)));
}
}
Tcl_DStringFree(&utfDs);
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index d0720ab..880adc0 100644
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c
@@ -1095,7 +1095,6 @@ TclpMatchInDirectory(
const char *utfname;
int checkDrive = 0, isDrive;
DWORD attr;
- Tcl_Encoding encoding;
native = data.cFileName;
attr = data.dwFileAttributes;
@@ -1133,7 +1132,6 @@ TclpMatchInDirectory(
* the system.
*/
- encoding = Tcl_GetEncoding(interp ,NULL);
if (Tcl_StringCaseMatch(utfname, pattern, 1)) {
/*
* If the file matches, then we need to process the remainder
@@ -1152,7 +1150,7 @@ TclpMatchInDirectory(
if (NativeMatchType(isDrive, attr, native, types)) {
Tcl_ListObjAppendElement(interp, resultPtr,
TclNewFSPathObj(pathPtr, utfname,
- Tcl_DStringLength(&ds), encoding));
+ Tcl_DStringLength(&ds)));
}
}