9
0
Fork 0

dirname: add -V option to return only path related to the mountpoint

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
This commit is contained in:
Jean-Christophe PLAGNIOL-VILLARD 2012-08-17 01:32:07 +08:00
parent 0939b7c549
commit dccdc2ed88
1 changed files with 21 additions and 3 deletions

View File

@ -24,20 +24,38 @@
#include <command.h>
#include <libgen.h>
#include <environment.h>
#include <fs.h>
#include <getopt.h>
static int do_dirname(int argc, char *argv[])
{
if (argc != 3)
int opt;
int path_fs = 0;
int len = 0;
while ((opt = getopt(argc, argv, "V")) > 0) {
switch (opt) {
case 'V':
path_fs = 1;
break;
}
}
if (argc < optind + 2)
return COMMAND_ERROR_USAGE;
setenv(argv[2], dirname(argv[1]));
if (path_fs)
len = strlen(get_mounted_path(argv[optind]));
setenv(argv[optind + 1], dirname(argv[optind]) + len);
return 0;
}
BAREBOX_CMD_HELP_START(dirname)
BAREBOX_CMD_HELP_USAGE("dirname NAME DIRNAME\n")
BAREBOX_CMD_HELP_USAGE("dirname [-V] NAME DIRNAME\n")
BAREBOX_CMD_HELP_SHORT("strip last componext of NAME and store into $DIRNAME\n")
BAREBOX_CMD_HELP_SHORT("-V return the path relative to the mountpoint.\n")
BAREBOX_CMD_HELP_END
BAREBOX_CMD_START(dirname)