OSDN Git Service

lib-fs-resize: remove unused probe-related code
[android-x86/external-parted.git] / libparted / libparted.c
1 /*
2     libparted - a library for manipulating disk partitions
3     Copyright (C) 1999-2001, 2007-2012 Free Software Foundation, Inc.
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 3 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #include <config.h>
20 #include "configmake.h"
21
22 #include <parted/parted.h>
23 #include <parted/debug.h>
24
25 #include "architecture.h"
26
27 #if ENABLE_NLS
28 #  include <locale.h>
29 #  include <libintl.h>
30 #  define _(String) dgettext (PACKAGE, String)
31 #else
32 #  define _(String) (String)
33 #endif /* ENABLE_NLS */
34
35 /* ped_malloc() debugging.  Stick the address and size of memory blocks that
36  * weren't free()d in here, and an exception will be thrown when it is
37  * allocated.  That way, you can find out what, exactly, the allocated thing
38  * is, and where it is created.
39  */
40 typedef struct
41 {
42     void*       pointer;
43     size_t      size;
44 } pointer_size_type;
45
46 /* IMHO, none of the DEBUG-related code below is useful, and the
47    ped_malloc memset code is actually quite harmful: it masked at
48    least two nasty bugs that were fixed in June of 2007.  */
49 #undef DEBUG
50 #ifdef DEBUG
51 static pointer_size_type dodgy_malloc_list[] = {
52  {0,            0},
53  {0,            0},
54  {0,            0},
55  {0,            0},
56  {0,            0},
57  {0,            0},
58  {0,            0},
59  {0,            0},
60  {0,            0},
61  {0,            0}
62 };
63
64 static int      dodgy_memory_active[100];
65 #endif /* DEBUG */
66
67 extern void ped_disk_aix_init ();
68 extern void ped_disk_bsd_init ();
69 extern void ped_disk_dvh_init ();
70 extern void ped_disk_gpt_init ();
71 extern void ped_disk_loop_init ();
72 extern void ped_disk_mac_init ();
73 extern void ped_disk_msdos_init ();
74 extern void ped_disk_pc98_init ();
75 extern void ped_disk_sun_init ();
76 extern void ped_disk_amiga_init ();
77 extern void ped_disk_dasd_init ();
78
79 static void
80 init_disk_types ()
81 {
82         ped_disk_loop_init ();  /* must be last in the probe list */
83
84 #if defined __s390__ || defined __s390x__
85         ped_disk_dasd_init();
86 #endif
87
88         ped_disk_sun_init ();
89 #ifdef ENABLE_PC98
90         ped_disk_pc98_init ();
91 #endif
92         ped_disk_msdos_init ();
93         ped_disk_mac_init ();
94         ped_disk_gpt_init ();
95         ped_disk_dvh_init ();
96         ped_disk_bsd_init ();
97         ped_disk_amiga_init ();
98         ped_disk_aix_init ();
99 }
100
101 extern void ped_file_system_amiga_init (void);
102 extern void ped_file_system_xfs_init (void);
103 extern void ped_file_system_ufs_init (void);
104 extern void ped_file_system_reiserfs_init (void);
105 extern void ped_file_system_ntfs_init (void);
106 extern void ped_file_system_linux_swap_init (void);
107 extern void ped_file_system_jfs_init (void);
108 extern void ped_file_system_hfs_init (void);
109 extern void ped_file_system_fat_init (void);
110 extern void ped_file_system_ext2_init (void);
111 extern void ped_file_system_nilfs2_init (void);
112
113 static void
114 init_file_system_types ()
115 {
116         ped_file_system_amiga_init ();
117         ped_file_system_xfs_init ();
118         ped_file_system_ufs_init ();
119         ped_file_system_reiserfs_init ();
120         ped_file_system_ntfs_init ();
121         ped_file_system_linux_swap_init ();
122         ped_file_system_jfs_init ();
123         ped_file_system_hfs_init ();
124         ped_file_system_fat_init ();
125         ped_file_system_ext2_init ();
126         ped_file_system_nilfs2_init ();
127 }
128
129 extern void ped_disk_aix_done ();
130 extern void ped_disk_bsd_done ();
131 extern void ped_disk_dvh_done ();
132 extern void ped_disk_gpt_done ();
133 extern void ped_disk_loop_done ();
134 extern void ped_disk_mac_done ();
135 extern void ped_disk_msdos_done ();
136 extern void ped_disk_pc98_done ();
137 extern void ped_disk_sun_done ();
138 extern void ped_disk_amiga_done ();
139 extern void ped_disk_dasd_done ();
140
141 static void
142 done_disk_types ()
143 {
144 #if defined __s390__ || __s390x__
145         ped_disk_dasd_done ();
146 #endif
147         ped_disk_sun_done ();
148 #ifdef ENABLE_PC98
149         ped_disk_pc98_done ();
150 #endif
151         ped_disk_msdos_done ();
152         ped_disk_mac_done ();
153         ped_disk_loop_done ();
154         ped_disk_gpt_done ();
155         ped_disk_dvh_done ();
156         ped_disk_bsd_done ();
157         ped_disk_amiga_done ();
158         ped_disk_aix_done ();
159 }
160
161 static void _init() __attribute__ ((constructor));
162
163 static void
164 _init()
165 {
166 #ifdef ENABLE_NLS
167         bindtextdomain (PACKAGE, LOCALEDIR);
168 #endif
169
170         init_disk_types ();
171         init_file_system_types ();
172         ped_set_architecture ();
173 #ifdef DEBUG
174         memset (dodgy_memory_active, 0, sizeof (dodgy_memory_active));
175 #endif
176 }
177
178 extern void ped_file_system_nilfs2_done (void);
179 extern void ped_file_system_ext2_done (void);
180 extern void ped_file_system_fat_done (void);
181 extern void ped_file_system_hfs_done (void);
182 extern void ped_file_system_jfs_done (void);
183 extern void ped_file_system_linux_swap_done (void);
184 extern void ped_file_system_ntfs_done (void);
185 extern void ped_file_system_reiserfs_done (void);
186 extern void ped_file_system_ufs_done (void);
187 extern void ped_file_system_xfs_done (void);
188 extern void ped_file_system_amiga_done (void);
189
190 static void
191 done_file_system_types ()
192 {
193         ped_file_system_nilfs2_done ();
194         ped_file_system_ext2_done ();
195         ped_file_system_fat_done ();
196         ped_file_system_hfs_done ();
197         ped_file_system_jfs_done ();
198         ped_file_system_linux_swap_done ();
199         ped_file_system_ntfs_done ();
200         ped_file_system_reiserfs_done ();
201         ped_file_system_ufs_done ();
202         ped_file_system_xfs_done ();
203         ped_file_system_amiga_done ();
204 }
205
206 static void _done() __attribute__ ((destructor));
207
208 static void
209 _done()
210 {
211         ped_device_free_all ();
212         done_disk_types ();
213         done_file_system_types ();
214 }
215
216 const char*
217 ped_get_version ()
218 {
219         return VERSION;
220 }
221
222 void*
223 ped_malloc (size_t size)
224 {
225         void*           mem;
226
227         mem = (void*) malloc (size);
228         if (!mem) {
229                 ped_exception_throw (PED_EXCEPTION_FATAL, PED_EXCEPTION_CANCEL,
230                                      _("Out of memory."));
231                 return NULL;
232         }
233
234         return mem;
235 }
236
237
238 void* ped_calloc (size_t size)
239 {
240         void* buf = ped_malloc (size);
241
242         memset (buf, 0, size);
243
244         return buf;
245 }