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 * Header file for cgpt. | 5 * Header file for cgpt. |
6 */ | 6 */ |
7 #ifndef VBOOT_REFERENCE_UTILITY_CGPT_CGPT_H_ | 7 #ifndef VBOOT_REFERENCE_UTILITY_CGPT_CGPT_H_ |
8 #define VBOOT_REFERENCE_UTILITY_CGPT_CGPT_H_ | 8 #define VBOOT_REFERENCE_UTILITY_CGPT_CGPT_H_ |
9 | 9 |
10 #include <getopt.h> | 10 #include <getopt.h> |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 * if invalid. */ | 44 * if invalid. */ |
45 int (*validator)(const char *argument, void *valid_range, void *parsed); | 45 int (*validator)(const char *argument, void *valid_range, void *parsed); |
46 void *valid_range; /* The structure passed to validator. */ | 46 void *valid_range; /* The structure passed to validator. */ |
47 void *parsed; /* The structure passed to validator. */ | 47 void *parsed; /* The structure passed to validator. */ |
48 }; | 48 }; |
49 | 49 |
50 /* This is a special 'validator'. It assists those options without an argument, | 50 /* This is a special 'validator'. It assists those options without an argument, |
51 * i.e. help, to indicate the option is present. */ | 51 * i.e. help, to indicate the option is present. */ |
52 int AssignTrue(const char *argument, void *pointer, void *integer); | 52 int AssignTrue(const char *argument, void *pointer, void *integer); |
53 | 53 |
| 54 /* Special validator. Copy string to 'parsed' with max 'valid_range' bytes. */ |
| 55 int CopyString(const char *argument, void *max_len, void *dst); |
| 56 |
| 57 /* Validator function. Returns 1 if 'argument' is between 'max' and 'min' |
| 58 * in 'valid_range'. */ |
54 struct number_range { | 59 struct number_range { |
55 int max; | 60 int max; |
56 int min; | 61 int min; |
57 }; | 62 }; |
58 | |
59 /* Validator function. Returns 1 if 'argument' is between 'max' and 'min' | |
60 * in 'valid_range'. */ | |
61 int InNumberRange(const char *argument, void *valid_range, void *parsed); | 63 int InNumberRange(const char *argument, void *valid_range, void *parsed); |
62 | 64 |
63 void ShowOptions(const struct option *opts, | 65 void ShowOptions(const struct option *opts, |
64 const struct option_details *details, | 66 const struct option_details *details, |
65 const int num); | 67 const int num); |
66 | 68 |
67 /* Handles all options from given argc and argv. This function supports both | 69 /* Handles all options from given argc and argv. This function supports both |
68 * short and long options. | 70 * short and long options. |
69 * | 71 * |
70 * Assumptions: | 72 * Assumptions: |
(...skipping 19 matching lines...) Expand all Loading... |
90 struct drive *drive); | 92 struct drive *drive); |
91 | 93 |
92 /* GUID conversion functions. Accepted format: | 94 /* GUID conversion functions. Accepted format: |
93 * | 95 * |
94 * "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" | 96 * "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" |
95 * | 97 * |
96 * At least GUID_STRLEN bytes should be reserved in 'str' (included the tailing | 98 * At least GUID_STRLEN bytes should be reserved in 'str' (included the tailing |
97 * '\0'). | 99 * '\0'). |
98 */ | 100 */ |
99 #define GUID_STRLEN 37 | 101 #define GUID_STRLEN 37 |
100 void StrToGuid(const char *str, Guid *guid); | 102 int StrToGuid(const char *str, Guid *guid); |
101 void GuidToStr(const Guid *guid, char *str); | 103 void GuidToStr(const Guid *guid, char *str); |
102 | 104 |
103 /* Convert UTF16 string to UTF8. Rewritten from gpt utility. | 105 /* Convert UTF16 string to UTF8. Rewritten from gpt utility. |
104 * Caller must prepare enough space for UTF8. The rough estimation is: | 106 * Caller must prepare enough space for UTF8. The rough estimation is: |
105 * | 107 * |
106 * utf8 length = bytecount(utf16) * 1.5 | 108 * utf8 length = bytecount(utf16) * 1.5 |
107 */ | 109 */ |
108 void UTF16ToUTF8(const uint16_t *utf16, uint8_t *utf8); | 110 void UTF16ToUTF8(const uint16_t *utf16, uint8_t *utf8); |
109 /* Convert UTF8 string to UTF16. Rewritten from gpt utility. | 111 /* Convert UTF8 string to UTF16. Rewritten from gpt utility. |
110 * Caller must prepare enough space for UTF16. The conservative estimation is: | 112 * Caller must prepare enough space for UTF16. The conservative estimation is: |
111 * | 113 * |
112 * utf16 bytecount = bytecount(utf8) / 3 * 4 | 114 * utf16 bytecount = bytecount(utf8) / 3 * 4 |
113 */ | 115 */ |
114 void UTF8ToUTF16(const uint8_t *utf8, uint16_t *utf16); | 116 void UTF8ToUTF16(const uint8_t *utf8, uint16_t *utf16); |
115 | 117 |
| 118 /* Helper functions for supported GPT types. */ |
| 119 int ResolveType(const Guid *type, char *buf); |
| 120 int SupportedType(const char *name, Guid *type); |
| 121 void PrintTypes(void); |
| 122 |
116 /* Describes the drive storing the GPT. */ | 123 /* Describes the drive storing the GPT. */ |
117 struct drive { | 124 struct drive { |
118 int inited; /* indicated if this structure is valid */ | 125 int inited; /* indicated if this structure is valid */ |
119 int fd; /* file descriptor */ | 126 int fd; /* file descriptor */ |
120 uint64_t size; /* total size (in bytes) */ | 127 uint64_t size; /* total size (in bytes) */ |
121 GptData gpt; | 128 GptData gpt; |
122 }; | 129 }; |
123 | 130 |
124 extern const char* progname; | 131 extern const char* progname; |
125 | 132 |
126 /* Given a hard drive path, this function loads GPT sectors from that drive, | 133 /* Given a hard drive path, this function loads GPT sectors from that drive, |
127 * and fills 'drive' structure. All memory allocated in drive_open() will be | 134 * and fills 'drive' structure. All memory allocated in drive_open() will be |
128 * freed at drive_close(). | 135 * freed at drive_close(). |
129 * | 136 * |
130 * If 'drive_path' starts with '/', it is treated as absolute path. | 137 * If 'drive_path' starts with '/', it is treated as absolute path. |
131 * If 'drive_path' starts with '.', it is treated as relative path. | 138 * If 'drive_path' starts with '.', it is treated as relative path. |
132 * Otherwise, it will be prepended with '/dev/' to comply with gpt. | 139 * Otherwise, it will be prepended with '/dev/' to comply with gpt. |
133 * | 140 * |
134 * Returns CGPT_FAILED if any error happens. | 141 * Returns CGPT_FAILED if any error happens. |
135 * Returns CGPT_OK if success and information are stored in 'drive'. | 142 * Returns CGPT_OK if success and information are stored in 'drive'. |
136 */ | 143 */ |
137 int DriveOpen(const char *drive_path, struct drive *drive); | 144 int DriveOpen(const char *drive_path, struct drive *drive); |
138 int DriveClose(struct drive *drive); | 145 int DriveClose(struct drive *drive); |
139 int CheckValid(const struct drive *drive); | 146 int CheckValid(const struct drive *drive); |
140 | 147 |
141 /* Function declarations for commands. | 148 /* Function declarations for commands. |
142 * The return value of these functions is passed to main()'s exit value. */ | 149 * The return value of these functions is passed to main()'s exit value. */ |
| 150 int CgptAdm(int argc, char *argv[]); |
143 int CgptAttribute(int argc, char *argv[]); | 151 int CgptAttribute(int argc, char *argv[]); |
| 152 int CgptDev(int argc, char *argv[]); |
144 int CgptRepair(int argc, char *argv[]); | 153 int CgptRepair(int argc, char *argv[]); |
145 int CgptShow(int argc, char *argv[]); | 154 int CgptShow(int argc, char *argv[]); |
146 | 155 |
147 #endif /* VBOOT_REFERENCE_UTILITY_CGPT_CGPT_H_ */ | 156 #endif /* VBOOT_REFERENCE_UTILITY_CGPT_CGPT_H_ */ |
OLD | NEW |