Commmandline arguments and UTF8 error

Jacob Carlborg doob at me.com
Mon Feb 22 11:31:47 PST 2010


On 2010-02-22 15.39, Nils Hensel wrote:
> Daniel Keep schrieb:
>> If you look at the real main function in src\phobos\internal\dmain2.d,
>> you'll see this somewhere around line 109 (I'm using 1.051, but it's
>> unlikely to be much different in an earlier version):
>>
>>> for (size_t i = 0; i<  argc; i++)
>>> {
>>>      auto len = strlen(argv[i]);
>>>      am[i] = argv[i][0 .. len];
>>> }
>>>
>>> args = am[0 .. argc];
>>>
>>> result = main(args);
>>
>> In other words, Phobos never bothers to actually convert the arguments
>> to UTF-8.
>
> Hmm, I really can't see any benefit. Did Walter ever comment on this
> matter? Surely, I can't be the only one who is unable to use D for
> something as mundane as a command line tool that takes file names for
> arguments?
>
>> Tango does (tango\core\rt\compiler\dmd\rt\dmain2.d:238 for a recent-ish
>> trunk).
>
> Actually I was trying to avoid Tango. For one I'm not too fond of the
> interface [Stdout.format(...).newline just seems awkward und
> unnecessarily complicated compared to writef(...)]. Also, I use derelict
> which I don't believe supports Tango yet. And I liked the
> out-of-the-box-feeling of Phobos which is supposedly the standard.

You can use derelict with tango. I can agree you about Stdout.format, 
You can create wrappers like this:

void writeln (ARGS...) (ARGS args)
{
	foreach (arg ; args)
		Stdout(arg);

	Stdout().newline;
}

void writefln (ARGS...) (char[] str, ARGS args)
{
	foreach (arg ; args)
		Stdout.format(str, arg);

	Stdout().newline;
}

> Guess I have to make up my mind if all the extra hassle of installing
> and learning (and updating) another and utterly different "standard"
> library outweighs the benefits of developing in D.

You can download dmd bundled with tango from tango's website.

> Thanks a lot for your response!
>
> Regards,
> Nils



More information about the Digitalmars-d-learn mailing list