Tango and almost all Tango based libs and tools have same issue:
use tango.stdc.stringz.toStringz(name) or name ~ '\0' instead of toMBSz(name)
for calling A version Windows API, that's wrong!
program may crashed if multi byte name.
you might say, why not just create a ticket for Tango, right, I created it long
time ago, but Kris seems not a MS fans :)
http://www.dsource.org/projects/tango/ticket/653
you might say, how about the tango.sys.win32.CodePage module?
but:
1 the name, "toMBSz" is better than "CodePage" in this case
2 the implementation, toMBSz is better in this case
2 Tango itself not use CodePage module in this case
It is too tedious to create bug tickets for every tango based libs, tools(if
have this issue)!
I can't understand what's the problem if add toMBSz to tango.sys.win32, if
problem, why Phobos have not this problem?
--
yidabu <yidabu.spam gmail.com>
http://www.dsource.org/projects/dwin
D 语言-中文(D Chinese):
http://www.d-programming-language-china.org/http://bbs.d-programming-language-china.org/http://dwin.d-programming-language-china.org/http://scite4d.d-programming-language-china.org/
Apr 24 2008
↑ ↓←→ Lars Ivar Igesund <larsivar igesund.net> writes:
yidabu wrote:
Tango and almost all Tango based libs and tools have same issue:
use tango.stdc.stringz.toStringz(name) or name ~ '\0' instead of
toMBSz(name) for calling A version Windows API, that's wrong! program may
crashed if multi byte name.
You can't say wrong without coming with a solution, or at least an
explanation why it is wrong.
This ticket is closed with no comments to its resolution - what is your
point? This doesn't have much to do with fan-dom either, we're just mostly
Unicode users.
you might say, how about the tango.sys.win32.CodePage module?
but:
1 the name, "toMBSz" is better than "CodePage" in this case
2 the implementation, toMBSz is better in this case
2 Tango itself not use CodePage module in this case
It is too tedious to create bug tickets for every tango based libs,
tools(if have this issue)!
I can't understand what's the problem if add toMBSz to tango.sys.win32, if
problem, why Phobos have not this problem?
The problem is that you are not explaining the problem. You say there is a
problem, but you don't provide us with test cases that fail, neither give
proper resolutions. Bill did provide some clarifications in the previous
round, and some of those issues has been resolved, but some were still not
clear enough to figure out how they could be solved.
--
Lars Ivar Igesund
blog at http://larsivi.net
DSource, #d.tango & #D: larsivi
Dancing the Tango
Apr 24 2008
↑ ↓ ←→ Lars Ivar Igesund <larsivar igesund.net> writes:
yidabu wrote:
On Thu, 24 Apr 2008 21:26:28 +0200
Lars Ivar Igesund <larsivar igesund.net> wrote:
thanks for you reply.
You can't say wrong without coming with a solution, or at least an
explanation why it is wrong.
is it right? the solution is Phobos way: toMBSz(name)
This is not an answer to my statement, or at least I don't understand it as
so.
This doesn't have much to do with fan-dom either, we're just mostly
Unicode users.
I'm Unicode user, not the D users, A version Windows API need multi byte
convert.
If you create a program using Unicode, so does it's users, right? Or are you
forwarding this from D users not using Unicode (and if so, why don't they
use Unicode?)?
The problem is that you are not explaining the problem. You say there is
a problem, but you don't provide us with test cases that fail, neither
give proper resolutions. Bill did provide some clarifications in the
previous round, and some of those issues has been resolved, but some were
still not clear enough to figure out how they could be solved.
the problem is Tango has many bad(wrong?) sample for calling A vesion
Windows API, and Tango based code have not a convenient way to calling A
version Windows API.
Yes, so you say - but you don't point to which are problematic, and how they
should be fixed (I assume you know, since you appear to know why they are
wrong).
--
Lars Ivar Igesund
blog at http://larsivi.net
DSource, #d.tango & #D: larsivi
Dancing the Tango
Apr 25 2008
↑ ↓ ←→ Frits van Bommel <fvbommel REMwOVExCAPSs.nl> writes:
Lars Ivar Igesund wrote:
[snip]
I think what Yibadu is saying (and you're misunderstanding) is that
Tango calls the *A functions with UTF-8 text, while they expect text in
whatever the current codepage is.
The way he proposes to fix this is by porting std.windows.charset.toMBSz
from Phobos and using that to convert (or writing an equivalent function).
I haven't checked whether his claim is correct, but I'm pretty sure you
didn't understand what he was saying. I hope I managed to express it
more clearly.
Apr 25 2008
↑ ↓←→ Lars Ivar Igesund <larsivar igesund.net> writes:
Frits van Bommel wrote:
Lars Ivar Igesund wrote:
[snip]
I think what Yibadu is saying (and you're misunderstanding) is that
Tango calls the *A functions with UTF-8 text, while they expect text in
whatever the current codepage is.
The way he proposes to fix this is by porting std.windows.charset.toMBSz
from Phobos and using that to convert (or writing an equivalent function).
I haven't checked whether his claim is correct, but I'm pretty sure you
didn't understand what he was saying. I hope I managed to express it
more clearly.
Okay, thanks, that makes sense. It says little about which calls these are
though. Some (all?) has been fixed in SVN and/or noted in tickets - since
this is brought up again I wondered if there were others.
--
Lars Ivar Igesund
blog at http://larsivi.net
DSource, #d.tango & #D: larsivi
Dancing the Tango
It says little about which calls these are though.
Apr 26 2008
↑ ↓ ← → Walter Bright <newshound1 digitalmars.com> writes:
Frits van Bommel wrote:
I think what Yibadu is saying (and you're misunderstanding) is that
Tango calls the *A functions with UTF-8 text, while they expect text in
whatever the current codepage is.
The way he proposes to fix this is by porting std.windows.charset.toMBSz
from Phobos and using that to convert (or writing an equivalent function).
All Windows API calls under Windows 9x should use the "A" api's whenever
possible (instead of the "W" apis), and toMBSz should be called to
convert unicode strings to "A" strings. Phobos does this.
On Thu, 24 Apr 2008 21:26:28 +0200
Lars Ivar Igesund <larsivar igesund.net> wrote:
thanks for you reply.
You can't say wrong without coming with a solution, or at least an
explanation why it is wrong.
is it right? the solution is Phobos way: toMBSz(name)
This doesn't have much to do with fan-dom either, we're just mostly
Unicode users.
I'm Unicode user, not the D users, A version Windows API need multi byte
convert.
The problem is that you are not explaining the problem. You say there is a
problem, but you don't provide us with test cases that fail, neither give
proper resolutions. Bill did provide some clarifications in the previous
round, and some of those issues has been resolved, but some were still not
clear enough to figure out how they could be solved.
On Fri, 25 Apr 2008 21:31:49 +0200
Frits van Bommel <fvbommel REMwOVExCAPSs.nl> wrote:
Lars Ivar Igesund wrote:
[snip]
I think what Yibadu is saying (and you're misunderstanding) is that
Tango calls the *A functions with UTF-8 text, while they expect text in
whatever the current codepage is.
The way he proposes to fix this is by porting std.windows.charset.toMBSz
from Phobos and using that to convert (or writing an equivalent function).
I haven't checked whether his claim is correct, but I'm pretty sure you
didn't understand what he was saying. I hope I managed to express it
more clearly.
↑ ↓ ← → Lars Ivar Igesund <larsivar igesund.net> writes:
yidabu wrote:
Tango and almost all Tango based libs and tools have same issue:
use tango.stdc.stringz.toStringz(name) or name ~ '\0' instead of
toMBSz(name) for calling A version Windows API, that's wrong! program may
crashed if multi byte name.
Ok, now I have an understanding of what is said here - the way to have this
fixed is (as always) to create a ticket, preferably with a patch tested by
someone who needs to use *A functions of the Win API.
--
Lars Ivar Igesund
blog at http://larsivi.net
DSource, #d.tango & #D: larsivi
Dancing the Tango