} else if (strcmp(name, "label-id") == 0
|| strcmp(name, "device") == 0
|| strcmp(name, "first-lba") == 0
- || strcmp(name, "last-lba") == 0) {
+ || strcmp(name, "last-lba") == 0
+ || strcmp(name, "table-length") == 0) {
; /* whatever is posssible */
} else
goto done; /* unknown header */
int fdisk_apply_script_headers(struct fdisk_context *cxt, struct fdisk_script *dp)
{
const char *name;
+ const char *str;
+ int rc;
assert(cxt);
assert(dp);
if (!name)
return -EINVAL;
- return fdisk_create_disklabel(cxt, name);
+ rc = fdisk_create_disklabel(cxt, name);
+ if (rc)
+ return rc;
+
+ str = fdisk_script_get_header(dp, "table-length");
+ if (str)
+ return fdisk_gpt_set_npartitions(cxt, strtoul(str, NULL, 0));
+
+ return 0;
}
/**