File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -101,6 +101,7 @@ fdisk_is_label
101101fdisk_label_get_field
102102fdisk_label_get_field_by_name
103103fdisk_label_get_fields_ids
104+ fdisk_label_get_fields_ids_all
104105fdisk_label_get_name
105106fdisk_label_get_nparttypes
106107fdisk_label_get_parttype
Original file line number Diff line number Diff line change @@ -156,6 +156,47 @@ int fdisk_label_get_fields_ids(
156156 return 0 ;
157157}
158158
159+ /**
160+ * fdisk_label_get_fields_ids_all
161+ * @lb: label (or NULL for the current label)
162+ * @cxt: context
163+ * @ids: returns allocated array with FDISK_FIELD_* IDs
164+ * @nids: returns number of items in fields
165+ *
166+ * This function returns all fields for the label.
167+ *
168+ * Returns: 0 on success, otherwise, a corresponding error.
169+ */
170+ int fdisk_label_get_fields_ids_all (
171+ const struct fdisk_label * lb ,
172+ struct fdisk_context * cxt ,
173+ int * * ids , size_t * nids )
174+ {
175+ size_t i , n ;
176+ int * c ;
177+
178+ assert (cxt );
179+
180+ if (!lb )
181+ lb = cxt -> label ;
182+ if (!lb )
183+ return - EINVAL ;
184+ if (!lb -> fields || !lb -> nfields )
185+ return - ENOSYS ;
186+ c = calloc (lb -> nfields , sizeof (int ));
187+ if (!c )
188+ return - ENOMEM ;
189+ for (n = 0 , i = 0 ; i < lb -> nfields ; i ++ )
190+ c [n ++ ] = lb -> fields [i ].id ;
191+ if (ids )
192+ * ids = c ;
193+ else
194+ free (c );
195+ if (nids )
196+ * nids = n ;
197+ return 0 ;
198+ }
199+
159200/**
160201 * fdisk_label_get_field:
161202 * @lb: label
Original file line number Diff line number Diff line change @@ -308,6 +308,11 @@ extern int fdisk_label_get_fields_ids(
308308 struct fdisk_context * cxt ,
309309 int * * ids , size_t * nids );
310310
311+ extern int fdisk_label_get_fields_ids_all (
312+ const struct fdisk_label * lb ,
313+ struct fdisk_context * cxt ,
314+ int * * ids , size_t * nids );
315+
311316extern const struct fdisk_field * fdisk_label_get_field (const struct fdisk_label * lb , int id );
312317extern const struct fdisk_field * fdisk_label_get_field_by_name (
313318 const struct fdisk_label * lb ,
Original file line number Diff line number Diff line change @@ -241,12 +241,13 @@ local:
241241};
242242
243243FDISK_2.27 {
244- fdisk_script_set_fgets;
245- fdisk_script_set_userdata;
246- fdisk_script_get_userdata;
247244 fdisk_enable_bootbits_protection;
248- fdisk_has_protected_bootbits;
249- fdisk_table_get_partition_by_partno;
250245 fdisk_gpt_get_partition_attrs;
251246 fdisk_gpt_set_partition_attrs;
247+ fdisk_has_protected_bootbits;
248+ fdisk_label_get_fields_ids_all;
249+ fdisk_script_get_userdata;
250+ fdisk_script_set_fgets;
251+ fdisk_script_set_userdata;
252+ fdisk_table_get_partition_by_partno;
252253} FDISK_2.26;
You can’t perform that action at this time.
0 commit comments