<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">If you cared enough to check FSWin32.m3, answer would be obvious :).<div><br></div><div>Whatever I do with pathname before I call FS.OpenFile(Readonly)? - FSWin32.m3 will call CreateFileA. My solution is:</div><div><br></div><div><div>PROCEDURE OpenFileReadonly(p: Pathname.T): File.T RAISES {OSError.E}=</div><div>  VAR</div><div>    handle: WinNT.HANDLE;</div><div>    fname := M3toC.SharedTtoS(p);</div><div>    dwNum := WinNLS.MultiByteToWideChar (WinNLS.CP_UTF8, 0, fname, -1, NIL, 0);</div><div>    pwText: WinBaseTypes.PCWSTR; </div><div>  BEGIN</div><div>    IF dwNum = 0 OR dwNum = Text.Length(p) + 1 THEN</div><div>      (* dwNum includes terminating null character. that's +1 above.</div><div>      *)</div><div>      handle := WinBase.CreateFile(</div><div>                    lpFileName := fname,</div><div>                    dwDesiredAccess := WinNT.GENERIC_READ,</div><div>                    dwShareMode :=  WinNT.FILE_SHARE_READ,</div><div>                    lpSecurityAttributes := NIL,</div><div>                    dwCreationDisposition := WinBase.OPEN_EXISTING,</div><div>                    dwFlagsAndAttributes := 0,</div><div>                    hTemplateFile := NIL);</div><div>    ELSE</div><div>      pwText := LOOPHOLE(NEW(UNTRACED REF ARRAY OF CHAR, dwNum*2), WinBaseTypes.PCWSTR);</div><div>      EVAL WinNLS.MultiByteToWideChar (WinNLS.CP_UTF8, 0, fname, -1, pwText, dwNum);</div><div>      handle := WinBase.CreateFileW(</div><div>                    lpFileName := pwText,</div><div>                    dwDesiredAccess := WinNT.GENERIC_READ,</div><div>                    dwShareMode := WinNT.FILE_SHARE_READ,</div><div>                    lpSecurityAttributes := NIL,</div><div>                    dwCreationDisposition := WinBase.OPEN_EXISTING,</div><div>                    dwFlagsAndAttributes := 0,</div><div>                    hTemplateFile := NIL);</div><div>      DISPOSE(pwText);</div><div>    END;</div><div><br></div><div>    IF LOOPHOLE(handle, INTEGER) = WinBase.INVALID_HANDLE_VALUE THEN</div><div>      Fail(p, fname);</div><div>    END;</div><div>    M3toC.FreeSharedS(p, fname);</div><div>    RETURN FileWin32.New(handle, FileWin32.Read)</div><div>  END OpenFileReadonly;</div><div><br></div><div>And similar in OpenFile. Not nice :).</div><div><br></div><div>Also, I've added CP_UTF8 constant to WinNLS.i3.</div><div><br><div><div>On Jun 25, 2012, at 9:01 PM, Daniel Alejandro Benavides D. wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td valign="top" style="font: inherit;">Hi all:<br>So do you need Double-Byte Character String module as currently  in TEXT types? but you can do that already. Couldn't you?<br>Thanks in advance<br><br>--- El <b>lun, 25/6/12, Dragiša Durić <i><<a href="mailto:dragisha@m3w.org">dragisha@m3w.org</a>></i></b> escribió:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>De: Dragiša Durić <<a href="mailto:dragisha@m3w.org">dragisha@m3w.org</a>><br>Asunto: Re: [M3devel] Windows, Unicode file names<br>Para: "Daniel Alejandro Benavides D." <<a href="mailto:dabenavidesd@yahoo.es">dabenavidesd@yahoo.es</a>><br>CC: "m3devel" <<a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a>><br>Fecha: lunes, 25 de junio, 2012 13:20<br><br><div id="yiv395665588"><div>Yes, they exposed parts of NLS. That's how problem can be, albeit partially, solved. By using methods exposed there.<div><br></div><div>What we don't have is how to communicate actual encoding of string to FS module so FS
 methods can handle filenames accordingly.</div><div><br></div><div><div><div>On Jun 25, 2012, at 8:06 PM, Daniel Alejandro Benavides D. wrote:</div><br class="yiv395665588Apple-interchange-newline"><blockquote type="cite"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit;" valign="top">Hi all:<br>OK, good, Win32 API dealt with inter-NLS (National Language Support) at ASCII and other formats level with NLS API.<br>But it appears to be have not been used for DEC-SRC WinNT port of Modula-3 (but for CM3, though it isn't compiled in elego servers, but here):<br><a rel="nofollow" target="_blank" href="http://www.cs.purdue.edu/homes/hosking/m3/help/gen_html/m3core/src/win32/WinNLS.i3.html">http://www.cs.purdue.edu/homes/hosking/m3/help/gen_html/m3core/src/win32/WinNLS.i3.html</a><br><br>Thanks in advance<br><br>--- El <b>lun, 25/6/12, Dragiša Durić <i><<a href="mailto:dragisha@m3w.org">dragisha@m3w.org</a>></i></b> escribió:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>De: Dragiša Durić <<a href="mailto:dragisha@m3w.org">dragisha@m3w.org</a>><br>Asunto: Re: [M3devel] Windows, Unicode file names<br>Para: "Daniel Alejandro Benavides D." <<a href="mailto:dabenavidesd@yahoo.es">dabenavidesd@yahoo.es</a>><br>CC: "m3devel" <<a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a>><br>Fecha: lunes, 25 de junio, 2012 12:36<br><br><div id="yiv395665588"><div>Daniel,<div><br></div><div>I can talk about many things, and most things Modula-3 are of interest to me. Once you start a topic, and I can understand what is it about, and it meets my interests - I'll be there.</div><div><br></div><div>Problem I met with filenames
 is nothing old. Windows can open files with filenames in ASCII and UTF-16. Everything else - you must check twice and do a workaround.</div><div><br></div><div>I've written here in hope I can get i to some fruitful discussion with people who understand this problem. My solution is a workaround and assumes filename is UTF-8 or ASCII. I would like to start discussion on this and work from there to more general solution.</div><div><br></div><div>dd</div><div><br><div><div>On Jun 25, 2012, at 7:27 PM, Daniel Alejandro Benavides D. wrote:</div><br class="yiv395665588Apple-interchange-newline"><blockquote type="cite"><span class="yiv395665588Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit;" valign="top">Hi all:<br>I as I understood, thought you don't want to talk about compatible W 95 / NT distro of Modula-3.<br>But in turn you want to keep compatibility with older file name encodes.<br>I don't care that but if its useful anyway (because newer windows don't care at all either) I don't know know your problem was because it won't be able to be solved!<br>Thanks in
 advance</td></tr></tbody></table></span></blockquote></div><br></div></div></div></blockquote></td></tr></tbody></table></blockquote></div><br></div></div></div></blockquote></td></tr></tbody></table></blockquote></div><br></div></div></body></html>