Changeset f0f8787 in mainline for uspace/app/vol/vol.c


Ignore:
Timestamp:
2018-10-04T14:53:29Z (6 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c5429fe
Parents:
1bb43d5
git-author:
Jiri Svoboda <jiri@…> (2018-10-03 21:51:40)
git-committer:
Jiri Svoboda <jiri@…> (2018-10-04 14:53:29)
Message:

Add vol insert subcommand to re-insert a previously ejected volume.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/vol/vol.c

    r1bb43d5 rf0f8787  
    4444#define NAME "vol"
    4545
    46 static char *volspec;
    47 
    4846typedef enum {
    4947        vcmd_eject,
     48        vcmd_insert,
    5049        vcmd_help,
    5150        vcmd_list,
     
    127126        if (rc != EOK) {
    128127                printf("Error ejecting volume.\n");
     128                goto out;
     129        }
     130
     131        rc = EOK;
     132out:
     133        vol_destroy(vol);
     134        return rc;
     135}
     136
     137static errno_t vol_cmd_insert(const char *volspec)
     138{
     139        vol_t *vol = NULL;
     140        service_id_t svc_id;
     141        errno_t rc;
     142
     143        rc = loc_service_get_id(volspec, &svc_id, 0);
     144        if (rc != EOK) {
     145                printf("Error looking up service '%s'.\n", volspec);
     146                goto out;
     147        }
     148
     149        rc = vol_create(&vol);
     150        if (rc != EOK) {
     151                printf("Error contacting volume service.\n");
     152                goto out;
     153        }
     154
     155        rc = vol_part_insert(vol, svc_id);
     156        if (rc != EOK) {
     157                printf("Error inserting volume.\n");
    129158                goto out;
    130159        }
     
    215244        printf("  %s                List volumes\n", NAME);
    216245        printf("  %s -h             Print help\n", NAME);
    217         printf("  %s eject <volume> Eject volume\n", NAME);
     246        printf("  %s eject <mp>     Eject volume mounted in a directory\n", NAME);
     247        printf("  %s insert <svc>   Insert volume based on service identifier\n", NAME);
    218248}
    219249
     
    221251{
    222252        char *cmd;
     253        char *volspec;
    223254        vol_cmd_t vcmd;
    224255        int i;
     
    240271                        }
    241272                        volspec = argv[i++];
     273                } else if (str_cmp(cmd, "insert") == 0) {
     274                        vcmd = vcmd_insert;
     275                        if (argc <= i) {
     276                                printf("Parameter missing.\n");
     277                                goto syntax_error;
     278                        }
     279                        volspec = argv[i++];
    242280                } else {
    243281                        printf("Invalid sub-command '%s'.\n", cmd);
     
    254292        case vcmd_eject:
    255293                rc = vol_cmd_eject(volspec);
     294                break;
     295        case vcmd_insert:
     296                rc = vol_cmd_insert(volspec);
    256297                break;
    257298        case vcmd_help:
Note: See TracChangeset for help on using the changeset viewer.