diff options
author | 2009-06-20 19:50:05 +0000 | |
---|---|---|
committer | 2009-06-20 19:50:05 +0000 | |
commit | de71b0ce11446e2b87245c49edb8994a5564ad3f (patch) | |
tree | 8facc651bbae4081d4eb0908afe6f7e299768cd3 /lib/libkvm/kvm_cd9660.c | |
parent | sync (diff) | |
download | wireguard-openbsd-de71b0ce11446e2b87245c49edb8994a5564ad3f.tar.xz wireguard-openbsd-de71b0ce11446e2b87245c49edb8994a5564ad3f.zip |
Split out cd9660 bits into their own .c file to avoid #define collisions
with ufs and add also udf support. OK miod@
Diffstat (limited to 'lib/libkvm/kvm_cd9660.c')
-rw-r--r-- | lib/libkvm/kvm_cd9660.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/libkvm/kvm_cd9660.c b/lib/libkvm/kvm_cd9660.c new file mode 100644 index 00000000000..e61079e67d7 --- /dev/null +++ b/lib/libkvm/kvm_cd9660.c @@ -0,0 +1,60 @@ +/* $OpenBSD: kvm_cd9660.c,v 1.1 2009/06/20 19:50:05 millert Exp $ */ + +/* + * Copyright (c) 2009 Todd C. Miller <Todd.Miller@courtesan.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char *rcsid = "$OpenBSD: kvm_cd9660.c,v 1.1 2009/06/20 19:50:05 millert Exp $"; +#endif /* LIBC_SCCS and not lint */ + +#include <sys/param.h> +#include <sys/ucred.h> +#define _KERNEL +#include <sys/mount.h> +#undef _KERNEL +#include <sys/vnode.h> +#include <sys/sysctl.h> + +#include <isofs/cd9660/iso.h> +#include <isofs/cd9660/cd9660_extern.h> +#include <isofs/cd9660/cd9660_node.h> + +#include <limits.h> +#include <kvm.h> +#include <db.h> + +#include "kvm_private.h" + +#define KREAD(kd, addr, obj) \ + (kvm_read(kd, addr, obj, sizeof(*obj)) != sizeof(*obj)) + +int +_kvm_stat_cd9660(kvm_t *kd, struct kinfo_file2 *kf, struct vnode *vp) +{ + struct iso_node inode; + + if (KREAD(kd, (u_long)VTOI(vp), &inode)) { + _kvm_err(kd, kd->program, "can't read inode at %p", VTOI(vp)); + return (-1); + } + kf->va_fsid = inode.i_dev & 0xffff; + kf->va_fileid = (long)inode.i_number; + kf->va_mode = inode.inode.iso_mode; + kf->va_size = inode.i_size; + kf->va_rdev = inode.i_dev; + + return (0); +} |