Initial push
[termux-packages] / packages / busybox / dpkg.patch
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) {