Make a few more tests pass with the new I/O library.
Fix the truncate() semantics -- it should not affect the current position.
Switch wave.py/chunk.py to struct.unpack_from() to support bytes.
Don't use writelines() on binary files (test_fileinput.py).
diff --git a/Lib/test/test_fileinput.py b/Lib/test/test_fileinput.py
index 2b7b255..b7f84c6 100644
--- a/Lib/test/test_fileinput.py
+++ b/Lib/test/test_fileinput.py
@@ -18,7 +18,8 @@
 def writeTmp(i, lines, mode='w'):  # opening in text mode is the default
     name = TESTFN + str(i)
     f = open(name, mode)
-    f.writelines(lines)
+    for line in lines:
+        f.write(line)
     f.close()
     return name
 
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 737dfab..1f6be02 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -93,7 +93,7 @@
         self.assertEqual(f.seek(-1, 2), 13)
         self.assertEqual(f.tell(), 13)
         self.assertEqual(f.truncate(12), 12)
-        self.assertEqual(f.tell(), 12)
+        self.assertEqual(f.tell(), 13)
 
     def read_ops(self, f, buffered=False):
         data = f.read(5)
@@ -135,7 +135,7 @@
         self.assertEqual(f.tell(), self.LARGE + 2)
         self.assertEqual(f.seek(0, 2), self.LARGE + 2)
         self.assertEqual(f.truncate(self.LARGE + 1), self.LARGE + 1)
-        self.assertEqual(f.tell(), self.LARGE + 1)
+        self.assertEqual(f.tell(), self.LARGE + 2)
         self.assertEqual(f.seek(0, 2), self.LARGE + 1)
         self.assertEqual(f.seek(-1, 2), self.LARGE)
         self.assertEqual(f.read(2), b"x")