OLD | NEW |
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 #include "cgpt.h" | 5 #include "cgpt.h" |
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 <string.h> | 10 #include <string.h> |
(...skipping 27 matching lines...) Expand all Loading... |
38 struct drive drive; | 38 struct drive drive; |
39 int partition = 0; | 39 int partition = 0; |
40 uint64_t begin = 0; | 40 uint64_t begin = 0; |
41 uint64_t size = 0; | 41 uint64_t size = 0; |
42 Guid type_guid; | 42 Guid type_guid; |
43 Guid unique_guid; | 43 Guid unique_guid; |
44 char *label = 0; | 44 char *label = 0; |
45 int successful = 0; | 45 int successful = 0; |
46 int tries = 0; | 46 int tries = 0; |
47 int priority = 0; | 47 int priority = 0; |
48 uint64_t raw_value = 0; | 48 uint16_t raw_value = 0; |
49 int set_begin = 0; | 49 int set_begin = 0; |
50 int set_size = 0; | 50 int set_size = 0; |
51 int set_type = 0; | 51 int set_type = 0; |
52 int set_unique = 0; | 52 int set_unique = 0; |
53 int set_successful = 0; | 53 int set_successful = 0; |
54 int set_tries = 0; | 54 int set_tries = 0; |
55 int set_priority = 0; | 55 int set_priority = 0; |
56 int set_raw = 0; | 56 int set_raw = 0; |
57 | 57 |
58 int gpt_retval; | 58 int gpt_retval; |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 if (set_type) | 242 if (set_type) |
243 memcpy(&entry->type, &type_guid, sizeof(Guid)); | 243 memcpy(&entry->type, &type_guid, sizeof(Guid)); |
244 if (set_unique) | 244 if (set_unique) |
245 memcpy(&entry->unique, &unique_guid, sizeof(Guid)); | 245 memcpy(&entry->unique, &unique_guid, sizeof(Guid)); |
246 if (label) { | 246 if (label) { |
247 uint16_t buf[128]; | 247 uint16_t buf[128]; |
248 UTF8ToUTF16((uint8_t *)label, buf); | 248 UTF8ToUTF16((uint8_t *)label, buf); |
249 memcpy(entry->name, buf, sizeof(entry->name)); | 249 memcpy(entry->name, buf, sizeof(entry->name)); |
250 } | 250 } |
251 if (set_raw) { | 251 if (set_raw) { |
252 entry->attributes = raw_value; | 252 entry->attrs.fields.gpt_att = raw_value; |
253 } else { | 253 } else { |
254 if (set_successful) | 254 if (set_successful) |
255 SetSuccessful(&drive.gpt, PRIMARY, index, successful); | 255 SetSuccessful(&drive.gpt, PRIMARY, index, successful); |
256 if (set_tries) | 256 if (set_tries) |
257 SetTries(&drive.gpt, PRIMARY, index, tries); | 257 SetTries(&drive.gpt, PRIMARY, index, tries); |
258 if (set_priority) | 258 if (set_priority) |
259 SetPriority(&drive.gpt, PRIMARY, index, priority); | 259 SetPriority(&drive.gpt, PRIMARY, index, priority); |
260 } | 260 } |
261 | 261 |
262 RepairEntries(&drive.gpt, MASK_PRIMARY); | 262 RepairEntries(&drive.gpt, MASK_PRIMARY); |
263 RepairHeader(&drive.gpt, MASK_PRIMARY); | 263 RepairHeader(&drive.gpt, MASK_PRIMARY); |
264 | 264 |
265 drive.gpt.modified |= (GPT_MODIFIED_HEADER1 | GPT_MODIFIED_ENTRIES1 | | 265 drive.gpt.modified |= (GPT_MODIFIED_HEADER1 | GPT_MODIFIED_ENTRIES1 | |
266 GPT_MODIFIED_HEADER2 | GPT_MODIFIED_ENTRIES2); | 266 GPT_MODIFIED_HEADER2 | GPT_MODIFIED_ENTRIES2); |
267 UpdateCrc(&drive.gpt); | 267 UpdateCrc(&drive.gpt); |
268 | 268 |
269 | 269 |
270 // Write it all out | 270 // Write it all out |
271 return DriveClose(&drive, 1); | 271 return DriveClose(&drive, 1); |
272 | 272 |
273 bad: | 273 bad: |
274 (void) DriveClose(&drive, 0); | 274 (void) DriveClose(&drive, 0); |
275 return CGPT_FAILED; | 275 return CGPT_FAILED; |
276 } | 276 } |
OLD | NEW |