diff -u -r ../busybox-1.22.1/archival/dpkg.c ./archival/dpkg.c --- ../busybox-1.22.1/archival/dpkg.c 2014-01-09 19:15:44.000000000 +0100 +++ ./archival/dpkg.c 2014-01-20 08:52:03.000000000 +0100 @@ -813,8 +813,8 @@ /* This could do with a cleanup */ static void write_status_file(deb_file_t **deb_file) { - FILE *old_status_file = xfopen_for_read("/var/lib/dpkg/status"); - FILE *new_status_file = xfopen_for_write("/var/lib/dpkg/status.udeb"); + FILE *old_status_file = xfopen_for_read("@TERMUX_PREFIX@/var/lib/dpkg/status"); + FILE *new_status_file = xfopen_for_write("@TERMUX_PREFIX@/var/lib/dpkg/status.udeb"); char *package_name; char *status_from_file; char *control_buffer = NULL; @@ -942,7 +942,7 @@ fclose(new_status_file); /* Create a separate backfile to dpkg */ - if (rename("/var/lib/dpkg/status", "/var/lib/dpkg/status.udeb.bak") == -1) { + if (rename("@TERMUX_PREFIX@/var/lib/dpkg/status", "@TERMUX_PREFIX@/var/lib/dpkg/status.udeb.bak") == -1) { if (errno != ENOENT) bb_error_msg_and_die("can't create backup status file"); /* Its ok if renaming the status file fails because status @@ -950,7 +950,7 @@ bb_error_msg("no status file found, creating new one"); } - xrename("/var/lib/dpkg/status.udeb", "/var/lib/dpkg/status"); + xrename("@TERMUX_PREFIX@/var/lib/dpkg/status.udeb", "@TERMUX_PREFIX@/var/lib/dpkg/status"); } /* This function returns TRUE if the given package can satisfy a @@ -1242,7 +1242,7 @@ char *script_path; int result; - script_path = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, script_type); + script_path = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, script_type); /* If the file doesnt exist is isnt fatal */ result = access(script_path, F_OK) ? EXIT_SUCCESS : system(script_path); @@ -1295,7 +1295,7 @@ /* Create a list of all /var/lib/dpkg/info/ files */ remove_files = xzalloc(sizeof(all_control_files) + sizeof(char*)); while (i < ARRAY_SIZE(all_control_files)) { - remove_files[i] = xasprintf("/var/lib/dpkg/info/%s.%s", + remove_files[i] = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, all_control_files[i]); i++; } @@ -1366,8 +1366,8 @@ const int package_name_length = strlen(package_name); char **remove_files; char **exclude_files; - char list_name[package_name_length + 25]; - char conffile_name[package_name_length + 30]; + char list_name[package_name_length + 100]; + char conffile_name[package_name_length + 100]; if (noisy) printf("Removing %s (%s)...\n", package_name, package_version); @@ -1376,10 +1376,10 @@ run_package_script_or_die(package_name, "prerm"); /* Create a list of files to remove, and a separate list of those to keep */ - sprintf(list_name, "/var/lib/dpkg/info/%s.%s", package_name, "list"); + sprintf(list_name, "@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "list"); remove_files = create_list(list_name); - sprintf(conffile_name, "/var/lib/dpkg/info/%s.%s", package_name, "conffiles"); + sprintf(conffile_name, "@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "conffiles"); exclude_files = create_list(conffile_name); /* Some directories can't be removed straight away, so do multiple passes */ @@ -1391,7 +1391,7 @@ /* Create a list of files in /var/lib/dpkg/info/.* to keep */ exclude_files = xzalloc(sizeof(exclude_files[0]) * 3); exclude_files[0] = xstrdup(conffile_name); - exclude_files[1] = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, "postrm"); + exclude_files[1] = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "postrm"); /* Create a list of all /var/lib/dpkg/info/ files */ remove_files = all_control_list(package_name); @@ -1416,7 +1416,7 @@ const unsigned status_num = search_status_hashtable(package_name); char **remove_files; char **exclude_files; - char list_name[strlen(package_name) + 25]; + char list_name[strlen(package_name) + 100]; printf("Purging %s (%s)...\n", package_name, package_version); @@ -1424,7 +1424,7 @@ run_package_script_or_die(package_name, "prerm"); /* Create a list of files to remove */ - sprintf(list_name, "/var/lib/dpkg/info/%s.%s", package_name, "list"); + sprintf(list_name, "@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "list"); remove_files = create_list(list_name); /* Some directories cant be removed straight away, so do multiple passes */ @@ -1437,7 +1437,7 @@ /* Delete all of them except the postrm script */ exclude_files = xzalloc(sizeof(exclude_files[0]) * 2); - exclude_files[0] = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, "postrm"); + exclude_files[0] = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "postrm"); remove_file_array(remove_files, exclude_files); free_array(exclude_files); @@ -1528,7 +1528,7 @@ FILE *fp; char *filename, *line; - filename = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, control_name); + filename = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, control_name); fp = fopen_for_read(filename); free(filename); if (fp != NULL) { @@ -1648,7 +1648,7 @@ } /* Extract control.tar.gz to /var/lib/dpkg/info/.filename */ - info_prefix = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, ""); + info_prefix = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, ""); archive_handle = init_archive_deb_ar(deb_file->filename); init_archive_deb_control(archive_handle); @@ -1688,7 +1688,7 @@ unpack_ar_archive(archive_handle); /* Create the list file */ - list_filename = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, "list"); + list_filename = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "list"); out_stream = xfopen_for_write(list_filename); archive_handle->dpkg__sub_archive->passed = llist_rev(archive_handle->dpkg__sub_archive->passed); while (archive_handle->dpkg__sub_archive->passed) { @@ -1782,7 +1782,7 @@ } /* puts("(Reading database ... xxxxx files and directories installed.)"); */ - index_status_file("/var/lib/dpkg/status"); + index_status_file("@TERMUX_PREFIX@/var/lib/dpkg/status"); /* if the list action was given print the installed packages and exit */ if (opt & OPT_list_installed) {