Use O_APPEND flag instead of seeking, when append
mode is specified.
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 @@
 	flags |= O_BINARY;
 #endif
 
+#ifdef O_APPEND
+	if (append)
+		flags |= O_APPEND;
+#endif
+
 	if (fd >= 0) {
 		self->fd = fd;
 	}
@@ -242,18 +247,6 @@
 			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;