From 0e41148c4bdb3b1af157a9bf55df4bc27474f1e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Walter=20D=C3=B6rwald?= <walter@livinglogic.de>
Date: Wed, 6 Jun 2007 16:55:38 +0000
Subject: Use O_APPEND flag instead of seeking, when append mode is specified.

---
 Modules/_fileio.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/Modules/_fileio.c b/Modules/_fileio.c
index 364748a..660402f 100644
--- a/Modules/_fileio.c
+++ b/Modules/_fileio.c
@@ -230,6 +230,11 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
 	flags |= O_BINARY;
 #endif
 
+#ifdef O_APPEND
+	if (append)
+		flags |= O_APPEND;
+#endif
+
 	if (fd >= 0) {
 		self->fd = fd;
 	}
@@ -242,18 +247,6 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
 			PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
 			goto error;
 		}
-		if (append) {
-			int result;
-			Py_BEGIN_ALLOW_THREADS
-			errno = 0;
-			result = lseek(self->fd, 0, SEEK_END);
-			Py_END_ALLOW_THREADS
-			if (result < 0) {
-				close(self->fd);
-				PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
-				goto error;
-			}
-		}
 	}
 
 	goto done;
-- 
cgit v0.12

