[M3devel] paths..

Olaf Wagner wagner at elegosoft.com
Sat Feb 23 13:39:09 CET 2008


Jay,

I'm not really happy with NT386GNU using PathnameWin32.m3.
In my opininion it should just use the POSIX code, whatever problems
people will have with their installation roots. (These can be avoided
by using the /cygdrive/... equivalents.)
Why don't we just assume that by deafult CM3 is installed in
/usr/local/cm3 as for all other targets (except NT386, of course)?

One thing that immediately comes to mind is that all paths output
by CM3 programs will contain \ instead of / then and thus be
unusable for simple copy-and-paste, as \ is the escape character
in all POSIX command line tools. So this seems kind of incompatible
to me.

Olaf

Quoting Jay <jayk123 at hotmail.com>:

> I could be wrong about many things here:
>
> Cygwin fopen and I presume open accepts all of:
>   c:\foo, c:/foo, /foo, \foo
>
> /foo and \foo probably have a different meaning between Cygwin and Win32.
> In Win32, /foo and \foo are, well, \foo, on the current drive.
> In Cygwin, /foo is probably /foo at the Cygwin root.
> I'd kind of like to be wrong here, about \foo having different   
> meanings between them, since it a common form for me.
>
> Cygwin does not accept c:foo.
> In Win32 c:foo is foo in the current working directory of the C: drive.
> I don't think c:foo is used often, but it does have a meaning.
>
> Now, as well, cm3 has its own Path module, M3Path, but I realized   
> tonight it also uses libm3's Pathname module a fair amount. In   
> particular, I was having errors "shipping".
>
> This throws a big monkey wrench into where I was going.
> So now, after a bunch of going back and forth on various uncommited   
> changes, I have now switched (and commited) NT386GNU to use   
> PathnameWin32.m3. To some extent, this strikes at the core of "what   
> is Posix" and "ruins" NT386GNU's differentiation from "NT386MINGNU".  
>  However, remember that Cygwin does appear to accept Win32 paths.  
> So,  again, if Cygwin accepts Win32 paths, is it Posix? (Given that  
> Win32  accepts /foo, is it Posix?) As well, this target still uses   
> cygwin1.dll for its all its odd behaviors. It still uses   
> open/read/write (again, remember that msvcrt.dll DOES expose these   
> SAME functions..I still contend that Win32 is close enough to Posix   
> to satisfy almost everyone..and then X Windows can be dealt with   
> separately maybe, or Trestle/Win32 fixed).
>
> I have some more testing to do but I think this switch will fly, and  
>  various other options can go away.
> And I can undo the small amount I had commited.
> I think I'll just send my m3path.m3 diff around and then delete it.
>
> I ended up with a set based approach where host and target have a   
> set of dir separaters, volume separaters, and separators (union of   
> previous two). These are TINY sets, containing a maximum of three   
> characters each, and '/' is always a member of two of them. So a set  
>  is kind of overkill. But it works out pretty ok.
>
>  - Jay
> _________________________________________________________________
> Need to know the score, the latest news, or you need your   
> Hotmail®-get your "fix".
> http://www.msnmobilefix.com/Default.aspx



-- 
Olaf Wagner -- elego Software Solutions GmbH
                Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
    http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194




More information about the M3devel mailing list