Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/bdsh/cmds/modules/mount/mount.c

    r2e1b9dc re6cb880  
    2727 */
    2828
    29 #include <loc.h>
    3029#include <stdio.h>
    3130#include <stdlib.h>
    3231#include <vfs/vfs.h>
    33 #include <adt/list.h>
    3432#include <errno.h>
    3533#include <getopt.h>
    36 #include <inttypes.h>
    3734#include "config.h"
    3835#include "util.h"
     
    4643static struct option const long_options[] = {
    4744        { "help", no_argument, 0, 'h' },
    48         { "instance", required_argument, 0, 'i' },
    4945        { 0, 0, 0, 0 }
    5046};
     
    5551{
    5652        static char helpfmt[] =
    57             "Usage:  %s <fstype> <mp> [dev] [<moptions>]\n";
     53            "Usage:  %s <fstype> <mp> <dev> [<moptions>]\n";
    5854        if (level == HELP_SHORT) {
    5955                printf("'%s' mounts a file system.\n", cmdname);
     
    6561}
    6662
    67 static void print_mtab_list(void)
    68 {
    69         LIST_INITIALIZE(mtab_list);
    70         mtab_ent_t *old_ent = NULL;
    71         char *svc_name;
    72         int rc;
    73 
    74         get_mtab_list(&mtab_list);
    75 
    76         list_foreach(mtab_list, cur) {
    77                 mtab_ent_t *mtab_ent = list_get_instance(cur, mtab_ent_t,
    78                     link);
    79 
    80                 if (old_ent)
    81                         free(old_ent);
    82 
    83                 old_ent = mtab_ent;
    84 
    85                 printf("%s", mtab_ent->fs_name);
    86                 if (mtab_ent->instance)
    87                         printf("/%d", mtab_ent->instance);
    88 
    89                 printf(" %s", mtab_ent->mp);
    90 
    91                 rc = loc_service_get_name(mtab_ent->service_id, &svc_name);
    92                 if (rc == EOK) {
    93                         printf(" %s", svc_name);
    94                         free(svc_name);
    95                 } else {
    96                         printf(" (%" PRIun ")", mtab_ent->service_id);
    97                 }
    98 
    99                 if (str_size(mtab_ent->opts) > 0)
    100                         printf(" (%s)", mtab_ent->opts);
    101 
    102                 putchar('\n');
    103         }
    104 
    105         if (old_ent)
    106                 free(old_ent);
    107 }
    108 
    10963/* Main entry point for mount, accepts an array of arguments */
    11064int cmd_mount(char **argv)
     
    11266        unsigned int argc;
    11367        const char *mopts = "";
    114         const char *dev = "";
    11568        int rc, c, opt_ind;
    116         unsigned int instance = 0;
    117         bool instance_set = false;
    118         char **t_argv;
    11969
    12070        argc = cli_count_args(argv);
    12171
    12272        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    123                 c = getopt_long(argc, argv, "i:h", long_options, &opt_ind);
     73                c = getopt_long(argc, argv, "h", long_options, &opt_ind);
    12474                switch (c) {
    12575                case 'h':
    12676                        help_cmd_mount(HELP_LONG);
    12777                        return CMD_SUCCESS;
    128                 case 'i':
    129                         instance = (unsigned int) strtol(optarg, NULL, 10);
    130                         instance_set = true;
    131                         break;
    13278                }
    13379        }
    13480
    135         if (instance_set) {
    136                 argc -= 2;
    137                 t_argv = &argv[2];
    138         } else
    139                 t_argv = &argv[0];
    140 
    141         if ((argc == 2) || (argc > 5)) {
     81        if ((argc < 4) || (argc > 5)) {
    14282                printf("%s: invalid number of arguments. Try `mount --help'\n",
    14383                    cmdname);
    14484                return CMD_FAILURE;
    14585        }
    146         if (argc == 1) {
    147                 print_mtab_list();
    148                 return CMD_SUCCESS;
    149         }
    150         if (argc > 3)
    151                 dev = t_argv[3];
    15286        if (argc == 5)
    153                 mopts = t_argv[4];
     87                mopts = argv[4];
    15488
    155         rc = mount(t_argv[1], t_argv[2], dev, mopts, 0, instance);
     89        rc = mount(argv[1], argv[2], argv[3], mopts, 0);
    15690        if (rc != EOK) {
    15791                printf("Unable to mount %s filesystem to %s on %s (rc=%d)\n",
    158                     t_argv[1], t_argv[2], t_argv[3], rc);
     92                    argv[1], argv[2], argv[3], rc);
    15993                return CMD_FAILURE;
    16094        }
Note: See TracChangeset for help on using the changeset viewer.