summaryrefslogtreecommitdiff
path: root/util-linux/findfs.c
blob: e1ec41f1b8117383aa6ec30a9788095f19fb36ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/* vi: set sw=4 ts=4: */
/*
 * Support functions for mounting devices by label/uuid
 *
 * Copyright (C) 2006 by Jason Schoon <floydpink@gmail.com>
 * Some portions cribbed from e2fsprogs, util-linux, dosfstools
 *
 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
 */

#include "libbb.h"
#include "volume_id.h"

int findfs_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int findfs_main(int argc UNUSED_PARAM, char **argv)
{
	char *dev = *++argv;

	if (!dev)
		bb_show_usage();

	if (strncmp(dev, "/dev/", 5) == 0) {
		/* Just pass any /dev/xxx name right through.
		 * This might aid in some scripts being able
		 * to call this unconditionally */
		dev = NULL;
	} else {
		/* Otherwise, handle LABEL=xxx and UUID=xxx,
		 * fail on anything else */
		if (!resolve_mount_spec(argv))
			bb_show_usage();
	}

	if (*argv != dev) {
		puts(*argv);
		return 0;
	}
	return 1;
}