diff options
Diffstat (limited to 'contrib/ipfilter/kmem.c')
-rw-r--r-- | contrib/ipfilter/kmem.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/contrib/ipfilter/kmem.c b/contrib/ipfilter/kmem.c index eec8b3c..254bbf9 100644 --- a/contrib/ipfilter/kmem.c +++ b/contrib/ipfilter/kmem.c @@ -46,18 +46,13 @@ #if !defined(lint) static const char sccsid[] = "@(#)kmem.c 1.4 1/12/96 (C) 1992 Darren Reed"; -static const char rcsid[] = "@(#)$Id: kmem.c,v 2.2.2.12 2002/03/06 09:44:16 darrenr Exp $"; +static const char rcsid[] = "@(#)$Id: kmem.c,v 2.2.2.14 2002/04/17 17:44:44 darrenr Exp $"; #endif -#ifndef __sgi +#ifdef __sgi +typedef int kvm_t; -static kvm_t *kvm_f = NULL; - -#else - -typedef int kvm_t; - -static kvm_t kvm_f = -1; +static int kvm_fd = -1; static char *kvm_errstr; kvm_t kvm_open(kernel, core, swap, mode, errstr) @@ -65,12 +60,12 @@ char *kernel, *core, *swap; int mode; char *errstr; { - kvm_t fd; - kvm_errstr = errstr; - fd = open(core, mode); - return fd; + if (core == NULL) + core = "/dev/kmem"; + kvm_fd = open(core, mode); + return (kvm_fd >= 0) ? (kvm_t)&kvm_fd : NULL; } int kvm_read(kvm, pos, buffer, size) @@ -82,21 +77,22 @@ size_t size; int r, left; char *bufp; - if (lseek(kvm, pos, 0) == -1) { + if (lseek(*kvm, pos, 0) == -1) { fprintf(stderr, "%s", kvm_errstr); perror("lseek"); return -1; } for (bufp = buffer, left = size; left > 0; bufp += r, left -= r) { - r = read(kvm, bufp, 1); + r = read(*kvm, bufp, 1); if (r <= 0) return -1; } - return 0; + return size; } #endif +static kvm_t *kvm_f = NULL; int openkmem(kern, core) char *kern, *core; |