Ansi Win32 API implementation only moudles in Tango

yidabu yidabu.nospam at gmail.com
Fri Apr 11 15:32:05 PDT 2008


On Fri, 11 Apr 2008 19:57:48 +0800
yidabu <yidabu.nospam at gmail.com> wrote:

> On Fri, 11 Apr 2008 08:44:55 +0900
> Bill Baxter <dnewsgroup at billbaxter.com> wrote:
> 
> > yidabu wrote:
> > > On Thu, 10 Apr 2008 01:23:35 -0800
> > > "Kris" <foo at bar.com> wrote:
> > > 
> > >> "yidabu" wrote in message
> > >>
> > >>> Some Tango modules only have Ansi Win32 API implementation
> > >> If this is true, then please write a ticket for it noting the module(s) in 
> > >> question 
> > > 
> > > I've written a funciton to find the modules:
> > > 
> > > import  dwin.text.pcre.RegExp;
> > > import  tango.text.Util;
> > > import  tango.io.File;
> > > import  tango.util.log.Trace;
> > > 
> > > FileScan findAnsiWinAPI(char[] path)
> > > {
> > >     auto regex = RegExp(r"\b([A-Z][a-z][a-zA-Z]+?)A\b\s*\(");
> > >     auto scan = new FileScan;
> > >     scan
> > >     (
> > >         path,
> > >         (FilePath fp, bool isDir)
> > >         {
> > >             if(isDir) return true;
> > >             if(fp.suffix != ".d") return false;            
> > >             auto content = cast(char[]) (new File(fp)).read;
> > >             if(auto m = regex.execute(content))
> > >             {
> > >                 if(!content.containsPattern(m[1] ~ "W"))
> > >                 {
> > >                     Trace.formatln("{} contains {}, but not contains {}", fp.toString, m[1] ~ "A", m[1] ~ "W");
> > >                     return true;
> > >                 }
> > >             }
> > >             return false;
> > >         }
> > >     );    
> > >         
> > >     return scan;
> > > }
> > > 
> > > void main()
> > > {
> > >     char[] path = r"path\to\tango\tango\";
> > >     auto fs = findAnsiWinAPI(path);
> > >     
> > > } 
> > > 
> > > 
> > > 
> > > the result is :
> > 
> > You, sir (or ma'am), are hard core.  And I applaud that.
> > 
> > > tango/tango/io/FileRoots.d contains GetLogicalDriveStringsA, but not contains GetLogicalDriveStringsW
> > 
> > I don't think it's posssible for a logical drive to have non-ascii
> > characters is it?  So that should be ok.
> > 
> > > tango/tango/io/Console.d contains CreateFileA, but not contains CreateFileW
> > 
> > It only creates a few specially named files, which are always ascii
> > names.  ("CONIN$\0", "CONOUT$\0", "CONOUT$\0")
> > 
> > 
> > > tango/tango/io/MappedBuffer.d contains CreateFileMappingA, but not contains CreateFileMappingW
> > 
> > Passes null in for all string parameters, so shouldn't matter that it's
> > just using the A version.
> > 
> > > tango/tango/core/sync/Semaphore.d contains CreateSemaphoreA, but not contains CreateSemaphoreW
> > > tango/tango/core/sync/Condition.d contains CreateSemaphoreA, but not
> > contains CreateSemaphoreW
> > 
> > Ditto for these.  They use null for the string params.
> > 
> > > tango/tango/sys/Process.d contains CreateProcessA, but not contains CreateProcessW
> > 
> > *THIS* looks like it could be a genuine problem.  So someone more
> > familiar with the code should take a closer look.
> > 
> > > tango/tango/sys/SharedLib.d contains LoadLibraryA, but not contains LoadLibraryW
> > 
> > This looks potentially problematic too.
> > 
> > --bb
> 
> 
> I'll copy your words to Tango ticket :)
> 
 
ticket for this:

http://www.dsource.org/projects/tango/ticket/1035

-- 

yidabu <yidabu.nospam at gmail.com>
DWin http://www.dsource.org/projects/dwin

D语言 中文支持(D Chinese Support)
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/



More information about the Digitalmars-d mailing list