Changes in uspace/app/bdsh/cmds/modules/mount/mount.c [2e1b9dc:e6cb880] in mainline
- File:
-
- 1 edited
-
uspace/app/bdsh/cmds/modules/mount/mount.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/cmds/modules/mount/mount.c
r2e1b9dc re6cb880 27 27 */ 28 28 29 #include <loc.h>30 29 #include <stdio.h> 31 30 #include <stdlib.h> 32 31 #include <vfs/vfs.h> 33 #include <adt/list.h>34 32 #include <errno.h> 35 33 #include <getopt.h> 36 #include <inttypes.h>37 34 #include "config.h" 38 35 #include "util.h" … … 46 43 static struct option const long_options[] = { 47 44 { "help", no_argument, 0, 'h' }, 48 { "instance", required_argument, 0, 'i' },49 45 { 0, 0, 0, 0 } 50 46 }; … … 55 51 { 56 52 static char helpfmt[] = 57 "Usage: %s <fstype> <mp> [dev][<moptions>]\n";53 "Usage: %s <fstype> <mp> <dev> [<moptions>]\n"; 58 54 if (level == HELP_SHORT) { 59 55 printf("'%s' mounts a file system.\n", cmdname); … … 65 61 } 66 62 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 109 63 /* Main entry point for mount, accepts an array of arguments */ 110 64 int cmd_mount(char **argv) … … 112 66 unsigned int argc; 113 67 const char *mopts = ""; 114 const char *dev = "";115 68 int rc, c, opt_ind; 116 unsigned int instance = 0;117 bool instance_set = false;118 char **t_argv;119 69 120 70 argc = cli_count_args(argv); 121 71 122 72 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); 124 74 switch (c) { 125 75 case 'h': 126 76 help_cmd_mount(HELP_LONG); 127 77 return CMD_SUCCESS; 128 case 'i':129 instance = (unsigned int) strtol(optarg, NULL, 10);130 instance_set = true;131 break;132 78 } 133 79 } 134 80 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)) { 142 82 printf("%s: invalid number of arguments. Try `mount --help'\n", 143 83 cmdname); 144 84 return CMD_FAILURE; 145 85 } 146 if (argc == 1) {147 print_mtab_list();148 return CMD_SUCCESS;149 }150 if (argc > 3)151 dev = t_argv[3];152 86 if (argc == 5) 153 mopts = t_argv[4];87 mopts = argv[4]; 154 88 155 rc = mount( t_argv[1], t_argv[2], dev, mopts, 0, instance);89 rc = mount(argv[1], argv[2], argv[3], mopts, 0); 156 90 if (rc != EOK) { 157 91 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); 159 93 return CMD_FAILURE; 160 94 }
Note:
See TracChangeset
for help on using the changeset viewer.
