I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10
system. I recently received a collection of .eml files whose filenames include emoji characters. [...]
Michael Soyka <[email protected]> wrote:
I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10
system. I recently received a collection of .eml files whose filenames
include emoji characters. [...]
As an immediate Anser, I'd suggest looking for Christian Werner's
Undrowish (no typo, it's Androwish on Android-devices ported back
to PC)
Unicode-emojis are not well supported by standard Tcl 8.6.*
There is work in progress about fixing it for 8.7 and 9.0.
Undrowish has a "variant" of 8.6 that already now supports
these to some degree at the cost, that not all extensions
can be loaded into it. (others might be able to explain it
better)
On 09/02/2023 2:05 AM, Andreas Leitgeb wrote:
Michael Soyka <[email protected]> wrote:
I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10
system.Β I recently received a collection of .eml files whose filenames >>> include emoji characters.Β [...]
As an immediate Anser, I'd suggest looking for Christian Werner's
UndrowishΒ (no typo, it's Androwish on Android-devices ported back
to PC)
Thank you for the information, I'll look into Undrowish.
Unicode-emojis are not well supported by standard Tcl 8.6.*
There is work in progress about fixing it for 8.7 and 9.0.
So this a known issue and there's no reason to file a bug report.
I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10
[...]
filenames came to include emoji characters.
Now to the problem. When I try to access these files using Tcl, I get
what I consider to be nonsensical errors. For example, the "open"
command fails with the message "filename is invalid on this platform",
even though the file does exist. On the other hand, various "file"
commands that also take a filename argument, such as "exists" and
"size", return "no such file or directory". Again, the file certainly
does exist.
I haven't been able to construct such a filename using Tcl commands.
Instead, I've used "glob" to get the filename from the filesystem
(NTFS) and used the result as the argument for "open" and "file".
Michael Soyka <[email protected]> writes:
I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10
[...]
filenames came to include emoji characters.
Now to the problem. When I try to access these files using Tcl, I get
what I consider to be nonsensical errors. For example, the "open"
command fails with the message "filename is invalid on this platform",
even though the file does exist. On the other hand, various "file"
commands that also take a filename argument, such as "exists" and
"size", return "no such file or directory". Again, the file certainly
does exist.
You haven't shown us how you call that commands in Tcl, with the emoji literal in the source code or escaped as \Uxxxxx, for example and what encoding your source file has.
Since Tcl 8.6.10 I think and for sure with the upcomming Tcl 9 there is
no problem in handling such filenames (with unicode code points in
proper utf.8 in it as emojis).
See for example:
# The following is: a\U1f972
set fd [open aπ₯² w+]
# \U1f926
puts $fd π€¦
close $fd
set fd [open aπ₯²]
puts [read $fd]
close $fd
This script works for me on linux with 8.6.10, 8.6.13 and 9. Though this
is on linux.
I haven't been able to construct such a filename using Tcl commands.
Instead, I've used "glob" to get the filename from the filesystem
(NTFS) and used the result as the argument for "open" and "file".
So you can construct the filenames with results of Tcl commands and successfully open the files?
rolf
On 09/06/2023 6:16 PM, Rolf Ade wrote:
Michael Soyka <[email protected]> writes:
I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10You haven't shown us how you call that commands in Tcl, with the
[...]
filenames came to include emoji characters.
Now to the problem. When I try to access these files using Tcl, I get
what I consider to be nonsensical errors. For example, the "open"
command fails with the message "filename is invalid on this platform",
even though the file does exist. On the other hand, various "file"
commands that also take a filename argument, such as "exists" and
"size", return "no such file or directory". Again, the file certainly
does exist.
emoji
literal in the source code or escaped as \Uxxxxx, for example and what
encoding your source file has.
The filenames were obtained using the "glob" command. The files
themselves were created, I believe, by others using a mail client on
Windows.
Since Tcl 8.6.10 I think and for sure with the upcomming Tcl 9 there
is
no problem in handling such filenames (with unicode code points in
proper utf.8 in it as emojis).
See for example:
# The following is: a\U1f972
set fd [open aπ₯² w+]
# \U1f926
puts $fd π€¦
close $fd
set fd [open aπ₯²]
puts [read $fd]
close $fd
This script works for me on linux with 8.6.10, 8.6.13 and 9. Though
this
is on linux.
I haven't been able to construct such a filename using Tcl commands.So you can construct the filenames with results of Tcl commands and
Instead, I've used "glob" to get the filename from the filesystem
(NTFS) and used the result as the argument for "open" and "file".
successfully open the files?
The only reason I tried to create a file that includes emoji
characters in its name was to investigate the contradictory responses
I was getting from the "open" and "file" commands.
However, that's not the primary issue I tried to raise so I'll try to
be more specific.
I was given a collection of files on a thumb drive. One of the files contains a sequence of three emoji characters in its name: "two
hearts", "revolving hearts" and "two hearts". The corresponding
unicode values are \U01F495 and \U01F49E. One of the reasons I
believe this is based on the following code:
proc DisplayCharCodes {string} {
foreach c [split $string {}] {
puts [format {%s: %#x} $c [scan $c %c]]
}
}
set fileList [glob -type f *.eml]
set filename [lindex $fileList 1]
DisplayCharCodes $filename
which outputs the following:
N: 0x4e
E: 0x45
X: 0x58
T: 0x54
: 0x20
S: 0x53
A: 0x41
T: 0x54
.: 0x2e
: 0x20
2: 0x32
_: 0x5f
1: 0x31
5: 0x35
_: 0x5f
: 0x20
F: 0x46
A: 0x41
D: 0x44
E: 0x45
D: 0x44
: 0x20
L: 0x4c
O: 0x4f
V: 0x56
E: 0x45
R: 0x52
S: 0x53
: 0x20
T: 0x54
O: 0x4f
U: 0x55
R: 0x52
: 0x20
i: 0x69
n: 0x6e
: 0x20
P: 0x50
R: 0x52
O: 0x4f
V: 0x56
I: 0x49
D: 0x44
E: 0x45
N: 0x4e
C: 0x43
E: 0x45
!: 0x21
: 0x20
π: 0x1f495
π: 0x1f49e
π: 0x1f495
.: 0x2e
e: 0x65
m: 0x6d
l: 0x6c
Given the above, this is what "open" returns:
% open $filename r
couldn't open "NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE!
πππ.eml": filename is invalid on this platform
and the response of "file exists $filename" is zero.
So I'm looking for a reason behind this inconsistent and, in my mind, nonsensical behavior. Is it a Windows issue, a Tcl issue, a little of
both and/or something else?
I hope the above clarifies my problem.
Michael Soyka writes:
On 09/06/2023 6:16 PM, Rolf Ade wrote:
Michael Soyka <[email protected]> writes:
I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10You haven't shown us how you call that commands in Tcl, with the
[...]
filenames came to include emoji characters.
Now to the problem. When I try to access these files using Tcl, I get
what I consider to be nonsensical errors. For example, the "open"
command fails with the message "filename is invalid on this platform", >>>> even though the file does exist. On the other hand, various "file"
commands that also take a filename argument, such as "exists" and
"size", return "no such file or directory". Again, the file certainly
does exist.
emoji
literal in the source code or escaped as \Uxxxxx, for example and what
encoding your source file has.
The filenames were obtained using the "glob" command. The files
themselves were created, I believe, by others using a mail client on
Windows.
Since Tcl 8.6.10 I think and for sure with the upcomming Tcl 9 there
is
no problem in handling such filenames (with unicode code points in
proper utf.8 in it as emojis).
See for example:
# The following is: a\U1f972
set fd [open aπ₯² w+]
# \U1f926
puts $fd π€¦
close $fd
set fd [open aπ₯²]
puts [read $fd]
close $fd
This script works for me on linux with 8.6.10, 8.6.13 and 9. Though
this
is on linux.
I haven't been able to construct such a filename using Tcl commands.So you can construct the filenames with results of Tcl commands and
Instead, I've used "glob" to get the filename from the filesystem
(NTFS) and used the result as the argument for "open" and "file".
successfully open the files?
The only reason I tried to create a file that includes emoji
characters in its name was to investigate the contradictory responses
I was getting from the "open" and "file" commands.
However, that's not the primary issue I tried to raise so I'll try to
be more specific.
I was given a collection of files on a thumb drive. One of the files
contains a sequence of three emoji characters in its name: "two
hearts", "revolving hearts" and "two hearts". The corresponding
unicode values are \U01F495 and \U01F49E. One of the reasons I
believe this is based on the following code:
proc DisplayCharCodes {string} {
foreach c [split $string {}] {
puts [format {%s: %#x} $c [scan $c %c]]
}
}
set fileList [glob -type f *.eml]
set filename [lindex $fileList 1]
DisplayCharCodes $filename
which outputs the following:
N: 0x4e
E: 0x45
X: 0x58
T: 0x54
: 0x20
S: 0x53
A: 0x41
T: 0x54
.: 0x2e
: 0x20
2: 0x32
_: 0x5f
1: 0x31
5: 0x35
_: 0x5f
: 0x20
F: 0x46
A: 0x41
D: 0x44
E: 0x45
D: 0x44
: 0x20
L: 0x4c
O: 0x4f
V: 0x56
E: 0x45
R: 0x52
S: 0x53
: 0x20
T: 0x54
O: 0x4f
U: 0x55
R: 0x52
: 0x20
i: 0x69
n: 0x6e
: 0x20
P: 0x50
R: 0x52
O: 0x4f
V: 0x56
I: 0x49
D: 0x44
E: 0x45
N: 0x4e
C: 0x43
E: 0x45
!: 0x21
: 0x20
π: 0x1f495
π: 0x1f49e
π: 0x1f495
.: 0x2e
e: 0x65
m: 0x6d
l: 0x6c
Given the above, this is what "open" returns:
% open $filename r
couldn't open "NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE!
πππ.eml": filename is invalid on this platform
and the response of "file exists $filename" is zero.
So I'm looking for a reason behind this inconsistent and, in my mind,
nonsensical behavior. Is it a Windows issue, a Tcl issue, a little of
both and/or something else?
I hope the above clarifies my problem.
Thanks.
Yes, typically you should be able to use any file name returned by glob
as argument for open or file exists. There is an exception of that rule
(what Harald mattered) and that may be in place here.
Can you open the file in question with the file explorer? Perhaps you
can truncate it and provide it as download somewhere (in the hope that
the "strangeness" of the file name survives this actions, which is not a given)?
The one known scenario which shows what you describe (you can't open a filename you got from glob) is: the file names are written in another encoding then what the system use for its filenames. Though, in what you presented as results of your own investigations I cannot see indication
that this is the case here.
But perhaps it's in fact a strangeness of the used windows APIs (or how
they are used). At least you are right in saying this is strange and
need an explanation. If it's not the thing from above.
rolf
On 09/07/2023 8:15 PM, Rolf Ade wrote:
Michael Soyka writes:
On 09/06/2023 6:16 PM, Rolf Ade wrote:
Michael Soyka <[email protected]> writes:
I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10You haven't shown us how you call that commands in Tcl, with the
[...]
filenames came to include emoji characters.
Now to the problem. When I try to access these files using Tcl, I get >>>> what I consider to be nonsensical errors. For example, the "open"
command fails with the message "filename is invalid on this platform", >>>> even though the file does exist. On the other hand, various "file"
commands that also take a filename argument, such as "exists" and
"size", return "no such file or directory". Again, the file certainly >>>> does exist.
emoji
literal in the source code or escaped as \Uxxxxx, for example and what >>> encoding your source file has.
The filenames were obtained using the "glob" command. The files
themselves were created, I believe, by others using a mail client on
Windows.
Since Tcl 8.6.10 I think and for sure with the upcomming Tcl 9 there
is
no problem in handling such filenames (with unicode code points in
proper utf.8 in it as emojis).
See for example:
# The following is: a\U1f972
set fd [open aΓΒ°ΓΒΓΒ₯ΓΒ² w+]
# \U1f926
puts $fd ΓΒ°ΓΒΓΒ€ΓΒ¦
close $fd
set fd [open aΓΒ°ΓΒΓΒ₯ΓΒ²]
puts [read $fd]
close $fd
This script works for me on linux with 8.6.10, 8.6.13 and 9. Though
this
is on linux.
I haven't been able to construct such a filename using Tcl commands. >>>> Instead, I've used "glob" to get the filename from the filesystemSo you can construct the filenames with results of Tcl commands and
(NTFS) and used the result as the argument for "open" and "file".
successfully open the files?
The only reason I tried to create a file that includes emoji
characters in its name was to investigate the contradictory responses
I was getting from the "open" and "file" commands.
However, that's not the primary issue I tried to raise so I'll try to
be more specific.
I was given a collection of files on a thumb drive. One of the files
contains a sequence of three emoji characters in its name: "two
hearts", "revolving hearts" and "two hearts". The corresponding
unicode values are \U01F495 and \U01F49E. One of the reasons I
believe this is based on the following code:
proc DisplayCharCodes {string} {
foreach c [split $string {}] {
puts [format {%s: %#x} $c [scan $c %c]]
}
}
set fileList [glob -type f *.eml]
set filename [lindex $fileList 1]
DisplayCharCodes $filename
which outputs the following:
N: 0x4e
E: 0x45
X: 0x58
T: 0x54
: 0x20
S: 0x53
A: 0x41
T: 0x54
.: 0x2e
: 0x20
2: 0x32
_: 0x5f
1: 0x31
5: 0x35
_: 0x5f
: 0x20
F: 0x46
A: 0x41
D: 0x44
E: 0x45
D: 0x44
: 0x20
L: 0x4c
O: 0x4f
V: 0x56
E: 0x45
R: 0x52
S: 0x53
: 0x20
T: 0x54
O: 0x4f
U: 0x55
R: 0x52
: 0x20
i: 0x69
n: 0x6e
: 0x20
P: 0x50
R: 0x52
O: 0x4f
V: 0x56
I: 0x49
D: 0x44
E: 0x45
N: 0x4e
C: 0x43
E: 0x45
!: 0x21
: 0x20
ΓΒ°ΓΒΓΒΓΒ: 0x1f495
ΓΒ°ΓΒΓΒΓΒ: 0x1f49e
ΓΒ°ΓΒΓΒΓΒ: 0x1f495
.: 0x2e
e: 0x65
m: 0x6d
l: 0x6c
Given the above, this is what "open" returns:
% open $filename r
couldn't open "NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE!
ΓΒ°ΓΒΓΒΓΒΓΒ°ΓΒΓΒΓΒΓΒ°ΓΒΓΒΓΒ.eml": filename is invalid on this platform
and the response of "file exists $filename" is zero.
So I'm looking for a reason behind this inconsistent and, in my mind,
nonsensical behavior. Is it a Windows issue, a Tcl issue, a little of
both and/or something else?
I hope the above clarifies my problem.
Thanks.
Yes, typically you should be able to use any file name returned by glob
as argument for open or file exists. There is an exception of that rule (what Harald mattered) and that may be in place here.
Can you open the file in question with the file explorer? Perhaps you
can truncate it and provide it as download somewhere (in the hope that
the "strangeness" of the file name survives this actions, which is not a given)?
Yes, using Windows Explorer I can open the file with Vim and open the
file with Outlook. I can also rename the file, deleting the 3 emoji characters, and open it using the Tcl commands "glob" and "open".
The one known scenario which shows what you describe (you can't open a filename you got from glob) is: the file names are written in another encoding then what the system use for its filenames. Though, in what you presented as results of your own investigations I cannot see indication that this is the case here.
But perhaps it's in fact a strangeness of the used windows APIs (or how they are used). At least you are right in saying this is strange and
need an explanation. If it's not the thing from above.
I've since copied the files from the same thumb drive onto my linux
system and retried the "glob" and "open" commands using 8.6.10- it all
works. My Windows version is 8.6.12, a later version, so it appears
that my problems are peculiar to Windows.
Thanks for your continuing interest- it's helped motivate me to look
deeper into the problem.
-mike
rolf
At Fri, 8 Sep 2023 14:49:48 -0400 Michael Soyka <[email protected]> wrote:
On 09/07/2023 8:15 PM, Rolf Ade wrote:
Michael Soyka writes:
On 09/06/2023 6:16 PM, Rolf Ade wrote:
Michael Soyka <[email protected]> writes:
I'm using the Magicsplat distribution of tcl 8.6.12 on a Windows 10 >>>>>> [...]You haven't shown us how you call that commands in Tcl, with the
filenames came to include emoji characters.
Now to the problem. When I try to access these files using Tcl, I get >>>>>> what I consider to be nonsensical errors. For example, the "open"
command fails with the message "filename is invalid on this platform", >>>>>> even though the file does exist. On the other hand, various "file" >>>>>> commands that also take a filename argument, such as "exists" and
"size", return "no such file or directory". Again, the file certainly >>>>>> does exist.
emoji
literal in the source code or escaped as \Uxxxxx, for example and what >>>>> encoding your source file has.
The filenames were obtained using the "glob" command. The files
themselves were created, I believe, by others using a mail client on
Windows.
Since Tcl 8.6.10 I think and for sure with the upcomming Tcl 9 there >>>>> is
no problem in handling such filenames (with unicode code points in
proper utf.8 in it as emojis).
See for example:
# The following is: a\U1f972
set fd [open aΓΖΓΒ°ΓβΓΕΈΓβΓΒ₯ΓβΓΒ² w+]
# \U1f926
puts $fd ΓΖΓΒ°ΓβΓΕΈΓβΓΒ€ΓβΓΒ¦
close $fd
set fd [open aΓΖΓΒ°ΓβΓΕΈΓβΓΒ₯ΓβΓΒ²]
puts [read $fd]
close $fd
This script works for me on linux with 8.6.10, 8.6.13 and 9. Though
this
is on linux.
I haven't been able to construct such a filename using Tcl commands. >>>>>> Instead, I've used "glob" to get the filename from the filesystemSo you can construct the filenames with results of Tcl commands and
(NTFS) and used the result as the argument for "open" and "file".
successfully open the files?
The only reason I tried to create a file that includes emoji
characters in its name was to investigate the contradictory responses
I was getting from the "open" and "file" commands.
However, that's not the primary issue I tried to raise so I'll try to
be more specific.
I was given a collection of files on a thumb drive. One of the files
contains a sequence of three emoji characters in its name: "two
hearts", "revolving hearts" and "two hearts". The corresponding
unicode values are \U01F495 and \U01F49E. One of the reasons I
believe this is based on the following code:
proc DisplayCharCodes {string} {
foreach c [split $string {}] {
puts [format {%s: %#x} $c [scan $c %c]]
}
}
set fileList [glob -type f *.eml]
set filename [lindex $fileList 1]
DisplayCharCodes $filename
which outputs the following:
N: 0x4e
E: 0x45
X: 0x58
T: 0x54
: 0x20
S: 0x53
A: 0x41
T: 0x54
.: 0x2e
: 0x20
2: 0x32
_: 0x5f
1: 0x31
5: 0x35
_: 0x5f
: 0x20
F: 0x46
A: 0x41
D: 0x44
E: 0x45
D: 0x44
: 0x20
L: 0x4c
O: 0x4f
V: 0x56
E: 0x45
R: 0x52
S: 0x53
: 0x20
T: 0x54
O: 0x4f
U: 0x55
R: 0x52
: 0x20
i: 0x69
n: 0x6e
: 0x20
P: 0x50
R: 0x52
O: 0x4f
V: 0x56
I: 0x49
D: 0x44
E: 0x45
N: 0x4e
C: 0x43
E: 0x45
!: 0x21
: 0x20
ΓΖΓΒ°ΓβΓΕΈΓβΓβΓβΓβ’: 0x1f495
ΓΖΓΒ°ΓβΓΕΈΓβΓβΓβΓΕΎ: 0x1f49e
ΓΖΓΒ°ΓβΓΕΈΓβΓβΓβΓβ’: 0x1f495
Noticing that these are 16-bit characters...
.: 0x2e
e: 0x65
m: 0x6d
l: 0x6c
Given the above, this is what "open" returns:
% open $filename r
couldn't open "NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE!
ΓΖΓΒ°ΓβΓΕΈΓβΓβΓβΓβ’ΓΖΓΒ°ΓβΓΕΈΓβΓβΓβΓΕΎΓΖΓΒ°ΓβΓΕΈΓβΓβΓβΓβ’.eml": filename is invalid on this platform
and the response of "file exists $filename" is zero.
So I'm looking for a reason behind this inconsistent and, in my mind,
nonsensical behavior. Is it a Windows issue, a Tcl issue, a little of >>>> both and/or something else?
I hope the above clarifies my problem.
Thanks.
Yes, typically you should be able to use any file name returned by glob
as argument for open or file exists. There is an exception of that rule
(what Harald mattered) and that may be in place here.
Can you open the file in question with the file explorer? Perhaps you
can truncate it and provide it as download somewhere (in the hope that
the "strangeness" of the file name survives this actions, which is not a >>> given)?
Yes, using Windows Explorer I can open the file with Vim and open the
file with Outlook. I can also rename the file, deleting the 3 emoji
characters, and open it using the Tcl commands "glob" and "open".
The one known scenario which shows what you describe (you can't open a
filename you got from glob) is: the file names are written in another
encoding then what the system use for its filenames. Though, in what you >>> presented as results of your own investigations I cannot see indication
that this is the case here.
But perhaps it's in fact a strangeness of the used windows APIs (or how
they are used). At least you are right in saying this is strange and
need an explanation. If it's not the thing from above.
I've since copied the files from the same thumb drive onto my linux
system and retried the "glob" and "open" commands using 8.6.10- it all
works. My Windows version is 8.6.12, a later version, so it appears
that my problems are peculiar to Windows.
What does DisplayCharCodes display under Linux? Do the emoji chars display as
16-bit chars or two 8-bit characters?
Thanks for your continuing interest- it's helped motivate me to look
deeper into the problem.
-mike
rolf
On 09/07/2023 8:15 PM, Rolf Ade wrote:
The one known scenario which shows what you describe (you can't open
a filename you got from glob) is: the file names are written in
another encoding then what the system use for its filenames. Though,
in what you presented as results of your own investigations I cannot
see indication that this is the case here.
But perhaps it's in fact a strangeness of the used windows APIs (or
how they are used). At least you are right in saying this is strange
and need an explanation. If it's not the thing from above.
I've since copied the files from the same thumb drive onto my linux
system and retried the "glob" and "open" commands using 8.6.10- it all
works. My Windows version is 8.6.12, a later version, so it appears
that my problems are peculiar to Windows.
Michael Soyka writes:
On 09/07/2023 8:15 PM, Rolf Ade wrote:
The one known scenario which shows what you describe (you can't open
a filename you got from glob) is: the file names are written in
another encoding then what the system use for its filenames. Though,
in what you presented as results of your own investigations I cannot
see indication that this is the case here.
But perhaps it's in fact a strangeness of the used windows APIs (or
how they are used). At least you are right in saying this is strange
and need an explanation. If it's not the thing from above.
I've since copied the files from the same thumb drive onto my linux
system and retried the "glob" and "open" commands using 8.6.10- it all
works. My Windows version is 8.6.12, a later version, so it appears
that my problems are peculiar to Windows.
For the record: I also saw the emojis as character glyph, they are just ordinary unicode code points in utf-8 encodings; your system should be
able to handle this and for sure Tcl should be able to handle this.
Should be easy for listening Windows user to test. The file name in
question is:
NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml
Use the file explorer to create a file with that name. Then use Tcl
8.6.12- and look what glob returns for the directory with the file in
it. Then try to open the file name returned from glob and try file
exists.
On linux this all works well. I used emacs to create a file with the
name from above in an otherwise empty directory. Then, in an interactiv
tclsh session:
glob *
{NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml}
set filename [lindex [glob *] 0]
NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml
set fd [open $filename]
file3
close $fd
file exists $filename
1
Mike, can you reproduce the issue with this recipt?
rolf
Michael Soyka writes:
On 09/07/2023 8:15 PM, Rolf Ade wrote:
The one known scenario which shows what you describe (you can't open
a filename you got from glob) is: the file names are written in
another encoding then what the system use for its filenames. Though,
in what you presented as results of your own investigations I cannot
see indication that this is the case here.
But perhaps it's in fact a strangeness of the used windows APIs (or
how they are used). At least you are right in saying this is strange
and need an explanation. If it's not the thing from above.
I've since copied the files from the same thumb drive onto my linux
system and retried the "glob" and "open" commands using 8.6.10- it all
works. My Windows version is 8.6.12, a later version, so it appears
that my problems are peculiar to Windows.
For the record: I also saw the emojis as character glyph, they are just ordinary unicode code points in utf-8 encodings; your system should be
able to handle this and for sure Tcl should be able to handle this.
Should be easy for listening Windows user to test. The file name in
question is:
NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml
Use the file explorer to create a file with that name. Then use Tcl
8.6.12- and look what glob returns for the directory with the file in
it. Then try to open the file name returned from glob and try file
exists.
On linux this all works well. I used emacs to create a file with the
name from above in an otherwise empty directory. Then, in an interactiv
tclsh session:
glob *
{NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml}
set filename [lindex [glob *] 0]
NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml
set fd [open $filename]
file3
close $fd
file exists $filename
1
Mike, can you reproduce the issue with this recipt?
rolf
On 09/08/2023 6:28 PM, Rolf Ade wrote:
Should be easy for listening Windows user to test. The file name in
question is:
NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml
Use the file explorer to create a file with that name. Then use Tcl
8.6.12- and look what glob returns for the directory with the file in
it. Then try to open the file name returned from glob and try file
exists.
On linux this all works well. [...]
Mike, can you reproduce the issue with this recipt?
Assuming you meant running this in my Windows box, the answer is no-
it still fails in exactly the same way in a new, empty directory:
% set filename [lindex [glob -type f *] 0]
NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml
% open $filename r
couldn't open "NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml": filename is invalid on this platform
Michael Soyka writes:
On 09/08/2023 6:28 PM, Rolf Ade wrote:
Should be easy for listening Windows user to test. The file name in
question is:
NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml
Use the file explorer to create a file with that name. Then use Tcl
8.6.12- and look what glob returns for the directory with the file in
it. Then try to open the file name returned from glob and try file
exists.
On linux this all works well. [...]
Mike, can you reproduce the issue with this recipt?
Assuming you meant running this in my Windows box, the answer is no-
it still fails in exactly the same way in a new, empty directory:
% set filename [lindex [glob -type f *] 0]
NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE! πππ.eml
% open $filename r
couldn't open "NEXT SAT. 2_15_ FADED LOVERS TOUR in PROVIDENCE!
πππ.eml": filename is invalid on this platform
So you can reproduce the issue with this.
Since Harald confirmed it is high time for a bug report. Please open a
ticket on https://core.tcl-lang.org/tcl. What you try to do should work and does work on linux; this looks like a windows platform issue.
rolf
| Sysop: | Keyop |
|---|---|
| Location: | Huddersfield, West Yorkshire, UK |
| Users: | 715 |
| Nodes: | 16 (2 / 14) |
| Uptime: | 08:53:09 |
| Calls: | 12,100 |
| Files: | 15,003 |
| Messages: | 6,517,961 |