<inttypes.h>: Small sync with FreeBSD.
[dragonfly.git] / sbin / getdevpath / getdevpath.c
blobfcbac2eb1c92a0b49cc34e1b6e4f7e929ef1ed92
1 /*
2 * Copyright (c) 2009 The DragonFly Project. All rights reserved.
4 * This code is derived from software contributed to The DragonFly Project
5 * by Matthew Dillon <dillon@backplane.com>
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
16 * distribution.
17 * 3. Neither the name of The DragonFly Project nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific, prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
31 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
35 #include <sys/types.h>
36 #include <unistd.h>
37 #include <stdio.h>
38 #include <stdlib.h>
39 #include <fstab.h>
41 static void usage(void);
43 int
44 main(int ac, char **av)
46 int flags = 0;
47 int i;
48 int ch;
49 int quietopt = 0;
50 int error;
51 char *path;
53 while ((ch = getopt(ac, av, "r")) != -1) {
54 switch(ch) {
55 case 'r':
56 flags |= GETDEVPATH_RAWDEV;
57 break;
58 case 'q':
59 quietopt = 1;
60 break;
61 default:
62 usage();
63 /* NOT REACHED */
64 break;
67 ac -= optind;
68 av += optind;
69 error = 0;
70 for (i = 0; i < ac; ++i) {
71 path = getdevpath(av[i], flags);
72 if (quietopt) {
73 if (path) {
74 printf("%s\n", path);
75 } else {
76 error = 1;
77 printf("\n");
79 } else {
80 if (path) {
81 printf("%-20s %s\n", av[i], path);
82 } else {
83 printf("%-20s <unknown>\n", av[i]);
84 error = 1;
88 exit (error);
91 static void
92 usage(void)
94 fprintf(stderr, "usage: getdevpath [-qr] devname ...\n");
95 exit(1);