blob: f96a455dcb71b042d318925eb899e76d85eecbc0 [file] [log] [blame]
/*
* dfile.c - DEC OSF/1, Digital UNIX, Tru64 UNIX file processing functions for
* lsof
*/
/*
* Copyright 1994 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*
* Written by Victor A. Abell
*
* This software is not subject to any license of the American Telephone
* and Telegraph Company or the Regents of the University of California.
*
* Permission is granted to anyone to use this software for any purpose on
* any computer system, and to alter it and redistribute it freely, subject
* to the following restrictions:
*
* 1. Neither the authors nor Purdue University are responsible for any
* consequences of the use of this software.
*
* 2. The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Credit to the authors and Purdue
* University must appear in documentation and sources.
*
* 3. Altered versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 4. This notice may not be removed or altered.
*/
#ifndef lint
static char copyright[] =
"@(#) Copyright 1994 Purdue Research Foundation.\nAll rights reserved.\n";
static char *rcsid = "$Id: dfile.c,v 1.12 2001/08/14 12:40:12 abe Exp $";
#endif
#include "lsof.h"
#if defined(HASIPv6)
/*
* gethostbyname2() -- an RFC2133-compatible get-host-by-name-two function
* to get AF_INET and AF_INET6 addresses from host names,
* using the RFC2553-compatible getipnodebyname() function
*/
extern struct hostent *
gethostbyname2(nm, prot)
char *nm; /* host name */
int prot; /* protocol -- AF_INET or AF_INET6 */
{
int err;
static struct hostent *hep = (struct hostent *)NULL;
if (hep)
(void) freehostent(hep);
hep = getipnodebyname(nm, prot, 0, &err);
return(hep);
}
#endif /* defined(HASIPv6) */
#if defined(HASPRIVNMCACHE)
/*
* print_advfs_path() - print an ADVFS file path
*
* return: 1 if path printed
*
* This code was provided by Dean Brock <brock@cs.unca.edu>.
*
* This function is called by the name HASPRIVNMCACHE from printname().
*/
int
print_advfs_path(lf)
struct lfile *lf; /* file whose name is to be printed */
{
char buf[MAXPATHLEN+1];
mlBfTagT t2pb;
/*
* Print any non-NULL path returned by tag_to_path() for ADVFS files that
* have sequence and inode numbers.
*/
if (!lf->advfs_seq_stat || lf->inp_ty != 1 || !lf->fsdir || !*lf->fsdir)
return(0);
t2pb.ml_ino = (int)lf->inode;
t2pb.ml_seq = lf->advfs_seq;
if (tag_to_path(lf->fsdir, t2pb, MAXPATHLEN, buf) || !*buf)
return(0);
buf[MAXPATHLEN] = '\0';
safestrprt((buf[0] == '/' && buf[1] == '/') ? &buf[1] : buf, stdout, 0);
return(1);
}
#endif /* defined(HASPRIVNMCACHE) */
/*
* print_dev() - print device
*/
char *
print_dev(lf, dev)
struct lfile *lf; /* file whose device is to be printed */
dev_t *dev; /* device to be printed */
{
static char buf[128];
if (GET_MIN_DEV(*dev) > 9999999)
(void) snpf(buf, sizeof(buf), "%d,%#x", GET_MAJ_DEV(*dev),
GET_MIN_DEV(*dev));
else
(void) snpf(buf, sizeof(buf), "%d,%d", GET_MAJ_DEV(*dev),
GET_MIN_DEV(*dev));
return(buf);
}