Le Tuesday 13 January 2009 22:47:52 Victor Stinner, vous avez écrit : > Le Tuesday 13 January 2009 21:33:28 Martin v. Löwis, vous avez écrit : > > I would do this through a converter function (O&), but yes, > > making it private to the io library sounds about right. Who > > else would benefit from it? > > On Linux, mmap() prototype is (...)
A more complete answer... Current usage of off_t types in Python: (1) mmap.mmap(): [use Py_ssize_t] Use "Py_ssize_t i = PyNumber_AsSsize_t(o, PyExc_OverflowError)". (2) posix.lseek(), posix.ftruncate(), fcnt.lockf(): [off_t, struct flock for fcntl.lockf()] Use PyInt_AsLong(posobj), or "PyLong_Check(posobj)? PyLong_AsLongLong(posobj) : PyInt_AsLong(posobj)" if HAVE_LARGEFILE_SUPPORT. (3) posix.stat(): [struct win32_stat/struct stat] use PyInt_FromLong(st->st_size), or PyLong_FromLongLong((PY_LONG_LONG)st->st_size) if HAVE_LARGEFILE_SUPPORT --- Using >>find /usr/include -name "*.h"|xargs grep -H off_t<< I found: - file operations: * lseek(), truncate(), fseeko(), ftello() * file size in the *stat() structure * (fcntl) lockf(), fadvice(), fallocate() * pread(), pwrite() * async I/O like aio_read() - dirent structure used by readir() - sendfile() - mmap() Some libraries define their own offset type: - [gzip] z_off_t used by gzseek(), gztell() defined as a long - [mysql] my_off_t is unsigned long, or ulonglong size if sizeof(off_t) > 4, os_off_t is off_t - etc. -- Victor Stinner aka haypo http://www.haypocalc.com/blog/ _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com