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

Side by Side Diff: src/platform/vboot_reference/utility/cgpt/cgpt_show.c

Issue 2374001: cgpt supports dev and add/delete/modify commands. (Closed) Base URL: ssh://git@chromiumos-git/chromeos
Patch Set: Created 10 years, 7 months 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
« no previous file with comments | « src/platform/vboot_reference/utility/cgpt/cgpt_repair.c ('k') | no next file » | 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 * Update GPT attribute bits. 5 * Show GPT details.
6 */ 6 */
7 #include <getopt.h> 7 #include <getopt.h>
8 #include <stdio.h> 8 #include <stdio.h>
9 #include <stdlib.h> 9 #include <stdlib.h>
10 #include "cgpt.h" 10 #include "cgpt.h"
11 #include "cgptlib_internal.h" 11 #include "cgptlib_internal.h"
12 #include "utility.h" 12 #include "utility.h"
13 13
14 /* Integers to store parsed argument. */ 14 /* Integers to store parsed argument. */
15 static int help, number, verbose; 15 static int help, number, verbose;
16 16
17 /* The structure for getopt_long(). When you add/delete any line, please refine 17 /* The structure for getopt_long(). When you add/delete any line, please refine
18 * attribute_comments[] and third parameter of getopt_long() too. */ 18 * attribute_comments[] and third parameter of getopt_long() too. */
19 static struct option show_options[] = { 19 static struct option show_options[] = {
20 {.name = "help", .has_arg = no_argument, .flag = 0, .val = 'h'}, 20 {.name = "help", .has_arg = no_argument, .flag = 0, .val = 'h'},
21 {.name = "number", .has_arg = no_argument, .flag = 0, .val = 'n'}, 21 {.name = "number", .has_arg = no_argument, .flag = 0, .val = 'n'},
22 {.name = "verbose", .has_arg = no_argument, .flag = 0, .val = 'v'}, 22 {.name = "verbose", .has_arg = no_argument, .flag = 0, .val = 'v'},
23 { /* last element, which should be zero. */ }
23 }; 24 };
24 25
25 /* Extra information than struct option, please update this structure if you 26 /* Extra information than struct option, please update this structure if you
26 * add/remove any line in attribute_options[]. */ 27 * add/remove any line in attribute_options[]. */
27 static struct option_details show_options_details[] = { 28 static struct option_details show_options_details[] = {
28 /* help */ 29 /* help */
29 { .comment = "print this help", 30 { .comment = "print this help",
30 .validator = AssignTrue, 31 .validator = AssignTrue,
31 .valid_range = 0, 32 .valid_range = 0,
32 .parsed = &help}, 33 .parsed = &help},
33 /* number */ 34 /* number */
34 { .comment = "print raw numbers (don't interpret)", 35 { .comment = "print raw numbers (don't interpret)",
35 .validator = AssignTrue, 36 .validator = AssignTrue,
36 .valid_range = 0, 37 .valid_range = 0,
37 .parsed = &number}, 38 .parsed = &number},
38 /* verbose */ 39 /* verbose */
39 { .comment = "verbose print", 40 { .comment = "verbose print",
40 .validator = AssignTrue, 41 .validator = AssignTrue,
41 .valid_range = 0, 42 .valid_range = 0,
42 .parsed = &verbose}, 43 .parsed = &verbose},
44 { /* last element, which should be zero. */ }
43 }; 45 };
44 46
45 void ShowHelp() { 47 void ShowHelp() {
46 printf("\nUsage: %s show [OPTIONS] device_name\n\n", progname); 48 printf("\nUsage: %s show [OPTIONS] device_name\n\n", progname);
47 ShowOptions(show_options, show_options_details, ARRAY_COUNT(show_options)); 49 ShowOptions(show_options, show_options_details, ARRAY_COUNT(show_options));
48 printf("\n"); 50 printf("\n");
49 } 51 }
50 52
51 /* Generate output like: 53 /* Generate output like:
52 * 54 *
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 GuidToStr(&header->disk_uuid, buf); 116 GuidToStr(&header->disk_uuid, buf);
115 printf("%sDisk UUID: %s\n", indent, buf); 117 printf("%sDisk UUID: %s\n", indent, buf);
116 } 118 }
117 119
118 printf("%sEntries LBA: %lld\n", indent, (long long)header->entries_lba); 120 printf("%sEntries LBA: %lld\n", indent, (long long)header->entries_lba);
119 printf("%sNumber of entries: %d\n", indent, header->number_of_entries); 121 printf("%sNumber of entries: %d\n", indent, header->number_of_entries);
120 printf("%sSize of entry: %d\n", indent, header->size_of_entry); 122 printf("%sSize of entry: %d\n", indent, header->size_of_entry);
121 printf("%sEntries CRC: 0x%08x\n", indent, header->entries_crc32); 123 printf("%sEntries CRC: 0x%08x\n", indent, header->entries_crc32);
122 } 124 }
123 125
124 /* Resolves human-readable GPT type.
125 * Returns CGPT_OK if found.
126 * Returns CGPT_FAILED if no known type found. */
127 int ResolveType(const Guid *type, char *buf) {
128 struct {
129 Guid type;
130 char *description;
131 } known[] = {
132 {GPT_ENT_TYPE_UNUSED, "Unused partition"},
133 {GPT_ENT_TYPE_EFI, "EFI partition"},
134 {GPT_ENT_TYPE_CHROMEOS_KERNEL, "ChromeOS kernel"},
135 {GPT_ENT_TYPE_CHROMEOS_ROOTFS, "ChromeOS rootfs"},
136 {GPT_ENT_TYPE_CHROMEOS_RESERVED, "ChromeOS reserved"},
137 };
138 int i;
139
140 for (i = 0; i < ARRAY_COUNT(known); ++i) {
141 if (!Memcmp(type, &known[i].type, sizeof(Guid))) {
142 strcpy(buf, known[i].description);
143 return CGPT_OK;
144 }
145 }
146 return CGPT_FAILED;
147 }
148
149 void EntriesDetails(GptData *gpt, const int secondary) { 126 void EntriesDetails(GptData *gpt, const int secondary) {
150 int i; 127 int i;
151 128
152 for (i = 0; i < GetNumberOfEntries(gpt); ++i) { 129 for (i = 0; i < GetNumberOfEntries(gpt); ++i) {
153 static Guid unused = GPT_ENT_TYPE_UNUSED; 130 static Guid unused = GPT_ENT_TYPE_UNUSED;
154 char contents[256]; 131 char contents[256];
155 132
156 GptEntry *entry; 133 GptEntry *entry;
157 entry = GetEntry(gpt, secondary, i); 134 entry = GetEntry(gpt, secondary, i);
158 135
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 "hnv", 206 "hnv",
230 ARRAY_COUNT(show_options), 207 ARRAY_COUNT(show_options),
231 show_options, 208 show_options,
232 show_options_details)) 209 show_options_details))
233 return CGPT_FAILED; 210 return CGPT_FAILED;
234 if (help != NOT_INITED) { 211 if (help != NOT_INITED) {
235 ShowHelp(); 212 ShowHelp();
236 return CGPT_FAILED; 213 return CGPT_FAILED;
237 } 214 }
238 215
216 OpenDriveInLastArgument(argc, argv, &drive);
239 if (CGPT_OK != OpenDriveInLastArgument(argc, argv, &drive)) 217 if (CGPT_OK != OpenDriveInLastArgument(argc, argv, &drive))
240 return CGPT_FAILED; 218 return CGPT_FAILED;
241 219
242 printf(TITLE_FMT, "start", "size", "index", "contents"); 220 printf(TITLE_FMT, "start", "size", "index", "contents");
243 printf(GPT_FMT, 0, GPT_PMBR_SECTOR, "", "PMBR"); 221 printf(GPT_FMT, 0, GPT_PMBR_SECTOR, "", "PMBR");
244 222
245 if (drive.gpt.valid_headers & MASK_PRIMARY) { 223 if (drive.gpt.valid_headers & MASK_PRIMARY) {
246 printf(GPT_FMT, (int)GPT_PMBR_SECTOR, 224 printf(GPT_FMT, (int)GPT_PMBR_SECTOR,
247 (int)GPT_HEADER_SECTOR, "", "Pri GPT header"); 225 (int)GPT_HEADER_SECTOR, "", "Pri GPT header");
248 if (verbose) { 226 if (verbose) {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 header = (GptHeader*)drive.gpt.secondary_header; 282 header = (GptHeader*)drive.gpt.secondary_header;
305 HeaderDetails(header, indent); 283 HeaderDetails(header, indent);
306 } 284 }
307 } 285 }
308 286
309 CheckValid(&drive); 287 CheckValid(&drive);
310 DriveClose(&drive); 288 DriveClose(&drive);
311 289
312 return CGPT_OK; 290 return CGPT_OK;
313 } 291 }
OLDNEW
« no previous file with comments | « src/platform/vboot_reference/utility/cgpt/cgpt_repair.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698