The <package>.list file was prepending "./" to the files, fixed that.
Also fixed a very silly error by me when running postinst (remember to use the variable BEFORE its freed)
diff --git a/dpkg.c b/dpkg.c
index a97a5a2..6d3b06a 100644
--- a/dpkg.c
+++ b/dpkg.c
@@ -1098,18 +1098,19 @@
 {
 	struct stat path_stat;
 	char *script_path;
+	int result;
 
 	script_path = xmalloc(strlen(package_name) + strlen(script_type) + 21);
 	sprintf(script_path, "/var/lib/dpkg/info/%s.%s", package_name, script_type);
 
 	/* If the file doesnt exist is isnt a fatal */
 	if (lstat(script_path, &path_stat) < 0) {
-		free(script_path);
-		return(EXIT_SUCCESS);
+		result = EXIT_SUCCESS;
 	} else {
-		free(script_path);
-		return(system(script_path));
+		result = system(script_path);
 	}
+	free(script_path);
+	return(result);
 }
 
 void all_control_list(char **remove_files, const char *package_name)
@@ -1298,7 +1299,7 @@
 	/* Create the list file */
 	strcat(info_prefix, "list");
 	out_stream = xfopen(info_prefix, "w");			
-	deb_extract(deb_file->filename, out_stream, (extract_quiet | extract_data_tar_gz | extract_list), NULL, NULL);
+	deb_extract(deb_file->filename, out_stream, (extract_quiet | extract_data_tar_gz | extract_list), "/", NULL);
 	fclose(out_stream);
 
 	/* change status */