The <package>.list file was prepending "./" to the files, fixed that.
authorGlenn L McGrath <bug1@ihug.co.nz>
Sat, 22 Sep 2001 04:16:55 +0000 (04:16 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Sat, 22 Sep 2001 04:16:55 +0000 (04:16 -0000)
Also fixed a very silly error by me when running postinst (remember to use the variable BEFORE its freed)

archival/dpkg.c
dpkg.c

index a97a5a29fdfde3c19f1daa6d812c7ea060cf3e8c..6d3b06a89a98183b9d3664c441d9d7d5db0034ad 100644 (file)
@@ -1098,18 +1098,19 @@ int run_package_script(const char *package_name, const char *script_type)
 {
        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 @@ void unpack_package(deb_file_t *deb_file)
        /* 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 */
diff --git a/dpkg.c b/dpkg.c
index a97a5a29fdfde3c19f1daa6d812c7ea060cf3e8c..6d3b06a89a98183b9d3664c441d9d7d5db0034ad 100644 (file)
--- a/dpkg.c
+++ b/dpkg.c
@@ -1098,18 +1098,19 @@ int run_package_script(const char *package_name, const char *script_type)
 {
        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 @@ void unpack_package(deb_file_t *deb_file)
        /* 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 */