Ansi Win32 API implementation only moudles in Tango

yidabu yidabu.nospam at gmail.com
Fri Apr 11 04:57:48 PDT 2008


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 :)


-- 

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