Commit | Line | Data |
---|---|---|
59f0d218 FF |
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) { |