Changeset a2aa81cb in mainline for uspace/app/hdisk/func_mbr.c


Ignore:
Timestamp:
2013-05-30T11:52:31Z (11 years ago)
Author:
Dominik Taborsky (AT DOT) <brembyseznamcz>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
44c4886, 469739f
Parents:
622a50b
Message:

API changes, bug fixing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/hdisk/func_mbr.c

    r622a50b ra2aa81cb  
    4141#include "input.h"
    4242
    43 static int set_mbr_partition(tinput_t * in, mbr_part_t * p);
    44 
    45 
    46 int add_mbr_part(tinput_t * in, union table_data * data)
     43static int set_mbr_partition(tinput_t *in, mbr_part_t *p);
     44
     45int add_mbr_part(tinput_t *in, union label_data *data)
    4746{
    4847        int rc;
    4948       
    50         mbr_part_t * part = mbr_alloc_partition();
     49        mbr_part_t *part = mbr_alloc_partition();
    5150
    5251        set_mbr_partition(in, part);
    5352
    54         rc = mbr_add_partition(data->mbr.parts, part);
     53        rc = mbr_add_partition(data->mbr, part);
    5554        if (rc != EOK) {
    5655                printf("Error adding partition.\n");
    5756        }
    5857       
    59        
    60         return rc;
    61 }
    62 
    63 int delete_mbr_part(tinput_t * in, union table_data * data)
     58        return EOK;
     59}
     60
     61int delete_mbr_part(tinput_t *in, union label_data *data)
    6462{
    6563        int rc;
     
    7270                return errno;
    7371       
    74         rc = mbr_remove_partition(data->mbr.parts, idx);
     72        rc = mbr_remove_partition(data->mbr, idx);
    7573        if(rc != EOK) {
    7674                printf("Error: something.\n");
     
    8078}
    8179
    82 int new_mbr_table(tinput_t * in, union table_data * data)
    83 {
    84         data->mbr.mbr = mbr_alloc_mbr();
    85         data->mbr.parts = mbr_alloc_partitions();
    86         return EOK;
     80int destroy_mbr_label(union label_data *data)
     81{
     82        mbr_free_label(data->mbr);
     83        return EOK;
     84}
     85
     86int new_mbr_label(union label_data *data)
     87{
     88        data->mbr = mbr_alloc_label();
     89        if (data->mbr == NULL)
     90                return ENOMEM;
     91        else
     92                return EOK;
    8793}
    8894
    8995/** Print current partition scheme */
    90 int print_mbr_parts(union table_data * data)
     96int print_mbr_parts(union label_data *data)
    9197{
    9298        int num = 0;
     
    96102        printf("\t\t%10s  %10s %10s %10s %7s\n", "Bootable:", "Start:", "End:", "Length:", "Type:");
    97103       
    98         mbr_part_t * it;
    99         mbr_part_foreach(data->mbr.parts, it) {
     104        mbr_part_t *it;
     105        mbr_part_foreach(data->mbr->parts, it) {
    100106                if (it->type == PT_UNUSED)
    101107                        continue;
     
    117123}
    118124
    119 int write_mbr_parts(service_id_t dev_handle, union table_data * data)
    120 {
    121         int rc = mbr_write_partitions(data->mbr.parts, data->mbr.mbr, dev_handle);
     125int read_mbr_parts(service_id_t dev_handle, union label_data *data)
     126{
     127        int rc;
     128        printf("mbr\n");
     129        rc = mbr_read_mbr(data->mbr, dev_handle);
     130        if (rc != EOK)
     131                return rc;
     132        printf("ismbr\n");
     133        if (!mbr_is_mbr(data->mbr))
     134                return EINVAL;
     135        printf("parts\n");
     136        rc = mbr_read_partitions(data->mbr);
     137        if (rc != EOK)
     138                return rc;
     139        printf("end\n");
     140        return EOK;
     141}
     142
     143int write_mbr_parts(service_id_t dev_handle, union label_data *data)
     144{
     145        int rc = mbr_write_partitions(data->mbr, dev_handle);
    122146        if (rc != EOK) {
    123147                printf("Error occured during writing: ERR: %d: %s\n", rc, str_error(rc));
     
    127151}
    128152
    129 int extra_mbr_funcs(tinput_t * in, service_id_t dev_handle, union table_data * data)
     153int extra_mbr_funcs(tinput_t *in, service_id_t dev_handle, union label_data *data)
    130154{
    131155        printf("Not implemented.\n");
     
    133157}
    134158
    135 static int set_mbr_partition(tinput_t * in, mbr_part_t * p)
     159static int set_mbr_partition(tinput_t *in, mbr_part_t *p)
    136160{
    137161        int c;
     
    159183                return errno;
    160184
    161         ///TODO: there can only be one bootable partition; let's do it just like fdisk
     185        ///TODO: there can only be one boolabel partition; let's do it just like fdisk
    162186        printf("Bootable? (y/n): ");
    163187        c = getchar();
Note: See TracChangeset for help on using the changeset viewer.