Changeset 6317b33 in mainline for uspace/app/hdisk/hdisk.c
- Timestamp:
- 2013-06-25T00:29:00Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 52f2c89
- Parents:
- cb328ab (diff), 1c8bfe8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/hdisk/hdisk.c
rcb328ab r6317b33 56 56 void print_help(void); 57 57 void select_label_format(tinput_t *); 58 void fill_label_funcs(void);58 void construct_label(layouts_t); 59 59 void free_label(void); 60 60 int try_read(service_id_t); 61 62 int construct_none_label(void);63 64 int construct_mbr_label(void);65 61 int try_read_mbr(service_id_t); 66 67 int construct_gpt_label(void);68 62 int try_read_gpt(service_id_t); 63 void set_alignment(tinput_t *); 69 64 70 65 … … 87 82 } 88 83 89 printf("Init.\n");90 84 init_label(); 91 85 … … 115 109 mbr_free_mbr(mbr);*/ 116 110 117 printf("Try MBR.\n");118 111 rc = try_read_mbr(dev_handle); 119 112 if (rc == EOK) … … 140 133 */ 141 134 142 printf("Try GPT.\n");143 135 rc = try_read_gpt(dev_handle); 144 136 if (rc == EOK) … … 149 141 150 142 interact: 151 printf("interact.\n");143 152 144 rc = interact(dev_handle); 153 145 … … 161 153 { 162 154 int input; 163 tinput_t * 155 tinput_t *in; 164 156 165 157 in = tinput_new(); … … 179 171 switch(input) { 180 172 case 'a': 181 label.add_part(in, &label.data); 182 break; 183 case 'b': 184 label.add_part(in, &label.data); 173 label.add_part(&label, in); 185 174 break; 186 175 case 'd': 187 label.delete_part( in, &label.data);176 label.delete_part(&label, in); 188 177 break; 189 178 case 'e': 190 label.extra_funcs( in, dev_handle, &label.data);179 label.extra_funcs(&label, in, dev_handle); 191 180 break; 192 181 case 'f': … … 197 186 print_help(); 198 187 break; 188 case 'l': 189 set_alignment(in); 190 break; 199 191 case 'n': 192 printf("Discarding label...\n"); 200 193 free_label(); 201 label.new_label(&label .data);194 label.new_label(&label); 202 195 break; 203 196 case 'p': 204 label.print_parts(&label .data);197 label.print_parts(&label); 205 198 break; 206 199 case 'q': 207 200 putchar('\n'); 208 201 goto end; 202 case 'r': 203 label.read_parts(&label, dev_handle); 209 204 case 'w': 210 label.write_parts( dev_handle, &label.data);205 label.write_parts(&label, dev_handle); 211 206 break; 212 207 default: … … 228 223 "\t 'd' \t\t Delete partition.\n" 229 224 "\t 'e' \t\t Extra functions (per label format).\n" 230 "\t 'f' \t\t Switch the format of the partition label. "225 "\t 'f' \t\t Switch the format of the partition label.\n" 231 226 "\t 'h' \t\t Prints help. See help for more.\n" 232 227 "\t 'l' \t\t Set alignment.\n" 233 228 "\t 'n' \t\t Create new label (discarding the old one).\n" 234 229 "\t 'p' \t\t Prints label contents.\n" 230 "\t 'q' \t\t Quit.\n" 231 "\t 'r' \t\t Read label from disk.\n" 235 232 "\t 'w' \t\t Write label to disk.\n" 236 "\t 'q' \t\t Quit.\n"237 233 ); 238 234 … … 244 240 "1) MBR\n" 245 241 "2) GPT\n" 246 242 ); 247 243 248 244 uint8_t val = get_input_uint8(in); … … 250 246 case 0: 251 247 free_label(); 252 label.layout = LYT_NONE; 253 fill_label_funcs(); 248 construct_label(LYT_NONE); 254 249 break; 255 250 case 1: 256 251 free_label(); 257 label.layout = LYT_MBR; 258 fill_label_funcs(); 252 construct_label(LYT_MBR); 259 253 break; 260 254 case 2: 261 255 free_label(); 256 construct_label(LYT_GPT); 257 break; 258 } 259 } 260 261 void construct_label(layouts_t layout) 262 { 263 switch(layout) { 264 case LYT_MBR: 265 label.layout = LYT_MBR; 266 construct_mbr_label(&label); 267 break; 268 case LYT_GPT: 262 269 label.layout = LYT_GPT; 263 fill_label_funcs(); 264 break; 265 } 266 } 267 268 void fill_label_funcs(void) 269 { 270 switch(label.layout) { 271 case LYT_MBR: 272 construct_mbr_label(); 273 break; 274 case LYT_GPT: 275 construct_gpt_label(); 270 construct_gpt_label(&label); 276 271 break; 277 272 default: 278 construct_none_label(); 273 label.layout = LYT_NONE; 274 construct_none_label(&label); 279 275 break; 280 276 } … … 283 279 void free_label(void) 284 280 { 285 /* 286 switch(label.layout) { 287 case LYT_MBR: 288 destroy_mbr_label(&label); 289 break; 290 case LYT_GPT: 291 destroy_gpt_label(&label); 292 break; 293 default: 294 break; 295 } 296 */ 297 298 label.destroy_label(&label.data); 281 label.destroy_label(&label); 299 282 } 300 283 301 284 int try_read(service_id_t dev_handle) 302 285 { 303 fill_label_funcs(); 304 printf("read_parts\n"); 305 return label.read_parts(dev_handle, &label.data); 306 } 307 308 int construct_none_label() 309 { 310 label.add_part = add_none_part; 311 label.delete_part = delete_none_part; 312 label.destroy_label = destroy_none_label; 313 label.new_label = new_none_label; 314 label.print_parts = print_none_parts; 315 label.read_parts = read_none_parts; 316 label.write_parts = write_none_parts; 317 label.extra_funcs = extra_none_funcs; 318 319 return EOK; 320 } 321 322 int construct_mbr_label() 323 { 324 label.add_part = add_mbr_part; 325 label.delete_part = delete_mbr_part; 326 label.destroy_label = destroy_mbr_label; 327 label.new_label = new_mbr_label; 328 label.print_parts = print_mbr_parts; 329 label.read_parts = read_mbr_parts; 330 label.write_parts = write_mbr_parts; 331 label.extra_funcs = extra_mbr_funcs; 332 333 return label.new_label(&label.data); 286 return label.read_parts(&label, dev_handle); 334 287 } 335 288 336 289 int try_read_mbr(service_id_t dev_handle) 337 290 { 338 label.layout = LYT_MBR;291 construct_label(LYT_MBR); 339 292 return try_read(dev_handle); 340 293 } 341 294 342 int construct_gpt_label()343 {344 label.add_part = add_gpt_part;345 label.delete_part = delete_gpt_part;346 label.new_label = new_gpt_label;347 label.print_parts = print_gpt_parts;348 label.read_parts = read_gpt_parts;349 label.write_parts = write_gpt_parts;350 label.extra_funcs = extra_gpt_funcs;351 352 return label.new_label(&label.data);353 }354 355 295 int try_read_gpt(service_id_t dev_handle) 356 296 { 357 label.layout = LYT_GPT;297 construct_label(LYT_GPT); 358 298 return try_read(dev_handle); 359 299 } 360 300 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 301 void set_alignment(tinput_t *in) 302 { 303 printf("Set alignment to sectors: "); 304 label.alignment = get_input_uint32(in); 305 printf("Alignment set to %u sectors.\n", label.alignment); 306 } 307 308 309 310 311 312 313 314 315 316
Note:
See TracChangeset
for help on using the changeset viewer.