use the _PATH_DEVDB database if available
[unix-history] / usr / src / lib / libc / gen / devname.c
CommitLineData
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 9static 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
18char *
fd57c467 19devname(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}