]> git.ipfire.org Git - thirdparty/util-linux.git/blame - libfdisk/src/libfdisk.h
libfdisk: (gpt) use generic 'created partition' message
[thirdparty/util-linux.git] / libfdisk / src / libfdisk.h
CommitLineData
d56a7c23
KZ
1/*
2 * libfdisk.h - libfdisk API
3 *
4 * Copyright (C) 2012 Karel Zak <kzak@redhat.com>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21#ifndef _LIBFDISK_FDISK_H
22#define _LIBFDISK_FDISK_H
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
ab6ea0e8
KZ
28#include <stdarg.h>
29#include <stdint.h>
30
a5fe1b3f 31struct fdisk_context;
0c5d095e 32struct fdisk_label;
a5fe1b3f 33struct fdisk_parttype;
7845ca8d 34struct fdisk_ask;
0c870c1c 35struct tt;
a5fe1b3f 36
8adbcf0c
KZ
37/*
38 * Supported partition table types (labels)
39 */
40enum fdisk_labeltype {
7e937b77
KZ
41 FDISK_DISKLABEL_DOS = (1 << 1),
42 FDISK_DISKLABEL_SUN = (1 << 2),
43 FDISK_DISKLABEL_SGI = (1 << 3),
22ddf547 44 FDISK_DISKLABEL_BSD = (1 << 4),
7e937b77 45 FDISK_DISKLABEL_GPT = (1 << 5)
8adbcf0c
KZ
46};
47
47b8e7c0 48enum {
7845ca8d 49 FDISK_PARTSTAT_NONE = 0,
47b8e7c0
KZ
50 FDISK_PARTSTAT_USED /* partition used */
51};
52
4114da08
KZ
53enum {
54 FDISK_ASKTYPE_NONE = 0,
55 FDISK_ASKTYPE_NUMBER,
56 FDISK_ASKTYPE_OFFSET,
ab6ea0e8
KZ
57 FDISK_ASKTYPE_WARN,
58 FDISK_ASKTYPE_WARNX,
ccf48af5 59 FDISK_ASKTYPE_INFO,
0c870c1c 60 FDISK_ASKTYPE_YESNO,
34b06299
KZ
61 FDISK_ASKTYPE_TABLE,
62 FDISK_ASKTYPE_STRING
4114da08
KZ
63};
64
dd00d1b2
KZ
65/* extra flags for info massages (see fdisk_sinfo() */
66enum {
67 FDISK_INFO_COLON = 1, /* colorize "foo bar:" prefix in the message */
68 FDISK_INFO_SUCCESS, /* info after successful action */
69};
fb1caca7 70
d56a7c23
KZ
71/* init.c */
72extern void fdisk_init_debug(int mask);
73
f4be9e2b 74/* context.h */
4e0e8253 75extern struct fdisk_context *fdisk_new_context(void);
01b20713
KZ
76extern struct fdisk_context *fdisk_new_nested_context(
77 struct fdisk_context *parent, const char *name);
f4be9e2b
KZ
78extern void fdisk_free_context(struct fdisk_context *cxt);
79
7845ca8d
KZ
80extern int fdisk_context_set_ask(struct fdisk_context *cxt,
81 int (*ask_cb)(struct fdisk_context *, struct fdisk_ask *, void *),
82 void *data);
83
4e0e8253
KZ
84extern int fdisk_context_assign_device(struct fdisk_context *cxt,
85 const char *fname, int readonly);
a57639e1 86extern int fdisk_context_deassign_device(struct fdisk_context *cxt);
4e0e8253 87
0c5d095e
KZ
88extern struct fdisk_label *fdisk_context_get_label(struct fdisk_context *cxt,
89 const char *name);
90
53b422ab
KZ
91extern int fdisk_context_switch_label(struct fdisk_context *cxt,
92 const char *name);
93
cb7ce873 94extern int fdisk_context_set_unit(struct fdisk_context *cxt, const char *str);
b4bfbadd
KZ
95
96#define PLURAL 0
97#define SINGULAR 1
cb7ce873 98extern const char *fdisk_context_get_unit(struct fdisk_context *cxt, int n);
b4bfbadd 99
cb7ce873
KZ
100extern unsigned int fdisk_context_get_units_per_sector(struct fdisk_context *cxt);
101
a5c1b0fa
KZ
102extern int fdisk_context_enable_details(struct fdisk_context *cxt, int enable);
103
a5fe1b3f
KZ
104/* parttype.c */
105extern struct fdisk_parttype *fdisk_get_parttype_from_code(struct fdisk_context *cxt,
106 unsigned int code);
107extern struct fdisk_parttype *fdisk_get_parttype_from_string(struct fdisk_context *cxt,
108 const char *str);
109extern struct fdisk_parttype *fdisk_parse_parttype(struct fdisk_context *cxt, const char *str);
110
111extern struct fdisk_parttype *fdisk_new_unknown_parttype(unsigned int type, const char *typestr);
112extern void fdisk_free_parttype(struct fdisk_parttype *type);
113extern size_t fdisk_get_nparttypes(struct fdisk_context *cxt);
114
950edd1a
KZ
115extern int fdisk_is_parttype_string(struct fdisk_context *cxt);
116
8adbcf0c 117/* label.c */
0b52b94c
KZ
118extern int fdisk_require_geometry(struct fdisk_context *cxt);
119extern int fdisk_missing_geometry(struct fdisk_context *cxt);
120
8adbcf0c
KZ
121extern int fdisk_dev_has_disklabel(struct fdisk_context *cxt);
122
123extern int fdisk_dev_is_disklabel(struct fdisk_context *cxt, enum fdisk_labeltype l);
124#define fdisk_is_disklabel(c, x) fdisk_dev_is_disklabel(c, FDISK_DISKLABEL_ ## x)
125
126extern int fdisk_write_disklabel(struct fdisk_context *cxt);
127extern int fdisk_verify_disklabel(struct fdisk_context *cxt);
171372d3 128extern int fdisk_create_disklabel(struct fdisk_context *cxt, const char *name);
3c5fb475 129extern int fdisk_list_disklabel(struct fdisk_context *cxt);
8adbcf0c 130
21fe3dde 131extern int fdisk_get_disklabel_id(struct fdisk_context *cxt, char **id);
35b1f0a4 132extern int fdisk_set_disklabel_id(struct fdisk_context *cxt);
21fe3dde 133
7845ca8d 134extern int fdisk_add_partition(struct fdisk_context *cxt, struct fdisk_parttype *t);
9ffeb235 135extern int fdisk_delete_partition(struct fdisk_context *cxt, size_t partnum);
8adbcf0c 136
9ffeb235
KZ
137extern struct fdisk_parttype *fdisk_get_partition_type(struct fdisk_context *cxt, size_t partnum);
138extern int fdisk_set_partition_type(struct fdisk_context *cxt, size_t partnum,
171372d3
KZ
139 struct fdisk_parttype *t);
140
2e3b40d3
KZ
141extern void fdisk_label_set_changed(struct fdisk_label *lb, int changed);
142extern int fdisk_label_is_changed(struct fdisk_label *lb);
143
9ffeb235 144extern int fdisk_partition_get_status(struct fdisk_context *cxt, size_t partnum, int *status);
225592d4 145extern int fdisk_partition_is_used(struct fdisk_context *cxt, size_t partnum);
fb1caca7 146extern int fdisk_partition_toggle_flag(struct fdisk_context *cxt, size_t partnum, unsigned long flag);
2e3b40d3 147
c578f9af
KZ
148/* alignment.c */
149extern int fdisk_reset_alignment(struct fdisk_context *cxt);
1653f0b0
KZ
150extern int fdisk_reset_device_properties(struct fdisk_context *cxt);
151
152extern int fdisk_save_user_geometry(struct fdisk_context *cxt,
153 unsigned int cylinders,
154 unsigned int heads,
155 unsigned int sectors);
156
157extern int fdisk_save_user_sector_size(struct fdisk_context *cxt,
158 unsigned int phy,
159 unsigned int log);
6bcd192c
KZ
160
161extern int fdisk_has_user_device_properties(struct fdisk_context *cxt);
162
a57639e1 163extern int fdisk_reread_partition_table(struct fdisk_context *cxt);
852ce62b
KZ
164
165/* dos.c */
166extern int fdisk_dos_enable_compatible(struct fdisk_label *lb, int enable);
167extern int fdisk_dos_is_compatible(struct fdisk_label *lb);
168
4170ae9c
KZ
169/* sun.h */
170extern int fdisk_sun_set_alt_cyl(struct fdisk_context *cxt);
171extern int fdisk_sun_set_xcyl(struct fdisk_context *cxt);
172extern int fdisk_sun_set_ilfact(struct fdisk_context *cxt);
173extern int fdisk_sun_set_rspeed(struct fdisk_context *cxt);
174extern int fdisk_sun_set_pcylcount(struct fdisk_context *cxt);
175
d5b2b8db
KZ
176/* bsd.c */
177extern int fdisk_bsd_edit_disklabel(struct fdisk_context *cxt);
178extern int fdisk_bsd_write_bootstrap(struct fdisk_context *cxt);
179extern int fdisk_bsd_link_partition(struct fdisk_context *cxt);
180
067686d8
KZ
181/* sgi.h */
182#define SGI_FLAG_BOOT 1
183#define SGI_FLAG_SWAP 2
ac84272d
KZ
184extern int fdisk_sgi_set_bootfile(struct fdisk_context *cxt);
185extern int fdisk_sgi_create_info(struct fdisk_context *cxt);
067686d8 186
34b06299
KZ
187/* gpt */
188extern int fdisk_gpt_partition_set_uuid(struct fdisk_context *cxt, size_t i);
1054699c 189extern int fdisk_gpt_partition_set_name(struct fdisk_context *cxt, size_t i);
34b06299 190
50992267
KZ
191/* dos.c */
192extern struct dos_partition *fdisk_dos_get_partition(
193 struct fdisk_context *cxt,
194 size_t i);
195
196extern int fdisk_dos_fix_order(struct fdisk_context *cxt);
197extern int fdisk_dos_move_begin(struct fdisk_context *cxt, int i);
198extern int fdisk_dos_list_extended(struct fdisk_context *cxt);
199
200#define DOS_FLAG_ACTIVE 1
201
7845ca8d 202/* ask.c */
ab6ea0e8
KZ
203#define fdisk_is_ask(a, x) (fdisk_ask_get_type(a) == FDISK_ASKTYPE_ ## x)
204
4114da08
KZ
205extern struct fdisk_ask *fdisk_new_ask(void);
206extern void fdisk_reset_ask(struct fdisk_ask *ask);
207extern void fdisk_free_ask(struct fdisk_ask *ask);
208extern const char *fdisk_ask_get_query(struct fdisk_ask *ask);
209extern int fdisk_ask_set_query(struct fdisk_ask *ask, const char *str);
7845ca8d 210extern int fdisk_ask_get_type(struct fdisk_ask *ask);
4114da08 211extern int fdisk_ask_set_type(struct fdisk_ask *ask, int type);
dd00d1b2
KZ
212extern int fdisk_ask_set_flags(struct fdisk_ask *ask, unsigned int flags);
213extern unsigned int fdisk_ask_get_flags(struct fdisk_ask *ask);
214
4114da08
KZ
215extern int fdisk_do_ask(struct fdisk_context *cxt, struct fdisk_ask *ask);
216
7845ca8d 217extern const char *fdisk_ask_number_get_range(struct fdisk_ask *ask);
4114da08 218extern int fdisk_ask_number_set_range(struct fdisk_ask *ask, const char *range);
7845ca8d 219extern uint64_t fdisk_ask_number_get_default(struct fdisk_ask *ask);
4114da08 220extern int fdisk_ask_number_set_default(struct fdisk_ask *ask, uint64_t dflt);
7845ca8d 221extern uint64_t fdisk_ask_number_get_low(struct fdisk_ask *ask);
4114da08 222extern int fdisk_ask_number_set_low(struct fdisk_ask *ask, uint64_t low);
7845ca8d 223extern uint64_t fdisk_ask_number_get_high(struct fdisk_ask *ask);
4114da08
KZ
224extern int fdisk_ask_number_set_high(struct fdisk_ask *ask, uint64_t high);
225extern uint64_t fdisk_ask_number_get_base(struct fdisk_ask *ask);
226extern int fdisk_ask_number_set_base(struct fdisk_ask *ask, uint64_t base);
227extern uint64_t fdisk_ask_number_get_unit(struct fdisk_ask *ask);
228extern int fdisk_ask_number_set_unit(struct fdisk_ask *ask, uint64_t unit);
229extern uint64_t fdisk_ask_number_get_result(struct fdisk_ask *ask);
7845ca8d 230extern int fdisk_ask_number_set_result(struct fdisk_ask *ask, uint64_t result);
4114da08
KZ
231extern int fdisk_ask_number_set_relative(struct fdisk_ask *ask, int relative);
232extern int fdisk_ask_number_is_relative(struct fdisk_ask *ask);
181aab40 233extern int fdisk_ask_number_inchars(struct fdisk_ask *ask);
24fc19a1
KZ
234
235extern int fdisk_ask_number(struct fdisk_context *cxt,
236 uintmax_t low,
237 uintmax_t dflt,
238 uintmax_t high,
239 const char *query,
240 uintmax_t *result);
241
34b06299
KZ
242extern int fdisk_ask_string(struct fdisk_context *cxt,
243 const char *query,
244 char **result);
245
246extern char *fdisk_ask_string_get_result(struct fdisk_ask *ask);
247extern int fdisk_ask_string_set_result(struct fdisk_ask *ask, char *result);
248
ccf48af5
KZ
249extern int fdisk_ask_yesno(struct fdisk_context *cxt, const char *query, int *result);
250extern uint64_t fdisk_ask_yesno_get_result(struct fdisk_ask *ask);
251extern int fdisk_ask_yesno_set_result(struct fdisk_ask *ask, uint64_t result);
252
ab6ea0e8 253extern int fdisk_info(struct fdisk_context *cxt, const char *fmt, ...);
dd00d1b2
KZ
254extern int fdisk_colon(struct fdisk_context *cxt, const char *fmt, ...);
255extern int fdisk_sinfo(struct fdisk_context *cxt, unsigned int flags, const char *fmt, ...);
256
ab6ea0e8
KZ
257extern int fdisk_warnx(struct fdisk_context *cxt, const char *fmt, ...);
258extern int fdisk_warn(struct fdisk_context *cxt, const char *fmt, ...);
259
260extern int fdisk_ask_print_get_errno(struct fdisk_ask *ask);
261extern int fdisk_ask_print_set_errno(struct fdisk_ask *ask, int errnum);
262extern const char *fdisk_ask_print_get_mesg(struct fdisk_ask *ask);
263extern int fdisk_ask_print_set_mesg(struct fdisk_ask *ask, const char *mesg);
ab6ea0e8 264
d56a7c23
KZ
265#ifdef __cplusplus
266}
267#endif
268
269#endif /* _LIBFDISK_FDISK_H */