Re: Filenames in Ada



On Thu, 24 Nov 2005 20:13:01 +0100, Martin Krischik wrote:

> Dmitry A. Kazakov wrote:
>
>> On Wed, 23 Nov 2005 18:36:47 +0100, Martin Krischik wrote:
>>
> Find the code at:
> http://cvs.sourceforge.net/viewcvs.py/wikibook-ada/demos/Source/make_m3u.adb?only_with_tag=HEAD&view=markup
>
> at let it loose at a directory with Cyrillic filenames.

It works perfectly well. Ada.Directories returns file names as-is. One
don't need to change anything:

while More_Entries (Search_Artist) loop
Get_Next_Entry (Search_Artist, Artist_Entry);
declare
Artist : String renames Simple_Name (Artist_Entry);
-- This is UTF-8 encoded under Linux
begin
if ( Artist /= "." -- ASCII-7 is UTF-8!
and then
Artist /= ".."
and then
Artist /= "Folder Settings"
)
then
Put_Line (Artist); -- Outputs UTF-8
end if;
end;
end loop;

>> Though it cannot work under Windows, because GNAT run-time translates
>> Create into some CreateFileA Windows API. Moreover Windows is UTF-16. So
>> there is no chance for Ada.Text_IO.Create. I presume one could directly
>> use CreateFileW from Windows API with a Wide_String file name, but that's
>> another story.
>
> I fear that is the only option available. But how to turn the Windows
> filehandle into a Ada one...

I'm afraid there is no other way than to ask ACT 1) to use xxxW stuff for
all file operations and 2) to translate String file names from UTF-8 to
UTF-16 when it goes down to Windows and from UTF-16 to UTF-8 when it goes
back.

>> I don't see any great problem here. I would add UTF-8 variants for all
>> calls where a file name is mentioned. We could even switch from Latin-1 to
>> UTF-8. This seems to be independent on Text_IO vs. Wide_Text_IO issue.
>
> I am not sure. There are quite a few OS dependent functions involved here.

It cannot be portable.

Well, does VMS still use Radix-50 for file names? (:-)) That's wise!

--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
.



Relevant Pages

  • Re: Why constructing functions is a mess [was Language lawyer question: task activation
    ... One I tested with was Windows. ... Dmitry A. Kazakov ...
    (comp.lang.ada)
  • Re: RfD: XCHAR wordset
    ... It's somewhat worse, because Windows has "A" prototypes, which convert the ... current code page into UTF-16 on the fly. ... Actually, it might be possible to change the current code page to UTF-8, but ... Windows strings are usually not C strings, ...
    (comp.lang.forth)
  • Re: Ausgabeformat mit Sonderzeichen in UTF8?
    ... Ich musste meine Texte mit einem auf Windows laufenden ... weil das Skript unter Linux mit dem UTF-8 ... Zeichenkodierungen seinen Senf dazugegeben. ...
    (de.comp.lang.perl.misc)
  • Re: Ausgabeformat mit Sonderzeichen in UTF8?
    ... keineswegs generell zwischen Binärdaten und Text unterscheidet, ... Ich musste meine Texte mit einem auf Windows ... einem auf einem Linux-Server eingerichteten Perlskript, ... ziemliche Problem mit UTF-8 hatten. ...
    (de.comp.lang.perl.misc)
  • Tk 8.4.11 / Windows XP / Encoding problem
    ... Some of our clients are experiencing a weird problem on their Windows XP PCs. ... Our Tcl/Tk software uses "encoding system utf-8", which works beautifully on 99.9% of all PCs, but on a very few of them the entry/text widgets go haywire. ...
    (comp.lang.tcl)