commit fad61ad
illiliti
·
2021-10-05 00:39:44 +0000 UTC
parent 954ac51
launch: Use getdevmajor for NetBSD https://man.netbsd.org/getdevmajor.3
1 files changed,
+6,
-42
+6,
-42
1@@ -20,54 +20,18 @@
2 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3 * SOFTWARE.
4 */
5-#include <sys/types.h>
6-#include <sys/sysctl.h>
7-#include <stdio.h>
8+#include <sys/stat.h>
9 #include <stdlib.h>
10-#include <string.h>
11 #include "devmajor.h"
12
13-static int
14-sysctl_devmajor(const char *devname)
15-{
16- static int name[] = { CTL_KERN, KERN_DRIVERS };
17- struct kinfo_drivers *drivers = NULL;
18- size_t i, len, newlen;
19- int major;
20-
21- if (sysctl(name, 2, NULL, &len, NULL, 0)) {
22- perror("sysctl");
23- goto fail;
24- }
25- if ((drivers = calloc(sizeof(struct kinfo_drivers), len)) == NULL) {
26- perror("calloc");
27- goto fail;
28- }
29- newlen = len;
30- if (sysctl(name, 2, drivers, &newlen, NULL, 0)) {
31- perror("sysctl");
32- goto fail;
33- }
34- for (i = 0; i < len; ++i) {
35- if (strcmp(devname, drivers[i].d_name) == 0) {
36- major = drivers[i].d_cmajor;
37- free(drivers);
38- return major;
39- }
40- }
41-fail:
42- free(drivers);
43- return -1;
44-}
45-
46 bool
47 device_is_input(dev_t rdev)
48 {
49- if (major(rdev) == sysctl_devmajor("wskbd"))
50+ if (major(rdev) == getdevmajor("wskbd", S_IFCHR))
51 return true;
52- if (major(rdev) == sysctl_devmajor("wsmouse"))
53+ if (major(rdev) == getdevmajor("wsmouse", S_IFCHR))
54 return true;
55- if (major(rdev) == sysctl_devmajor("wsmux"))
56+ if (major(rdev) == getdevmajor("wsmux", S_IFCHR))
57 return true;
58 return false;
59 }
60@@ -75,12 +39,12 @@ device_is_input(dev_t rdev)
61 bool
62 device_is_tty(dev_t rdev)
63 {
64- return major(rdev) == sysctl_devmajor("wsdisplay");
65+ return major(rdev) == getdevmajor("wsdisplay", S_IFCHR);
66 }
67
68 bool
69 device_is_drm(dev_t rdev)
70 {
71- return major(rdev) == sysctl_devmajor("drm");
72+ return major(rdev) == getdevmajor("drm", S_IFCHR);
73 }
74