chiark / gitweb /
libgpg-error: workaround no stdout atexit with constructor prior to N (#1017)
[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) {