Commit | Line | Data |
---|---|---|
25594745 MT |
1 | /* |
2 | * Copyright (c) 1989 The Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
27c71911 | 5 | * %sccs.include.redist.c% |
25594745 MT |
6 | */ |
7 | ||
8 | #if defined(LIBC_SCCS) && !defined(lint) | |
c9ccd93d | 9 | static char sccsid[] = "@(#)devname.c 5.10 (Berkeley) %G%"; |
25594745 MT |
10 | #endif /* LIBC_SCCS and not lint */ |
11 | ||
89962e19 | 12 | #include <sys/types.h> |
fd57c467 KB |
13 | #include <fcntl.h> |
14 | #include <ndbm.h> | |
b5bb6e20 | 15 | #include <stdio.h> |
c9ccd93d | 16 | #include <paths.h> |
89962e19 MT |
17 | |
18 | char * | |
fd57c467 | 19 | devname(dev) |
89962e19 MT |
20 | dev_t dev; |
21 | { | |
fd57c467 KB |
22 | static DBM *db; |
23 | static int failure; | |
24 | datum dp, key; | |
25 | ||
26 | if (!db && !(db = dbm_open(_PATH_DEVDB, O_RDONLY, 0))) { | |
27 | (void)fprintf(stderr, | |
28 | "ps: no device database %s\n", _PATH_DEVDB); | |
29 | failure = 1; | |
89962e19 | 30 | } |
fd57c467 KB |
31 | if (failure) |
32 | return("??"); | |
89962e19 | 33 | |
fd57c467 KB |
34 | key.dptr = (char *)&dev; |
35 | key.dsize = sizeof(dev); | |
36 | dp = dbm_fetch(db, key); | |
37 | return(dp.dptr ? dp.dptr : "??"); | |
89962e19 | 38 | } |