/* * cvfs.c -- completevfs() function for lsof library */ /* * Copyright 1997 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. */ /* * The caller must define CVFS_DEVSAVE to have the device number moved * from the mounts entry to the local vfs structure. * * The caller must define CVFS_NLKSAVE to have the link count moved from * the mounts entry to the local vfs structure. * * The caller must define CVFS_SZSAVE to have the size moved from the * mounts entry to the local vfs structure. */ #include "../machine.h" #if defined(USE_LIB_COMPLETEVFS) # if !defined(lint) static char copyright[] = "@(#) Copyright 1997 Purdue Research Foundation.\nAll rights reserved.\n"; static char *rcsid = "$Id: cvfs.c,v 1.6 2008/10/21 16:12:36 abe Exp $"; # endif /* !defined(lint) */ #include "../lsof.h" /* * completevfs() - complete local vfs structure */ void completevfs(vfs, dev) struct l_vfs *vfs; /* local vfs structure pointer */ dev_t *dev; /* device */ { struct mounts *mp; /* * If only Internet socket files are selected, don't bother completing the * local vfs structure. */ if (Selinet) return; /* * Search for a match on device number. */ for (mp = readmnt(); mp; mp = mp->next) { if (mp->dev == *dev) { # if defined(CVFS_DEVSAVE) vfs->dev = mp->dev; # endif /* defined(CVFS_DEVSAVE) */ # if defined(CVFS_NLKSAVE) vfs->nlink = mp->nlink; # endif /* defined(CVFS_NLKSAVE) */ # if defined(CVFS_SZSAVE) vfs->size = mp->size; # endif /* defined(CVFS_SZSAVE) */ vfs->dir = mp->dir; vfs->fsname = mp->fsname; # if defined(HASFSINO) vfs->fs_ino = mp->inode; # endif /* defined(HASFSINO) */ # if defined(HASMNTSTAT) vfs->mnt_stat = mp->stat; # endif /* defined(HASMNTSTAT) */ return; } } } #else /* !defined(USE_LIB_COMPLETEVFS) */ char cvfs_d1[] = "d"; char *cvfs_d2 = cvfs_d1; #endif /* defined(USE_LIB_COMPLETEVFS) */