2 libparted - a library for manipulating disk partitions
3 Copyright (C) 1999-2001, 2007-2012 Free Software Foundation, Inc.
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.
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.
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/>.
20 #include "configmake.h"
22 #include <parted/parted.h>
23 #include <parted/debug.h>
25 #include "architecture.h"
30 # define _(String) dgettext (PACKAGE, String)
32 # define _(String) (String)
33 #endif /* ENABLE_NLS */
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.
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. */
51 static pointer_size_type dodgy_malloc_list[] = {
64 static int dodgy_memory_active[100];
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 ();
82 ped_disk_loop_init (); /* must be last in the probe list */
84 #if defined __s390__ || defined __s390x__
90 ped_disk_pc98_init ();
92 ped_disk_msdos_init ();
97 ped_disk_amiga_init ();
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);
114 init_file_system_types ()
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 ();
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 ();
144 #if defined __s390__ || __s390x__
145 ped_disk_dasd_done ();
147 ped_disk_sun_done ();
149 ped_disk_pc98_done ();
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 ();
161 static void _init() __attribute__ ((constructor));
167 bindtextdomain (PACKAGE, LOCALEDIR);
171 init_file_system_types ();
172 ped_set_architecture ();
174 memset (dodgy_memory_active, 0, sizeof (dodgy_memory_active));
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);
191 done_file_system_types ()
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 ();
206 static void _done() __attribute__ ((destructor));
211 ped_device_free_all ();
213 done_file_system_types ();
223 ped_malloc (size_t size)
227 mem = (void*) malloc (size);
229 ped_exception_throw (PED_EXCEPTION_FATAL, PED_EXCEPTION_CANCEL,
230 _("Out of memory."));
238 void* ped_calloc (size_t size)
240 void* buf = ped_malloc (size);
242 memset (buf, 0, size);