From: Michael C. <mic...@ne...> - 2005-08-12 11:57:45
|
Hi List, I have previously submitted a patch to address this issue (Apr 7 titles [fuse-devel] integer overflow with python bindings). Can this please be committed upstream? It is difficult for my project to have to maintain a patch against fuse for fixing fuse bugs. I appreciate the work you all put into this great project. Thanks heaps... Michael. On Thu, Aug 11, 2005 at 03:20:36PM -0400, Peter Wagner wrote: > Hey, > I couldn't get the fuse python bindings to allow me to make files > over 2GB in size. Fuse itself seemed to be fine so I hacked the python > module to behave for me. > Just some casting fixes to make this work. Change a few ints to > longs and you're in business. > > Patch attached. > > Pete > --- /home/pwagner/fuse-cvs/python/_fusemodule.c 2005-04-07 14:25:07.000000000 -0400 > +++ /root/python/_fusemodule.c 2005-08-11 15:11:05.000000000 -0400 > @@ -47,6 +47,8 @@ > Py_DECREF(v); \ > OUT: \ > return ret; > + > + > //@-node:EPILOGUE > //@+node:getattr_func > > @@ -80,7 +82,7 @@ > st->st_nlink= PyInt_AsLong(PySequence_GetItem(v, 3)); > st->st_uid = PyInt_AsLong(PySequence_GetItem(v, 4)); > st->st_gid = PyInt_AsLong(PySequence_GetItem(v, 5)); > -st->st_size = PyInt_AsLong(PySequence_GetItem(v, 6)); > +st->st_size = PyLong_AsLongLong(PySequence_GetItem(v, 6)); > st->st_atime= PyInt_AsLong(PySequence_GetItem(v, 7)); > st->st_mtime= PyInt_AsLong(PySequence_GetItem(v, 8)); > st->st_ctime= PyInt_AsLong(PySequence_GetItem(v, 9)); > @@ -257,9 +259,9 @@ > //@-node:chown_func > //@+node:truncate_func > > -static int truncate_func(const char *path, off_t o) > +static int truncate_func(const char *path, off64_t o) > { > - PyObject *v = PyObject_CallFunction(truncate_cb, "si", path, o); > + PyObject *v = PyObject_CallFunction(truncate_cb, "sK", path, o); > PROLOGUE > EPILOGUE > } > @@ -277,9 +279,9 @@ > //@-node:utime_func > //@+node:read_func > > -static int read_func(const char *path, char *buf, size_t s, off_t off) > +static int read_func(const char *path, char *buf, size_t s, off64_t off) > { > - PyObject *v = PyObject_CallFunction(read_cb, "sii", path, s, off); > + PyObject *v = PyObject_CallFunction(read_cb, "siK", path, s, off); > PROLOGUE > if(PyString_Check(v)) { > if(PyString_Size(v) > s) goto OUT_DECREF; > @@ -291,9 +293,9 @@ > //@-node:read_func > //@+node:write_func > > -static int write_func(const char *path, const char *buf, size_t t, off_t off) > +static int write_func(const char *path, const char *buf, size_t t, off64_t off) > { > - PyObject *v = PyObject_CallFunction(write_cb,"ss#i", path, buf, t, off); > + PyObject *v = PyObject_CallFunction(write_cb,"ss#K", path, buf, t, off); > PROLOGUE > EPILOGUE > } |