Changeset 8c95dff in mainline for uspace/app/hdisk/hdisk.c
- Timestamp:
- 2013-11-30T17:49:09Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f4a47e52
- Parents:
- 802898f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/hdisk/hdisk.c
r802898f r8c95dff 46 46 #include <libgpt.h> 47 47 #include <tinput.h> 48 #include <str_error.h> 48 49 49 50 #include "hdisk.h" … … 53 54 #include "func_none.h" 54 55 55 int interact( service_id_t);56 int interact(void); 56 57 void print_help(void); 57 58 void select_label_format(tinput_t *); 58 59 void construct_label(layouts_t); 59 60 void free_label(void); 60 int try_read( service_id_t);61 int try_read_mbr( service_id_t);62 int try_read_gpt( service_id_t);61 int try_read(void); 62 int try_read_mbr(void); 63 int try_read_gpt(void); 63 64 void set_alignment(tinput_t *); 64 65 … … 83 84 84 85 init_label(); 85 86 rc = try_read_mbr(dev_handle); 86 label.device = dev_handle; 87 88 rc = block_init(EXCHANGE_ATOMIC, dev_handle, 512); 89 if (rc != EOK) { 90 printf("Error during libblock init: %d - %s.\n", rc, str_error(rc)); 91 return -1; 92 } 93 94 aoff64_t nblocks; 95 rc = block_get_nblocks(dev_handle, &nblocks); 96 block_fini(dev_handle); 97 if (rc != EOK) { 98 printf(LIBMBR_NAME ": Error while getting number of blocks: %d - %s.\n", rc, str_error(rc)); 99 return -1; 100 } 101 102 label.nblocks = nblocks; 103 104 rc = try_read_mbr(); 87 105 if (rc == EOK) 88 106 goto interact; 89 107 90 rc = try_read_gpt(dev_handle); 108 free_label(); 109 110 rc = try_read_gpt(); 91 111 if (rc == EOK) 92 112 goto interact; 93 113 94 114 printf("No label recognized. Create a new one.\n"); 95 label.layout = LYT_NONE;115 construct_label(LYT_NONE); 96 116 97 117 interact: 98 118 99 rc = interact( dev_handle);119 rc = interact(); 100 120 101 121 return rc; … … 103 123 104 124 /** Interact with user */ 105 int interact( service_id_t dev_handle)125 int interact() 106 126 { 107 127 int input; … … 130 150 break; 131 151 case 'e': 132 label.extra_funcs(&label, in , dev_handle);152 label.extra_funcs(&label, in); 133 153 break; 134 154 case 'f': 155 free_label(); 135 156 select_label_format(in); 136 157 break; … … 154 175 goto end; 155 176 case 'r': 156 label.read_parts(&label , dev_handle);177 label.read_parts(&label); 157 178 case 'w': 158 label.write_parts(&label , dev_handle);179 label.write_parts(&label); 159 180 break; 160 181 default: … … 197 218 uint8_t val = get_input_uint8(in); 198 219 switch (val) { 199 case 0: 200 free_label(); 220 case 1: 221 construct_label(LYT_MBR); 222 break; 223 case 2: 224 construct_label(LYT_GPT); 225 break; 226 default: 201 227 construct_label(LYT_NONE); 202 break;203 case 1:204 free_label();205 construct_label(LYT_MBR);206 break;207 case 2:208 free_label();209 construct_label(LYT_GPT);210 228 break; 211 229 } … … 235 253 } 236 254 237 int try_read(service_id_t dev_handle) 238 { 239 return label.read_parts(&label, dev_handle); 240 } 241 242 int try_read_mbr(service_id_t dev_handle) 255 int try_read() 256 { 257 258 return label.read_parts(&label); 259 } 260 261 int try_read_mbr() 243 262 { 244 263 construct_label(LYT_MBR); 245 return try_read( dev_handle);246 } 247 248 int try_read_gpt( service_id_t dev_handle)264 return try_read(); 265 } 266 267 int try_read_gpt() 249 268 { 250 269 construct_label(LYT_GPT); 251 return try_read( dev_handle);270 return try_read(); 252 271 } 253 272
Note:
See TracChangeset
for help on using the changeset viewer.