Added fsync() and fdatasync(). Patches by Scott Cotton. Requires

HAVE_* macros set by configure script.
This commit is contained in:
Guido van Rossum 1999-01-08 21:05:37 +00:00
parent 302331a3b6
commit 21142a09f3
1 changed files with 57 additions and 0 deletions

View File

@ -400,6 +400,25 @@ static PyObject * os2_error(int code)
/* POSIX generic methods */
static PyObject *
posix_int(args, func)
PyObject *args;
int (*func) Py_FPROTO((int));
{
int fd;
int res;
if (!PyArg_Parse(args, "i", &fd))
return NULL;
Py_BEGIN_ALLOW_THREADS
res = (*func)(fd);
Py_END_ALLOW_THREADS
if (res < 0)
return posix_error();
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
posix_1str(args, func)
PyObject *args;
@ -590,6 +609,38 @@ posix_chmod(self, args)
}
#ifdef HAVE_FSYNC
static char posix_fsync__doc__[] =
"fsync(fildes) -> None\n\
force write of file with filedescriptor to disk.";
static PyObject *
posix_fsync(self, args)
PyObject *self;
PyObject *args;
{
return posix_int(args, fsync);
}
#endif /* HAVE_FSYNC */
#ifdef HAVE_FDATASYNC
static char posix_fdatasync__doc__[] =
"fdatasync(fildes) -> None\n\
force write of file with filedescriptor to disk.\n\
does not force update of metadata.";
static PyObject *
posix_fdatasync(self, args)
PyObject *self;
PyObject *args;
{
return posix_int(args, fdatasync);
}
#endif /* HAVE_FDATASYNC */
#ifdef HAVE_CHOWN
static char posix_chown__doc__[] =
"chown(path, uid, gid) -> None\n\
@ -2935,6 +2986,12 @@ static PyMethodDef posix_methods[] = {
#ifdef HAVE_STRERROR
{"strerror", posix_strerror, 1, posix_strerror__doc__},
#endif
#ifdef HAVE_FSYNC
{"fsync", posix_fsync, 0, posix_fsync__doc__},
#endif
#ifdef HAVE_FDATASYNC
{"fdatasync", posix_fdatasync, 0, posix_fdatasync__doc__},
#endif
#ifdef HAVE_SYS_WAIT_H
#ifdef WIFSTOPPED
{"WIFSTOPPED", posix_WIFSTOPPED, 0, posix_WIFSTOPPED__doc__},