[PATCH Preview 1] implement posixfile for Windows using ctypes
Adrian Buehlmann
adrian at cadifra.com
Sat May 14 05:43:42 CDT 2011
On 2011-05-14 01:56, Adrian Buehlmann wrote:
> # HG changeset patch
> # User Adrian Buehlmann <adrian at cadifra.com>
> # Date 1305284858 -7200
> # Node ID e8c58e3dfee0e83e329cbdc809c46bb8729767da
> # Parent 1f46be4689ed5692f041bc5856aa6d11f6f38373
> implement posixfile for Windows using ctypes
>
> obsoletes the C implementation in osutil.c
>
after having replaced the 'is' operators with '==', I got this almost working
on pypy
$ hg diff
diff --git a/mercurial/win32.py b/mercurial/win32.py
--- a/mercurial/win32.py
+++ b/mercurial/win32.py
@@ -420,7 +420,7 @@
else:
flags = _O_TEXT
- if m0 is 'r' and not '+' in mode:
+ if m0 == 'r' and not '+' in mode:
flags |= _O_RDONLY
access = _GENERIC_READ
else:
@@ -429,11 +429,11 @@
flags |= _O_RDWR
access = _GENERIC_READ | _GENERIC_WRITE
- if m0 is 'r':
+ if m0 == 'r':
creation = _OPEN_EXISTING
- elif m0 is 'w':
+ elif m0 == 'w':
creation = _CREATE_ALWAYS
- elif m0 is 'a':
+ elif m0 == 'a':
creation = _OPEN_ALWAYS
flags |= _O_APPEND
else:
$ set PYTHONPATH=C:\Users\adi\hgrepos\hg-crew
$ C:\pypy\pypy.exe
Python 2.7.1 (aefc70438132+, Apr 29 2011, 12:45:42)
[PyPy 1.5.0-alpha0 with MSC v.1600 32 bit] on win32
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``casuality violations and flying''
>>>> from mercurial import win32
>>>> posixfile = win32.posixfile
>>>> f = posixfile('foo.txt', 'w')
C:\Users\adi\hgrepos\hg-crew\mercurial\win32.py:444: RuntimeWarning: C function without declared arguments called
None, creation, _FILE_ATTRIBUTE_NORMAL, None)
C:\Users\adi\hgrepos\hg-crew\mercurial\win32.py:444: RuntimeWarning: C function without declared return type called
None, creation, _FILE_ATTRIBUTE_NORMAL, None)
C:\Users\adi\hgrepos\hg-crew\mercurial\win32.py:451: RuntimeWarning: C function without declared arguments called
fd = _crt._open_osfhandle(fh, flags)
C:\Users\adi\hgrepos\hg-crew\mercurial\win32.py:451: RuntimeWarning: C function without declared return type called
fd = _crt._open_osfhandle(fh, flags)
>>>> f.write('hello pypy')
>>>> f.close()
>>>> print posixfile('foo.txt').read()
hello pypy
Now, I'm puzzled by these warnings...
More information about the Mercurial-devel
mailing list