| 1 | diff -u -r ../busybox-1.22.1/archival/dpkg.c ./archival/dpkg.c |
| 2 | --- ../busybox-1.22.1/archival/dpkg.c 2014-01-09 19:15:44.000000000 +0100 |
| 3 | +++ ./archival/dpkg.c 2014-01-20 08:52:03.000000000 +0100 |
| 4 | @@ -813,8 +813,8 @@ |
| 5 | /* This could do with a cleanup */ |
| 6 | static void write_status_file(deb_file_t **deb_file) |
| 7 | { |
| 8 | - FILE *old_status_file = xfopen_for_read("/var/lib/dpkg/status"); |
| 9 | - FILE *new_status_file = xfopen_for_write("/var/lib/dpkg/status.udeb"); |
| 10 | + FILE *old_status_file = xfopen_for_read("@TERMUX_PREFIX@/var/lib/dpkg/status"); |
| 11 | + FILE *new_status_file = xfopen_for_write("@TERMUX_PREFIX@/var/lib/dpkg/status.udeb"); |
| 12 | char *package_name; |
| 13 | char *status_from_file; |
| 14 | char *control_buffer = NULL; |
| 15 | @@ -942,7 +942,7 @@ |
| 16 | fclose(new_status_file); |
| 17 | |
| 18 | /* Create a separate backfile to dpkg */ |
| 19 | - if (rename("/var/lib/dpkg/status", "/var/lib/dpkg/status.udeb.bak") == -1) { |
| 20 | + if (rename("@TERMUX_PREFIX@/var/lib/dpkg/status", "@TERMUX_PREFIX@/var/lib/dpkg/status.udeb.bak") == -1) { |
| 21 | if (errno != ENOENT) |
| 22 | bb_error_msg_and_die("can't create backup status file"); |
| 23 | /* Its ok if renaming the status file fails because status |
| 24 | @@ -950,7 +950,7 @@ |
| 25 | bb_error_msg("no status file found, creating new one"); |
| 26 | } |
| 27 | |
| 28 | - xrename("/var/lib/dpkg/status.udeb", "/var/lib/dpkg/status"); |
| 29 | + xrename("@TERMUX_PREFIX@/var/lib/dpkg/status.udeb", "@TERMUX_PREFIX@/var/lib/dpkg/status"); |
| 30 | } |
| 31 | |
| 32 | /* This function returns TRUE if the given package can satisfy a |
| 33 | @@ -1242,7 +1242,7 @@ |
| 34 | char *script_path; |
| 35 | int result; |
| 36 | |
| 37 | - script_path = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, script_type); |
| 38 | + script_path = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, script_type); |
| 39 | |
| 40 | /* If the file doesnt exist is isnt fatal */ |
| 41 | result = access(script_path, F_OK) ? EXIT_SUCCESS : system(script_path); |
| 42 | @@ -1295,7 +1295,7 @@ |
| 43 | /* Create a list of all /var/lib/dpkg/info/<package> files */ |
| 44 | remove_files = xzalloc(sizeof(all_control_files) + sizeof(char*)); |
| 45 | while (i < ARRAY_SIZE(all_control_files)) { |
| 46 | - remove_files[i] = xasprintf("/var/lib/dpkg/info/%s.%s", |
| 47 | + remove_files[i] = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", |
| 48 | package_name, all_control_files[i]); |
| 49 | i++; |
| 50 | } |
| 51 | @@ -1366,8 +1366,8 @@ |
| 52 | const int package_name_length = strlen(package_name); |
| 53 | char **remove_files; |
| 54 | char **exclude_files; |
| 55 | - char list_name[package_name_length + 25]; |
| 56 | - char conffile_name[package_name_length + 30]; |
| 57 | + char list_name[package_name_length + 100]; |
| 58 | + char conffile_name[package_name_length + 100]; |
| 59 | |
| 60 | if (noisy) |
| 61 | printf("Removing %s (%s)...\n", package_name, package_version); |
| 62 | @@ -1376,10 +1376,10 @@ |
| 63 | run_package_script_or_die(package_name, "prerm"); |
| 64 | |
| 65 | /* Create a list of files to remove, and a separate list of those to keep */ |
| 66 | - sprintf(list_name, "/var/lib/dpkg/info/%s.%s", package_name, "list"); |
| 67 | + sprintf(list_name, "@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "list"); |
| 68 | remove_files = create_list(list_name); |
| 69 | |
| 70 | - sprintf(conffile_name, "/var/lib/dpkg/info/%s.%s", package_name, "conffiles"); |
| 71 | + sprintf(conffile_name, "@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "conffiles"); |
| 72 | exclude_files = create_list(conffile_name); |
| 73 | |
| 74 | /* Some directories can't be removed straight away, so do multiple passes */ |
| 75 | @@ -1391,7 +1391,7 @@ |
| 76 | /* Create a list of files in /var/lib/dpkg/info/<package>.* to keep */ |
| 77 | exclude_files = xzalloc(sizeof(exclude_files[0]) * 3); |
| 78 | exclude_files[0] = xstrdup(conffile_name); |
| 79 | - exclude_files[1] = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, "postrm"); |
| 80 | + exclude_files[1] = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "postrm"); |
| 81 | |
| 82 | /* Create a list of all /var/lib/dpkg/info/<package> files */ |
| 83 | remove_files = all_control_list(package_name); |
| 84 | @@ -1416,7 +1416,7 @@ |
| 85 | const unsigned status_num = search_status_hashtable(package_name); |
| 86 | char **remove_files; |
| 87 | char **exclude_files; |
| 88 | - char list_name[strlen(package_name) + 25]; |
| 89 | + char list_name[strlen(package_name) + 100]; |
| 90 | |
| 91 | printf("Purging %s (%s)...\n", package_name, package_version); |
| 92 | |
| 93 | @@ -1424,7 +1424,7 @@ |
| 94 | run_package_script_or_die(package_name, "prerm"); |
| 95 | |
| 96 | /* Create a list of files to remove */ |
| 97 | - sprintf(list_name, "/var/lib/dpkg/info/%s.%s", package_name, "list"); |
| 98 | + sprintf(list_name, "@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "list"); |
| 99 | remove_files = create_list(list_name); |
| 100 | |
| 101 | /* Some directories cant be removed straight away, so do multiple passes */ |
| 102 | @@ -1437,7 +1437,7 @@ |
| 103 | |
| 104 | /* Delete all of them except the postrm script */ |
| 105 | exclude_files = xzalloc(sizeof(exclude_files[0]) * 2); |
| 106 | - exclude_files[0] = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, "postrm"); |
| 107 | + exclude_files[0] = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "postrm"); |
| 108 | remove_file_array(remove_files, exclude_files); |
| 109 | free_array(exclude_files); |
| 110 | |
| 111 | @@ -1528,7 +1528,7 @@ |
| 112 | FILE *fp; |
| 113 | char *filename, *line; |
| 114 | |
| 115 | - filename = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, control_name); |
| 116 | + filename = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, control_name); |
| 117 | fp = fopen_for_read(filename); |
| 118 | free(filename); |
| 119 | if (fp != NULL) { |
| 120 | @@ -1648,7 +1648,7 @@ |
| 121 | } |
| 122 | |
| 123 | /* Extract control.tar.gz to /var/lib/dpkg/info/<package>.filename */ |
| 124 | - info_prefix = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, ""); |
| 125 | + info_prefix = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, ""); |
| 126 | archive_handle = init_archive_deb_ar(deb_file->filename); |
| 127 | init_archive_deb_control(archive_handle); |
| 128 | |
| 129 | @@ -1688,7 +1688,7 @@ |
| 130 | unpack_ar_archive(archive_handle); |
| 131 | |
| 132 | /* Create the list file */ |
| 133 | - list_filename = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, "list"); |
| 134 | + list_filename = xasprintf("@TERMUX_PREFIX@/var/lib/dpkg/info/%s.%s", package_name, "list"); |
| 135 | out_stream = xfopen_for_write(list_filename); |
| 136 | archive_handle->dpkg__sub_archive->passed = llist_rev(archive_handle->dpkg__sub_archive->passed); |
| 137 | while (archive_handle->dpkg__sub_archive->passed) { |
| 138 | @@ -1782,7 +1782,7 @@ |
| 139 | } |
| 140 | |
| 141 | /* puts("(Reading database ... xxxxx files and directories installed.)"); */ |
| 142 | - index_status_file("/var/lib/dpkg/status"); |
| 143 | + index_status_file("@TERMUX_PREFIX@/var/lib/dpkg/status"); |
| 144 | |
| 145 | /* if the list action was given print the installed packages and exit */ |
| 146 | if (opt & OPT_list_installed) { |