Use correct data structure for ZIP_SOURCE_SEEK_WRITE arguments.

Found by Wojciech Michalski.
diff --git a/lib/zip_source_filep.c b/lib/zip_source_filep.c
index 6a613f1..3295fa0 100644
--- a/lib/zip_source_filep.c
+++ b/lib/zip_source_filep.c
@@ -364,16 +364,14 @@
         }
             
         case ZIP_SOURCE_SEEK_WRITE: {
-            zip_int64_t offset, whence;
+            zip_source_args_seek_t *args;
             
-            if (len < sizeof(zip_int64_t)*2) {
-                zip_error_set(&ctx->error, ZIP_ER_INVAL, 0);
+            args = ZIP_SOURCE_GET_ARGS(zip_source_args_seek_t, data, len, &ctx->error);
+            if (args == NULL) {
                 return -1;
             }
-            offset = ((zip_int64_t *)data)[0];
-            whence = ((zip_int64_t *)data)[1];
-
-            if (fseeko(ctx->fout, offset, (int)whence) < 0) {
+            
+            if (fseeko(ctx->fout, args->offset, args->whence) < 0) {
                 zip_error_set(&ctx->error, ZIP_ER_SEEK, errno);
                 return -1;
             }