39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#include <string.h>
|
|
|
|
#include "cgpt.h"
|
|
#include "cgptlib_internal.h"
|
|
#include "vboot_host.h"
|
|
|
|
int CgptRepair(CgptRepairParams *params) {
|
|
struct drive drive;
|
|
|
|
if (params == NULL)
|
|
return CGPT_FAILED;
|
|
|
|
if (CGPT_OK != DriveOpen(params->drive_name, &drive, O_RDWR,
|
|
params->drive_size))
|
|
return CGPT_FAILED;
|
|
|
|
int gpt_retval = GptSanityCheck(&drive.gpt);
|
|
if (params->verbose)
|
|
printf("GptSanityCheck() returned %d: %s\n",
|
|
gpt_retval, GptError(gpt_retval));
|
|
|
|
GptRepair(&drive.gpt);
|
|
if (drive.gpt.modified & GPT_MODIFIED_HEADER1)
|
|
printf("Primary Header is updated.\n");
|
|
if (drive.gpt.modified & GPT_MODIFIED_ENTRIES1)
|
|
printf("Primary Entries is updated.\n");
|
|
if (drive.gpt.modified & GPT_MODIFIED_ENTRIES2)
|
|
printf("Secondary Entries is updated.\n");
|
|
if (drive.gpt.modified & GPT_MODIFIED_HEADER2)
|
|
printf("Secondary Header is updated.\n");
|
|
|
|
return DriveClose(&drive, 1);
|
|
}
|