diff --git a/lib/zip_replace_filep.c b/lib/zip_replace_filep.c
index 4a22616..d0bbb21 100644
--- a/lib/zip_replace_filep.c
+++ b/lib/zip_replace_filep.c
@@ -1,5 +1,5 @@
 /*
-  $NiH: zip_replace_filep.c,v 1.6 2003/10/01 09:51:01 dillo Exp $
+  $NiH: zip_replace_filep.c,v 1.7.4.1 2004/03/20 09:54:08 dillo Exp $
 
   zip_replace_filep.c -- replace file from FILE*
   Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
@@ -42,27 +42,35 @@
 
 struct read_file {
     FILE *f;
-    int off, len;
+    off_t off, len;
 };
 
-static int read_file(void *state, void *data, int len, enum zip_cmd cmd);
+static int read_file(void *state, void *data, size_t len, enum zip_cmd cmd);
 
 
 
 int
-zip_replace_filep(struct zip *zf, int idx, const char *name,
-		  struct zip_meta *meta,
-		  FILE *file, int start, int len)
+zip_replace_filep(struct zip *zf, int idx,
+		  FILE *file, off_t start, off_t len)
 {
-    struct read_file *f;
-
-    if (idx < -1 || idx >= zf->nentry) {
-	zip_err = ZERR_INVAL;
+    if (idx < 0 || idx >= zf->nentry) {
+	_zip_error_set(&zf->error, ZERR_INVAL, 0);
 	return -1;
     }
     
+    return _zip_replace_filep(zf, idx, NULL, file, start, len);
+}
+
+
+
+int
+_zip_replace_filep(struct zip *zf, int idx, const char *name,
+		  FILE *file, off_t start, off_t len)
+{
+    struct read_file *f;
+
     if ((f=(struct read_file *)malloc(sizeof(struct read_file))) == NULL) {
-	zip_err = ZERR_MEMORY;
+	_zip_error_set(&zf->error, ZERR_MEMORY, 0);
 	return -1;
     }
 
@@ -70,13 +78,13 @@
     f->off = start;
     f->len = (len ? len : -1);
     
-    return zip_replace(zf, idx, name, meta, read_file, f, 0);
+    return _zip_replace(zf, idx, name, read_file, f, 0);
 }
 
 
 
 static int
-read_file(void *state, void *data, int len, enum zip_cmd cmd)
+read_file(void *state, void *data, size_t len, enum zip_cmd cmd)
 {
     struct read_file *z;
     char *buf;
@@ -87,8 +95,8 @@
 
     switch (cmd) {
     case ZIP_CMD_INIT:
-	if (fseek(z->f, z->off, SEEK_SET) < 0) {
-	    zip_err = ZERR_SEEK;
+	if (fseeko(z->f, z->off, SEEK_SET) < 0) {
+	    /* XXX: zip_err = ZERR_SEEK; */
 	    return -1;
 	}
 	return 0;
@@ -100,7 +108,7 @@
 	    n = len;
 	
 	if ((i=fread(buf, 1, n, z->f)) < 0) {
-	    zip_err = ZERR_READ;
+	    /* XXX: zip_err = ZERR_READ; */
 	    return -1;
 	}
 
@@ -109,15 +117,16 @@
 
 	return i;
 	
-    case ZIP_CMD_META:
-	return 0;
-
     case ZIP_CMD_CLOSE:
 	if (z->f) {
 	    fclose(z->f);
 	    z->f = NULL;
 	}
+	free(z);
 	return 0;
+
+    default:
+	;
     }
 
     return -1;
