xref: /netbsd-src/external/cddl/osnet/lib/libzfs/deviceid.c (revision d91f98a8715141154279122ae81737cb65179572)
1*d91f98a8Spgoyette /*	$NetBSD: deviceid.c,v 1.5 2019/01/27 02:08:34 pgoyette Exp $	*/
2fc8ec0b8Shaad 
3fc8ec0b8Shaad /*-
4fc8ec0b8Shaad  * Copyright (c) 2009 The NetBSD Foundation, Inc.
5fc8ec0b8Shaad  * All rights reserved.
6fc8ec0b8Shaad  *
7fc8ec0b8Shaad  * This code is derived from software contributed to The NetBSD Foundation
8fc8ec0b8Shaad  * by Andrew Doran.
9fc8ec0b8Shaad  *
10fc8ec0b8Shaad  * Redistribution and use in source and binary forms, with or without
11fc8ec0b8Shaad  * modification, are permitted provided that the following conditions
12fc8ec0b8Shaad  * are met:
13fc8ec0b8Shaad  * 1. Redistributions of source code must retain the above copyright
14fc8ec0b8Shaad  *    notice, this list of conditions and the following disclaimer.
15fc8ec0b8Shaad  * 2. Redistributions in binary form must reproduce the above copyright
16fc8ec0b8Shaad  *    notice, this list of conditions and the following disclaimer in the
17fc8ec0b8Shaad  *    documentation and/or other materials provided with the distribution.
18fc8ec0b8Shaad  *
19fc8ec0b8Shaad  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20fc8ec0b8Shaad  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21fc8ec0b8Shaad  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22fc8ec0b8Shaad  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23fc8ec0b8Shaad  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24fc8ec0b8Shaad  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25fc8ec0b8Shaad  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26fc8ec0b8Shaad  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27fc8ec0b8Shaad  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28fc8ec0b8Shaad  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29fc8ec0b8Shaad  * POSSIBILITY OF SUCH DAMAGE.
30fc8ec0b8Shaad  */
31fc8ec0b8Shaad 
32fc8ec0b8Shaad /*-
33fc8ec0b8Shaad  * Copyright (c) 2007 Pawel Jakub Dawidek <pjd@FreeBSD.org>
34fc8ec0b8Shaad  * All rights reserved.
35fc8ec0b8Shaad  *
36fc8ec0b8Shaad  * Redistribution and use in source and binary forms, with or without
37fc8ec0b8Shaad  * modification, are permitted provided that the following conditions
38fc8ec0b8Shaad  * are met:
39fc8ec0b8Shaad  * 1. Redistributions of source code must retain the above copyright
40fc8ec0b8Shaad  *    notice, this list of conditions and the following disclaimer.
41fc8ec0b8Shaad  * 2. Redistributions in binary form must reproduce the above copyright
42fc8ec0b8Shaad  *    notice, this list of conditions and the following disclaimer in the
43fc8ec0b8Shaad  *    documentation and/or other materials provided with the distribution.
44fc8ec0b8Shaad  *
45fc8ec0b8Shaad  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
46fc8ec0b8Shaad  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
47fc8ec0b8Shaad  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
48fc8ec0b8Shaad  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
49fc8ec0b8Shaad  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
50fc8ec0b8Shaad  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
51fc8ec0b8Shaad  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
52fc8ec0b8Shaad  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
53fc8ec0b8Shaad  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
54fc8ec0b8Shaad  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
55fc8ec0b8Shaad  * SUCH DAMAGE.
56fc8ec0b8Shaad  */
57fc8ec0b8Shaad 
58fc8ec0b8Shaad #include <sys/cdefs.h>
59ba2539a9Schs /* __FBSDID("$FreeBSD: head/cddl/compat/opensolaris/misc/deviceid.c 238112 2012-07-04 17:36:26Z pjd $"); */
60*d91f98a8Spgoyette __RCSID("$NetBSD: deviceid.c,v 1.5 2019/01/27 02:08:34 pgoyette Exp $");
61fc8ec0b8Shaad 
62fc8ec0b8Shaad #include <sys/param.h>
63fc8ec0b8Shaad #include <sys/ioctl.h>
64fc8ec0b8Shaad #include <stdio.h>
65fc8ec0b8Shaad #include <unistd.h>
66fc8ec0b8Shaad #include <string.h>
67fc8ec0b8Shaad #include <errno.h>
68fc8ec0b8Shaad #include <devid.h>
69fc8ec0b8Shaad #include <err.h>
70fc8ec0b8Shaad 
71fc8ec0b8Shaad int
devid_str_decode(char * devidstr,ddi_devid_t * retdevid,char ** retminor_name)72fc8ec0b8Shaad devid_str_decode(char *devidstr, ddi_devid_t *retdevid, char **retminor_name)
73fc8ec0b8Shaad {
74fc8ec0b8Shaad 
75fc8ec0b8Shaad 	if (strlcpy(retdevid->devid, devidstr, sizeof(retdevid->devid)) >=
76fc8ec0b8Shaad 	    sizeof(retdevid->devid)) {
77fc8ec0b8Shaad 		return (EINVAL);
78fc8ec0b8Shaad 	}
79fc8ec0b8Shaad 	*retminor_name = strdup("");
80ffd84123Schristos 	if (*retminor_name == NULL)
81fc8ec0b8Shaad 		return (ENOMEM);
82fc8ec0b8Shaad 	return (0);
83fc8ec0b8Shaad }
84fc8ec0b8Shaad 
85fc8ec0b8Shaad int
devid_deviceid_to_nmlist(const char * search_path,ddi_devid_t devid,const char * minor_name,devid_nmlist_t ** retlist)863391c5f1Schristos devid_deviceid_to_nmlist(const char *search_path, ddi_devid_t devid,
873391c5f1Schristos     const char *minor_name, devid_nmlist_t **retlist)
88fc8ec0b8Shaad {
89fc8ec0b8Shaad 
90fc8ec0b8Shaad 	errx(1, "XXXNETBSD devid_deviceid_to_nmlist");
91fc8ec0b8Shaad }
92fc8ec0b8Shaad 
93fc8ec0b8Shaad void
devid_str_free(char * str)94fc8ec0b8Shaad devid_str_free(char *str)
95fc8ec0b8Shaad {
96fc8ec0b8Shaad 
97fc8ec0b8Shaad 	free(str);
98fc8ec0b8Shaad }
99fc8ec0b8Shaad 
100fc8ec0b8Shaad void
devid_free(ddi_devid_t devid)101fc8ec0b8Shaad devid_free(ddi_devid_t devid)
102fc8ec0b8Shaad {
103fc8ec0b8Shaad 	/* Do nothing. */
104fc8ec0b8Shaad }
105fc8ec0b8Shaad 
106fc8ec0b8Shaad void
devid_free_nmlist(devid_nmlist_t * list)107fc8ec0b8Shaad devid_free_nmlist(devid_nmlist_t *list)
108fc8ec0b8Shaad {
109fc8ec0b8Shaad 
110fc8ec0b8Shaad 	free(list);
111fc8ec0b8Shaad }
112fc8ec0b8Shaad 
113fc8ec0b8Shaad int
devid_get(int fd,ddi_devid_t * retdevid)114fc8ec0b8Shaad devid_get(int fd, ddi_devid_t *retdevid)
115fc8ec0b8Shaad {
116fc8ec0b8Shaad 	return (ENOENT);
117fc8ec0b8Shaad }
118fc8ec0b8Shaad 
119fc8ec0b8Shaad int
devid_get_minor_name(int fd,char ** retminor_name)120fc8ec0b8Shaad devid_get_minor_name(int fd, char **retminor_name)
121fc8ec0b8Shaad {
122fc8ec0b8Shaad 
123fc8ec0b8Shaad 	*retminor_name = strdup("");
124fc8ec0b8Shaad 	if (*retminor_name == NULL)
125fc8ec0b8Shaad 		return (ENOMEM);
126fc8ec0b8Shaad 	return (0);
127fc8ec0b8Shaad }
128fc8ec0b8Shaad 
129fc8ec0b8Shaad char *
devid_str_encode(ddi_devid_t devid,char * minor_name)130fc8ec0b8Shaad devid_str_encode(ddi_devid_t devid, char *minor_name)
131fc8ec0b8Shaad {
132fc8ec0b8Shaad 
133fc8ec0b8Shaad 	return (strdup(devid.devid));
134fc8ec0b8Shaad }
135