From 96c384c361eb309a107faf06bc2c73bf1e356997 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 3 Feb 2016 08:45:48 +0000 Subject: Backout [477949] for Tk 8.5, after discussion in TclCore mailing list: option readfile cannot use multibytes. Ticket [0a3d799a] To clarify a bit, what we discovered was that [[option readfile]] as found in all Tk releases up to and including 8.5.18 is already able to read in the whole BMP, so long as the file is stored in the encoding utf-8. The classic ASCII subset is fine. utf-8 is fine. Other encodings are at best non-portable. What [477949] did was to add support for files stored in [[encoding system]] but at the expense of breaking the support for the files stored in utf-8. Not the right outcome for a patch release. --- generic/tkOption.c | 13 ++----------- tests/option.file3 | 18 ------------------ tests/option.test | 11 ++++------- 3 files changed, 6 insertions(+), 36 deletions(-) delete mode 100755 tests/option.file3 diff --git a/generic/tkOption.c b/generic/tkOption.c index 17989f8..95b140d 100644 --- a/generic/tkOption.c +++ b/generic/tkOption.c @@ -1086,7 +1086,7 @@ ReadOptionFile( char *buffer; int result, bufferSize; Tcl_Channel chan; - Tcl_DString newName, optString; + Tcl_DString newName; /* * Prevent file system access in a safe interpreter. @@ -1136,16 +1136,7 @@ ReadOptionFile( } Tcl_Close(NULL, chan); buffer[bufferSize] = 0; - if ((bufferSize>2) && !memcmp(buffer, "\357\273\277", 3)) { - /* File starts with UTF-8 BOM */ - result = AddFromString(interp, tkwin, buffer+3, priority); - } else { - Tcl_DStringInit(&optString); - Tcl_ExternalToUtfDString(NULL, buffer, bufferSize, &optString); - result = AddFromString(interp, tkwin, Tcl_DStringValue(&optString), - priority); - Tcl_DStringFree(&optString); - } + result = AddFromString(interp, tkwin, buffer, priority); ckfree(buffer); return result; } diff --git a/tests/option.file3 b/tests/option.file3 deleted file mode 100755 index 87f41ae..0000000 --- a/tests/option.file3 +++ /dev/null @@ -1,18 +0,0 @@ -! This file is a sample option (resource) database used to test -! Tk's option-handling capabilities. - -! Comment line \ - with a backslash-newline sequence embedded in it. - -*x1: blue - tktest.x2 : green -*\ -x3 \ - : pur\ -ple -*x 4: brówn -# More comments, this time delimited by hash-marks. - # Comment-line with space. -*x6: -*x9: \ \ \\\101\n -# comment line as last line of file. diff --git a/tests/option.test b/tests/option.test index 4668771..1bfcb7c 100644 --- a/tests/option.test +++ b/tests/option.test @@ -187,7 +187,6 @@ test option-14.12 {error conditions} { set option1 [file join [testsDirectory] option.file1] set option2 [file join [testsDirectory] option.file2] -set option3 [file join [testsDirectory] option.file3] test option-15.1 {database files} { list [catch {option read non-existent} msg] $msg @@ -208,18 +207,16 @@ test option-15.9 {database files} {option get . x3 color} burgundy test option-15.10 {database files} { list [catch {option read $option2} msg] $msg } {1 {missing colon on line 2}} -option read $option3 -test option-15.11 {database files} {option get . {x 4} color} br\xf3wn test option-16.1 {ReadOptionFile} { - set option4 [makeFile {} option.file3] - set file [open $option4 w] + set option3 [makeFile {} option.file3] + set file [open $option3 w] fconfigure $file -translation crlf puts $file "*x7: true\n*x8: false" close $file - option read $option4 userDefault + option read $option3 userDefault set result [list [option get . x7 color] [option get . x8 color]] - removeFile $option4 + removeFile $option3 set result } {true false} -- cgit v0.12