Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: cgpt/cgpt_common.c

Issue 5352005: Add 'prioritize' command to cgpt tool. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/vboot_reference.git@master
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cgpt/cgpt.c ('k') | cgpt/cmd_find.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. 3 * found in the LICENSE file.
4 * 4 *
5 * Utility for ChromeOS-specific GPT partitions, Please see corresponding .c 5 * Utility for ChromeOS-specific GPT partitions, Please see corresponding .c
6 * files for more details. 6 * files for more details.
7 */ 7 */
8 8
9 #include "cgpt.h" 9 #include "cgpt.h"
10 10
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 550
551 /* A null-terminator shows up before the UTF8 sequence ends. */ 551 /* A null-terminator shows up before the UTF8 sequence ends. */
552 if (expected_units != decoded_units) { 552 if (expected_units != decoded_units) {
553 retval = CGPT_FAILED; 553 retval = CGPT_FAILED;
554 } 554 }
555 555
556 utf16[s16idx++] = 0; 556 utf16[s16idx++] = 0;
557 return retval; 557 return retval;
558 } 558 }
559 559
560 struct { 560 /* global types to compare against */
561 Guid type; 561 const Guid guid_chromeos_kernel = GPT_ENT_TYPE_CHROMEOS_KERNEL;
562 const Guid guid_chromeos_rootfs = GPT_ENT_TYPE_CHROMEOS_ROOTFS;
563 const Guid guid_linux_data = GPT_ENT_TYPE_LINUX_DATA;
564 const Guid guid_chromeos_reserved = GPT_ENT_TYPE_CHROMEOS_RESERVED;
565 const Guid guid_efi = GPT_ENT_TYPE_EFI;
566 const Guid guid_unused = GPT_ENT_TYPE_UNUSED;
567
568 static struct {
569 const Guid *type;
562 char *name; 570 char *name;
563 char *description; 571 char *description;
564 } supported_types[] = { 572 } supported_types[] = {
565 {GPT_ENT_TYPE_CHROMEOS_KERNEL, "kernel", "ChromeOS kernel"}, 573 {&guid_chromeos_kernel, "kernel", "ChromeOS kernel"},
566 {GPT_ENT_TYPE_CHROMEOS_ROOTFS, "rootfs", "ChromeOS rootfs"}, 574 {&guid_chromeos_rootfs, "rootfs", "ChromeOS rootfs"},
567 {GPT_ENT_TYPE_LINUX_DATA, "data", "Linux data"}, 575 {&guid_linux_data, "data", "Linux data"},
568 {GPT_ENT_TYPE_CHROMEOS_RESERVED, "reserved", "ChromeOS reserved"}, 576 {&guid_chromeos_reserved, "reserved", "ChromeOS reserved"},
569 {GPT_ENT_TYPE_EFI, "efi", "EFI System Partition"}, 577 {&guid_efi, "efi", "EFI System Partition"},
570 {GPT_ENT_TYPE_UNUSED, "unused", "Unused (nonexistent) partition"}, 578 {&guid_unused, "unused", "Unused (nonexistent) partition"},
571 }; 579 };
572 580
573 /* Resolves human-readable GPT type. 581 /* Resolves human-readable GPT type.
574 * Returns CGPT_OK if found. 582 * Returns CGPT_OK if found.
575 * Returns CGPT_FAILED if no known type found. */ 583 * Returns CGPT_FAILED if no known type found. */
576 int ResolveType(const Guid *type, char *buf) { 584 int ResolveType(const Guid *type, char *buf) {
577 int i; 585 int i;
578 for (i = 0; i < ARRAY_COUNT(supported_types); ++i) { 586 for (i = 0; i < ARRAY_COUNT(supported_types); ++i) {
579 if (!memcmp(type, &supported_types[i].type, sizeof(Guid))) { 587 if (!memcmp(type, supported_types[i].type, sizeof(Guid))) {
580 strcpy(buf, supported_types[i].description); 588 strcpy(buf, supported_types[i].description);
581 return CGPT_OK; 589 return CGPT_OK;
582 } 590 }
583 } 591 }
584 return CGPT_FAILED; 592 return CGPT_FAILED;
585 } 593 }
586 594
587 int SupportedType(const char *name, Guid *type) { 595 int SupportedType(const char *name, Guid *type) {
588 int i; 596 int i;
589 for (i = 0; i < ARRAY_COUNT(supported_types); ++i) { 597 for (i = 0; i < ARRAY_COUNT(supported_types); ++i) {
590 if (!strcmp(name, supported_types[i].name)) { 598 if (!strcmp(name, supported_types[i].name)) {
591 memcpy(type, &supported_types[i].type, sizeof(Guid)); 599 memcpy(type, supported_types[i].type, sizeof(Guid));
592 return CGPT_OK; 600 return CGPT_OK;
593 } 601 }
594 } 602 }
595 return CGPT_FAILED; 603 return CGPT_FAILED;
596 } 604 }
597 605
598 void PrintTypes(void) { 606 void PrintTypes(void) {
599 int i; 607 int i;
600 printf("The partition type may also be given as one of these aliases:\n\n"); 608 printf("The partition type may also be given as one of these aliases:\n\n");
601 for (i = 0; i < ARRAY_COUNT(supported_types); ++i) { 609 for (i = 0; i < ARRAY_COUNT(supported_types); ++i) {
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 memcpy(primary_header, secondary_header, sizeof(GptHeader)); 843 memcpy(primary_header, secondary_header, sizeof(GptHeader));
836 primary_header->my_lba = GPT_PMBR_SECTOR; /* the second sector on drive */ 844 primary_header->my_lba = GPT_PMBR_SECTOR; /* the second sector on drive */
837 primary_header->alternate_lba = secondary_header->my_lba; 845 primary_header->alternate_lba = secondary_header->my_lba;
838 primary_header->entries_lba = primary_header->my_lba + GPT_HEADER_SECTOR; 846 primary_header->entries_lba = primary_header->my_lba + GPT_HEADER_SECTOR;
839 return GPT_MODIFIED_HEADER1; 847 return GPT_MODIFIED_HEADER1;
840 } 848 }
841 849
842 return 0; 850 return 0;
843 } 851 }
844 852
853 int GuidEqual(const Guid *guid1, const Guid *guid2) {
854 return (0 == memcmp(guid1, guid2, sizeof(Guid)));
855 }
845 856
846 int IsZero(const Guid *gp) { 857 int IsZero(const Guid *gp) {
847 return (0 == memcmp(gp, &guid_unused, sizeof(Guid))); 858 return GuidEqual(gp, &guid_unused);
848 } 859 }
849 860
850 void PMBRToStr(struct pmbr *pmbr, char *str, unsigned int buflen) { 861 void PMBRToStr(struct pmbr *pmbr, char *str, unsigned int buflen) {
851 char buf[GUID_STRLEN]; 862 char buf[GUID_STRLEN];
852 if (IsZero(&pmbr->boot_guid)) { 863 if (IsZero(&pmbr->boot_guid)) {
853 require(snprintf(str, buflen, "PMBR") < buflen); 864 require(snprintf(str, buflen, "PMBR") < buflen);
854 } else { 865 } else {
855 GuidToStr(&pmbr->boot_guid, buf, sizeof(buf)); 866 GuidToStr(&pmbr->boot_guid, buf, sizeof(buf));
856 require(snprintf(str, buflen, "PMBR (Boot GUID: %s)", buf) < buflen); 867 require(snprintf(str, buflen, "PMBR (Boot GUID: %s)", buf) < buflen);
857 } 868 }
858 } 869 }
OLDNEW
« no previous file with comments | « cgpt/cgpt.c ('k') | cgpt/cmd_find.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698