*
* Returns: label name
*/
-const char *fdisk_label_get_name(struct fdisk_label *lb)
+const char *fdisk_label_get_name(const struct fdisk_label *lb)
{
return lb ? lb->name : NULL;
}
*
* Returns: FDISK_DISKLABEL_*.
*/
-int fdisk_label_get_type(struct fdisk_label *lb)
+int fdisk_label_get_type(const struct fdisk_label *lb)
{
return lb->id;
}
*
* Returns: 1 if label requires CHS geometry
*/
-int fdisk_label_require_geometry(struct fdisk_label *lb)
+int fdisk_label_require_geometry(const struct fdisk_label *lb)
{
assert(lb);
* Returns 0 on success, otherwise, a corresponding error.
*/
int fdisk_label_get_fields_ids(
- struct fdisk_label *lb,
+ const struct fdisk_label *lb,
struct fdisk_context *cxt,
int **ids, size_t *nids)
{
*
* Returns: pointer to static instance of the field.
*/
-const struct fdisk_field *fdisk_label_get_field(struct fdisk_label *lb, int id)
+const struct fdisk_field *fdisk_label_get_field(const struct fdisk_label *lb, int id)
{
size_t i;
return NULL;
}
+/**
+ * fdisk_label_get_field_by_name
+ * @lb: label
+ * @name: field name
+ *
+ * Returns: pointer to static instance of the field.
+ */
+const struct fdisk_field *fdisk_label_get_field_by_name(
+ const struct fdisk_label *lb,
+ const char *name)
+{
+ size_t i;
+
+ assert(lb);
+ assert(name);
+
+ for (i = 0; i < lb->nfields; i++) {
+ if (lb->fields[i].name && strcasecmp(lb->fields[i].name, name) == 0)
+ return &lb->fields[i];
+ }
+
+ return NULL;
+}
+
+
/**
* fdisk_field_get_id:
* @field: field instance
*
* Returns: 1 if in-memory data has been changed.
*/
-int fdisk_label_is_changed(struct fdisk_label *lb)
+int fdisk_label_is_changed(const struct fdisk_label *lb)
{
assert(lb);
return lb ? lb->changed : 0;
*
* Returns: 1 if label driver disabled.
*/
-int fdisk_label_is_disabled(struct fdisk_label *lb)
+int fdisk_label_is_disabled(const struct fdisk_label *lb)
{
assert(lb);
return lb ? lb->disabled : 0;
sector_t fdisk_get_geom_cylinders(struct fdisk_context *cxt);
/* parttype.c */
-const struct fdisk_parttype *fdisk_label_get_parttype(struct fdisk_label *lb, size_t n);
-size_t fdisk_label_get_nparttypes(struct fdisk_label *lb);
+const struct fdisk_parttype *fdisk_label_get_parttype(const struct fdisk_label *lb, size_t n);
+size_t fdisk_label_get_nparttypes(const struct fdisk_label *lb);
-int fdisk_label_has_code_parttypes(struct fdisk_label *lb);
+int fdisk_label_has_code_parttypes(const struct fdisk_label *lb);
struct fdisk_parttype *fdisk_label_get_parttype_from_code(
- struct fdisk_label *lb,
+ const struct fdisk_label *lb,
unsigned int code);
struct fdisk_parttype *fdisk_label_get_parttype_from_string(
- struct fdisk_label *lb,
+ const struct fdisk_label *lb,
const char *str);
struct fdisk_parttype *fdisk_new_unknown_parttype(unsigned int code,
const char *typestr);
struct fdisk_parttype *fdisk_label_parse_parttype(
- struct fdisk_label *lb,
+ const struct fdisk_label *lb,
const char *str);
struct fdisk_parttype *fdisk_copy_parttype(const struct fdisk_parttype *type);
FDISK_FIELD_NAME,
FDISK_FIELD_SADDR,
FDISK_FIELD_UUID,
+
+ FDISK_NFIELDS /* must be last */
};
-int fdisk_label_get_type(struct fdisk_label *lb);
-const char *fdisk_label_get_name(struct fdisk_label *lb);
-int fdisk_label_require_geometry(struct fdisk_label *lb);
+int fdisk_label_get_type(const struct fdisk_label *lb);
+const char *fdisk_label_get_name(const struct fdisk_label *lb);
+int fdisk_label_require_geometry(const struct fdisk_label *lb);
extern int fdisk_write_disklabel(struct fdisk_context *cxt);
extern int fdisk_label_get_fields_ids(
- struct fdisk_label *lb,
+ const struct fdisk_label *lb,
struct fdisk_context *cxt,
int **ids, size_t *nids);
-extern const struct fdisk_field *fdisk_label_get_field(struct fdisk_label *lb, int id);
+
+extern const struct fdisk_field *fdisk_label_get_field(const struct fdisk_label *lb, int id);
+extern const struct fdisk_field *fdisk_label_get_field_by_name(
+ const struct fdisk_label *lb,
+ const char *name);
extern int fdisk_field_get_id(const struct fdisk_field *fl);
extern const char *fdisk_field_get_name(const struct fdisk_field *fl);
extern void fdisk_label_set_changed(struct fdisk_label *lb, int changed);
-extern int fdisk_label_is_changed(struct fdisk_label *lb);
+extern int fdisk_label_is_changed(const struct fdisk_label *lb);
extern void fdisk_label_set_disabled(struct fdisk_label *lb, int disabled);
-extern int fdisk_label_is_disabled(struct fdisk_label *lb);
+extern int fdisk_label_is_disabled(const struct fdisk_label *lb);
extern int fdisk_is_partition_used(struct fdisk_context *cxt, size_t n);
*
* Returns: number of types supported by label.
*/
-size_t fdisk_label_get_nparttypes(struct fdisk_label *lb)
+size_t fdisk_label_get_nparttypes(const struct fdisk_label *lb)
{
if (!lb)
return 0;
*
* Returns: return parttype
*/
-const struct fdisk_parttype *fdisk_label_get_parttype(struct fdisk_label *lb, size_t n)
+const struct fdisk_parttype *fdisk_label_get_parttype(const struct fdisk_label *lb, size_t n)
{
if (!lb || n >= lb->nparttypes)
return NULL;
* Returns: 1 if the label uses code as partition type
* identifiers (e.g. MBR) or 0.
*/
-int fdisk_label_has_code_parttypes(struct fdisk_label *lb)
+int fdisk_label_has_code_parttypes(const struct fdisk_label *lb)
{
assert(lb);
* Returns: partition type or NULL upon failure or invalid @code.
*/
struct fdisk_parttype *fdisk_label_get_parttype_from_code(
- struct fdisk_label *lb,
+ const struct fdisk_label *lb,
unsigned int code)
{
size_t i;
* Returns: partition type or NULL upon failure or invalid @str.
*/
struct fdisk_parttype *fdisk_label_get_parttype_from_string(
- struct fdisk_label *lb,
+ const struct fdisk_label *lb,
const char *str)
{
size_t i;
* for all results.
*/
struct fdisk_parttype *fdisk_label_parse_parttype(
- struct fdisk_label *lb,
+ const struct fdisk_label *lb,
const char *str)
{
struct fdisk_parttype *types, *ret;
if (!lb->nparttypes)
return NULL;
- DBG(LABEL, ul_debugobj(lb, "parsing '%s' (%s) partition type",
+ DBG(LABEL, ul_debugobj((void *) lb, "parsing '%s' (%s) partition type",
str, lb->name));
types = lb->parttypes;
code = strtol(str, &end, 16);
if (errno || *end != '\0') {
- DBG(LABEL, ul_debugobj(lb, "parsing failed: %m"));
+ DBG(LABEL, ul_debugobj((void *) lb, "parsing failed: %m"));
return NULL;
}
ret = fdisk_label_get_parttype_from_code(lb, code);