busybox/util-linux/findfs.c
<<
>>
Prefs
   1/* vi: set sw=4 ts=4: */
   2/*
   3 * Support functions for mounting devices by label/uuid
   4 *
   5 * Copyright (C) 2006 by Jason Schoon <floydpink@gmail.com>
   6 * Some portions cribbed from e2fsprogs, util-linux, dosfstools
   7 *
   8 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
   9 */
  10//config:config FINDFS
  11//config:       bool "findfs (12 kb)"
  12//config:       default y
  13//config:       select VOLUMEID
  14//config:       help
  15//config:       Prints the name of a filesystem with given label or UUID.
  16
  17/* Benefits from suid root: better access to /dev/BLOCKDEVs: */
  18//applet:IF_FINDFS(APPLET(findfs, BB_DIR_SBIN, BB_SUID_MAYBE))
  19
  20//kbuild:lib-$(CONFIG_FINDFS) += findfs.o
  21
  22//usage:#define findfs_trivial_usage
  23//usage:       "LABEL=label or UUID=uuid"
  24//usage:#define findfs_full_usage "\n\n"
  25//usage:       "Find a filesystem device based on a label or UUID"
  26//usage:
  27//usage:#define findfs_example_usage
  28//usage:       "$ findfs LABEL=MyDevice"
  29
  30#include "libbb.h"
  31#include "volume_id.h"
  32
  33int findfs_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
  34int findfs_main(int argc UNUSED_PARAM, char **argv)
  35{
  36        char *dev = *++argv;
  37
  38        if (!dev)
  39                bb_show_usage();
  40
  41        if (is_prefixed_with(dev, "/dev/")) {
  42                /* Just pass any /dev/xxx name right through.
  43                 * This might aid in some scripts being able
  44                 * to call this unconditionally */
  45                dev = NULL;
  46        } else {
  47                /* Otherwise, handle LABEL=xxx and UUID=xxx,
  48                 * fail on anything else */
  49                if (!resolve_mount_spec(argv))
  50                        bb_show_usage();
  51        }
  52
  53        if (*argv != dev) {
  54                puts(*argv);
  55                return 0;
  56        }
  57        return 1;
  58}
  59